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)