src/eric7/UI/NumbersWidget.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
19 19
20 class BinaryModel(QAbstractTableModel): 20 class BinaryModel(QAbstractTableModel):
21 """ 21 """
22 Class implementing a model for entering binary numbers. 22 Class implementing a model for entering binary numbers.
23 """ 23 """
24
24 def __init__(self, parent=None): 25 def __init__(self, parent=None):
25 """ 26 """
26 Constructor 27 Constructor
27 28
28 @param parent reference to the parent widget (QWidget) 29 @param parent reference to the parent widget (QWidget)
29 """ 30 """
30 super().__init__(parent) 31 super().__init__(parent)
31 32
32 self.__bits = 0 33 self.__bits = 0
33 self.__value = 0 34 self.__value = 0
34 35
35 def rowCount(self, parent): 36 def rowCount(self, parent):
36 """ 37 """
37 Public method to get the number of rows of the model. 38 Public method to get the number of rows of the model.
38 39
39 @param parent parent index (QModelIndex) 40 @param parent parent index (QModelIndex)
40 @return number of columns (integer) 41 @return number of columns (integer)
41 """ 42 """
42 return 1 43 return 1
43 44
44 def columnCount(self, parent): 45 def columnCount(self, parent):
45 """ 46 """
46 Public method to get the number of columns of the model. 47 Public method to get the number of columns of the model.
47 48
48 @param parent parent index (QModelIndex) 49 @param parent parent index (QModelIndex)
49 @return number of columns (integer) 50 @return number of columns (integer)
50 """ 51 """
51 return self.__bits 52 return self.__bits
52 53
53 def data(self, index, role=Qt.ItemDataRole.DisplayRole): 54 def data(self, index, role=Qt.ItemDataRole.DisplayRole):
54 """ 55 """
55 Public method to get data from the model. 56 Public method to get data from the model.
56 57
57 @param index index to get data for (QModelIndex) 58 @param index index to get data for (QModelIndex)
58 @param role role of the data to retrieve (integer) 59 @param role role of the data to retrieve (integer)
59 @return requested data 60 @return requested data
60 """ 61 """
61 if role == Qt.ItemDataRole.CheckStateRole: 62 if role == Qt.ItemDataRole.CheckStateRole:
62 if (self.__value >> (self.__bits - index.column() - 1)) & 1: 63 if (self.__value >> (self.__bits - index.column() - 1)) & 1:
63 return Qt.CheckState.Checked 64 return Qt.CheckState.Checked
64 else: 65 else:
65 return Qt.CheckState.Unchecked 66 return Qt.CheckState.Unchecked
66 67
67 elif role == Qt.ItemDataRole.DisplayRole: 68 elif role == Qt.ItemDataRole.DisplayRole:
68 return "" 69 return ""
69 70
70 return None 71 return None
71 72
72 def flags(self, index): 73 def flags(self, index):
73 """ 74 """
74 Public method to get flags from the model. 75 Public method to get flags from the model.
75 76
76 @param index index to get flags for (QModelIndex) 77 @param index index to get flags for (QModelIndex)
77 @return flags (Qt.ItemFlags) 78 @return flags (Qt.ItemFlags)
78 """ 79 """
79 return ( 80 return (
80 Qt.ItemFlag.ItemIsUserCheckable | 81 Qt.ItemFlag.ItemIsUserCheckable
81 Qt.ItemFlag.ItemIsEnabled | 82 | Qt.ItemFlag.ItemIsEnabled
82 Qt.ItemFlag.ItemIsSelectable 83 | Qt.ItemFlag.ItemIsSelectable
83 ) 84 )
84 85
85 def headerData(self, section, orientation, 86 def headerData(self, section, orientation, role=Qt.ItemDataRole.DisplayRole):
86 role=Qt.ItemDataRole.DisplayRole):
87 """ 87 """
88 Public method to get header data from the model. 88 Public method to get header data from the model.
89 89
90 @param section section number (integer) 90 @param section section number (integer)
91 @param orientation orientation (Qt.Orientation) 91 @param orientation orientation (Qt.Orientation)
92 @param role role of the data to retrieve (Qt.ItemDataRole) 92 @param role role of the data to retrieve (Qt.ItemDataRole)
93 @return requested data 93 @return requested data
94 """ 94 """
95 if ( 95 if (
96 orientation == Qt.Orientation.Horizontal and 96 orientation == Qt.Orientation.Horizontal
97 role == Qt.ItemDataRole.DisplayRole 97 and role == Qt.ItemDataRole.DisplayRole
98 ): 98 ):
99 return str(self.__bits - section - 1) 99 return str(self.__bits - section - 1)
100 100
101 return QAbstractTableModel.headerData(self, section, orientation, role) 101 return QAbstractTableModel.headerData(self, section, orientation, role)
102 102
103 def setBits(self, bits): 103 def setBits(self, bits):
104 """ 104 """
105 Public slot to set the number of bits. 105 Public slot to set the number of bits.
106 106
107 @param bits number of bits to show (integer) 107 @param bits number of bits to show (integer)
108 """ 108 """
109 self.beginResetModel() 109 self.beginResetModel()
110 self.__bits = bits 110 self.__bits = bits
111 self.endResetModel() 111 self.endResetModel()
112 112
113 def setValue(self, value): 113 def setValue(self, value):
114 """ 114 """
115 Public slot to set the value to show. 115 Public slot to set the value to show.
116 116
117 @param value value to show (integer) 117 @param value value to show (integer)
118 """ 118 """
119 self.beginResetModel() 119 self.beginResetModel()
120 self.__value = value 120 self.__value = value
121 self.endResetModel() 121 self.endResetModel()
122 122
123 def setBitsAndValue(self, bits, value): 123 def setBitsAndValue(self, bits, value):
124 """ 124 """
125 Public slot to set the number of bits and the value to show. 125 Public slot to set the number of bits and the value to show.
126 126
127 @param bits number of bits to show (integer) 127 @param bits number of bits to show (integer)
128 @param value value to show (integer) 128 @param value value to show (integer)
129 """ 129 """
130 self.__bits = bits 130 self.__bits = bits
131 self.__value = value 131 self.__value = value
132 self.beginResetModel() 132 self.beginResetModel()
133 self.endResetModel() 133 self.endResetModel()
134 134
135 def getValue(self): 135 def getValue(self):
136 """ 136 """
137 Public slot to get the current value. 137 Public slot to get the current value.
138 138
139 @return current value of the model (integer) 139 @return current value of the model (integer)
140 """ 140 """
141 return self.__value 141 return self.__value
142 142
143 def setData(self, index, value, role=Qt.ItemDataRole.EditRole): 143 def setData(self, index, value, role=Qt.ItemDataRole.EditRole):
144 """ 144 """
145 Public method to set the data of a node cell. 145 Public method to set the data of a node cell.
146 146
147 @param index index of the node cell (QModelIndex) 147 @param index index of the node cell (QModelIndex)
148 @param value value to be set 148 @param value value to be set
149 @param role role of the data (integer) 149 @param role role of the data (integer)
150 @return flag indicating success (boolean) 150 @return flag indicating success (boolean)
151 """ 151 """
152 if role == Qt.ItemDataRole.CheckStateRole: 152 if role == Qt.ItemDataRole.CheckStateRole:
153 if Qt.CheckState(value) == Qt.CheckState.Checked: 153 if Qt.CheckState(value) == Qt.CheckState.Checked:
154 self.__value |= (1 << self.__bits - index.column() - 1) 154 self.__value |= 1 << self.__bits - index.column() - 1
155 else: 155 else:
156 self.__value &= ~(1 << self.__bits - index.column() - 1) 156 self.__value &= ~(1 << self.__bits - index.column() - 1)
157 self.dataChanged.emit(index, index) 157 self.dataChanged.emit(index, index)
158 return True 158 return True
159 159
160 return False 160 return False
161 161
162 162
163 class NumbersWidget(QWidget, Ui_NumbersWidget): 163 class NumbersWidget(QWidget, Ui_NumbersWidget):
164 """ 164 """
165 Class implementing a widget to show numbers in different formats. 165 Class implementing a widget to show numbers in different formats.
166 166
167 @signal insertNumber(str) emitted after the user has entered a number 167 @signal insertNumber(str) emitted after the user has entered a number
168 and selected the number format 168 and selected the number format
169 """ 169 """
170
170 insertNumber = pyqtSignal(str) 171 insertNumber = pyqtSignal(str)
171 172
172 def __init__(self, parent=None): 173 def __init__(self, parent=None):
173 """ 174 """
174 Constructor 175 Constructor
175 176
176 @param parent reference to the parent widget (QWidget) 177 @param parent reference to the parent widget (QWidget)
177 """ 178 """
178 super().__init__(parent) 179 super().__init__(parent)
179 self.setupUi(self) 180 self.setupUi(self)
180 181
181 self.setWindowIcon(UI.PixmapCache.getIcon("eric")) 182 self.setWindowIcon(UI.PixmapCache.getIcon("eric"))
182 183
183 self.__badNumberSheet = ( 184 self.__badNumberSheet = (
184 "background-color: #b31b1b;" 185 "background-color: #b31b1b;"
185 if ericApp().usesDarkPalette() else 186 if ericApp().usesDarkPalette()
186 "background-color: #ffa0a0;" 187 else "background-color: #ffa0a0;"
187 ) 188 )
188 189
189 self.binInButton.setIcon(UI.PixmapCache.getIcon("2downarrow")) 190 self.binInButton.setIcon(UI.PixmapCache.getIcon("2downarrow"))
190 self.binOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow")) 191 self.binOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow"))
191 self.octInButton.setIcon(UI.PixmapCache.getIcon("2downarrow")) 192 self.octInButton.setIcon(UI.PixmapCache.getIcon("2downarrow"))
192 self.octOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow")) 193 self.octOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow"))
193 self.decInButton.setIcon(UI.PixmapCache.getIcon("2downarrow")) 194 self.decInButton.setIcon(UI.PixmapCache.getIcon("2downarrow"))
194 self.decOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow")) 195 self.decOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow"))
195 self.hexInButton.setIcon(UI.PixmapCache.getIcon("2downarrow")) 196 self.hexInButton.setIcon(UI.PixmapCache.getIcon("2downarrow"))
196 self.hexOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow")) 197 self.hexOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow"))
197 198
198 self.formatBox.addItem(self.tr("Auto"), 0) 199 self.formatBox.addItem(self.tr("Auto"), 0)
199 self.formatBox.addItem(self.tr("Dec"), 10) 200 self.formatBox.addItem(self.tr("Dec"), 10)
200 self.formatBox.addItem(self.tr("Hex"), 16) 201 self.formatBox.addItem(self.tr("Hex"), 16)
201 self.formatBox.addItem(self.tr("Oct"), 8) 202 self.formatBox.addItem(self.tr("Oct"), 8)
202 self.formatBox.addItem(self.tr("Bin"), 2) 203 self.formatBox.addItem(self.tr("Bin"), 2)
203 204
204 self.sizeBox.addItem("8", 8) 205 self.sizeBox.addItem("8", 8)
205 self.sizeBox.addItem("16", 16) 206 self.sizeBox.addItem("16", 16)
206 self.sizeBox.addItem("32", 32) 207 self.sizeBox.addItem("32", 32)
207 self.sizeBox.addItem("64", 64) 208 self.sizeBox.addItem("64", 64)
208 209
209 self.__input = 0 210 self.__input = 0
210 self.__inputValid = True 211 self.__inputValid = True
211 self.__bytes = 1 212 self.__bytes = 1
212 213
213 self.__model = BinaryModel(self) 214 self.__model = BinaryModel(self)
214 self.binTable.setModel(self.__model) 215 self.binTable.setModel(self.__model)
215 self.binTable.horizontalHeader().setSectionResizeMode( 216 self.binTable.horizontalHeader().setSectionResizeMode(
216 QHeaderView.ResizeMode.ResizeToContents) 217 QHeaderView.ResizeMode.ResizeToContents
218 )
217 self.__model.setBitsAndValue(self.__bytes * 8, self.__input) 219 self.__model.setBitsAndValue(self.__bytes * 8, self.__input)
218 self.__model.dataChanged.connect(self.__binModelDataChanged) 220 self.__model.dataChanged.connect(self.__binModelDataChanged)
219 221
220 def __formatNumbers(self, numberFormat): 222 def __formatNumbers(self, numberFormat):
221 """ 223 """
222 Private method to format the various number inputs. 224 Private method to format the various number inputs.
223 225
224 @param numberFormat number format indicator (integer) 226 @param numberFormat number format indicator (integer)
225 """ 227 """
226 self.__block(True) 228 self.__block(True)
227 229
228 self.binEdit.setStyleSheet("") 230 self.binEdit.setStyleSheet("")
229 self.octEdit.setStyleSheet("") 231 self.octEdit.setStyleSheet("")
230 self.decEdit.setStyleSheet("") 232 self.decEdit.setStyleSheet("")
231 self.hexEdit.setStyleSheet("") 233 self.hexEdit.setStyleSheet("")
232 234
233 # determine byte count 235 # determine byte count
234 byteCount = 8 236 byteCount = 8
235 tmp = self.__input 237 tmp = self.__input
236 for _ in range(8): 238 for _ in range(8):
237 c = (tmp & 0xff00000000000000) >> 7 * 8 239 c = (tmp & 0xFF00000000000000) >> 7 * 8
238 if c != 0 and self.__input >= 0: 240 if c != 0 and self.__input >= 0:
239 break 241 break
240 if c != 0xff and self.__input < 0: 242 if c != 0xFF and self.__input < 0:
241 break 243 break
242 tmp <<= 8 244 tmp <<= 8
243 byteCount -= 1 245 byteCount -= 1
244 if byteCount == 0: 246 if byteCount == 0:
245 byteCount = 1 247 byteCount = 1
246 self.__bytes = byteCount 248 self.__bytes = byteCount
247 249
248 bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8 250 bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8
249 if bytesIn and byteCount > bytesIn: 251 if bytesIn and byteCount > bytesIn:
250 self.sizeBox.setStyleSheet(self.__badNumberSheet) 252 self.sizeBox.setStyleSheet(self.__badNumberSheet)
251 else: 253 else:
252 self.sizeBox.setStyleSheet("") 254 self.sizeBox.setStyleSheet("")
253 255
254 # octal 256 # octal
255 if numberFormat != 8: 257 if numberFormat != 8:
256 self.octEdit.setText("{0:0{1}o}".format(self.__input, bytesIn * 3)) 258 self.octEdit.setText("{0:0{1}o}".format(self.__input, bytesIn * 3))
257 259
258 # decimal 260 # decimal
259 if numberFormat != 10: 261 if numberFormat != 10:
260 self.decEdit.setText("{0:d}".format(self.__input)) 262 self.decEdit.setText("{0:d}".format(self.__input))
261 263
262 # hexadecimal 264 # hexadecimal
263 if numberFormat != 16: 265 if numberFormat != 16:
264 self.hexEdit.setText("{0:0{1}x}".format(self.__input, bytesIn * 2)) 266 self.hexEdit.setText("{0:0{1}x}".format(self.__input, bytesIn * 2))
265 267
266 # octal 268 # octal
267 if numberFormat != 8: 269 if numberFormat != 8:
268 self.octEdit.setText("{0:0{1}o}".format(self.__input, bytesIn * 3)) 270 self.octEdit.setText("{0:0{1}o}".format(self.__input, bytesIn * 3))
269 271
270 # binary 272 # binary
271 if numberFormat != 2: 273 if numberFormat != 2:
272 num = "{0:0{1}b}".format(self.__input, bytesIn * 8) 274 num = "{0:0{1}b}".format(self.__input, bytesIn * 8)
273 self.binEdit.setText(num) 275 self.binEdit.setText(num)
274 276
275 self.__model.setBitsAndValue(len(self.binEdit.text()), self.__input) 277 self.__model.setBitsAndValue(len(self.binEdit.text()), self.__input)
276 278
277 self.__block(False) 279 self.__block(False)
278 280
279 def __block(self, b): 281 def __block(self, b):
280 """ 282 """
281 Private slot to block some signals. 283 Private slot to block some signals.
282 284
283 @param b flah indicating the blocking state (boolean) 285 @param b flah indicating the blocking state (boolean)
284 """ 286 """
285 self.hexEdit.blockSignals(b) 287 self.hexEdit.blockSignals(b)
286 self.decEdit.blockSignals(b) 288 self.decEdit.blockSignals(b)
287 self.octEdit.blockSignals(b) 289 self.octEdit.blockSignals(b)
288 self.binEdit.blockSignals(b) 290 self.binEdit.blockSignals(b)
289 self.binTable.blockSignals(b) 291 self.binTable.blockSignals(b)
290 292
291 @pyqtSlot(int) 293 @pyqtSlot(int)
292 def on_sizeBox_valueChanged(self, value): 294 def on_sizeBox_valueChanged(self, value):
293 """ 295 """
294 Private slot handling a change of the bit size. 296 Private slot handling a change of the bit size.
295 297
296 @param value selected bit size (integer) 298 @param value selected bit size (integer)
297 """ 299 """
298 self.__formatNumbers(10) 300 self.__formatNumbers(10)
299 301
300 @pyqtSlot() 302 @pyqtSlot()
301 def on_byteOrderButton_clicked(self): 303 def on_byteOrderButton_clicked(self):
302 """ 304 """
303 Private slot to swap the byte order. 305 Private slot to swap the byte order.
304 """ 306 """
305 bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8 307 bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8
306 if bytesIn == 0: 308 if bytesIn == 0:
307 bytesIn = self.__bytes 309 bytesIn = self.__bytes
308 310
309 tmp1 = self.__input 311 tmp1 = self.__input
310 tmp2 = 0 312 tmp2 = 0
311 for _ in range(bytesIn): 313 for _ in range(bytesIn):
312 tmp2 <<= 8 314 tmp2 <<= 8
313 tmp2 |= tmp1 & 0xff 315 tmp2 |= tmp1 & 0xFF
314 tmp1 >>= 8 316 tmp1 >>= 8
315 317
316 self.__input = tmp2 318 self.__input = tmp2
317 self.__formatNumbers(0) 319 self.__formatNumbers(0)
318 320
319 @pyqtSlot() 321 @pyqtSlot()
320 def on_binInButton_clicked(self): 322 def on_binInButton_clicked(self):
321 """ 323 """
322 Private slot to retrieve a binary number from the current editor. 324 Private slot to retrieve a binary number from the current editor.
323 """ 325 """
324 number = ericApp().getObject("ViewManager").getNumber() 326 number = ericApp().getObject("ViewManager").getNumber()
325 if number == "": 327 if number == "":
326 return 328 return
327 329
328 self.binEdit.setText(number) 330 self.binEdit.setText(number)
329 self.binEdit.setFocus() 331 self.binEdit.setFocus()
330 332
331 @pyqtSlot(str) 333 @pyqtSlot(str)
332 def on_binEdit_textChanged(self, txt): 334 def on_binEdit_textChanged(self, txt):
333 """ 335 """
334 Private slot to handle input of a binary number. 336 Private slot to handle input of a binary number.
335 337
336 @param txt text entered (string) 338 @param txt text entered (string)
337 """ 339 """
338 try: 340 try:
339 self.__input = int(txt, 2) 341 self.__input = int(txt, 2)
340 self.__inputValid = True 342 self.__inputValid = True
341 except ValueError: 343 except ValueError:
342 self.__inputValid = False 344 self.__inputValid = False
343 345
344 if self.__inputValid: 346 if self.__inputValid:
345 self.__formatNumbers(2) 347 self.__formatNumbers(2)
346 else: 348 else:
347 self.binEdit.setStyleSheet(self.__badNumberSheet) 349 self.binEdit.setStyleSheet(self.__badNumberSheet)
348 350
349 @pyqtSlot() 351 @pyqtSlot()
350 def on_binOutButton_clicked(self): 352 def on_binOutButton_clicked(self):
351 """ 353 """
352 Private slot to send a binary number. 354 Private slot to send a binary number.
353 """ 355 """
354 self.insertNumber.emit(self.binEdit.text()) 356 self.insertNumber.emit(self.binEdit.text())
355 357
356 def __binModelDataChanged(self, start, end): 358 def __binModelDataChanged(self, start, end):
357 """ 359 """
358 Private slot to handle a change of the binary model value by the user. 360 Private slot to handle a change of the binary model value by the user.
359 361
360 @param start start index (QModelIndex) 362 @param start start index (QModelIndex)
361 @param end end index (QModelIndex) 363 @param end end index (QModelIndex)
362 """ 364 """
363 val = self.__model.getValue() 365 val = self.__model.getValue()
364 bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8 366 bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8
365 num = "{0:0{1}b}".format(val, bytesIn * 8) 367 num = "{0:0{1}b}".format(val, bytesIn * 8)
366 self.binEdit.setText(num) 368 self.binEdit.setText(num)
367 369
368 @pyqtSlot() 370 @pyqtSlot()
369 def on_octInButton_clicked(self): 371 def on_octInButton_clicked(self):
370 """ 372 """
371 Private slot to retrieve an octal number from the current editor. 373 Private slot to retrieve an octal number from the current editor.
372 """ 374 """
373 number = ericApp().getObject("ViewManager").getNumber() 375 number = ericApp().getObject("ViewManager").getNumber()
374 if number == "": 376 if number == "":
375 return 377 return
376 378
377 self.octEdit.setText(number) 379 self.octEdit.setText(number)
378 self.octEdit.setFocus() 380 self.octEdit.setFocus()
379 381
380 @pyqtSlot(str) 382 @pyqtSlot(str)
381 def on_octEdit_textChanged(self, txt): 383 def on_octEdit_textChanged(self, txt):
382 """ 384 """
383 Private slot to handle input of an octal number. 385 Private slot to handle input of an octal number.
384 386
385 @param txt text entered (string) 387 @param txt text entered (string)
386 """ 388 """
387 try: 389 try:
388 self.__input = int(txt, 8) 390 self.__input = int(txt, 8)
389 self.__inputValid = True 391 self.__inputValid = True
390 except ValueError: 392 except ValueError:
391 self.__inputValid = False 393 self.__inputValid = False
392 394
393 if self.__inputValid: 395 if self.__inputValid:
394 self.__formatNumbers(8) 396 self.__formatNumbers(8)
395 else: 397 else:
396 self.octEdit.setStyleSheet(self.__badNumberSheet) 398 self.octEdit.setStyleSheet(self.__badNumberSheet)
397 399
398 @pyqtSlot() 400 @pyqtSlot()
399 def on_octOutButton_clicked(self): 401 def on_octOutButton_clicked(self):
400 """ 402 """
401 Private slot to send an octal number. 403 Private slot to send an octal number.
402 """ 404 """
403 self.insertNumber.emit(self.octEdit.text()) 405 self.insertNumber.emit(self.octEdit.text())
404 406
405 @pyqtSlot() 407 @pyqtSlot()
406 def on_decInButton_clicked(self): 408 def on_decInButton_clicked(self):
407 """ 409 """
408 Private slot to retrieve a decimal number from the current editor. 410 Private slot to retrieve a decimal number from the current editor.
409 """ 411 """
410 number = ericApp().getObject("ViewManager").getNumber() 412 number = ericApp().getObject("ViewManager").getNumber()
411 if number == "": 413 if number == "":
412 return 414 return
413 415
414 self.decEdit.setText(number) 416 self.decEdit.setText(number)
415 self.decEdit.setFocus() 417 self.decEdit.setFocus()
416 418
417 @pyqtSlot(str) 419 @pyqtSlot(str)
418 def on_decEdit_textChanged(self, txt): 420 def on_decEdit_textChanged(self, txt):
419 """ 421 """
420 Private slot to handle input of a decimal number. 422 Private slot to handle input of a decimal number.
421 423
422 @param txt text entered (string) 424 @param txt text entered (string)
423 """ 425 """
424 try: 426 try:
425 self.__input = int(txt, 10) 427 self.__input = int(txt, 10)
426 self.__inputValid = True 428 self.__inputValid = True
427 except ValueError: 429 except ValueError:
428 self.__inputValid = False 430 self.__inputValid = False
429 431
430 if self.__inputValid: 432 if self.__inputValid:
431 self.__formatNumbers(10) 433 self.__formatNumbers(10)
432 else: 434 else:
433 self.decEdit.setStyleSheet(self.__badNumberSheet) 435 self.decEdit.setStyleSheet(self.__badNumberSheet)
434 436
435 @pyqtSlot() 437 @pyqtSlot()
436 def on_decOutButton_clicked(self): 438 def on_decOutButton_clicked(self):
437 """ 439 """
438 Private slot to send a decimal number. 440 Private slot to send a decimal number.
439 """ 441 """
440 self.insertNumber.emit(self.decEdit.text()) 442 self.insertNumber.emit(self.decEdit.text())
441 443
442 @pyqtSlot() 444 @pyqtSlot()
443 def on_hexInButton_clicked(self): 445 def on_hexInButton_clicked(self):
444 """ 446 """
445 Private slot to retrieve a hexadecimal number from the current editor. 447 Private slot to retrieve a hexadecimal number from the current editor.
446 """ 448 """
447 number = ericApp().getObject("ViewManager").getNumber() 449 number = ericApp().getObject("ViewManager").getNumber()
448 if number == "": 450 if number == "":
449 return 451 return
450 452
451 self.hexEdit.setText(number) 453 self.hexEdit.setText(number)
452 self.hexEdit.setFocus() 454 self.hexEdit.setFocus()
453 455
454 @pyqtSlot(str) 456 @pyqtSlot(str)
455 def on_hexEdit_textChanged(self, txt): 457 def on_hexEdit_textChanged(self, txt):
456 """ 458 """
457 Private slot to handle input of a hexadecimal number. 459 Private slot to handle input of a hexadecimal number.
458 460
459 @param txt text entered (string) 461 @param txt text entered (string)
460 """ 462 """
461 try: 463 try:
462 self.__input = int(txt, 16) 464 self.__input = int(txt, 16)
463 self.__inputValid = True 465 self.__inputValid = True
464 except ValueError: 466 except ValueError:
465 self.__inputValid = False 467 self.__inputValid = False
466 468
467 if self.__inputValid: 469 if self.__inputValid:
468 self.__formatNumbers(16) 470 self.__formatNumbers(16)
469 else: 471 else:
470 self.hexEdit.setStyleSheet(self.__badNumberSheet) 472 self.hexEdit.setStyleSheet(self.__badNumberSheet)
471 473
472 @pyqtSlot() 474 @pyqtSlot()
473 def on_hexOutButton_clicked(self): 475 def on_hexOutButton_clicked(self):
474 """ 476 """
475 Private slot to send a hexadecimal number. 477 Private slot to send a hexadecimal number.
476 """ 478 """

eric ide

mercurial