objdictgen/objdictedit.py
changeset 485 24b506ea314b
parent 418 64a8c24b61a5
child 488 01ab26d29117
equal deleted inserted replaced
484:f59d1cdde42b 485:24b506ea314b
   124  ID_OBJDICTEDITADDMENUMAPVARIABLE, ID_OBJDICTEDITADDMENUUSERTYPE, 
   124  ID_OBJDICTEDITADDMENUMAPVARIABLE, ID_OBJDICTEDITADDMENUUSERTYPE, 
   125 ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)]
   125 ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)]
   126 
   126 
   127 class objdictedit(wx.Frame):
   127 class objdictedit(wx.Frame):
   128     def _init_coll_MenuBar_Menus(self, parent):
   128     def _init_coll_MenuBar_Menus(self, parent):
   129         parent.Append(menu=self.FileMenu, title='File')
   129         if self.ModeSolo:
       
   130             parent.Append(menu=self.FileMenu, title='File')
   130         parent.Append(menu=self.EditMenu, title='Edit')
   131         parent.Append(menu=self.EditMenu, title='Edit')
   131         parent.Append(menu=self.AddMenu, title='Add')
   132         parent.Append(menu=self.AddMenu, title='Add')
   132         parent.Append(menu=self.HelpMenu, title='Help')
   133         parent.Append(menu=self.HelpMenu, title='Help')
   133 
   134 
   134     def _init_coll_FileMenu_Items(self, parent):
   135     def _init_coll_FileMenu_Items(self, parent):
   226               kind=wx.ITEM_NORMAL, text='DS-301 Standard\tF1')
   227               kind=wx.ITEM_NORMAL, text='DS-301 Standard\tF1')
   227         self.Bind(wx.EVT_MENU, self.OnHelpDS301Menu, id=wx.ID_HELP)
   228         self.Bind(wx.EVT_MENU, self.OnHelpDS301Menu, id=wx.ID_HELP)
   228         parent.Append(help='', id=wx.ID_HELP_CONTEXT,
   229         parent.Append(help='', id=wx.ID_HELP_CONTEXT,
   229               kind=wx.ITEM_NORMAL, text='CAN Festival Docs\tF2')
   230               kind=wx.ITEM_NORMAL, text='CAN Festival Docs\tF2')
   230         self.Bind(wx.EVT_MENU, self.OnHelpCANFestivalMenu, id=wx.ID_HELP_CONTEXT)
   231         self.Bind(wx.EVT_MENU, self.OnHelpCANFestivalMenu, id=wx.ID_HELP_CONTEXT)
   231         if Html_Window:
   232         if Html_Window and self.ModeSolo:
   232             parent.Append(help='', id=wx.ID_ABOUT,
   233             parent.Append(help='', id=wx.ID_ABOUT,
   233                   kind=wx.ITEM_NORMAL, text='About')
   234                   kind=wx.ITEM_NORMAL, text='About')
   234             self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT)
   235             self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT)
   235 
   236 
   236     def _init_coll_HelpBar_Fields(self, parent):
   237     def _init_coll_HelpBar_Fields(self, parent):
   244 
   245 
   245     def _init_utils(self):
   246     def _init_utils(self):
   246         self.MenuBar = wx.MenuBar()
   247         self.MenuBar = wx.MenuBar()
   247         self.MenuBar.SetEvtHandlerEnabled(True)
   248         self.MenuBar.SetEvtHandlerEnabled(True)
   248 
   249 
   249         self.FileMenu = wx.Menu(title='')
   250         if self.ModeSolo:
       
   251             self.FileMenu = wx.Menu(title='')
   250         self.EditMenu = wx.Menu(title='')
   252         self.EditMenu = wx.Menu(title='')
   251         self.AddMenu = wx.Menu(title='')
   253         self.AddMenu = wx.Menu(title='')
   252         self.HelpMenu = wx.Menu(title='')
   254         self.HelpMenu = wx.Menu(title='')
   253 
   255 
   254         self._init_coll_MenuBar_Menus(self.MenuBar)
   256         self._init_coll_MenuBar_Menus(self.MenuBar)
   255         self._init_coll_FileMenu_Items(self.FileMenu)
   257         if self.ModeSolo:
       
   258             self._init_coll_FileMenu_Items(self.FileMenu)
   256         self._init_coll_EditMenu_Items(self.EditMenu)
   259         self._init_coll_EditMenu_Items(self.EditMenu)
   257         self._init_coll_AddMenu_Items(self.AddMenu)
   260         self._init_coll_AddMenu_Items(self.AddMenu)
   258         self._init_coll_HelpMenu_Items(self.HelpMenu)
   261         self._init_coll_HelpMenu_Items(self.HelpMenu)
   259 
   262 
   260     def _init_ctrls(self, prnt):
   263     def _init_ctrls(self, prnt):
   263               style=wx.DEFAULT_FRAME_STYLE, title='Objdictedit')
   266               style=wx.DEFAULT_FRAME_STYLE, title='Objdictedit')
   264         self._init_utils()
   267         self._init_utils()
   265         self.SetClientSize(wx.Size(1000, 700))
   268         self.SetClientSize(wx.Size(1000, 700))
   266         self.SetMenuBar(self.MenuBar)
   269         self.SetMenuBar(self.MenuBar)
   267         self.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
   270         self.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
       
   271         if not self.ModeSolo:
       
   272             self.Bind(wx.EVT_MENU, self.OnSaveMenu, id=wx.ID_SAVE)
       
   273             accel = wx.AcceleratorTable([wx.AcceleratorEntry(wx.ACCEL_CTRL, 83, wx.ID_SAVE)])
       
   274             self.SetAcceleratorTable(accel)
   268 
   275 
   269         self.FileOpened = wx.Notebook(id=ID_OBJDICTEDITFILEOPENED,
   276         self.FileOpened = wx.Notebook(id=ID_OBJDICTEDITFILEOPENED,
   270               name='FileOpened', parent=self, pos=wx.Point(0, 0),
   277               name='FileOpened', parent=self, pos=wx.Point(0, 0),
   271               size=wx.Size(0, 0), style=0)
   278               size=wx.Size(0, 0), style=0)
   272         self.FileOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
   279         self.FileOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
   275         self.HelpBar = wx.StatusBar(id=ID_OBJDICTEDITHELPBAR, name='HelpBar',
   282         self.HelpBar = wx.StatusBar(id=ID_OBJDICTEDITHELPBAR, name='HelpBar',
   276               parent=self, style=wx.ST_SIZEGRIP)
   283               parent=self, style=wx.ST_SIZEGRIP)
   277         self._init_coll_HelpBar_Fields(self.HelpBar)
   284         self._init_coll_HelpBar_Fields(self.HelpBar)
   278         self.SetStatusBar(self.HelpBar)
   285         self.SetStatusBar(self.HelpBar)
   279 
   286 
   280     def __init__(self, parent, filesOpen = []):
   287     def __init__(self, parent, manager = None, filesOpen = []):
       
   288         self.ModeSolo = manager == None
   281         self._init_ctrls(parent)
   289         self._init_ctrls(parent)
   282         self.HtmlFrameOpened = []
   290         self.HtmlFrameOpened = []
   283         self.ModeSolo = True
   291         self.BusId = None
   284         
   292         
   285         icon = wx.Icon(os.path.join(ScriptDirectory,"networkedit.ico"),wx.BITMAP_TYPE_ICO)
   293         icon = wx.Icon(os.path.join(ScriptDirectory,"networkedit.ico"),wx.BITMAP_TYPE_ICO)
   286         self.SetIcon(icon)
   294         self.SetIcon(icon)
   287         
   295         
   288         self.Manager = NodeManager()
   296         if self.ModeSolo:
   289         for filepath in filesOpen:
   297             self.Manager = NodeManager()
   290             result = self.Manager.OpenFileInCurrent(filepath)
   298             for filepath in filesOpen:
   291             if type(result) == IntType:
   299                 result = self.Manager.OpenFileInCurrent(filepath)
       
   300                 if type(result) == IntType:
       
   301                     new_editingpanel = EditingPanel(self.FileOpened, self, self.Manager)
       
   302                     new_editingpanel.SetIndex(result)
       
   303                     self.FileOpened.AddPage(new_editingpanel, "")
       
   304         else:
       
   305             self.Manager = manager
       
   306             for index in self.Manager.GetBufferIndexes():
   292                 new_editingpanel = EditingPanel(self.FileOpened, self, self.Manager)
   307                 new_editingpanel = EditingPanel(self.FileOpened, self, self.Manager)
   293                 new_editingpanel.SetIndex(result)
   308                 new_editingpanel.SetIndex(index)
   294                 self.FileOpened.AddPage(new_editingpanel, "")
   309                 self.FileOpened.AddPage(new_editingpanel, "")
   295             window = self.FileOpened.GetPage(0)
   310         
   296             if window:
   311         window = self.FileOpened.GetPage(0)
   297                 self.Manager.ChangeCurrentNode(window.GetIndex())
   312         if window:
   298                 self.FileOpened.SetSelection(0)
   313             self.Manager.ChangeCurrentNode(window.GetIndex())
       
   314             self.FileOpened.SetSelection(0)
       
   315         
   299         if self.Manager.CurrentDS302Defined():
   316         if self.Manager.CurrentDS302Defined():
   300             self.EditMenu.Enable(ID_OBJDICTEDITEDITMENUDS302PROFILE, True)
   317             self.EditMenu.Enable(ID_OBJDICTEDITEDITMENUDS302PROFILE, True)
   301         else:
   318         else:
   302             self.EditMenu.Enable(ID_OBJDICTEDITEDITMENUDS302PROFILE, False)
   319             self.EditMenu.Enable(ID_OBJDICTEDITEDITMENUDS302PROFILE, False)
   303         self.RefreshEditMenu()
   320         self.RefreshEditMenu()
   304         self.RefreshBufferState()
   321         self.RefreshBufferState()
   305         self.RefreshProfileMenu()
   322         self.RefreshProfileMenu()
   306         self.RefreshTitle()
   323         self.RefreshTitle()
   307         self.RefreshMainMenu()
   324         self.RefreshMainMenu()
       
   325 
       
   326     def SetBusId(self, bus_id):
       
   327         self.BusId = bus_id
       
   328 
       
   329     def GetBusId(self):
       
   330         return self.BusId
   308 
   331 
   309     def OnAddSDOServerMenu(self, event):
   332     def OnAddSDOServerMenu(self, event):
   310         self.Manager.AddSDOServerToCurrent()
   333         self.Manager.AddSDOServerToCurrent()
   311         self.RefreshBufferState()
   334         self.RefreshBufferState()
   312         self.RefreshCurrentIndexList()
   335         self.RefreshCurrentIndexList()
   399     def OnQuitMenu(self, event):
   422     def OnQuitMenu(self, event):
   400         self.Close()
   423         self.Close()
   401         event.Skip()
   424         event.Skip()
   402     
   425     
   403     def OnCloseFrame(self, event):
   426     def OnCloseFrame(self, event):
   404         if self.Manager.OneFileHasChanged():
   427         if not self.ModeSolo:
       
   428             if getattr(self, "_onclose", None) != None:
       
   429                 self._onclose()
       
   430             event.Skip()
       
   431         elif self.Manager.OneFileHasChanged():
   405             dialog = wx.MessageDialog(self, "There are changes, do you want to save?",  "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION)
   432             dialog = wx.MessageDialog(self, "There are changes, do you want to save?",  "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION)
   406             answer = dialog.ShowModal()
   433             answer = dialog.ShowModal()
   407             dialog.Destroy()
   434             dialog.Destroy()
   408             if answer == wx.ID_YES:
   435             if answer == wx.ID_YES:
   409                 self.Manager.ChangeCurrentNode(0)
   436                 self.Manager.ChangeCurrentNode(0)
   475                 else:
   502                 else:
   476                     for i in xrange(3):
   503                     for i in xrange(3):
   477                         self.HelpBar.SetStatusText("", i)
   504                         self.HelpBar.SetStatusText("", i)
   478 
   505 
   479     def RefreshMainMenu(self):
   506     def RefreshMainMenu(self):
   480         if self.FileMenu:
   507         if self:
   481             if self.FileOpened.GetPageCount() > 0:
   508             if self.FileOpened.GetPageCount() > 0:
   482                 self.MenuBar.EnableTop(1, True)
   509                 if self.ModeSolo:
   483                 self.MenuBar.EnableTop(2, True)
   510                     self.MenuBar.EnableTop(1, True)
   484                 self.FileMenu.Enable(wx.ID_CLOSE, True)
   511                     self.MenuBar.EnableTop(2, True)
   485                 self.FileMenu.Enable(wx.ID_SAVE, True)
   512                     if self.FileMenu:
   486                 self.FileMenu.Enable(wx.ID_SAVEAS, True)
   513                         self.FileMenu.Enable(wx.ID_CLOSE, True)
   487                 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, True)
   514                         self.FileMenu.Enable(wx.ID_SAVE, True)
   488                 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, True)
   515                         self.FileMenu.Enable(wx.ID_SAVEAS, True)
       
   516                         self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, True)
       
   517                         self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, True)
       
   518                 else:
       
   519                     self.MenuBar.EnableTop(0, True)
       
   520                     self.MenuBar.EnableTop(1, True)
   489             else:
   521             else:
   490                 self.MenuBar.EnableTop(1, False)
   522                 if self.ModeSolo:
   491                 self.MenuBar.EnableTop(2, False)
   523                     self.MenuBar.EnableTop(1, False)
   492                 self.FileMenu.Enable(wx.ID_CLOSE, False)
   524                     self.MenuBar.EnableTop(2, False)
   493                 self.FileMenu.Enable(wx.ID_SAVE, False)
   525                     if self.FileMenu:
   494                 self.FileMenu.Enable(wx.ID_SAVEAS, False)
   526                         self.FileMenu.Enable(wx.ID_CLOSE, False)
   495                 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, False)
   527                         self.FileMenu.Enable(wx.ID_SAVE, False)
   496                 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, False)
   528                         self.FileMenu.Enable(wx.ID_SAVEAS, False)
       
   529                         self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, False)
       
   530                         self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, False)
       
   531                 else:
       
   532                     self.MenuBar.EnableTop(0, False)
       
   533                     self.MenuBar.EnableTop(1, False)
   497 
   534 
   498     def RefreshEditMenu(self):
   535     def RefreshEditMenu(self):
   499         if self.EditMenu:
   536         if self.EditMenu:
   500             if self.FileOpened.GetPageCount() > 0:
   537             if self.FileOpened.GetPageCount() > 0:
   501                 undo, redo = self.Manager.GetCurrentBufferState()
   538                 undo, redo = self.Manager.GetCurrentBufferState()
   612                     message.Destroy()
   649                     message.Destroy()
   613         dialog.Destroy()
   650         dialog.Destroy()
   614         event.Skip()
   651         event.Skip()
   615 
   652 
   616     def OnSaveMenu(self, event):
   653     def OnSaveMenu(self, event):
   617         self.Save()
   654         if not self.ModeSolo and getattr(self, "_onsave", None) != None:
       
   655             self._onsave()
       
   656         else:
       
   657             self.Save()
   618         event.Skip()
   658         event.Skip()
   619     
   659     
   620     def OnSaveAsMenu(self, event):
   660     def OnSaveAsMenu(self, event):
   621         self.SaveAs()
   661         self.SaveAs()
   622         event.Skip()
   662         event.Skip()
   997     wx.InitAllImageHandlers()
  1037     wx.InitAllImageHandlers()
   998     
  1038     
   999     # Install a exception handle for bug reports
  1039     # Install a exception handle for bug reports
  1000     AddExceptHook(os.getcwd(),__version__)
  1040     AddExceptHook(os.getcwd(),__version__)
  1001     
  1041     
  1002     frame = objdictedit(None, args)
  1042     frame = objdictedit(None, filesOpen = args)
  1003 
  1043 
  1004     frame.Show()
  1044     frame.Show()
  1005     app.MainLoop()
  1045     app.MainLoop()