src/eric7/UI/NumbersWidget.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
--- a/src/eric7/UI/NumbersWidget.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/UI/NumbersWidget.py	Wed Jul 13 14:55:47 2022 +0200
@@ -21,39 +21,40 @@
     """
     Class implementing a model for entering binary numbers.
     """
+
     def __init__(self, parent=None):
         """
         Constructor
-        
+
         @param parent reference to the parent widget (QWidget)
         """
         super().__init__(parent)
-        
+
         self.__bits = 0
         self.__value = 0
-    
+
     def rowCount(self, parent):
         """
         Public method to get the number of rows of the model.
-        
+
         @param parent parent index (QModelIndex)
         @return number of columns (integer)
         """
         return 1
-    
+
     def columnCount(self, parent):
         """
         Public method to get the number of columns of the model.
-        
+
         @param parent parent index (QModelIndex)
         @return number of columns (integer)
         """
         return self.__bits
-    
+
     def data(self, index, role=Qt.ItemDataRole.DisplayRole):
         """
         Public method to get data from the model.
-        
+
         @param index index to get data for (QModelIndex)
         @param role role of the data to retrieve (integer)
         @return requested data
@@ -63,67 +64,66 @@
                 return Qt.CheckState.Checked
             else:
                 return Qt.CheckState.Unchecked
-        
+
         elif role == Qt.ItemDataRole.DisplayRole:
             return ""
-        
+
         return None
-    
+
     def flags(self, index):
         """
         Public method to get flags from the model.
-        
+
         @param index index to get flags for (QModelIndex)
         @return flags (Qt.ItemFlags)
         """
         return (
-            Qt.ItemFlag.ItemIsUserCheckable |
-            Qt.ItemFlag.ItemIsEnabled |
-            Qt.ItemFlag.ItemIsSelectable
+            Qt.ItemFlag.ItemIsUserCheckable
+            | Qt.ItemFlag.ItemIsEnabled
+            | Qt.ItemFlag.ItemIsSelectable
         )
-    
-    def headerData(self, section, orientation,
-                   role=Qt.ItemDataRole.DisplayRole):
+
+    def headerData(self, section, orientation, role=Qt.ItemDataRole.DisplayRole):
         """
         Public method to get header data from the model.
-        
+
         @param section section number (integer)
         @param orientation orientation (Qt.Orientation)
         @param role role of the data to retrieve (Qt.ItemDataRole)
         @return requested data
         """
         if (
-            orientation == Qt.Orientation.Horizontal and
-            role == Qt.ItemDataRole.DisplayRole
+            orientation == Qt.Orientation.Horizontal
+            and role == Qt.ItemDataRole.DisplayRole
         ):
             return str(self.__bits - section - 1)
-        
+
         return QAbstractTableModel.headerData(self, section, orientation, role)
-    
+
     def setBits(self, bits):
         """
         Public slot to set the number of bits.
-        
+
         @param bits number of bits to show (integer)
         """
         self.beginResetModel()
         self.__bits = bits
         self.endResetModel()
-    
+
     def setValue(self, value):
         """
         Public slot to set the value to show.
-        
+
         @param value value to show (integer)
         """
         self.beginResetModel()
         self.__value = value
         self.endResetModel()
-    
+
     def setBitsAndValue(self, bits, value):
         """
         Public slot to set the number of bits and the value to show.
-        
+
         @param bits number of bits to show (integer)
         @param value value to show (integer)
         """
@@ -131,19 +131,19 @@
         self.__value = value
         self.beginResetModel()
         self.endResetModel()
-    
+
     def getValue(self):
         """
         Public slot to get the current value.
-        
+
         @return current value of the model (integer)
         """
         return self.__value
-    
+
     def setData(self, index, value, role=Qt.ItemDataRole.EditRole):
         """
         Public method to set the data of a node cell.
-        
+
         @param index index of the node cell (QModelIndex)
         @param value value to be set
         @param role role of the data (integer)
@@ -151,41 +151,42 @@
         """
         if role == Qt.ItemDataRole.CheckStateRole:
             if Qt.CheckState(value) == Qt.CheckState.Checked:
-                self.__value |= (1 << self.__bits - index.column() - 1)
+                self.__value |= 1 << self.__bits - index.column() - 1
             else:
                 self.__value &= ~(1 << self.__bits - index.column() - 1)
             self.dataChanged.emit(index, index)
             return True
-        
+
         return False
 
 
 class NumbersWidget(QWidget, Ui_NumbersWidget):
     """
     Class implementing a widget to show numbers in different formats.
-    
+
     @signal insertNumber(str) emitted after the user has entered a number
             and selected the number format
     """
+
     insertNumber = pyqtSignal(str)
-    
+
     def __init__(self, parent=None):
         """
         Constructor
