]> git.saurik.com Git - wxWidgets.git/blame_incremental - wxPython/demo/wxIEHtmlWin.py
Tcl regex lib
[wxWidgets.git] / wxPython / demo / wxIEHtmlWin.py
... / ...
CommitLineData
1
2from wxPython.wx import *
3
4if wxPlatform == '__WXMSW__':
5 from wxPython.iewin import *
6
7#----------------------------------------------------------------------
8
9class TestPanel(wxWindow):
10 def __init__(self, parent, log, frame=None):
11 wxWindow.__init__(self, parent, -1,
12 style=wxCLIP_CHILDREN|wxNO_FULL_REPAINT_ON_RESIZE)
13 self.log = log
14 self.current = "http://wxWindows.org/"
15 self.frame = frame
16 if frame:
17 self.titleBase = frame.GetTitle()
18
19
20 sizer = wxBoxSizer(wxVERTICAL)
21 btnSizer = wxBoxSizer(wxHORIZONTAL)
22
23 self.ie = wxIEHtmlWin(self, -1, style = wxNO_FULL_REPAINT_ON_RESIZE)
24
25
26 btn = wxButton(self, wxNewId(), "Open", style=wxBU_EXACTFIT)
27 EVT_BUTTON(self, btn.GetId(), self.OnOpenButton)
28 btnSizer.Add(btn, 0, wxEXPAND|wxALL, 2)
29
30 btn = wxButton(self, wxNewId(), "Home", style=wxBU_EXACTFIT)
31 EVT_BUTTON(self, btn.GetId(), self.OnHomeButton)
32 btnSizer.Add(btn, 0, wxEXPAND|wxALL, 2)
33
34 btn = wxButton(self, wxNewId(), "<--", style=wxBU_EXACTFIT)
35 EVT_BUTTON(self, btn.GetId(), self.OnPrevPageButton)
36 btnSizer.Add(btn, 0, wxEXPAND|wxALL, 2)
37
38 btn = wxButton(self, wxNewId(), "-->", style=wxBU_EXACTFIT)
39 EVT_BUTTON(self, btn.GetId(), self.OnNextPageButton)
40 btnSizer.Add(btn, 0, wxEXPAND|wxALL, 2)
41
42 btn = wxButton(self, wxNewId(), "Stop", style=wxBU_EXACTFIT)
43 EVT_BUTTON(self, btn.GetId(), self.OnStopButton)
44 btnSizer.Add(btn, 0, wxEXPAND|wxALL, 2)
45
46 btn = wxButton(self, wxNewId(), "Search", style=wxBU_EXACTFIT)
47 EVT_BUTTON(self, btn.GetId(), self.OnSearchPageButton)
48 btnSizer.Add(btn, 0, wxEXPAND|wxALL, 2)
49
50 btn = wxButton(self, wxNewId(), "Refresh", style=wxBU_EXACTFIT)
51 EVT_BUTTON(self, btn.GetId(), self.OnRefreshPageButton)
52 btnSizer.Add(btn, 0, wxEXPAND|wxALL, 2)
53
54 txt = wxStaticText(self, -1, "Location:")
55 btnSizer.Add(txt, 0, wxCENTER|wxALL, 2)
56
57 self.location = wxComboBox(self, wxNewId(), "", style=wxCB_DROPDOWN|wxPROCESS_ENTER)
58 EVT_COMBOBOX(self, self.location.GetId(), self.OnLocationSelect)
59 EVT_KEY_UP(self.location, self.OnLocationKey)
60 EVT_CHAR(self.location, self.IgnoreReturn)
61 btnSizer.Add(self.location, 1, wxEXPAND|wxALL, 2)
62
63
64 sizer.Add(btnSizer, 0, wxEXPAND)
65 sizer.Add(self.ie, 1, wxEXPAND)
66
67 self.ie.Navigate(self.current)
68 self.location.Append(self.current)
69
70 self.SetSizer(sizer)
71 self.SetAutoLayout(true)
72 EVT_SIZE(self, self.OnSize)
73
74 # Hook up the event handlers for the IE window
75 EVT_MSHTML_BEFORENAVIGATE2(self, -1, self.OnBeforeNavigate2)
76 EVT_MSHTML_NEWWINDOW2(self, -1, self.OnNewWindow2)
77 EVT_MSHTML_DOCUMENTCOMPLETE(self, -1, self.OnDocumentComplete)
78 #EVT_MSHTML_PROGRESSCHANGE(self, -1, self.OnProgressChange)
79 EVT_MSHTML_STATUSTEXTCHANGE(self, -1, self.OnStatusTextChange)
80 EVT_MSHTML_TITLECHANGE(self, -1, self.OnTitleChange)
81
82
83 def OnSize(self, evt):
84 self.Layout()
85
86
87 def OnLocationSelect(self, evt):
88 url = self.location.GetStringSelection()
89 self.log.write('OnLocationSelect: %s\n' % url)
90 self.ie.Navigate(url)
91
92 def OnLocationKey(self, evt):
93 if evt.KeyCode() == WXK_RETURN:
94 URL = self.location.GetValue()
95 self.location.Append(URL)
96 self.ie.Navigate(URL)
97 else:
98 evt.Skip()
99
100
101 def IgnoreReturn(self, evt):
102 if evt.GetKeyCode() != WXK_RETURN:
103 evt.Skip()
104
105 def OnOpenButton(self, event):
106 dlg = wxTextEntryDialog(self, "Open Location",
107 "Enter a full URL or local path",
108 self.current, wxOK|wxCANCEL)
109 dlg.CentreOnParent()
110 if dlg.ShowModal() == wxID_OK:
111 self.current = dlg.GetValue()
112 self.ie.Navigate(self.current)
113 dlg.Destroy()
114
115 def OnHomeButton(self, event):
116 self.ie.GoHome() ## ET Phone Home!
117
118 def OnPrevPageButton(self, event):
119 self.ie.GoBack()
120
121 def OnNextPageButton(self, event):
122 self.ie.GoForward()
123
124 def OnStopButton(self, evt):
125 self.ie.Stop()
126
127 def OnSearchPageButton(self, evt):
128 self.ie.GoSearch()
129
130 def OnRefreshPageButton(self, evt):
131 self.ie.Refresh(wxIEHTML_REFRESH_COMPLETELY)
132
133
134
135 def logEvt(self, name, event):
136 self.log.write('%s: %s\n' %
137 (name, (event.GetLong1(), event.GetLong2(), event.GetText1())))
138
139 def OnBeforeNavigate2(self, evt):
140 self.logEvt('OnBeforeNavigate2', evt)
141
142 def OnNewWindow2(self, evt):
143 self.logEvt('OnNewWindow2', evt)
144 evt.Veto() # don't allow it
145
146 def OnDocumentComplete(self, evt):
147 self.logEvt('OnDocumentComplete', evt)
148 self.current = evt.GetText1()
149 self.location.SetValue(self.current)
150
151 def OnTitleChange(self, evt):
152 self.logEvt('OnTitleChange', evt)
153 if self.frame:
154 self.frame.SetTitle(self.titleBase + ' -- ' + evt.GetText1())
155
156 def OnStatusTextChange(self, evt):
157 self.logEvt('OnStatusTextChange', evt)
158 if self.frame:
159 self.frame.SetStatusText(evt.GetText1())
160
161
162#----------------------------------------------------------------------
163# for the demo framework...
164
165def runTest(frame, nb, log):
166 if wxPlatform == '__WXMSW__':
167 win = TestPanel(nb, log, frame)
168 return win
169 else:
170 dlg = wxMessageDialog(frame, 'This demo only works on MSW.',
171 'Sorry', wxOK | wxICON_INFORMATION)
172 dlg.ShowModal()
173 dlg.Destroy()
174
175
176
177overview = """\
178<html><body>
179<h2>wxIEHtmlWin</h2>
180
181The wxIEHtmlWin class is the first example of using a contributed
182wxActiveX class in wxWindows C++. It is still experimental, but
183I think it is useful.
184
185<p> Using this class is simpler than ActiveXWrapper, doesn't rely on
186the win32all extensions, and is more "wx\'ish", meaning that it uses
187events and etc. as would be expected from any other wx window.
188
189</body></html>
190"""
191
192
193
194if __name__ == '__main__':
195 import sys,os
196 import run
197 run.main(['', os.path.basename(sys.argv[0])])
198
199
200#----------------------------------------------------------------------
201