]> git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/viewer_basics.py
First draft of a cygwin script to create wxMSW distributions
[wxWidgets.git] / wxPython / demo / viewer_basics.py
1 from wxPython.wx import *
2 from wxPython.lib import vtk
3
4 #---------------------------------------------------------------------------
5 class VtkFrame(wxFrame):
6 """
7 Simple example VTK window that contains a cone.
8 """
9 def __init__(self, parent, id, title):
10 wxFrame.__init__(self, parent,id,title, size=(450, 300))
11 win = vtk.wxVTKRenderWindow(self, -1)
12
13 renWin = win.GetRenderWindow()
14
15 ren = vtk.vtkRenderer()
16 renWin.AddRenderer(ren)
17 cone = vtk.vtkConeSource()
18 coneMapper = vtk.vtkPolyDataMapper()
19 coneMapper.SetInput(cone.GetOutput())
20 coneActor = vtk.vtkActor()
21 coneActor.SetMapper(coneMapper)
22 ren.AddActor(coneActor)
23 #---------------------------------------------------------------------------
24 wxEVT_ADD_CONE = 25015
25
26 def EVT_ADD_CONE(win, func):
27 win.Connect(-1, -1, wxEVT_ADD_CONE, func)
28
29 class AddCone(wxPyEvent):
30 def __init__(self):
31 wxPyEvent.__init__(self)
32 self.SetEventType(wxEVT_ADD_CONE)
33
34 class HiddenCatcher(wxFrame):
35 """
36 The "catcher" frame in the second thread.
37 It is invisible. It's only job is to receive
38 Events from the main thread, and create
39 the appropriate windows.
40 """
41 def __init__(self):
42 wxFrame.__init__(self, NULL,-1,'')
43 EVT_ADD_CONE(self, self.AddCone)
44
45 def AddCone(self,evt):
46 add_cone()
47 #---------------------------------------------------------------------------
48 class SecondThreadApp(wxApp):
49 """
50 wxApp that lives in the second thread.
51 """
52 def OnInit(self):
53 catcher = HiddenCatcher()
54 #self.SetTopWindow(catcher)
55 self.catcher =catcher
56 return true
57 #---------------------------------------------------------------------------
58
59 def add_cone():
60 frame = VtkFrame(NULL, -1, "Cone")
61 frame.Show(true)