-        
+
         @param parent reference to the parent widget (QWidget)
         """
         super().__init__(parent)
         self.setupUi(self)
-        
+
         self.setWindowIcon(UI.PixmapCache.getIcon("eric"))
-        
+
         self.__badNumberSheet = (
             "background-color: #b31b1b;"
-            if ericApp().usesDarkPalette() else
-            "background-color: #ffa0a0;"
+            if ericApp().usesDarkPalette()
+            else "background-color: #ffa0a0;"
         )
-        
+
         self.binInButton.setIcon(UI.PixmapCache.getIcon("2downarrow"))
         self.binOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow"))
         self.octInButton.setIcon(UI.PixmapCache.getIcon("2downarrow"))
@@ -194,92 +195,93 @@
         self.decOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow"))
         self.hexInButton.setIcon(UI.PixmapCache.getIcon("2downarrow"))
         self.hexOutButton.setIcon(UI.PixmapCache.getIcon("2uparrow"))
-        
+
         self.formatBox.addItem(self.tr("Auto"), 0)
         self.formatBox.addItem(self.tr("Dec"), 10)
         self.formatBox.addItem(self.tr("Hex"), 16)
         self.formatBox.addItem(self.tr("Oct"), 8)
         self.formatBox.addItem(self.tr("Bin"), 2)
-        
+
         self.sizeBox.addItem("8", 8)
         self.sizeBox.addItem("16", 16)
         self.sizeBox.addItem("32", 32)
         self.sizeBox.addItem("64", 64)
-        
+
         self.__input = 0
         self.__inputValid = True
         self.__bytes = 1
-        
+
         self.__model = BinaryModel(self)
         self.binTable.setModel(self.__model)
         self.binTable.horizontalHeader().setSectionResizeMode(
-            QHeaderView.ResizeMode.ResizeToContents)
+            QHeaderView.ResizeMode.ResizeToContents
+        )
         self.__model.setBitsAndValue(self.__bytes * 8, self.__input)
         self.__model.dataChanged.connect(self.__binModelDataChanged)
-    
+
     def __formatNumbers(self, numberFormat):
         """
         Private method to format the various number inputs.
-        
+
         @param numberFormat number format indicator (integer)
         """
         self.__block(True)
-        
+
         self.binEdit.setStyleSheet("")
         self.octEdit.setStyleSheet("")
         self.decEdit.setStyleSheet("")
         self.hexEdit.setStyleSheet("")
-        
+
         # determine byte count
         byteCount = 8
         tmp = self.__input
         for _ in range(8):
-            c = (tmp & 0xff00000000000000) >> 7 * 8
+            c = (tmp & 0xFF00000000000000) >> 7 * 8
             if c != 0 and self.__input >= 0:
                 break
-            if c != 0xff and self.__input < 0:
+            if c != 0xFF and self.__input < 0:
                 break
             tmp <<= 8
             byteCount -= 1
         if byteCount == 0:
             byteCount = 1
         self.__bytes = byteCount
-        
+
         bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8
         if bytesIn and byteCount > bytesIn:
             self.sizeBox.setStyleSheet(self.__badNumberSheet)
         else:
             self.sizeBox.setStyleSheet("")
-        
+
         # octal
         if numberFormat != 8:
             self.octEdit.setText("{0:0{1}o}".format(self.__input, bytesIn * 3))
-        
+
         # decimal
         if numberFormat != 10:
             self.decEdit.setText("{0:d}".format(self.__input))
-        
+
         # hexadecimal
         if numberFormat != 16:
             self.hexEdit.setText("{0:0{1}x}".format(self.__input, bytesIn * 2))
-        
+
         # octal
         if numberFormat != 8:
             self.octEdit.setText("{0:0{1}o}".format(self.__input, bytesIn * 3))
-        
+
         # binary
         if numberFormat != 2:
             num = "{0:0{1}b}".format(self.__input, bytesIn * 8)
             self.binEdit.setText(num)
-        
+
         self.__model.setBitsAndValue(len(self.binEdit.text()), self.__input)
-        
+
         self.__block(False)
-    
+
     def __block(self, b):
         """
         Private slot to block some signals.
-        
+
         @param b flah indicating the blocking state (boolean)
         """
         self.hexEdit.blockSignals(b)
@@ -287,16 +289,16 @@
         self.octEdit.blockSignals(b)
         self.binEdit.blockSignals(b)
         self.binTable.blockSignals(b)
-    
+
     @pyqtSlot(int)
     def on_sizeBox_valueChanged(self, value):
         """
         Private slot handling a change of the bit size.
-        
+
         @param value selected bit size (integer)
         """
         self.__formatNumbers(10)
-    
+
     @pyqtSlot()
     def on_byteOrderButton_clicked(self):
         """
