HexEdit/HexEditWidget.py

changeset 4688
fe866d2674fc
parent 4686
5f8a5c568230
child 4724
682f009d086d
diff -r f1d921533cc5 -r fe866d2674fc HexEdit/HexEditWidget.py
--- a/HexEdit/HexEditWidget.py	Sat Jan 23 16:59:18 2016 +0100
+++ b/HexEdit/HexEditWidget.py	Sat Jan 23 17:19:28 2016 +0100
@@ -57,19 +57,15 @@
     HEXCHARS_PER_LINE = 47
     BYTES_PER_LINE = 16
     
-    def __init__(self, parent=None, embedded=False):
+    def __init__(self, parent=None):
         """
         Constructor
         
         @param parent refernce to the parent widget
         @type QWidget
-        @param embedded flag indicating an eric embedded hex editor
-        @type bool
         """
         super(HexEditWidget, self).__init__(parent)
         
-        self.__embedded = embedded
-        
         # Properties
         self.__addressArea = True
         # switch the address area on/off
@@ -887,73 +883,6 @@
         self.setCursorPosition(self.__chunks.pos() * 2)
         self.__refresh()
     
-    def editorCommand(self, cmd):
-        """
-        Public method to execute an editor command sent by the eric
-        view manager.
-        
-        @param cmd QScintilla command
-        @type int
-        """
-        if self.__embedded:
-            from PyQt5.Qsci import QsciScintilla
-            
-            # Cursor movements
-            if cmd == QsciScintilla.SCI_CHARLEFT:
-                self.moveCursorToPreviousChar()
-            elif cmd == QsciScintilla.SCI_CHARRIGHT:
-                self.moveCursorToNextChar()
-            elif cmd == QsciScintilla.SCI_LINEEND:
-                self.moveCursorToEndOfLine()
-            elif cmd == QsciScintilla.SCI_VCHOME:
-                self.moveCursorToStartOfLine()
-            elif cmd == QsciScintilla.SCI_LINEUP:
-                self.moveCursorToPreviousLine()
-            elif cmd == QsciScintilla.SCI_LINEDOWN:
-                self.moveCursorToNextLine()
-            elif cmd == QsciScintilla.SCI_PAGEDOWN:
-                self.moveCursorToNextPage()
-            elif cmd == QsciScintilla.SCI_PAGEUP:
-                self.moveCursorToPreviousPage()
-            elif cmd == QsciScintilla.SCI_DOCUMENTEND:
-                self.moveCursorToEndOfDocument()
-            elif cmd == QsciScintilla.SCI_DOCUMENTSTART:
-                self.moveCursorToStartOfDocument()
-            
-            # Selection commands
-            elif cmd == QsciScintilla.SCI_CHARRIGHTEXTEND:
-                self.selectNextChar()
-            elif cmd == QsciScintilla.SCI_CHARLEFTEXTEND:
-                self.selectPreviousChar()
-            elif cmd == QsciScintilla.SCI_LINEENDEXTEND:
-                self.selectToEndOfLine()
-            elif cmd == QsciScintilla.SCI_VCHOMEEXTEND:
-                self.selectToStartOfLine()
-            elif cmd == QsciScintilla.SCI_LINEUPEXTEND:
-                self.selectPreviousLine()
-            elif cmd == QsciScintilla.SCI_LINEDOWNEXTEND:
-                self.selectNextLine()
-            elif cmd == QsciScintilla.SCI_PAGEDOWNEXTEND:
-                self.selectNextPage()
-            elif cmd == QsciScintilla.SCI_PAGEUPEXTEND:
-                self.selectPreviousPage()
-            elif cmd == QsciScintilla.SCI_DOCUMENTENDEXTEND:
-                self.selectEndOfDocument()
-            elif cmd == QsciScintilla.SCI_DOCUMENTSTARTEXTEND:
-                self.selectStartOfDocument()
-            elif cmd == QsciScintilla.SCI_EDITTOGGLEOVERTYPE:
-                self.setOverwriteMode(not self.overwriteMode())
-                self.setCursorPosition(self.__cursorPosition)
-            
-            # Edit commands
-            if not self.__readOnly:
-                if cmd == QsciScintilla.SCI_CLEAR:
-                    self.deleteByte()
-                elif cmd == QsciScintilla.SCI_DELETEBACK:
-                    self.deleteByteBack()
-        
-            self.__refresh()
-    
     ####################################################
     ## Cursor movement commands
     ####################################################
