class ExampleWindow(SplitApplicationWindow): """ An example application window. """ # The actors we can create. ACTORS = [ arrow_actor, axes_actor, cone_actor, cube_actor, cylinder_actor, earth_actor, sphere_actor ] # The ratio of the size of the left/top pane to the right/bottom pane. ratio = Float(0.75) # The direction in which the panel is split. direction = Str('horizontal') # The `Scene` instance into which VTK renders. scene = Instance(Scene) # The `PythonShell` instance. python_shell = Instance(PythonShell) ########################################################################### # 'object' interface. ########################################################################### def __init__(self, **traits): """ Creates a new window. """ # Base class constructor. super(ExampleWindow, self).__init__(**traits) # Create the window's menu bar. self._create_my_menu_bar() ########################################################################### # Protected 'SplitApplicationWindow' interface. ########################################################################### def _create_lhs(self, parent): """ Creates the left hand side or top depending on the style. """ self.scene = Scene(parent) self.scene.renderer.background = 0.1, 0.2, 0.4 # Add some actors. for i in range(10): func = random.choice(ExampleWindow.ACTORS) actor = func() # Place the actor randomly. x = random.uniform(-3, 3) y = random.uniform(-3, 3) z = random.uniform(-3, 3) actor.position = x, y, z # Add the actor to the scene. self.scene.add_actors(actor) # Render it all! self.scene.render() # Reset the zoom nicely. self.scene.reset_zoom() return self.scene.control def _create_rhs(self, parent): """ Creates the right hand side or bottom depending on the style. """ self.python_shell = PythonShell(parent) self.python_shell.bind('scene', self.scene) self.python_shell.bind('s', self.scene) return self.python_shell.control ########################################################################### # Private interface. ########################################################################### def _create_my_menu_bar(self): """ Creates the window's menu bar. """ self.menu_bar_manager = MenuBarManager( MenuManager( SaveImageAction(self), Separator(), ExitAction(self), name = '&File', ), MenuManager( SaveToClipboardAction(self), name = '&Edit', ), MenuManager( SpecialViewAction(self, "&Reset Zoom", 'reset_zoom'), Separator(), SpecialViewAction(self, "&Isometric", 'isometric_view'), SpecialViewAction(self, "&X positive", 'x_plus_view'), SpecialViewAction(self, "X negative", 'x_minus_view'), SpecialViewAction(self, "&Y positive", 'y_plus_view'), SpecialViewAction(self, "Y negative", 'y_minus_view'), SpecialViewAction(self, "&Z positive", 'z_plus_view'), SpecialViewAction(self, "Z negative", 'z_minus_view'), name = '&View', ) )