def __init__(self, editorInstance): """EditorApp constructor.""" # Instance of the editor self.editorInstance = editorInstance # Create the Wx app self.wxApp = wx.App(redirect=False) self.wxApp.SetAppName("Panda Editor") self.wxApp.SetClassName("PEditor") self.modified = True self.filename = Filename() # Initialize the app shell and add some controls AppShell.__init__(self, title="Panda Editor", pos=origin) self.splitter1 = wx.SplitterWindow(self, style=wx.SP_3D | wx.SP_BORDER) self.splitter1.SetMinimumPaneSize(1) self.splitter2 = wx.SplitterWindow(self.splitter1, style=wx.SP_3D | wx.SP_BORDER) self.splitter2.SetMinimumPaneSize(1) self.leftBarSplitter = wx.SplitterWindow(self.splitter2, style=wx.SP_3D | wx.SP_BORDER) self.leftBarSplitter.SetMinimumPaneSize(1) #self.rightBarSplitter = wx.SplitterWindow(self.splitter1, style = wx.SP_3D | wx.SP_BORDER) #self.rightBarSplitter.SetMinimumPaneSize(1) self.sceneGraphTree = SceneGraphTree(self.leftBarSplitter) self.propertyGrid = PropertyGrid(self.leftBarSplitter) self.textureManager = TextureManager(self.splitter1, style=wx.SP_3D | wx.SUNKEN_BORDER) self.view = Viewport.makePerspective(self.splitter2) sizer = wx.BoxSizer(wx.VERTICAL) assert self.leftBarSplitter.SplitHorizontally(self.sceneGraphTree, self.propertyGrid) assert self.splitter2.SplitVertically(self.leftBarSplitter, self.view, 200) #assert self.rightBarSplitter.SplitHorizontally(self.textureManager, None) assert self.splitter1.SplitVertically(self.splitter2, self.textureManager, -200) sizer.Add(self.splitter1, 1, wx.EXPAND, 0) self.splitter1.Unsplit() # Yes, I know this looks odd. self.SetSizer(sizer) self.Layout() self.initialize() self.splitter2.SetSashPosition(200) # Setup some events base.accept("c", self.onCenterTrackball) base.accept(EVENT_MODELCONTROLLER_SELECTED_OBJECT_CHANGE, self.onModelSelect) # If a model-translate-rotate-scale tool is selected the automatic mouse # movement has to be disable to prevent camera & object movement. # Hmm doesnt really work as well... (camera is still moved) base.accept(EVENT_MODELCONTROLLER_EDITTOOL_SELECTED, lambda x=None: base.disableMouse()) base.accept(EVENT_MODELCONTROLLER_EDITTOOL_DESELECTED, lambda x=None: base.enableMouse()) base.accept(EVENT_MODELCONTROLLER_FULL_REFRESH, self.__setattr__, ["modified", True])