@@ -1254,114 +1183,119 @@
         @param evt reference to the key event
         @type QKeyEvent
         """
-        if not self.__embedded:
-            # Cursor movements
-            if evt.matches(QKeySequence.MoveToNextChar):
-                self.moveCursorToNextChar()
-            elif evt.matches(QKeySequence.MoveToPreviousChar):
-                self.moveCursorToPreviousChar()
-            elif evt.matches(QKeySequence.MoveToEndOfLine):
-                self.moveCursorToEndOfLine()
-            elif evt.matches(QKeySequence.MoveToStartOfLine):
-                self.moveCursorToStartOfLine()
-            elif evt.matches(QKeySequence.MoveToPreviousLine):
-                self.moveCursorToPreviousLine()
-            elif evt.matches(QKeySequence.MoveToNextLine):
-                self.moveCursorToNextLine()
-            elif evt.matches(QKeySequence.MoveToNextPage):
-                self.moveCursorToNextPage()
-            elif evt.matches(QKeySequence.MoveToPreviousPage):
-                self.moveCursorToPreviousPage()
-            elif evt.matches(QKeySequence.MoveToEndOfDocument):
-                self.moveCursorToEndOfDocument()
-            elif evt.matches(QKeySequence.MoveToStartOfDocument):
-                self.moveCursorToStartOfDocument()
-            
-            # Selection commands
-            elif evt.matches(QKeySequence.SelectAll):
-                self.selectAll()
-            elif evt.matches(QKeySequence.SelectNextChar):
-                self.selectNextChar()
-            elif evt.matches(QKeySequence.SelectPreviousChar):
-                self.selectPreviousChar()
-            elif evt.matches(QKeySequence.SelectEndOfLine):
-                self.selectToEndOfLine()
-            elif evt.matches(QKeySequence.SelectStartOfLine):
-                self.selectToStartOfLine()
-            elif evt.matches(QKeySequence.SelectPreviousLine):
-                self.selectPreviousLine()
-            elif evt.matches(QKeySequence.SelectNextLine):
-                self.selectNextLine()
-            elif evt.matches(QKeySequence.SelectNextPage):
-                self.selectNextPage()
-            elif evt.matches(QKeySequence.SelectPreviousPage):
-                self.selectPreviousPage()
-            elif evt.matches(QKeySequence.SelectEndOfDocument):
-                self.selectEndOfDocument()
-            elif evt.matches(QKeySequence.SelectStartOfDocument):
-                self.selectStartOfDocument()
-            
-            # Edit commands
-            elif evt.matches(QKeySequence.Copy):
-                self.copy()
-            elif evt.key() == Qt.Key_Insert and \
+        # Cursor movements
+        if evt.matches(QKeySequence.MoveToNextChar):
+            self.moveCursorToNextChar()
+        elif evt.matches(QKeySequence.MoveToPreviousChar):
+            self.moveCursorToPreviousChar()
+        elif evt.matches(QKeySequence.MoveToEndOfLine):
+            self.moveCursorToEndOfLine()
+        elif evt.matches(QKeySequence.MoveToStartOfLine):
+            self.moveCursorToStartOfLine()
+        elif evt.matches(QKeySequence.MoveToPreviousLine):
+            self.moveCursorToPreviousLine()
+        elif evt.matches(QKeySequence.MoveToNextLine):
+            self.moveCursorToNextLine()
+        elif evt.matches(QKeySequence.MoveToNextPage):
+            self.moveCursorToNextPage()
+        elif evt.matches(QKeySequence.MoveToPreviousPage):
+            self.moveCursorToPreviousPage()
+        elif evt.matches(QKeySequence.MoveToEndOfDocument):
+            self.moveCursorToEndOfDocument()
+        elif evt.matches(QKeySequence.MoveToStartOfDocument):
+            self.moveCursorToStartOfDocument()
+        
+        # Selection commands
+        elif evt.matches(QKeySequence.SelectAll):
+            self.selectAll()
+        elif evt.matches(QKeySequence.SelectNextChar):
+            self.selectNextChar()
+        elif evt.matches(QKeySequence.SelectPreviousChar):
+            self.selectPreviousChar()
+        elif evt.matches(QKeySequence.SelectEndOfLine):
+            self.selectToEndOfLine()
+        elif evt.matches(QKeySequence.SelectStartOfLine):
+            self.selectToStartOfLine()
+        elif evt.matches(QKeySequence.SelectPreviousLine):
+            self.selectPreviousLine()
+        elif evt.matches(QKeySequence.SelectNextLine):
+            self.selectNextLine()
+        elif evt.matches(QKeySequence.SelectNextPage):
+            self.selectNextPage()
+        elif evt.matches(QKeySequence.SelectPreviousPage):
+            self.selectPreviousPage()
+        elif evt.matches(QKeySequence.SelectEndOfDocument):
+            self.selectEndOfDocument()
+        elif evt.matches(QKeySequence.SelectStartOfDocument):
+            self.selectStartOfDocument()
+        
+        # Edit commands
+        elif evt.matches(QKeySequence.Copy):
+            self.copy()
+        elif evt.key() == Qt.Key_Insert and \
+                evt.modifiers() == Qt.NoModifier:
+            self.setOverwriteMode(not self.overwriteMode())
+            self.setCursorPosition(self.__cursorPosition)
+        
+        elif not self.__readOnly:
+            if evt.matches(QKeySequence.Cut):
+                self.cut()
+            elif evt.matches(QKeySequence.Paste):
+                self.paste()
+            elif evt.matches(QKeySequence.Delete):
+                self.deleteByte()
+            elif evt.key() == Qt.Key_Backspace and \
                     evt.modifiers() == Qt.NoModifier:
-                self.setOverwriteMode(not self.overwriteMode())
-                self.setCursorPosition(self.__cursorPosition)
+                self.deleteByteBack()
+            elif evt.matches(QKeySequence.Undo):
+                self.undo()
+            elif evt.matches(QKeySequence.Redo):
+                self.redo()
             
-            if not self.__readOnly:
-                if evt.matches(QKeySequence.Cut):
-                    self.cut()
-                elif evt.matches(QKeySequence.Paste):
-                    self.paste()
-                elif evt.matches(QKeySequence.Delete):
-                    self.deleteByte()
-                elif evt.key() == Qt.Key_Backspace and \
-                        evt.modifiers() == Qt.NoModifier:
-                    self.deleteByteBack()
-                elif evt.matches(QKeySequence.Undo):
-                    self.undo()
-                elif evt.matches(QKeySequence.Redo):
-                    self.redo()
-        
-        if not self.__readOnly and \
-            QApplication.keyboardModifiers() in [
-                Qt.NoModifier, Qt.KeypadModifier]:
-            # some hex input
-            key = evt.text()
-            if key and key in "0123456789abcdef":
-                if self.hasSelection():
-                    if self.__overwriteMode:
-                        length = self.getSelectionLength()
-                        self.replaceByteArray(
-                            self.getSelectionBegin(), length,
-                            bytearray(length))
+            elif QApplication.keyboardModifiers() in [
+                    Qt.NoModifier, Qt.KeypadModifier]:
+                # some hex input
+                key = evt.text()
+                if key and key in "0123456789abcdef":
+                    if self.hasSelection():
+                        if self.__overwriteMode:
+                            length = self.getSelectionLength()
+                            self.replaceByteArray(
+                                self.getSelectionBegin(), length,
+                                bytearray(length))
+                        else:
+                            self.remove(self.getSelectionBegin(),
+                                        self.getSelectionLength())
+                            self.__bPosCurrent = self.getSelectionBegin()
+                        self.setCursorPosition(2 * self.__bPosCurrent)
+                        self.__resetSelection(2 * self.__bPosCurrent)
+                    
+                    # if in insert mode, insert a byte
+                    if not self.__overwriteMode:
+                        if (self.__cursorPosition % 2) == 0:
+                            self.insert(self.__bPosCurrent, 0)
+                    
+                    # change content
+                    if self.__chunks.size() > 0:
+                        hexValue = self.__toHex(
+                            self.__chunks.data(self.__bPosCurrent, 1))
+                        if (self.__cursorPosition % 2) == 0:
+                            hexValue[0] = ord(key)
+                        else:
+                            hexValue[1] = ord(key)
+                        self.replace(self.__bPosCurrent,
+                                     self.__fromHex(hexValue)[0])
+                        
+                        self.setCursorPosition(self.__cursorPosition + 1)
+                        self.__resetSelection(self.__cursorPosition)
                     else:
-                        self.remove(self.getSelectionBegin(),
-                                    self.getSelectionLength())
-                        self.__bPosCurrent = self.getSelectionBegin()
-                    self.setCursorPosition(2 * self.__bPosCurrent)
-                    self.__resetSelection(2 * self.__bPosCurrent)
-                
-                # if in insert mode, insert a byte
-                if not self.__overwriteMode:
-                    if (self.__cursorPosition % 2) == 0:
-                        self.insert(self.__bPosCurrent, 0)
-                
-                # change content
-                if self.__chunks.size() > 0:
-                    hexValue = self.__toHex(
-                        self.__chunks.data(self.__bPosCurrent, 1))
-                    if (self.__cursorPosition % 2) == 0:
-                        hexValue[0] = ord(key)
-                    else:
-                        hexValue[1] = ord(key)
-                    self.replace(self.__bPosCurrent,
-                                 self.__fromHex(hexValue)[0])
-                    
-                    self.setCursorPosition(self.__cursorPosition + 1)
-                    self.__resetSelection(self.__cursorPosition)
-        # TODO: handle pressing keyboard modifier only by not calling __referesh
+                        return
+                else:
+                    return
+            else:
+                return
+        else:
+            return
         
         self.__refresh()
     

eric ide

mercurial