Wed, 25 Oct 2023 16:12:46 +0200
Modified some preferences default values to better reflect common user expectations.
--- a/src/eric7/APIs/Python3/eric7.api Wed Oct 25 14:30:33 2023 +0200 +++ b/src/eric7/APIs/Python3/eric7.api Wed Oct 25 16:12:46 2023 +0200 @@ -9427,6 +9427,7 @@ eric7.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setModified?4(m) eric7.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setPrintColorMode?4(colorMode) eric7.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setRectangularSelection?4(startLine, startIndex, endLine, endIndex) +eric7.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setRectangularSelectionModifier?4(modifier) eric7.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setStyling?4(length, style) eric7.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setVirtualSpaceOptions?4(options) eric7.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setWrapStartIndent?4(indent)
--- a/src/eric7/Documentation/Help/source.qhp Wed Oct 25 14:30:33 2023 +0200 +++ b/src/eric7/Documentation/Help/source.qhp Wed Oct 25 16:12:46 2023 +0200 @@ -13969,6 +13969,7 @@ <keyword name="QsciScintillaCompat.setModified" id="QsciScintillaCompat.setModified" ref="eric7.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setModified" /> <keyword name="QsciScintillaCompat.setPrintColorMode" id="QsciScintillaCompat.setPrintColorMode" ref="eric7.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setPrintColorMode" /> <keyword name="QsciScintillaCompat.setRectangularSelection" id="QsciScintillaCompat.setRectangularSelection" ref="eric7.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setRectangularSelection" /> + <keyword name="QsciScintillaCompat.setRectangularSelectionModifier" id="QsciScintillaCompat.setRectangularSelectionModifier" ref="eric7.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setRectangularSelectionModifier" /> <keyword name="QsciScintillaCompat.setStyling" id="QsciScintillaCompat.setStyling" ref="eric7.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setStyling" /> <keyword name="QsciScintillaCompat.setVirtualSpaceOptions" id="QsciScintillaCompat.setVirtualSpaceOptions" ref="eric7.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setVirtualSpaceOptions" /> <keyword name="QsciScintillaCompat.setWrapStartIndent" id="QsciScintillaCompat.setWrapStartIndent" ref="eric7.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setWrapStartIndent" />
--- a/src/eric7/Documentation/Source/eric7.QScintilla.QsciScintillaCompat.html Wed Oct 25 14:30:33 2023 +0200 +++ b/src/eric7/Documentation/Source/eric7.QScintilla.QsciScintillaCompat.html Wed Oct 25 16:12:46 2023 +0200 @@ -496,6 +496,10 @@ <td>Public method to set a rectangular selection.</td> </tr> <tr> +<td><a href="#QsciScintillaCompat.setRectangularSelectionModifier">setRectangularSelectionModifier</a></td> +<td>Public method to set the modifier key used to create a rectangular selection by doing a mouse drag.</td> +</tr> +<tr> <td><a href="#QsciScintillaCompat.setStyling">setStyling</a></td> <td>Public method to style some text.</td> </tr> @@ -2323,6 +2327,21 @@ index number of the end of the selection (int) </dd> </dl> +<a NAME="QsciScintillaCompat.setRectangularSelectionModifier" ID="QsciScintillaCompat.setRectangularSelectionModifier"></a> +<h4>QsciScintillaCompat.setRectangularSelectionModifier</h4> +<b>setRectangularSelectionModifier</b>(<i>modifier</i>) + +<p> + Public method to set the modifier key used to create a rectangular selection by + doing a mouse drag. +</p> +<dl> + +<dt><i>modifier</i> (Qt.KeyboardModifier)</dt> +<dd> +modifier key to be used +</dd> +</dl> <a NAME="QsciScintillaCompat.setStyling" ID="QsciScintillaCompat.setStyling"></a> <h4>QsciScintillaCompat.setStyling</h4> <b>setStyling</b>(<i>length, style</i>)
--- a/src/eric7/Preferences/ConfigurationPages/EditorGeneralPage.py Wed Oct 25 14:30:33 2023 +0200 +++ b/src/eric7/Preferences/ConfigurationPages/EditorGeneralPage.py Wed Oct 25 16:12:46 2023 +0200 @@ -79,6 +79,18 @@ self.mouseHoverHelpGroupBox.setChecked(Preferences.getEditor("MouseHoverHelp")) self.mouseDwellTimeSpinBox.setValue(Preferences.getEditor("MouseHoverTimeout")) + rectangularSelectionModifier = Preferences.getEditor( + "RectangularSelectionModifier" + ) + if rectangularSelectionModifier == Qt.KeyboardModifier.ControlModifier: + self.rectangularSelectionCtrlButton.setChecked(True) + elif rectangularSelectionModifier == Qt.KeyboardModifier.AltModifier: + self.rectangularSelectionAltButton.setChecked(True) + elif rectangularSelectionModifier == Qt.KeyboardModifier.MetaModifier: + self.rectangularSelectionMetaButton.setChecked(True) + else: + self.rectangularSelectionCtrlButton.setChecked(True) # default + virtualSpaceOptions = Preferences.getEditor("VirtualSpaceOptions") self.vsSelectionCheckBox.setChecked( virtualSpaceOptions & QsciScintillaBase.SCVS_RECTANGULARSELECTION @@ -145,6 +157,17 @@ Preferences.setEditor("MouseHoverHelp", self.mouseHoverHelpGroupBox.isChecked()) Preferences.setEditor("MouseHoverTimeout", self.mouseDwellTimeSpinBox.value()) + rectangularSelectionModifier = Qt.KeyboardModifier.ControlModifier # default + if self.rectangularSelectionCtrlButton.isChecked(): + pass # already set as default value + elif self.rectangularSelectionAltButton.isChecked(): + rectangularSelectionModifier = Qt.KeyboardModifier.AltModifier + elif self.rectangularSelectionMetaButton.isChecked(): + rectangularSelectionModifier = Qt.KeyboardModifier.MetaModifier + Preferences.setEditor( + "RectangularSelectionModifier", rectangularSelectionModifier + ) + virtualSpaceOptions = QsciScintillaBase.SCVS_NONE if self.vsSelectionCheckBox.isChecked(): virtualSpaceOptions |= QsciScintillaBase.SCVS_RECTANGULARSELECTION
--- a/src/eric7/Preferences/ConfigurationPages/EditorGeneralPage.ui Wed Oct 25 14:30:33 2023 +0200 +++ b/src/eric7/Preferences/ConfigurationPages/EditorGeneralPage.ui Wed Oct 25 16:12:46 2023 +0200 @@ -7,10 +7,10 @@ <x>0</x> <y>0</y> <width>550</width> - <height>1033</height> + <height>1119</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> + <layout class="QVBoxLayout" name="verticalLayout_6"> <item> <widget class="QLabel" name="headerLabel"> <property name="text"> @@ -509,6 +509,50 @@ </widget> </item> <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Rectangular Selection Modifier</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Select the modifier key to indicate a rectangular selection while dragging the mouse.</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QRadioButton" name="rectangularSelectionCtrlButton"> + <property name="text"> + <string>Ctrl</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="rectangularSelectionAltButton"> + <property name="text"> + <string>Alt</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="rectangularSelectionMetaButton"> + <property name="text"> + <string>Meta / Windows / Option</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> <widget class="QGroupBox" name="virtualSpaceGroupBox"> <property name="title"> <string>Virtual Space</string> @@ -583,6 +627,9 @@ <tabstop>docstringCompletionCheckBox</tabstop> <tabstop>mouseHoverHelpGroupBox</tabstop> <tabstop>mouseDwellTimeSpinBox</tabstop> + <tabstop>rectangularSelectionCtrlButton</tabstop> + <tabstop>rectangularSelectionAltButton</tabstop> + <tabstop>rectangularSelectionMetaButton</tabstop> <tabstop>vsSelectionCheckBox</tabstop> <tabstop>vsUserCheckBox</tabstop> </tabstops>
--- a/src/eric7/Preferences/__init__.py Wed Oct 25 14:30:33 2023 +0200 +++ b/src/eric7/Preferences/__init__.py Wed Oct 25 16:12:46 2023 +0200 @@ -539,9 +539,10 @@ "ColourizeSelText": False, "CustomSelectionColours": False, "ExtendSelectionToEol": False, + "RectangularSelectionModifier": Qt.KeyboardModifier.ControlModifier, "LineMarkersBackground": True, "AutoPrepareAPIs": False, - "AutoCompletionEnabled": False, + "AutoCompletionEnabled": True, "AutoCompletionCaseSensitivity": True, "AutoCompletionReplaceWord": False, "AutoCompletionShowSingle": False, @@ -553,14 +554,14 @@ # show QScintilla completions, if plug-in fails "AutoCompletionScintillaOnFail": False, "AutoCompletionReversedList": False, - "AutoCompletionCacheEnabled": True, + "AutoCompletionCacheEnabled": False, "AutoCompletionCacheSize": 100, "AutoCompletionCacheTime": 300, # 5 minutes "AutoCompletionWatchdogTime": 3000, # ms - "AutoCompletionMaxLines": 5, - "AutoCompletionMaxChars": 40, - "CallTipsEnabled": False, - "CallTipsVisible": 0, + "AutoCompletionMaxLines": 20, + "AutoCompletionMaxChars": 80, + "CallTipsEnabled": True, + "CallTipsVisible": 20, "CallTipsStyle": QsciScintilla.CallTipsStyle.CallTipsNoContext, "CallTipsPosition": QsciScintilla.CallTipsPosition.CallTipsBelowText, # show QScintilla calltips, if plug-in fails @@ -1689,11 +1690,14 @@ "JediFuzzyCompletionsEnabled": False, "JediCalltipsEnabled": True, "MouseClickEnabled": True, - "MouseClickGotoModifiers": ( - Qt.KeyboardModifier.MetaModifier | Qt.KeyboardModifier.ControlModifier - ), "MouseClickGotoButton": Qt.MouseButton.LeftButton, } + if OSUtilities.isWindowsPlatform(): + jediDefaults["MouseClickGotoModifiers"] = ( + Qt.KeyboardModifier.MetaModifier | Qt.KeyboardModifier.ControlModifier + ) + else: + jediDefaults["MouseClickGotoModifiers"] = Qt.KeyboardModifier.ControlModifier # defaults for Hex Editor pdfViewerDefaults = { @@ -2395,6 +2399,7 @@ "EdgeMode", "EOLMode", "PythonBadIndentation", + "RectangularSelectionModifier", ]: # no special treatment for str and PyQt6 Enum return Prefs.settings.value("Editor/" + key, Prefs.editorDefaults[key])
--- a/src/eric7/QScintilla/Editor.py Wed Oct 25 14:30:33 2023 +0200 +++ b/src/eric7/QScintilla/Editor.py Wed Oct 25 16:12:46 2023 +0200 @@ -4976,6 +4976,10 @@ QsciScintilla.SCI_SETMOUSEDWELLTIME, QsciScintilla.SC_TIME_FOREVER ) + self.setRectangularSelectionModifier( + Preferences.getEditor("RectangularSelectionModifier") + ) + # to avoid errors due to line endings by pasting self.SendScintilla(QsciScintilla.SCI_SETPASTECONVERTENDINGS, True)
--- a/src/eric7/QScintilla/QsciScintillaCompat.py Wed Oct 25 14:30:33 2023 +0200 +++ b/src/eric7/QScintilla/QsciScintillaCompat.py Wed Oct 25 16:12:46 2023 +0200 @@ -615,6 +615,23 @@ self.SendScintilla(QsciScintilla.SCI_SETRECTANGULARSELECTIONANCHOR, startPos) self.SendScintilla(QsciScintilla.SCI_SETRECTANGULARSELECTIONCARET, endPos) + def setRectangularSelectionModifier(self, modifier): + """ + Public method to set the modifier key used to create a rectangular selection by + doing a mouse drag. + + @param modifier modifier key to be used + @type Qt.KeyboardModifier + """ + sciModifier = { + Qt.KeyboardModifier.ControlModifier: QsciScintilla.SCMOD_CTRL, + Qt.KeyboardModifier.AltModifier: QsciScintilla.SCMOD_ALT, + Qt.KeyboardModifier.MetaModifier: QsciScintilla.SCMOD_SUPER, + }.get(modifier, QsciScintilla.SCMOD_CTRL) + self.SendScintilla( + QsciScintilla.SCI_SETRECTANGULARSELECTIONMODIFIER, sciModifier + ) + def getSelectionCount(self): """ Public method to get the number of active selections.