Corrected the hex editor keyboard handling.

Sat, 23 Jan 2016 17:19:28 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Jan 2016 17:19:28 +0100
changeset 4688
fe866d2674fc
parent 4687
f1d921533cc5
child 4689
957339210f40

Corrected the hex editor keyboard handling.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric6.HexEdit.HexEditWidget.html file | annotate | diff | comparison | revisions
HexEdit/HexEditWidget.py file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Sat Jan 23 16:59:18 2016 +0100
+++ b/APIs/Python3/eric6.api	Sat Jan 23 17:19:28 2016 +0100
@@ -3609,7 +3609,6 @@
 eric6.HexEdit.HexEditWidget.HexEditWidget.deleteByte?4()
 eric6.HexEdit.HexEditWidget.HexEditWidget.deleteByteBack?4()
 eric6.HexEdit.HexEditWidget.HexEditWidget.deselectAll?4()
-eric6.HexEdit.HexEditWidget.HexEditWidget.editorCommand?4(cmd)
 eric6.HexEdit.HexEditWidget.HexEditWidget.ensureVisible?4()
 eric6.HexEdit.HexEditWidget.HexEditWidget.font?4()
 eric6.HexEdit.HexEditWidget.HexEditWidget.getSelectionBegin?4()
@@ -3683,7 +3682,7 @@
 eric6.HexEdit.HexEditWidget.HexEditWidget.undo?4()
 eric6.HexEdit.HexEditWidget.HexEditWidget.undoStack?4()
 eric6.HexEdit.HexEditWidget.HexEditWidget.write?4(device, pos=0, count=-1)
-eric6.HexEdit.HexEditWidget.HexEditWidget?1(parent=None, embedded=False)
+eric6.HexEdit.HexEditWidget.HexEditWidget?1(parent=None)
 eric6.IconEditor.IconEditorGrid.IconEditCommand.redo?4()
 eric6.IconEditor.IconEditorGrid.IconEditCommand.setAfterImage?4(image)
 eric6.IconEditor.IconEditorGrid.IconEditCommand.undo?4()
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Sat Jan 23 16:59:18 2016 +0100
+++ b/Documentation/Help/source.qhp	Sat Jan 23 17:19:28 2016 +0100
@@ -5897,7 +5897,6 @@
       <keyword name="HexEditWidget.deleteByte" id="HexEditWidget.deleteByte" ref="eric6.HexEdit.HexEditWidget.html#HexEditWidget.deleteByte" />
       <keyword name="HexEditWidget.deleteByteBack" id="HexEditWidget.deleteByteBack" ref="eric6.HexEdit.HexEditWidget.html#HexEditWidget.deleteByteBack" />
       <keyword name="HexEditWidget.deselectAll" id="HexEditWidget.deselectAll" ref="eric6.HexEdit.HexEditWidget.html#HexEditWidget.deselectAll" />
-      <keyword name="HexEditWidget.editorCommand" id="HexEditWidget.editorCommand" ref="eric6.HexEdit.HexEditWidget.html#HexEditWidget.editorCommand" />
       <keyword name="HexEditWidget.ensureVisible" id="HexEditWidget.ensureVisible" ref="eric6.HexEdit.HexEditWidget.html#HexEditWidget.ensureVisible" />
       <keyword name="HexEditWidget.font" id="HexEditWidget.font" ref="eric6.HexEdit.HexEditWidget.html#HexEditWidget.font" />
       <keyword name="HexEditWidget.getSelectionBegin" id="HexEditWidget.getSelectionBegin" ref="eric6.HexEdit.HexEditWidget.html#HexEditWidget.getSelectionBegin" />
--- a/Documentation/Source/eric6.HexEdit.HexEditWidget.html	Sat Jan 23 16:59:18 2016 +0100
+++ b/Documentation/Source/eric6.HexEdit.HexEditWidget.html	Sat Jan 23 17:19:28 2016 +0100
@@ -182,9 +182,6 @@
 <td><a href="#HexEditWidget.deselectAll">deselectAll</a></td>
 <td>Public method to deselect all data.</td>
 </tr><tr>
-<td><a href="#HexEditWidget.editorCommand">editorCommand</a></td>
-<td>Public method to execute an editor command sent by the eric view manager.</td>
-</tr><tr>
 <td><a href="#HexEditWidget.ensureVisible">ensureVisible</a></td>
 <td>Public method to ensure, that the cursor is visible.</td>
 </tr><tr>
@@ -402,16 +399,13 @@
 </table>
 <a NAME="HexEditWidget.__init__" ID="HexEditWidget.__init__"></a>
 <h4>HexEditWidget (Constructor)</h4>
-<b>HexEditWidget</b>(<i>parent=None, embedded=False</i>)
+<b>HexEditWidget</b>(<i>parent=None</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>parent</i> (QWidget)</dt>
 <dd>
 refernce to the parent widget
-</dd><dt><i>embedded</i> (bool)</dt>
-<dd>
-flag indicating an eric embedded hex editor
 </dd>
 </dl><a NAME="HexEditWidget.__adjust" ID="HexEditWidget.__adjust"></a>
 <h4>HexEditWidget.__adjust</h4>
@@ -755,18 +749,7 @@
 <b>deselectAll</b>(<i></i>)
 <p>
         Public method to deselect all data.
-</p><a NAME="HexEditWidget.editorCommand" ID="HexEditWidget.editorCommand"></a>
-<h4>HexEditWidget.editorCommand</h4>
-<b>editorCommand</b>(<i>cmd</i>)
-<p>
-        Public method to execute an editor command sent by the eric
-        view manager.
-</p><dl>
-<dt><i>cmd</i> (int)</dt>
-<dd>
-QScintilla command
-</dd>
-</dl><a NAME="HexEditWidget.ensureVisible" ID="HexEditWidget.ensureVisible"></a>
+</p><a NAME="HexEditWidget.ensureVisible" ID="HexEditWidget.ensureVisible"></a>
 <h4>HexEditWidget.ensureVisible</h4>
 <b>ensureVisible</b>(<i></i>)
 <p>
--- 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