objdictgen/subindextable.py
changeset 271 2f286d3fc7f6
parent 269 f0ed853bace7
child 273 58b39f97e352
equal deleted inserted replaced
270:178030c1dff8 271:2f286d3fc7f6
   390 
   390 
   391         self._init_sizers()
   391         self._init_sizers()
   392 
   392 
   393     def __init__(self, parent, manager, editable = True):
   393     def __init__(self, parent, manager, editable = True):
   394         self._init_ctrls(parent.GetNoteBook())
   394         self._init_ctrls(parent.GetNoteBook())
   395         self.Parent = parent
   395         self.ParentWindow = parent
   396         self.Manager = manager
   396         self.Manager = manager
   397         self.ListIndex = []
   397         self.ListIndex = []
   398         self.ChoiceIndex = []
   398         self.ChoiceIndex = []
   399         self.FirstCall = False
   399         self.FirstCall = False
   400         self.Editable = editable
   400         self.Editable = editable
   437         if self.Editable:
   437         if self.Editable:
   438             self.SubindexGrid.SetGridCursor(0, 0)
   438             self.SubindexGrid.SetGridCursor(0, 0)
   439             selected = self.IndexChoice.GetStringSelection()
   439             selected = self.IndexChoice.GetStringSelection()
   440             if selected != "":
   440             if selected != "":
   441                 if selected == "User Type":
   441                 if selected == "User Type":
   442                     self.Parent.AddUserType()
   442                     self.ParentWindow.AddUserType()
   443                 elif selected == "SDO Server":
   443                 elif selected == "SDO Server":
   444                     self.Manager.AddSDOServerToCurrent()
   444                     self.Manager.AddSDOServerToCurrent()
   445                 elif selected == "SDO Client":
   445                 elif selected == "SDO Client":
   446                     self.Manager.AddSDOClientToCurrent()
   446                     self.Manager.AddSDOClientToCurrent()
   447                 elif selected == "PDO Receive":
   447                 elif selected == "PDO Receive":
   448                     self.Manager.AddPDOReceiveToCurrent()
   448                     self.Manager.AddPDOReceiveToCurrent()
   449                 elif selected == "PDO Transmit":
   449                 elif selected == "PDO Transmit":
   450                     self.Manager.AddPDOTransmitToCurrent()
   450                     self.Manager.AddPDOTransmitToCurrent()
   451                 elif selected == "Map Variable":
   451                 elif selected == "Map Variable":
   452                     self.Parent.AddMapVariable()
   452                     self.ParentWindow.AddMapVariable()
   453                 elif selected in [menu for menu, indexes in self.Manager.GetCurrentSpecificMenu()]:
   453                 elif selected in [menu for menu, indexes in self.Manager.GetCurrentSpecificMenu()]:
   454                     self.Manager.AddSpecificEntryToCurrent(selected)
   454                     self.Manager.AddSpecificEntryToCurrent(selected)
   455                 else:
   455                 else:
   456                     index = self.ChoiceIndex[self.IndexChoice.GetSelection()]
   456                     index = self.ChoiceIndex[self.IndexChoice.GetSelection()]
   457                     self.Manager.ManageEntriesOfCurrent([index], [])
   457                     self.Manager.ManageEntriesOfCurrent([index], [])
   458                 self.Parent.RefreshBufferState()
   458                 self.ParentWindow.RefreshBufferState()
   459                 self.RefreshIndexList()
   459                 self.RefreshIndexList()
   460         event.Skip()
   460         event.Skip()
   461 
   461 
   462     def OnPartListBoxClick(self, event):
   462     def OnPartListBoxClick(self, event):
   463         self.SubindexGrid.SetGridCursor(0, 0)
   463         self.SubindexGrid.SetGridCursor(0, 0)
   469         self.RefreshTable()
   469         self.RefreshTable()
   470         event.Skip()
   470         event.Skip()
   471 
   471 
   472     def OnSubindexGridSelectCell(self, event):
   472     def OnSubindexGridSelectCell(self, event):
   473         wx.CallAfter(self.BeginDrag)
   473         wx.CallAfter(self.BeginDrag)
   474         wx.CallAfter(self.Parent.RefreshStatusBar)
   474         wx.CallAfter(self.ParentWindow.RefreshStatusBar)
   475         event.Skip()
   475         event.Skip()
   476 
   476 
   477     def BeginDrag(self):
   477     def BeginDrag(self):
   478         if not self.Parent.ModeSolo:
   478         if not self.ParentWindow.ModeSolo:
   479             row = self.SubindexGrid.GetGridCursorRow()
   479             row = self.SubindexGrid.GetGridCursorRow()
   480             col = self.SubindexGrid.GetGridCursorCol()
   480             col = self.SubindexGrid.GetGridCursorCol()
   481             if not self.Editable and col == 0:
   481             if not self.Editable and col == 0:
   482                 selected = self.IndexList.GetSelection()
   482                 selected = self.IndexList.GetSelection()
   483                 if selected != wx.NOT_FOUND:
   483                 if selected != wx.NOT_FOUND:
   549         if selected == wx.NOT_FOUND or selected >= len(self.ListIndex) or selectedindex != self.ListIndex[selected]:
   549         if selected == wx.NOT_FOUND or selected >= len(self.ListIndex) or selectedindex != self.ListIndex[selected]:
   550             self.Table.Empty()
   550             self.Table.Empty()
   551             self.CallbackCheck.SetValue(False)
   551             self.CallbackCheck.SetValue(False)
   552             self.CallbackCheck.Disable()
   552             self.CallbackCheck.Disable()
   553             self.Table.ResetView(self.SubindexGrid)
   553             self.Table.ResetView(self.SubindexGrid)
   554             self.Parent.RefreshStatusBar()
   554             self.ParentWindow.RefreshStatusBar()
   555         else:
   555         else:
   556             self.IndexList.SetSelection(selected)
   556             self.IndexList.SetSelection(selected)
   557             self.RefreshTable()
   557             self.RefreshTable()
   558 
   558 
   559     def RefreshTable(self):
   559     def RefreshTable(self):
   568                 self.Table.SetCurrentIndex(index)
   568                 self.Table.SetCurrentIndex(index)
   569                 data, editors = result
   569                 data, editors = result
   570                 self.Table.SetData(data)
   570                 self.Table.SetData(data)
   571                 self.Table.SetEditors(editors)
   571                 self.Table.SetEditors(editors)
   572                 self.Table.ResetView(self.SubindexGrid)
   572                 self.Table.ResetView(self.SubindexGrid)
   573         self.Parent.RefreshStatusBar()
   573         self.ParentWindow.RefreshStatusBar()
   574 
   574 
   575 #-------------------------------------------------------------------------------
   575 #-------------------------------------------------------------------------------
   576 #                        Editing Table value function
   576 #                        Editing Table value function
   577 #-------------------------------------------------------------------------------
   577 #-------------------------------------------------------------------------------
   578 
   578 
   583             col = event.GetCol()
   583             col = event.GetCol()
   584             name = self.Table.GetColLabelValue(col)
   584             name = self.Table.GetColLabelValue(col)
   585             value = self.Table.GetValue(subIndex, col)
   585             value = self.Table.GetValue(subIndex, col)
   586             editor = self.Table.GetEditor(subIndex, col)
   586             editor = self.Table.GetEditor(subIndex, col)
   587             self.Manager.SetCurrentEntry(index, subIndex, value, name, editor)
   587             self.Manager.SetCurrentEntry(index, subIndex, value, name, editor)
   588             self.Parent.RefreshBufferState()
   588             self.ParentWindow.RefreshBufferState()
   589             wx.CallAfter(self.RefreshTable)
   589             wx.CallAfter(self.RefreshTable)
   590         event.Skip()
   590         event.Skip()
   591 
   591 
   592     def OnCallbackCheck(self, event):
   592     def OnCallbackCheck(self, event):
   593         if self.Editable:
   593         if self.Editable:
   594             index = self.Table.GetCurrentIndex()
   594             index = self.Table.GetCurrentIndex()
   595             self.Manager.SetCurrentEntryCallbacks(index, self.CallbackCheck.GetValue())
   595             self.Manager.SetCurrentEntryCallbacks(index, self.CallbackCheck.GetValue())
   596             self.Parent.RefreshBufferState()
   596             self.ParentWindow.RefreshBufferState()
   597             wx.CallAfter(self.RefreshTable)
   597             wx.CallAfter(self.RefreshTable)
   598         event.Skip()
   598         event.Skip()
   599 
   599 
   600 #-------------------------------------------------------------------------------
   600 #-------------------------------------------------------------------------------
   601 #                          Contextual Menu functions
   601 #                          Contextual Menu functions
   648                     infos = self.Manager.GetEntryInfos(index)
   648                     infos = self.Manager.GetEntryInfos(index)
   649                     dialog = wx.TextEntryDialog(self, "Give a new name for index 0x%04X"%index,
   649                     dialog = wx.TextEntryDialog(self, "Give a new name for index 0x%04X"%index,
   650                                  "Rename an index", infos["name"], wx.OK|wx.CANCEL)
   650                                  "Rename an index", infos["name"], wx.OK|wx.CANCEL)
   651                     if dialog.ShowModal() == wx.ID_OK:
   651                     if dialog.ShowModal() == wx.ID_OK:
   652                         self.Manager.SetCurrentEntryName(index, dialog.GetValue())
   652                         self.Manager.SetCurrentEntryName(index, dialog.GetValue())
   653                         self.Parent.RefreshBufferState()
   653                         self.ParentWindow.RefreshBufferState()
   654                         self.RefreshIndexList()
   654                         self.RefreshIndexList()
   655                     dialog.Destroy()
   655                     dialog.Destroy()
   656         event.Skip()
   656         event.Skip()
   657 
   657 
   658     def OnModifyIndexMenu(self, event):
   658     def OnModifyIndexMenu(self, event):
   669                     elif valuetype == 1:
   669                     elif valuetype == 1:
   670                         dialog.SetValues(length = values[2])
   670                         dialog.SetValues(length = values[2])
   671                     if dialog.ShowModal() == wx.ID_OK:
   671                     if dialog.ShowModal() == wx.ID_OK:
   672                         type, min, max, length = dialog.GetValues()
   672                         type, min, max, length = dialog.GetValues()
   673                         self.Manager.SetCurrentUserType(index, type, min, max, length)
   673                         self.Manager.SetCurrentUserType(index, type, min, max, length)
   674                         self.Parent.RefreshBufferState()
   674                         self.ParentWindow.RefreshBufferState()
   675                         self.RefreshIndexList()
   675                         self.RefreshIndexList()
   676         event.Skip()
   676         event.Skip()
   677         
   677         
   678     def OnDeleteIndexMenu(self, event):
   678     def OnDeleteIndexMenu(self, event):
   679         if self.Editable:
   679         if self.Editable:
   680             selected = self.IndexList.GetSelection()
   680             selected = self.IndexList.GetSelection()
   681             if selected != wx.NOT_FOUND:
   681             if selected != wx.NOT_FOUND:
   682                 index = self.ListIndex[selected]
   682                 index = self.ListIndex[selected]
   683                 if self.Manager.IsCurrentEntry(index):
   683                 if self.Manager.IsCurrentEntry(index):
   684                     self.Manager.ManageEntriesOfCurrent([],[index])
   684                     self.Manager.ManageEntriesOfCurrent([],[index])
   685                     self.Parent.RefreshBufferState()
   685                     self.ParentWindow.RefreshBufferState()
   686                     self.RefreshIndexList()
   686                     self.RefreshIndexList()
   687         event.Skip()
   687         event.Skip()
   688 
   688 
   689     def OnAddSubindexMenu(self, event):
   689     def OnAddSubindexMenu(self, event):
   690         if self.Editable:
   690         if self.Editable:
   696                                  "Add subindexes", "1", wx.OK|wx.CANCEL)
   696                                  "Add subindexes", "1", wx.OK|wx.CANCEL)
   697                     if dialog.ShowModal() == wx.ID_OK:
   697                     if dialog.ShowModal() == wx.ID_OK:
   698                         try:
   698                         try:
   699                             number = int(dialog.GetValue())
   699                             number = int(dialog.GetValue())
   700                             self.Manager.AddSubentriesToCurrent(index, number)
   700                             self.Manager.AddSubentriesToCurrent(index, number)
   701                             self.Parent.RefreshBufferState()
   701                             self.ParentWindow.RefreshBufferState()
   702                             self.RefreshIndexList()
   702                             self.RefreshIndexList()
   703                         except:
   703                         except:
   704                             message = wx.MessageDialog(self, "An integer is required!", "ERROR", wx.OK|wx.ICON_ERROR)
   704                             message = wx.MessageDialog(self, "An integer is required!", "ERROR", wx.OK|wx.ICON_ERROR)
   705                             message.ShowModal()
   705                             message.ShowModal()
   706                             message.Destroy()
   706                             message.Destroy()
   717                                  "Delete subindexes", "1", wx.OK|wx.CANCEL)
   717                                  "Delete subindexes", "1", wx.OK|wx.CANCEL)
   718                     if dialog.ShowModal() == wx.ID_OK:
   718                     if dialog.ShowModal() == wx.ID_OK:
   719                         try:
   719                         try:
   720                             number = int(dialog.GetValue())
   720                             number = int(dialog.GetValue())
   721                             self.Manager.RemoveSubentriesFromCurrent(index, number)
   721                             self.Manager.RemoveSubentriesFromCurrent(index, number)
   722                             self.Parent.RefreshBufferState()
   722                             self.ParentWindow.RefreshBufferState()
   723                             self.RefreshIndexList()
   723                             self.RefreshIndexList()
   724                         except:
   724                         except:
   725                             message = wx.MessageDialog(self, "An integer is required!", "ERROR", wx.OK|wx.ICON_ERROR)
   725                             message = wx.MessageDialog(self, "An integer is required!", "ERROR", wx.OK|wx.ICON_ERROR)
   726                             message.ShowModal()
   726                             message.ShowModal()
   727                             message.Destroy()
   727                             message.Destroy()