def insertPage(self, idx): t = self.model if not t: return page = None if idx == 1: page = t.modelDetails = entityDetailsDialog.Panel( self.tab, self.guiPlaces, t.model, isDetailInstance=False) elif idx == 3: page = t.instanceDetails = entityDetailsDialog.Panel( self.tab, self.guiPlaces, t.model, isDetailInstance=True) if page: pageText = self.getCurrentPageText(idx) self.tab.InsertPage(idx, page, pageText, select=True) self.deleteWindowsMenuItem(pageText)
def OnProjectNew(self, evt): """Called when a new project is created""" print "New project created" # clean up -- if we support multi-projects this won't happen self.cleanupTabs() self.model = {} # Now create the new one: #prj = self.project.active() prj = self.project.latest() if not prj: return self.model[prj.name] = t = namedtuple('model', 'model uml instance details') # only 1 model file allowed for now t.model = model.Model() prj.setSAFplusModel(t.model) modelFile = os.path.join(prj.directory(), prj.model.children()[0].strip()) #t.model.loadModuleFromFile(prj.datamodel) t.model.load(modelFile) t.uml = umlEditor.Panel(self.tab, self.guiPlaces, t.model) self.tab.AddPage(t.uml, prj.name + " Modelling") t.details = entityDetailsDialog.Panel(self.tab, self.guiPlaces, t.model, isDetailInstance=False) self.tab.AddPage(t.details, prj.name + " Model Details") t.instance = instanceEditor.Panel(self.tab, self.guiPlaces, t.model) self.tab.AddPage(t.instance, prj.name + " Instantiation") t.details = entityDetailsDialog.Panel(self.tab, self.guiPlaces, t.model, isDetailInstance=True) self.tab.AddPage(t.details, prj.name + " Instance Details") if self.prj.dataModelPlugin: self.prj.dataModelPlugin.init(t, self.guiPlaces)
def onWindowsMenu(self, evt): print 'onWindowsMenu launched' idx = evt.GetId() pageText = self.menuWindows.GetLabel(idx) print 'menu item [%s] idx [%d] clicked' % (pageText, idx) t = self.model if pageText == self.getCurrentPageText(0): if t.instance: t.instance.deleteTools() else: self.tb.ClearTools() page = t.uml = umlEditor.Panel(self.tab, self.guiPlaces, t.model) if t.instance: t.instance.addTools() pageIdx = 0 elif pageText == self.getCurrentPageText(1): page = t.modelDetails = entityDetailsDialog.Panel( self.tab, self.guiPlaces, t.model, isDetailInstance=False) pageIdx = 1 if t.uml else 0 elif pageText == self.getCurrentPageText(2): page = t.instance = instanceEditor.Panel(self.tab, self.guiPlaces, t.model) if t.uml and t.modelDetails: pageIdx = 2 elif (t.uml and not t.modelDetails) or (not t.uml and t.modelDetails): pageIdx = 1 else: pageIdx = 0 else: page = t.instanceDetails = entityDetailsDialog.Panel( self.tab, self.guiPlaces, t.model, isDetailInstance=True) pageIdx = 3 print 'insert page id [%d] text [%s]' % (pageIdx, pageText) self.tab.InsertPage(pageIdx, page, pageText) self.menuWindows.Delete(idx) self.tab.SetSelection(pageIdx)
def __init__(self, parent,menubar,toolbar,statusbar,model): wx.Panel.__init__(self, parent, style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER) self.vsplitter = wx.SplitterWindow(self, wx.ID_ANY, style=wx.SP_3D | wx.SP_BORDER | wx.SP_LIVE_UPDATE) self.instanceEditor = instanceEditor.Panel(self.vsplitter,menubar,toolbar,statusbar,model) self.details = entityDetailsDialog.Panel(self.vsplitter,menubar,toolbar,statusbar,model, True) self.vsplitter.SplitVertically(self.details, self.instanceEditor) self.vsplitter.SetSashPosition(0) self.vsplitter.SetSashGravity(0.0) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.vsplitter, 1, wx.EXPAND) self.SetSizer(sizer)
def loadProject(self, prj): if not prj: return self.currentActivePrj = prj self.project.currentActiveProject = prj self.tab.Unbind( wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED ) # need to unbind to not catch page delete event b/c we only want to catch page selection event if not self.model: self.cleanupTabs() self.model = t = namedtuple( 'model', 'model uml instance modelDetails instanceDetails') t.model = model.Model() prj.setSAFplusModel(t.model) modelFile = os.path.join(prj.directory(), prj.model.children()[0].strip()) t.model.load(modelFile) t.uml = umlEditor.Panel(self.tab, self.guiPlaces, t.model) self.tab.InsertPage(0, t.uml, self.getCurrentPageText(0)) t.modelDetails = entityDetailsDialog.Panel(self.tab, self.guiPlaces, t.model, isDetailInstance=False) self.tab.InsertPage(1, t.modelDetails, self.getCurrentPageText(1)) t.instance = instanceEditor.Panel(self.tab, self.guiPlaces, t.model) self.tab.InsertPage(2, t.instance, self.getCurrentPageText(2)) t.instanceDetails = entityDetailsDialog.Panel( self.tab, self.guiPlaces, t.model, isDetailInstance=True) self.tab.InsertPage(3, t.instanceDetails, self.getCurrentPageText(3)) else: print 'OnProjectLoaded: model is not None' self.cleanupTools() self.cleanupMenus() t = self.model prj.setSAFplusModel(t.model) modelFile = os.path.join(prj.directory(), prj.model.children()[0].strip()) t.model.init() t.model.load(modelFile) if t.uml: t.uml.setModelData(t.model) t.uml.deleteTools() t.uml.addTools() t.uml.refresh() else: t.uml = umlEditor.Panel(self.tab, self.guiPlaces, t.model) self.tab.InsertPage(0, t.uml, self.getCurrentPageText(0), select=True) if t.instance: t.instance.setModelData(t.model) t.instance.refresh() t.instance.addTools() else: t.instance = instanceEditor.Panel(self.tab, self.guiPlaces, t.model) self.tab.InsertPage(2, t.instance, self.getCurrentPageText(2)) if t.instanceDetails: t.instanceDetails.setModelData(t.model) t.instanceDetails.refresh() else: t.instanceDetails = entityDetailsDialog.Panel( self.tab, self.guiPlaces, t.model, isDetailInstance=True) self.tab.InsertPage(3, t.instanceDetails, self.getCurrentPageText(3)) if t.modelDetails: t.modelDetails.refresh() else: t.modelDetails = entityDetailsDialog.Panel( self.tab, self.guiPlaces, t.model, isDetailInstance=False) self.tab.InsertPage(1, t.modelDetails, self.getCurrentPageText(1)) self.setPagesText() self.tab.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED, self.onPageChanged) # bind to catch page selection event self.tab.SetSelection(0) # open uml model view by default # append to recent projects repository and update the menu self.updateRecentProject(prj) if self.currentActivePrj.dataModelPlugin: self.currentActivePrj.dataModelPlugin.init(t, self.guiPlaces)