Mercurial > lcfOS
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) |