comparison 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
comparison
equal deleted inserted replaced
142:982ddb5f786d 143:1cc59ac80950
50 if index.isValid(): 50 if index.isValid():
51 row = index.row() 51 row = index.row()
52 col = index.column() 52 col = index.column()
53 if role == Qt.EditRole and col == 1: 53 if role == Qt.EditRole and col == 1:
54 value = int(value, 16) 54 value = int(value, 16)
55 print(row, value, type(row), type(value))
56 self.device.iface.write_reg(row, value) 55 self.device.iface.write_reg(row, value)
57 return True 56 return True
58 return False 57 return False
59 def flags(self, index): 58 def flags(self, index):
60 if index.isValid(): 59 if index.isValid():
61 row = index.row() 60 row = index.row()
62 col = index.column() 61 col = index.column()
63 if col == 1: 62 if col == 1:
64 return super().flags(index) | Qt.ItemIsEditable 63 return super().flags(index) | Qt.ItemIsEditable
65 return super().flags(index) 64 return super().flags(index)
65 def refresh(self):
66 if self.device:
67 fromIndex = self.index(0, 1)
68 toIndex = self.index(21, 1)
69 self.dataChanged.emit(fromIndex, toIndex)
66 70
67 class RegisterView(QTableView): 71 class RegisterView(QTableView):
68 def __init__(self): 72 def __init__(self):
69 super().__init__() 73 super().__init__()
70 self.mdl = RegisterModel() 74 self.mdl = RegisterModel()
71 self.setModel(self.mdl) 75 self.setModel(self.mdl)
76 def refresh(self):
77 self.mdl.refresh()
72 78
73 class MemoryView(QWidget): 79 class MemoryView(QWidget):
80 BlockSize = 0x100
74 def __init__(self): 81 def __init__(self):
75 super().__init__() 82 super().__init__()
76 l = QVBoxLayout(self) 83 l = QVBoxLayout(self)
77 l2 = QHBoxLayout() 84 l2 = QHBoxLayout()
78 l2.addWidget(QLabel('Address')) 85 l2.addWidget(QLabel('Address'))
79 self.addressLine = QLineEdit() 86 self.addressLine = QLineEdit()
80 self.addressLine.setInputMask('Hhhhhhhh') 87 self.addressLine.setInputMask('Hhhhhhhh')
81 self.addressLine.setText('08000000')
82 l2.addWidget(self.addressLine) 88 l2.addWidget(self.addressLine)
89 upButton = QPushButton('up')
90 l2.addWidget(upButton)
91 upButton.clicked.connect(self.doUp)
92 downButton = QPushButton('down')
93 downButton.clicked.connect(self.doDown)
94 l2.addWidget(downButton)
83 l.addLayout(l2) 95 l.addLayout(l2)
84 self.device = None 96 self.device = None
85 self.hexEdit = HexEdit() 97 self.hexEdit = HexEdit()
86 self.loadAddress(0x8000000) 98 self.Address = 0x8000000
87 l.addWidget(self.hexEdit) 99 l.addWidget(self.hexEdit)
88 self.addressLine.returnPressed.connect(self.doLoad) 100 self.addressLine.returnPressed.connect(self.doLoad)
89 def doLoad(self): 101 def doLoad(self):
90 txt = self.addressLine.text() 102 txt = self.addressLine.text()
91 self.loadAddress(int(txt, 16)) 103 self.loadAddress(int(txt, 16))
92 def loadAddress(self, address): 104 def getAddress(self):
93 size = 512 105 txt = self.addressLine.text()
106 return int(txt, 16)
107 def doUp(self):
108 self.Address -= self.BlockSize
109 def doDown(self):
110 self.Address += self.BlockSize
111 def setAddress(self, address):
94 if self.device: 112 if self.device:
95 data = self.device.iface.read_mem32(address, size) 113 data = self.device.iface.read_mem32(address, self.BlockSize)
96 else: 114 else:
97 data = bytearray(size) 115 data = bytearray(self.BlockSize)
98 self.hexEdit.bv.Data = data 116 self.hexEdit.bv.Data = data
99 self.hexEdit.bv.Offset = address 117 self.hexEdit.bv.Offset = address
118 self.addressLine.setText('{0:08X}'.format(address))
119 Address = property(getAddress, setAddress)
100 def setDevice(self, dev): 120 def setDevice(self, dev):
101 self.device = dev 121 self.device = dev
102 self.loadAddress(0x8000000) 122 self.Address = 0x8000000
103 123
104 class DebugToolbar(QToolBar): 124 class DebugToolbar(QToolBar):
125 statusChange = pyqtSignal()
105 def __init__(self): 126 def __init__(self):
106 super().__init__() 127 super().__init__()
107 self.device = None 128 self.device = None
108 # generate actions: 129 # generate actions:
109 def genAction(name, callback): 130 def genAction(name, callback):
117 self.resetAction = genAction('Reset', self.doReset) 138 self.resetAction = genAction('Reset', self.doReset)
118 self.updateEnables() 139 self.updateEnables()
119 def updateEnables(self): 140 def updateEnables(self):
120 if self.device: 141 if self.device:
121 self.resetAction.setEnabled(True) 142 self.resetAction.setEnabled(True)
122 if self.device.Running: 143 self.runAction.setEnabled(not self.device.Running)
123 self.runAction.setEnabled(False) 144 self.stepAction.setEnabled(not self.device.Running)
124 self.stepAction.setEnabled(False) 145 self.stopAction.setEnabled(self.device.Running)
125 self.stopAction.setEnabled(True) 146 self.statusChange.emit()
126 else:
127 self.runAction.setEnabled(True)
128 self.stepAction.setEnabled(True)
129 self.stopAction.setEnabled(False)
130 else: 147 else:
131 self.resetAction.setEnabled(False) 148 self.resetAction.setEnabled(False)
132 self.runAction.setEnabled(False) 149 self.runAction.setEnabled(False)
133 self.stepAction.setEnabled(False) 150 self.stepAction.setEnabled(False)
134 self.stopAction.setEnabled(False) 151 self.stopAction.setEnabled(False)