diff python/st-util.py @ 143:1cc59ac80950

Fixed halt button
author Windel Bouwman
date Sun, 27 Jan 2013 13:18:53 +0100
parents 14e739ed03ab
children 59a9a499e518
line wrap: on
line diff
--- a/python/st-util.py	Sun Jan 27 12:18:28 2013 +0100
+++ b/python/st-util.py	Sun Jan 27 13:18:53 2013 +0100
@@ -52,7 +52,6 @@
          col = index.column()
          if role == Qt.EditRole and col == 1:
             value = int(value, 16)
-            print(row, value, type(row), type(value))
             self.device.iface.write_reg(row, value)
             return True
       return False
@@ -63,14 +62,22 @@
          if col == 1:
             return super().flags(index) | Qt.ItemIsEditable
       return super().flags(index)
+   def refresh(self):
+      if self.device:
+         fromIndex = self.index(0, 1)
+         toIndex = self.index(21, 1)
+         self.dataChanged.emit(fromIndex, toIndex)
 
 class RegisterView(QTableView):
    def __init__(self):
       super().__init__()
       self.mdl = RegisterModel()
       self.setModel(self.mdl)
+   def refresh(self):
+      self.mdl.refresh()
 
 class MemoryView(QWidget):
+   BlockSize = 0x100
    def __init__(self):
       super().__init__()
       l = QVBoxLayout(self)
@@ -78,30 +85,44 @@
       l2.addWidget(QLabel('Address'))
       self.addressLine = QLineEdit()
       self.addressLine.setInputMask('Hhhhhhhh')
-      self.addressLine.setText('08000000')
       l2.addWidget(self.addressLine)
+      upButton = QPushButton('up')
+      l2.addWidget(upButton)
+      upButton.clicked.connect(self.doUp)
+      downButton = QPushButton('down')
+      downButton.clicked.connect(self.doDown)
+      l2.addWidget(downButton)
       l.addLayout(l2)
       self.device = None
       self.hexEdit = HexEdit()
-      self.loadAddress(0x8000000)
+      self.Address = 0x8000000
       l.addWidget(self.hexEdit)
       self.addressLine.returnPressed.connect(self.doLoad)
    def doLoad(self):
       txt = self.addressLine.text()
       self.loadAddress(int(txt, 16))
-   def loadAddress(self, address):
-      size = 512
+   def getAddress(self):
+      txt = self.addressLine.text()
+      return int(txt, 16)
+   def doUp(self):
+      self.Address -= self.BlockSize
+   def doDown(self):
+      self.Address += self.BlockSize
+   def setAddress(self, address):
       if self.device:
-         data = self.device.iface.read_mem32(address, size)
+         data = self.device.iface.read_mem32(address, self.BlockSize)
       else:
-         data = bytearray(size)
+         data = bytearray(self.BlockSize)
       self.hexEdit.bv.Data = data
       self.hexEdit.bv.Offset = address
+      self.addressLine.setText('{0:08X}'.format(address))
+   Address = property(getAddress, setAddress)
    def setDevice(self, dev):
       self.device = dev
-      self.loadAddress(0x8000000)
+      self.Address = 0x8000000
 
 class DebugToolbar(QToolBar):
+   statusChange = pyqtSignal()
    def __init__(self):
       super().__init__()
       self.device = None
@@ -119,14 +140,10 @@
    def updateEnables(self):
       if self.device:
          self.resetAction.setEnabled(True)
-         if self.device.Running:
-            self.runAction.setEnabled(False)
-            self.stepAction.setEnabled(False)
-            self.stopAction.setEnabled(True)
-         else:
-            self.runAction.setEnabled(True)
-            self.stepAction.setEnabled(True)
-            self.stopAction.setEnabled(False)
+         self.runAction.setEnabled(not self.device.Running)
+         self.stepAction.setEnabled(not self.device.Running)
+         self.stopAction.setEnabled(self.device.Running)
+         self.statusChange.emit()
       else:
          self.resetAction.setEnabled(False)
          self.runAction.setEnabled(False)