1999-09-13 15:31:50 -04:00
1999-09-17 01:55:00 -04:00
import sys , os
from wxPython . wx import *
from wxPython . html import *
import wxPython . lib . wxpTag
1999-09-13 15:31:50 -04:00
#----------------------------------------------------------------------
# This shows how to catch the OnLinkClicked non-event. (It's a virtual
# method in the C++ code...)
class MyHtmlWindow ( wxHtmlWindow ) :
def __init__ ( self , parent , id , log ) :
wxHtmlWindow . __init__ ( self , parent , id )
self . log = log
2000-10-30 16:08:42 -05:00
EVT_SCROLLWIN ( self , self . OnScroll )
def OnScroll ( self , event ) :
print ' event.GetOrientation() ' , event . GetOrientation ( )
print ' event.GetPosition() ' , event . GetPosition ( )
event . Skip ( )
1999-09-13 15:31:50 -04:00
1999-12-23 22:28:55 -05:00
def OnLinkClicked ( self , linkinfo ) :
self . log . WriteText ( ' OnLinkClicked: %s \n ' % linkinfo . GetHref ( ) )
1999-09-13 15:31:50 -04:00
2000-01-31 16:07:04 -05:00
# Virtuals in the base class have been renamed with base_ on the front.
1999-12-23 22:28:55 -05:00
self . base_OnLinkClicked ( linkinfo )
def OnSetTitle ( self , title ) :
self . log . WriteText ( ' OnSetTitle: %s \n ' % title )
self . base_OnSetTitle ( title )
1999-09-13 15:31:50 -04:00
2001-10-12 19:26:38 -04:00
def OnCellMouseHover ( self , cell , x , y ) :
self . log . WriteText ( ' OnCellMouseHover: %s , ( %d %d ) \n ' % ( cell , x , y ) )
self . base_OnCellMouseHover ( cell , x , y )
def OnCellClicked ( self , cell , x , y , evt ) :
self . log . WriteText ( ' OnCellClicked: %s , ( %d %d ) \n ' % ( cell , x , y ) )
self . base_OnCellClicked ( cell , x , y , evt )
1999-09-13 15:31:50 -04:00
class TestHtmlPanel ( wxPanel ) :
def __init__ ( self , parent , frame , log ) :
wxPanel . __init__ ( self , parent , - 1 )
self . log = log
self . frame = frame
1999-10-07 19:00:59 -04:00
self . cwd = os . path . split ( sys . argv [ 0 ] ) [ 0 ]
if not self . cwd :
self . cwd = os . getcwd ( )
1999-09-13 15:31:50 -04:00
self . html = MyHtmlWindow ( self , - 1 , log )
self . html . SetRelatedFrame ( frame , " wxPython: (A Demonstration) -- %s " )
self . html . SetRelatedStatusBar ( 0 )
1999-11-07 02:49:09 -05:00
self . printer = wxHtmlEasyPrinting ( )
1999-09-30 03:11:20 -04:00
self . box = wxBoxSizer ( wxVERTICAL )
self . box . Add ( self . html , 1 , wxGROW )
1999-09-13 15:31:50 -04:00
subbox = wxBoxSizer ( wxHORIZONTAL )
2000-02-13 01:01:58 -05:00
## btn = wxButton(self, 1201, "Show Default")
## EVT_BUTTON(self, 1201, self.OnShowDefault)
## subbox.Add(btn, 1, wxGROW | wxALL, 2)
1999-09-13 15:31:50 -04:00
btn = wxButton ( self , 1202 , " Load File " )
EVT_BUTTON ( self , 1202 , self . OnLoadFile )
1999-09-30 03:11:20 -04:00
subbox . Add ( btn , 1 , wxGROW | wxALL , 2 )
1999-09-13 15:31:50 -04:00
btn = wxButton ( self , 1203 , " With Widgets " )
EVT_BUTTON ( self , 1203 , self . OnWithWidgets )
1999-09-30 03:11:20 -04:00
subbox . Add ( btn , 1 , wxGROW | wxALL , 2 )
1999-09-13 15:31:50 -04:00
btn = wxButton ( self , 1204 , " Back " )
EVT_BUTTON ( self , 1204 , self . OnBack )
1999-09-30 03:11:20 -04:00
subbox . Add ( btn , 1 , wxGROW | wxALL , 2 )
1999-09-13 15:31:50 -04:00
btn = wxButton ( self , 1205 , " Forward " )
EVT_BUTTON ( self , 1205 , self . OnForward )
1999-09-30 03:11:20 -04:00
subbox . Add ( btn , 1 , wxGROW | wxALL , 2 )
1999-09-13 15:31:50 -04:00
1999-11-07 02:49:09 -05:00
btn = wxButton ( self , 1207 , " Print " )
EVT_BUTTON ( self , 1207 , self . OnPrint )
subbox . Add ( btn , 1 , wxGROW | wxALL , 2 )
1999-09-17 01:55:00 -04:00
btn = wxButton ( self , 1206 , " View Source " )
EVT_BUTTON ( self , 1206 , self . OnViewSource )
1999-09-30 03:11:20 -04:00
subbox . Add ( btn , 1 , wxGROW | wxALL , 2 )
1999-09-17 01:55:00 -04:00
1999-09-30 03:11:20 -04:00
self . box . Add ( subbox , 0 , wxGROW )
self . SetSizer ( self . box )
self . SetAutoLayout ( true )
1999-09-17 01:55:00 -04:00
# A button with this ID is created on the widget test page.
EVT_BUTTON ( self , wxID_OK , self . OnOk )
1999-09-13 15:31:50 -04:00
self . OnShowDefault ( None )
2000-02-13 01:01:58 -05:00
## def __del__(self):
## print 'TestHtmlPanel.__del__'
2000-01-31 16:07:04 -05:00
1999-09-17 01:55:00 -04:00
1999-09-13 15:31:50 -04:00
def OnShowDefault ( self , event ) :
1999-10-07 19:00:59 -04:00
name = os . path . join ( self . cwd , ' data/test.htm ' )
1999-09-17 01:55:00 -04:00
self . html . LoadPage ( name )
1999-09-13 15:31:50 -04:00
def OnLoadFile ( self , event ) :
1999-09-17 01:55:00 -04:00
dlg = wxFileDialog ( self , wildcard = ' *.htm* ' , style = wxOPEN )
if dlg . ShowModal ( ) :
path = dlg . GetPath ( )
self . html . LoadPage ( path )
dlg . Destroy ( )
1999-09-13 15:31:50 -04:00
def OnWithWidgets ( self , event ) :
1999-10-07 19:00:59 -04:00
os . chdir ( self . cwd )
name = os . path . join ( self . cwd , ' data/widgetTest.htm ' )
1999-09-17 01:55:00 -04:00
self . html . LoadPage ( name )
1999-10-07 19:00:59 -04:00
1999-09-17 01:55:00 -04:00
def OnOk ( self , event ) :
self . log . WriteText ( " It works! \n " )
1999-09-13 15:31:50 -04:00
def OnBack ( self , event ) :
if not self . html . HistoryBack ( ) :
wxMessageBox ( " No more items in history! " )
1999-09-17 01:55:00 -04:00
1999-09-13 15:31:50 -04:00
def OnForward ( self , event ) :
if not self . html . HistoryForward ( ) :
wxMessageBox ( " No more items in history! " )
1999-09-17 01:55:00 -04:00
def OnViewSource ( self , event ) :
from wxPython . lib . dialogs import wxScrolledMessageDialog
source = self . html . GetParser ( ) . GetSource ( )
dlg = wxScrolledMessageDialog ( self , source , ' HTML Source ' )
dlg . ShowModal ( )
dlg . Destroy ( )
1999-11-07 02:49:09 -05:00
def OnPrint ( self , event ) :
2001-07-27 23:06:02 -04:00
##self.printer.GetPageSetupData().SetMarginTopLeft((100,100))
1999-11-07 02:49:09 -05:00
self . printer . PrintFile ( self . html . GetOpenedPage ( ) )
1999-09-13 15:31:50 -04:00
#----------------------------------------------------------------------
def runTest ( frame , nb , log ) :
win = TestHtmlPanel ( nb , frame , log )
return win
#----------------------------------------------------------------------
overview = """ \
wxHtmlWindow is capable of parsing and rendering most simple HTML tags .
It is not intended to be a high - end HTML browser . If you ' re looking for something like that try http://www.mozilla.org - there ' s a chance you ' ll be able to make their widget wxWindows-compatible. I ' m sure everyone will enjoy your work in that case . . .
"""
1999-09-17 01:55:00 -04:00