objdictgen/commondialogs.py
changeset 328 474aa35daa95
parent 327 b904d9a99e28
child 359 346435b94063
equal deleted inserted replaced
327:b904d9a99e28 328:474aa35daa95
  1434         self.ValuesGrid.SetRowLabelSize(0)
  1434         self.ValuesGrid.SetRowLabelSize(0)
  1435         self.ValuesGrid.SetSelectionBackground(wx.WHITE)
  1435         self.ValuesGrid.SetSelectionBackground(wx.WHITE)
  1436         self.ValuesGrid.SetSelectionForeground(wx.BLACK)
  1436         self.ValuesGrid.SetSelectionForeground(wx.BLACK)
  1437         if wx.VERSION >= (2, 6, 0):
  1437         if wx.VERSION >= (2, 6, 0):
  1438             self.ValuesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnValuesGridCellChange)
  1438             self.ValuesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnValuesGridCellChange)
       
  1439             self.ValuesGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnValuesGridSelectCell)
  1439         else:
  1440         else:
  1440             wx.grid.EVT_GRID_CELL_CHANGE(self.ValuesGrid, self.OnValuesGridCellChange)
  1441             wx.grid.EVT_GRID_CELL_CHANGE(self.ValuesGrid, self.OnValuesGridCellChange)
       
  1442             wx.grid.EVT_GRID_SELECT_CELL(self.ValuesGrid, self.OnValuesGridSelectCell)
  1441         
  1443         
  1442         self.AddButton = wx.Button(id=ID_DCFENTRYVALUESDIALOGADDBUTTON, label='Add',
  1444         self.AddButton = wx.Button(id=ID_DCFENTRYVALUESDIALOGADDBUTTON, label='Add',
  1443               name='AddButton', parent=self, pos=wx.Point(0, 0),
  1445               name='AddButton', parent=self, pos=wx.Point(0, 0),
  1444               size=wx.Size(72, 32), style=0)
  1446               size=wx.Size(72, 32), style=0)
  1445         self.Bind(wx.EVT_BUTTON, self.OnAddButton, id=ID_DCFENTRYVALUESDIALOGADDBUTTON)
  1447         self.Bind(wx.EVT_BUTTON, self.OnAddButton, id=ID_DCFENTRYVALUESDIALOGADDBUTTON)
  1484             message.Destroy()
  1486             message.Destroy()
  1485         finally:
  1487         finally:
  1486             wx.CallAfter(self.RefreshValues)
  1488             wx.CallAfter(self.RefreshValues)
  1487             event.Skip()
  1489             event.Skip()
  1488     
  1490     
       
  1491     def OnValuesGridSelectCell(self, event):
       
  1492         wx.CallAfter(self.RefreshButtons)
       
  1493         event.Skip()
       
  1494     
       
  1495     def RefreshButtons(self):
       
  1496         row = self.ValuesGrid.GetGridCursorRow()
       
  1497         length = len(self.Table.data)
       
  1498         self.DeleteButton.Enable(length > 0)
       
  1499         self.UpButton.Enable(row > 0)
       
  1500         self.DownButton.Enable(row < length - 1)
       
  1501     
  1489     def OnAddButton(self, event):
  1502     def OnAddButton(self, event):
  1490         new_row = self.DefaultValue.copy()
  1503         new_row = self.DefaultValue.copy()
  1491         self.Values.append(new_row)
  1504         self.Values.append(new_row)
  1492         self.RefreshValues()
  1505         self.RefreshValues()
  1493         event.Skip()
  1506         event.Skip()
  1494 
  1507 
  1495     def OnDeleteButton(self, event):
  1508     def OnDeleteButton(self, event):
  1496         row = self.Table.GetRow(self.ValuesGrid.GetGridCursorRow())
  1509         row = self.ValuesGrid.GetGridCursorRow()
  1497         self.Values.remove(row)
  1510         self.Values.pop(row)
  1498         self.RefreshValues()
  1511         self.RefreshValues()
  1499         event.Skip()
  1512         event.Skip()
  1500 
  1513 
  1501     def OnUpButton(self, event):
  1514     def OnUpButton(self, event):
  1502         self.MoveValue(self.ValuesGrid.GetGridCursorRow(), -1)
  1515         self.MoveValue(self.ValuesGrid.GetGridCursorRow(), -1)
  1508 
  1521 
  1509     def MoveValue(self, value_index, move):
  1522     def MoveValue(self, value_index, move):
  1510         new_index = max(0, min(value_index + move, len(self.Values) - 1))
  1523         new_index = max(0, min(value_index + move, len(self.Values) - 1))
  1511         if new_index != value_index:
  1524         if new_index != value_index:
  1512             self.Values.insert(new_index, self.Values.pop(value_index))
  1525             self.Values.insert(new_index, self.Values.pop(value_index))
       
  1526             col = self.ValuesGrid.GetGridCursorCol()
  1513             self.RefreshValues()
  1527             self.RefreshValues()
  1514             self.ValuesGrid.SetGridCursor(new_index, self.ValuesGrid.GetGridCursorCol())
  1528             self.ValuesGrid.SetGridCursor(new_index, col)
       
  1529             self.RefreshButtons()
  1515         else:
  1530         else:
  1516             self.RefreshValues()
  1531             self.RefreshValues()
  1517 
  1532 
  1518     def SetValues(self, values):
  1533     def SetValues(self, values):
  1519         self.Values = []
  1534         self.Values = []
  1540             value += LE_to_BE(row["Value"], row["Size"])
  1555             value += LE_to_BE(row["Value"], row["Size"])
  1541         return value
  1556         return value
  1542     
  1557     
  1543     def RefreshValues(self):
  1558     def RefreshValues(self):
  1544         if len(self.Table.data) > 0:
  1559         if len(self.Table.data) > 0:
  1545             self.ValuesGrid.SetGridCursor(0, 1)
  1560             self.ValuesGrid.SetGridCursor(0, 0)
  1546         data = []
  1561         data = []
  1547         for value in self.Values:
  1562         for value in self.Values:
  1548             row = {}
  1563             row = {}
  1549             row["Index"] = "%04X"%value["Index"]
  1564             row["Index"] = "%04X"%value["Index"]
  1550             row["Subindex"] = "%02X"%value["Subindex"]
  1565             row["Subindex"] = "%02X"%value["Subindex"]
  1551             row["Size"] = "%08X"%value["Size"]
  1566             row["Size"] = "%08X"%value["Size"]
  1552             row["Value"] = ("%0"+"%d"%(value["Size"] * 2)+"X")%value["Value"]
  1567             row["Value"] = ("%0"+"%d"%(value["Size"] * 2)+"X")%value["Value"]
  1553             data.append(row)
  1568             data.append(row)
  1554         self.Table.SetData(data)
  1569         self.Table.SetData(data)
  1555         self.Table.ResetView(self.ValuesGrid)
  1570         self.Table.ResetView(self.ValuesGrid)
       
  1571         self.RefreshButtons()
       
  1572