Wed, 06 Mar 2019 18:44:29 +0100
Editor: added these capabilities
- frame the line containing the cursor with the background color instead of coloring it
- support for the "reverse selected lines" command (Meta+Alt+R)
--- a/Preferences/ConfigurationPages/EditorStylesPage.py Tue Mar 05 19:50:32 2019 +0100 +++ b/Preferences/ConfigurationPages/EditorStylesPage.py Wed Mar 06 18:44:29 2019 +0100 @@ -73,19 +73,21 @@ QsciScintilla.WrapFlagInMargin) self.wrapIndentComboBox.addItem( - self.tr("Fixed Amount"), QsciScintilla.WrapIndentFixed) + self.tr("Fixed"), QsciScintilla.WrapIndentFixed) self.wrapIndentComboBox.addItem( - self.tr("Aligned to First Line"), QsciScintilla.WrapIndentSame) + self.tr("Aligned"), QsciScintilla.WrapIndentSame) self.wrapIndentComboBox.addItem( - self.tr("Aligned to First Line plus One"), + self.tr("Aligned plus One"), QsciScintilla.WrapIndentIndented) if QSCINTILLA_VERSION() >= 0x020B00: self.wrapIndentComboBox.addItem( - self.tr("Aligned to First Line plus Two"), + self.tr("Aligned plus Two"), QsciScintilla.WrapIndentDeeplyIndented) - if QSCINTILLA_VERSION() < 0x020800: - self.caretlineAlwaysVisibleCheckBox.hide() + self.caretlineAlwaysVisibleCheckBox.setEnabled( + QSCINTILLA_VERSION() >= 0x020800) + self.caretlineFrameWidthSpinBox.setEnabled( + QSCINTILLA_VERSION() >= 0x020B00) # set initial values try: @@ -112,6 +114,8 @@ Preferences.getEditor("CaretLineAlwaysVisible")) self.caretWidthSpinBox.setValue( Preferences.getEditor("CaretWidth")) + self.caretlineFrameWidthSpinBox.setValue( + Preferences.getEditor("CaretLineFrameWidth")) self.colourizeSelTextCheckBox.setChecked( Preferences.getEditor("ColourizeSelText")) self.customSelColourCheckBox.setChecked( @@ -170,6 +174,8 @@ self.wrapIndentComboBox.setCurrentIndex( self.wrapIndentComboBox.findData( Preferences.getEditor("WrapIndentMode"))) + self.wrapStartIndentSpinBox.setValue( + Preferences.getEditor("WrapStartIndent")) self.edgeModeCombo.setCurrentIndex( self.edgeModes.index(Preferences.getEditor("EdgeMode"))) @@ -326,6 +332,8 @@ Preferences.setEditor( "CaretWidth", self.caretWidthSpinBox.value()) + Preferences.setEditor( + "CaretLineFrameWidth", self.caretlineFrameWidthSpinBox.value()) Preferences.setEditor( "ShowEOL", self.eolCheckBox.isChecked()) @@ -339,6 +347,8 @@ "WrapIndentMode", self.wrapIndentComboBox.itemData( self.wrapIndentComboBox.currentIndex())) Preferences.setEditor( + "WrapStartIndent", self.wrapStartIndentSpinBox.value()) + Preferences.setEditor( "EdgeMode", self.edgeModes[self.edgeModeCombo.currentIndex()]) Preferences.setEditor( "EdgeColumn", self.edgeLineColumnSlider.value())
--- a/Preferences/ConfigurationPages/EditorStylesPage.ui Tue Mar 05 19:50:32 2019 +0100 +++ b/Preferences/ConfigurationPages/EditorStylesPage.ui Wed Mar 06 18:44:29 2019 +0100 @@ -10,7 +10,7 @@ <height>2891</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout_9"> + <layout class="QVBoxLayout" name="verticalLayout_10"> <item> <widget class="QLabel" name="headerLabel"> <property name="text"> @@ -563,133 +563,186 @@ <property name="title"> <string>Caret</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> + <layout class="QVBoxLayout" name="verticalLayout_9"> <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QCheckBox" name="caretlineVisibleCheckBox"> - <property name="toolTip"> - <string>Select, whether the caretline should be highlighted</string> - </property> - <property name="text"> - <string>Caretline visible</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="caretlineAlwaysVisibleCheckBox"> - <property name="toolTip"> - <string>Select, whether the caretline should be highlighted even if the editor doesn't have the focus</string> - </property> - <property name="text"> - <string>Caretline always visible</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> + <widget class="QGroupBox" name="groupBox_18"> + <property name="title"> + <string>Caret</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <widget class="QLabel" name="textLabel1_7"> + <property name="text"> + <string>Width:</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="caretWidthSpinBox"> + <property name="toolTip"> + <string>Select caret width (1, 2 or 3 pixels)</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>3</number> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="TextLabel2_2_2_2_2_2"> + <property name="text"> + <string>Foreground:</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="caretForegroundButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for the caret.</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>347</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> </item> <item> - <layout class="QHBoxLayout" name="_6"> - <item> - <widget class="QLabel" name="textLabel1_7"> - <property name="text"> - <string>Caret width:</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="caretWidthSpinBox"> - <property name="toolTip"> - <string>Select caret width (1, 2 or 3 pixels)</string> - </property> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>3</number> - </property> - </widget> - </item> - <item> - <spacer> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Expanding</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="_7"> - <item> - <widget class="QLabel" name="TextLabel2_2_2_2_2_2"> - <property name="text"> - <string>Caret foreground:</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="caretForegroundButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for the caret.</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="TextLabel2_2_2_2_2_3"> - <property name="text"> - <string>Caretline background:</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="caretlineBackgroundButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the background colour for the line containing the caret.</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - </layout> + <widget class="QGroupBox" name="groupBox_19"> + <property name="title"> + <string>Caret Line</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QCheckBox" name="caretlineVisibleCheckBox"> + <property name="toolTip"> + <string>Select, whether the caret line should be highlighted</string> + </property> + <property name="text"> + <string>Caret line visible</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="caretlineAlwaysVisibleCheckBox"> + <property name="toolTip"> + <string>Select, whether the caret line should be highlighted even if the editor doesn't have the focus</string> + </property> + <property name="text"> + <string>Caret line always visible</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_6"> + <item> + <widget class="QLabel" name="label_19"> + <property name="text"> + <string>Frame Width:</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="caretlineFrameWidthSpinBox"> + <property name="toolTip"> + <string>Select caret line frame width (off, 1, 2 or 3 pixels)</string> + </property> + <property name="specialValueText"> + <string>Off</string> + </property> + <property name="minimum"> + <number>0</number> + </property> + <property name="maximum"> + <number>3</number> + </property> + <property name="value"> + <number>0</number> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="TextLabel2_2_2_2_2_3"> + <property name="text"> + <string>Background:</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="caretlineBackgroundButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the background colour for the line containing the caret.</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_5"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> </item> </layout> </widget> @@ -912,7 +965,7 @@ </property> </widget> </item> - <item row="0" column="2"> + <item row="0" column="2" colspan="2"> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -953,6 +1006,32 @@ </property> </widget> </item> + <item row="2" column="2"> + <widget class="QSpinBox" name="wrapStartIndentSpinBox"> + <property name="toolTip"> + <string>Enter the number of characters to indent (only used for 'Fixed')</string> + </property> + <property name="suffix"> + <string> characters</string> + </property> + <property name="maximum"> + <number>9</number> + </property> + </widget> + </item> + <item row="2" column="3"> + <spacer name="horizontalSpacer_4"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>362</width> + <height>20</height> + </size> + </property> + </spacer> + </item> </layout> </widget> </item> @@ -2018,10 +2097,11 @@ <tabstop>extentSelEolCheckBox</tabstop> <tabstop>selectionForegroundButton</tabstop> <tabstop>selectionBackgroundButton</tabstop> + <tabstop>caretWidthSpinBox</tabstop> + <tabstop>caretForegroundButton</tabstop> <tabstop>caretlineVisibleCheckBox</tabstop> <tabstop>caretlineAlwaysVisibleCheckBox</tabstop> - <tabstop>caretWidthSpinBox</tabstop> - <tabstop>caretForegroundButton</tabstop> + <tabstop>caretlineFrameWidthSpinBox</tabstop> <tabstop>caretlineBackgroundButton</tabstop> <tabstop>debugMarkerBackgroundCheckBox</tabstop> <tabstop>currentLineMarkerButton</tabstop> @@ -2035,6 +2115,7 @@ <tabstop>wrapModeComboBox</tabstop> <tabstop>wrapVisualComboBox</tabstop> <tabstop>wrapIndentComboBox</tabstop> + <tabstop>wrapStartIndentSpinBox</tabstop> <tabstop>edgeModeCombo</tabstop> <tabstop>edgeLineColumnSlider</tabstop> <tabstop>edgeBackgroundColorButton</tabstop>
--- a/Preferences/__init__.py Tue Mar 05 19:50:32 2019 +0100 +++ b/Preferences/__init__.py Wed Mar 06 18:44:29 2019 +0100 @@ -402,6 +402,7 @@ "WrapLongLinesMode": QsciScintilla.WrapNone, "WrapVisualFlag": QsciScintilla.WrapFlagNone, "WrapIndentMode": QsciScintilla.WrapIndentFixed, + "WrapStartIndent": 0, "WarnFilesize": 512, "ClearBreaksOnClose": True, "StripTrailingWhitespace": False, @@ -418,6 +419,7 @@ "CaretLineVisible": False, "CaretLineAlwaysVisible": False, "CaretWidth": 1, + "CaretLineFrameWidth": 0, "ColourizeSelText": False, "CustomSelectionColours": False, "ExtendSelectionToEol": False, @@ -2167,7 +2169,7 @@ "Editor/" + key, prefClass.editorDefaults[key]) elif key in ["AutosaveInterval", "TabWidth", "IndentWidth", "FoldingStyle", "WarnFilesize", "EdgeMode", "EdgeColumn", - "CaretWidth", "AutoCompletionSource", + "CaretWidth", "CaretLineFrameWidth", "AutoCompletionSource", "AutoCompletionThreshold", "AutoCompletionTimeout", "AutoCompletionCacheSize", "AutoCompletionCacheTime", "AutoCompletionWatchdogTime", "AutoCompletionMaxLines", @@ -2177,7 +2179,7 @@ "PostScriptLevel", "EOLMode", "ZoomFactor", "WhitespaceSize", "OnlineSyntaxCheckInterval", "OnlineChangeTraceInterval", "WrapLongLinesMode", "WrapVisualFlag", "WrapIndentMode", - "CallTipsPosition", "VirtualSpaceOptions"]: + "WrapStartIndent", "CallTipsPosition", "VirtualSpaceOptions"]: return int(prefClass.settings.value( "Editor/" + key, prefClass.editorDefaults[key])) elif key in ["AdditionalOpenFilters", "AdditionalSaveFilters",
--- a/QScintilla/Editor.py Tue Mar 05 19:50:32 2019 +0100 +++ b/QScintilla/Editor.py Wed Mar 06 18:44:29 2019 +0100 @@ -29,7 +29,7 @@ from E5Gui import E5FileDialog, E5MessageBox from E5Utilities.E5Cache import E5Cache -from .QsciScintillaCompat import QsciScintillaCompat +from .QsciScintillaCompat import QsciScintillaCompat, QSCINTILLA_VERSION from .EditorMarkerMap import EditorMarkerMap import Preferences @@ -4343,6 +4343,9 @@ Preferences.getEditor("CaretLineAlwaysVisible")) self.caretWidth = Preferences.getEditor("CaretWidth") self.setCaretWidth(self.caretWidth) + self.caretLineFrameWidth = Preferences.getEditor("CaretLineFrameWidth") + if QSCINTILLA_VERSION() >= 0x020B00: + self.setCaretLineFrameWidth(self.caretLineFrameWidth) self.useMonospaced = Preferences.getEditor("UseMonospacedFont") self.setMonospaced(self.useMonospaced) edgeMode = Preferences.getEditor("EdgeMode") @@ -4356,6 +4359,7 @@ self.setWrapMode(Preferences.getEditor("WrapLongLinesMode")) self.setWrapVisualFlags(wrapVisualFlag, wrapVisualFlag) self.setWrapIndentMode(Preferences.getEditor("WrapIndentMode")) + self.setWrapStartIndent(Preferences.getEditor("WrapStartIndent")) self.zoomTo(Preferences.getEditor("ZoomFactor"))
--- a/QScintilla/MiniEditor.py Tue Mar 05 19:50:32 2019 +0100 +++ b/QScintilla/MiniEditor.py Wed Mar 06 18:44:29 2019 +0100 @@ -24,7 +24,7 @@ from E5Gui import E5MessageBox, E5FileDialog from E5Gui.E5MainWindow import E5MainWindow -from .QsciScintillaCompat import QsciScintillaCompat +from .QsciScintillaCompat import QsciScintillaCompat, QSCINTILLA_VERSION import UI.PixmapCache import UI.Config @@ -1296,6 +1296,19 @@ act.triggered.connect(self.esm.map) self.editActions.append(act) + if QSCINTILLA_VERSION() >= 0x020B00: + act = E5Action( + QCoreApplication.translate('ViewManager', + 'Reverse selected lines'), + QCoreApplication.translate('ViewManager', + 'Reverse selected lines'), + QKeySequence(QCoreApplication.translate('ViewManager', + 'Meta+Alt+R')), + 0, self.editorActGrp, 'vm_edit_reverse selected_lines') + self.esm.setMapping(act, QsciScintilla.SCI_LINEREVERSE) + act.triggered.connect(self.esm.map) + self.editActions.append(act) + act = E5Action( QCoreApplication.translate('ViewManager', 'Cut current line'), QCoreApplication.translate('ViewManager', 'Cut current line'), @@ -2663,6 +2676,9 @@ Preferences.getEditor("CaretLineAlwaysVisible")) self.caretWidth = Preferences.getEditor("CaretWidth") self.__textEdit.setCaretWidth(self.caretWidth) + self.caretLineFrameWidth = Preferences.getEditor("CaretLineFrameWidth") + if QSCINTILLA_VERSION() >= 0x020B00: + self.__textEdit.setCaretLineFrameWidth(self.caretLineFrameWidth) self.useMonospaced = Preferences.getEditor("UseMonospacedFont") self.__setMonospaced(self.useMonospaced) edgeMode = Preferences.getEditor("EdgeMode") @@ -2677,6 +2693,8 @@ self.__textEdit.setWrapVisualFlags(wrapVisualFlag, wrapVisualFlag) self.__textEdit.setWrapIndentMode( Preferences.getEditor("WrapIndentMode")) + self.__textEdit.setWrapStartIndent( + Preferences.getEditor("WrapStartIndent")) self.searchIndicator = QsciScintilla.INDIC_CONTAINER self.__textEdit.indicatorDefine(
--- a/QScintilla/QsciScintillaCompat.py Tue Mar 05 19:50:32 2019 +0100 +++ b/QScintilla/QsciScintillaCompat.py Wed Mar 06 18:44:29 2019 +0100 @@ -1757,8 +1757,8 @@ self.foldLine(line) ######################################################################### - # method below implement a compatibility variant for the findFirst() - # extended with version 2.11 + ## Method below implements a compatibility variant for the findFirst() + ## extended with version 2.11. ######################################################################### def findFirst(self, expression, regexp, caseSensitive, word, wrap, @@ -1804,8 +1804,23 @@ forward=forward, line=line, index=index, show=show, posix=posix) + ######################################################################### + ## Methods below are missing from QScintilla. + ######################################################################### + + if "setWrapStartIndent" not in QsciScintilla.__dict__: + def setWrapStartIndent(self, indent): + """ + Public method to set a the amount of characters wrapped sublines + shall be indented. + + @param indent amount of characters to indent + @type int + """ + self.SendScintilla(QsciScintilla.SCI_SETWRAPSTARTINDENT, indent) + ## ######################################################################### -## # methods below have been added to QScintilla starting with version 2.x +## ## Methods below have been added to QScintilla starting with version 2.x. ## ######################################################################### ## ## if "newMethod" not in QsciScintilla.__dict__:
--- a/ViewManager/ViewManager.py Tue Mar 05 19:50:32 2019 +0100 +++ b/ViewManager/ViewManager.py Wed Mar 06 18:44:29 2019 +0100 @@ -26,6 +26,7 @@ import Preferences from QScintilla.Editor import Editor +from QScintilla.QsciScintillaCompat import QSCINTILLA_VERSION import Utilities @@ -2124,6 +2125,19 @@ act.triggered.connect(self.esm.map) self.editActions.append(act) + if QSCINTILLA_VERSION() >= 0x020B00: + act = E5Action( + QCoreApplication.translate('ViewManager', + 'Reverse selected lines'), + QCoreApplication.translate('ViewManager', + 'Reverse selected lines'), + QKeySequence(QCoreApplication.translate('ViewManager', + 'Meta+Alt+R')), + 0, self.editorActGrp, 'vm_edit_reverse selected_lines') + self.esm.setMapping(act, QsciScintilla.SCI_LINEREVERSE) + act.triggered.connect(self.esm.map) + self.editActions.append(act) + act = E5Action( QCoreApplication.translate('ViewManager', 'Cut current line'), QCoreApplication.translate('ViewManager', 'Cut current line'),
--- a/changelog Tue Mar 05 19:50:32 2019 +0100 +++ b/changelog Wed Mar 06 18:44:29 2019 +0100 @@ -5,6 +5,9 @@ - Editor -- added extended regular expression support (C++11) as of QScintilla 2.11.0 -- added capability to configure the subline indentation for wrapped lines + -- added capability to frame the line containing the cursor instead of + coloring it + -- added support for the "reverse selected lines" command (Meta+Alt+R) - Email -- changed the Google Mail interface to not use obsoleted packages anymore - Multi Project