@@ -305,17 +307,17 @@
         bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8
         if bytesIn == 0:
             bytesIn = self.__bytes
-        
+
         tmp1 = self.__input
         tmp2 = 0
         for _ in range(bytesIn):
             tmp2 <<= 8
-            tmp2 |= tmp1 & 0xff
+            tmp2 |= tmp1 & 0xFF
             tmp1 >>= 8
-        
+
         self.__input = tmp2
         self.__formatNumbers(0)
-    
+
     @pyqtSlot()
     def on_binInButton_clicked(self):
         """
@@ -324,15 +326,15 @@
         number = ericApp().getObject("ViewManager").getNumber()
         if number == "":
             return
-        
+
         self.binEdit.setText(number)
         self.binEdit.setFocus()
-    
+
     @pyqtSlot(str)
     def on_binEdit_textChanged(self, txt):
         """
         Private slot to handle input of a binary number.
-        
+
         @param txt text entered (string)
         """
         try:
@@ -340,23 +342,23 @@
             self.__inputValid = True
         except ValueError:
             self.__inputValid = False
-        
+
         if self.__inputValid:
             self.__formatNumbers(2)
         else:
             self.binEdit.setStyleSheet(self.__badNumberSheet)
-    
+
     @pyqtSlot()
     def on_binOutButton_clicked(self):
         """
         Private slot to send a binary number.
         """
         self.insertNumber.emit(self.binEdit.text())
-    
+
     def __binModelDataChanged(self, start, end):
         """
         Private slot to handle a change of the binary model value by the user.
-        
+
         @param start start index (QModelIndex)
         @param end end index (QModelIndex)
         """
@@ -364,7 +366,7 @@
         bytesIn = self.sizeBox.itemData(self.sizeBox.currentIndex()) // 8
         num = "{0:0{1}b}".format(val, bytesIn * 8)
         self.binEdit.setText(num)
-    
+
     @pyqtSlot()
     def on_octInButton_clicked(self):
         """
@@ -373,15 +375,15 @@
         number = ericApp().getObject("ViewManager").getNumber()
         if number == "":
             return
-        
+
         self.octEdit.setText(number)
         self.octEdit.setFocus()
-    
+
     @pyqtSlot(str)
     def on_octEdit_textChanged(self, txt):
         """
         Private slot to handle input of an octal number.
-        
+
         @param txt text entered (string)
         """
         try:
@@ -389,19 +391,19 @@
             self.__inputValid = True
         except ValueError:
             self.__inputValid = False
-        
+
         if self.__inputValid:
             self.__formatNumbers(8)
         else:
             self.octEdit.setStyleSheet(self.__badNumberSheet)
-    
+
     @pyqtSlot()
     def on_octOutButton_clicked(self):
         """
         Private slot to send an octal number.
         """
         self.insertNumber.emit(self.octEdit.text())
-    
+
     @pyqtSlot()
     def on_decInButton_clicked(self):
         """
@@ -410,15 +412,15 @@
         number = ericApp().getObject("ViewManager").getNumber()
         if number == "":
             return
-        
+
         self.decEdit.setText(number)
         self.decEdit.setFocus()
-    
+
     @pyqtSlot(str)
     def on_decEdit_textChanged(self, txt):
         """
         Private slot to handle input of a decimal number.
-        
+
         @param txt text entered (string)
         """
         try:
@@ -426,19 +428,19 @@
             self.__inputValid = True
         except ValueError:
             self.__inputValid = False
-        
+
         if self.__inputValid:
             self.__formatNumbers(10)
         else:
             self.decEdit.setStyleSheet(self.__badNumberSheet)
-    
+
     @pyqtSlot()
     def on_decOutButton_clicked(self):
         """
         Private slot to send a decimal number.
         """
         self.insertNumber.emit(self.decEdit.text())
-    
+
     @pyqtSlot()
     def on_hexInButton_clicked(self):
         """
@@ -447,15 +449,15 @@
         number = ericApp().getObject("ViewManager").getNumber()
         if number == "":
             return
-        
+
         self.hexEdit.setText(number)
         self.hexEdit.setFocus()
-    
+
     @pyqtSlot(str)
     def on_hexEdit_textChanged(self, txt):
         """
         Private slot to handle input of a hexadecimal number.
-        
+
         @param txt text entered (string)
         """
         try:
@@ -463,12 +465,12 @@
             self.__inputValid = True
         except ValueError:
             self.__inputValid = False
-        
+
         if self.__inputValid:
             self.__formatNumbers(16)
         else:
             self.hexEdit.setStyleSheet(self.__badNumberSheet)
-    
+
     @pyqtSlot()
     def on_hexOutButton_clicked(self):
         """

eric ide

mercurial