objdictgen/subindextable.py
changeset 299 506f9700b9fb
parent 281 685d9a26e4f9
child 310 1975e546178b
equal deleted inserted replaced
298:dba062c5c3c1 299:506f9700b9fb
   245 [ID_EDITINGPANELINDEXLISTMENUITEMS0, ID_EDITINGPANELINDEXLISTMENUITEMS1, 
   245 [ID_EDITINGPANELINDEXLISTMENUITEMS0, ID_EDITINGPANELINDEXLISTMENUITEMS1, 
   246  ID_EDITINGPANELINDEXLISTMENUITEMS2, 
   246  ID_EDITINGPANELINDEXLISTMENUITEMS2, 
   247 ] = [wx.NewId() for _init_coll_IndexListMenu_Items in range(3)]
   247 ] = [wx.NewId() for _init_coll_IndexListMenu_Items in range(3)]
   248 
   248 
   249 [ID_EDITINGPANELMENU1ITEMS0, ID_EDITINGPANELMENU1ITEMS1, 
   249 [ID_EDITINGPANELMENU1ITEMS0, ID_EDITINGPANELMENU1ITEMS1, 
   250 ] = [wx.NewId() for _init_coll_SubindexGridMenu_Items in range(2)]
   250  ID_EDITINGPANELMENU1ITEMS3, 
       
   251 ] = [wx.NewId() for _init_coll_SubindexGridMenu_Items in range(3)]
   251 
   252 
   252 class EditingPanel(wx.SplitterWindow):
   253 class EditingPanel(wx.SplitterWindow):
   253     def _init_coll_AddToListSizer_Items(self, parent):
   254     def _init_coll_AddToListSizer_Items(self, parent):
   254         parent.AddWindow(self.AddButton, 0, border=0, flag=0)
   255         parent.AddWindow(self.AddButton, 0, border=0, flag=0)
   255         parent.AddWindow(self.IndexChoice, 0, border=0, flag=wx.GROW)
   256         parent.AddWindow(self.IndexChoice, 0, border=0, flag=wx.GROW)
   273         parent.AddGrowableCol(0)
   274         parent.AddGrowableCol(0)
   274         parent.AddGrowableRow(0)
   275         parent.AddGrowableRow(0)
   275 
   276 
   276     def _init_coll_SubindexGridMenu_Items(self, parent):
   277     def _init_coll_SubindexGridMenu_Items(self, parent):
   277         parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS0,
   278         parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS0,
   278               kind=wx.ITEM_NORMAL, text='Add')
   279               kind=wx.ITEM_NORMAL, text='Add subindexes')
   279         parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS1,
   280         parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS1,
   280               kind=wx.ITEM_NORMAL, text='Delete')
   281               kind=wx.ITEM_NORMAL, text='Delete subindexes')
       
   282         parent.AppendSeparator()
       
   283         parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS3,
       
   284               kind=wx.ITEM_NORMAL, text='Default value')
   281         self.Bind(wx.EVT_MENU, self.OnAddSubindexMenu,
   285         self.Bind(wx.EVT_MENU, self.OnAddSubindexMenu,
   282               id=ID_EDITINGPANELMENU1ITEMS0)
   286               id=ID_EDITINGPANELMENU1ITEMS0)
   283         self.Bind(wx.EVT_MENU, self.OnDeleteSubindexMenu,
   287         self.Bind(wx.EVT_MENU, self.OnDeleteSubindexMenu,
   284               id=ID_EDITINGPANELMENU1ITEMS1)
   288               id=ID_EDITINGPANELMENU1ITEMS1)
       
   289         self.Bind(wx.EVT_MENU, self.OnDefaultValueSubindexMenu,
       
   290               id=ID_EDITINGPANELMENU1ITEMS3)
   285 
   291 
   286     def _init_coll_IndexListMenu_Items(self, parent):
   292     def _init_coll_IndexListMenu_Items(self, parent):
   287         parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS0,
   293         parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS0,
   288               kind=wx.ITEM_NORMAL, text='Rename')
   294               kind=wx.ITEM_NORMAL, text='Rename')
   289         parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS2,
   295         parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS2,
   389               name='IndexChoice', parent=self.IndexListPanel, pos=wx.Point(50,
   395               name='IndexChoice', parent=self.IndexListPanel, pos=wx.Point(50,
   390               0), size=wx.Size(-1, 30), style=0)
   396               0), size=wx.Size(-1, 30), style=0)
   391 
   397 
   392         self._init_sizers()
   398         self._init_sizers()
   393 
   399 
   394     def __init__(self, parent, manager, editable = True):
   400     def __init__(self, parent, window, manager, editable = True):
   395         self._init_ctrls(parent.GetNoteBook())
   401         self._init_ctrls(parent)
   396         self.ParentWindow = parent
   402         self.ParentWindow = window
   397         self.Manager = manager
   403         self.Manager = manager
   398         self.ListIndex = []
   404         self.ListIndex = []
   399         self.ChoiceIndex = []
   405         self.ChoiceIndex = []
   400         self.FirstCall = False
   406         self.FirstCall = False
   401         self.Editable = editable
   407         self.Editable = editable
   402         self.Index = None
   408         self.Index = None
   403         
   409         
   404         for values in DictionaryOrganisation:
   410         for values in DictionaryOrganisation:
   405             text = "   0x%04X-0x%04X      %s"%(values["minIndex"],values["maxIndex"],values["name"])
   411             text = "   0x%04X-0x%04X      %s"%(values["minIndex"], values["maxIndex"], values["name"])
   406             self.PartList.Append(text)
   412             self.PartList.Append(text)
   407         self.Table = SubindexTable(self, [], [], ["subindex", "name", "type", "value", "access", "save", "comment"])
   413         self.Table = SubindexTable(self, [], [], ["subindex", "name", "type", "value", "access", "save", "comment"])
   408         self.SubindexGrid.SetTable(self.Table)
   414         self.SubindexGrid.SetTable(self.Table)
   409         self.SubindexGrid.SetRowLabelSize(0)
   415         self.SubindexGrid.SetRowLabelSize(0)
   410         self.CallbackCheck.Disable()
   416         self.CallbackCheck.Disable()
   628             else:
   634             else:
   629                 self.FirstCall = False
   635                 self.FirstCall = False
   630         event.Skip()
   636         event.Skip()
   631 
   637 
   632     def OnSubindexGridRightClick(self, event):
   638     def OnSubindexGridRightClick(self, event):
       
   639         self.SubindexGrid.SetGridCursor(event.GetRow(), event.GetCol())
   633         if self.Editable:
   640         if self.Editable:
   634             selected = self.IndexList.GetSelection()
   641             selected = self.IndexList.GetSelection()
   635             if selected != wx.NOT_FOUND:
   642             if selected != wx.NOT_FOUND:
   636                 index = self.ListIndex[selected]
   643                 index = self.ListIndex[selected]
   637                 if self.Manager.IsCurrentEntry(index):
   644                 if self.Manager.IsCurrentEntry(index):
       
   645                     showpopup = False
   638                     infos = self.Manager.GetEntryInfos(index)
   646                     infos = self.Manager.GetEntryInfos(index)
   639                     if index >= 0x2000 and infos["struct"] & OD_MultipleSubindexes or infos["struct"] & OD_IdenticalSubindexes:
   647                     if index >= 0x2000 and infos["struct"] & OD_MultipleSubindexes or infos["struct"] & OD_IdenticalSubindexes:
       
   648                         showpopup = True
       
   649                         self.SubindexGridMenu.FindItemByPosition(0).Enable(True)
       
   650                         self.SubindexGridMenu.FindItemByPosition(1).Enable(True)
       
   651                     else:
       
   652                         self.SubindexGridMenu.FindItemByPosition(0).Enable(False)
       
   653                         self.SubindexGridMenu.FindItemByPosition(1).Enable(False)
       
   654                     if self.Table.GetColLabelValue(event.GetCol()) == "value":
       
   655                         showpopup = True
       
   656                         self.SubindexGridMenu.FindItemByPosition(3).Enable(True)
       
   657                     else:
       
   658                         self.SubindexGridMenu.FindItemByPosition(3).Enable(False)
       
   659                     if showpopup:
   640                         self.PopupMenu(self.SubindexGridMenu)
   660                         self.PopupMenu(self.SubindexGridMenu)
   641         event.Skip()
   661         event.Skip()
   642 
   662 
   643     def OnRenameIndexMenu(self, event):
   663     def OnRenameIndexMenu(self, event):
   644         if self.Editable:
   664         if self.Editable:
   727                             message.ShowModal()
   747                             message.ShowModal()
   728                             message.Destroy()
   748                             message.Destroy()
   729                     dialog.Destroy()
   749                     dialog.Destroy()
   730         event.Skip()
   750         event.Skip()
   731 
   751 
       
   752     def OnDefaultValueSubindexMenu(self, event):
       
   753         if self.Editable:
       
   754             selected = self.IndexList.GetSelection()
       
   755             if selected != wx.NOT_FOUND:
       
   756                 index = self.ListIndex[selected]
       
   757                 if self.Manager.IsCurrentEntry(index):
       
   758                     row = self.SubindexGrid.GetGridCursorRow()
       
   759                     self.Manager.SetCurrentEntryToDefault(index, row)
       
   760                     self.ParentWindow.RefreshBufferState()
       
   761                     self.RefreshIndexList()
       
   762         event.Skip()