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 |