Skip to content

Commit 942d6bf

Browse files
committed
[pyqgis-console] allow to disable automatic parentheses insertion from settings:
- fix: add Shift+Insert to paste action - fix: set default Monospaced font at the first start - allow to save state for console splitter - fix for mousePressEvent into console
1 parent 4109a10 commit 942d6bf

File tree

6 files changed

+117
-102
lines changed

6 files changed

+117
-102
lines changed

python/console/console.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,7 @@ def updateTabListScript(self, script, action=None):
704704
QVariant(self.tabListScript))
705705

706706
def saveSettingsConsole(self):
707+
self.settings.setValue("pythonConsole/splitterConsole", self.splitter.saveState())
707708
self.settings.setValue("pythonConsole/splitterObj", self.splitterObj.saveState())
708709
self.settings.setValue("pythonConsole/splitterEditor", self.splitterEditor.saveState())
709710

@@ -712,6 +713,7 @@ def saveSettingsConsole(self):
712713
def restoreSettingsConsole(self):
713714
storedTabScripts = self.settings.value("pythonConsole/tabScripts")
714715
self.tabListScript = storedTabScripts.toList()
716+
self.splitter.restoreState(self.settings.value("pythonConsole/splitterConsole").toByteArray())
715717
self.splitterEditor.restoreState(self.settings.value("pythonConsole/splitterEditor").toByteArray())
716718
self.splitterObj.restoreState(self.settings.value("pythonConsole/splitterObj").toByteArray())
717719

python/console/console_editor.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def __init__(self, parent=None):
116116
#self.setMinimumWidth(300)
117117

118118
self.setBraceMatching(QsciScintilla.SloppyBraceMatch)
119-
self.setMatchedBraceBackgroundColor(QColor("#c6c6c6"))
119+
self.setMatchedBraceBackgroundColor(QColor("#b7f907"))
120120

121121
# Folding
122122
self.setFolding(QsciScintilla.PlainFoldStyle)
@@ -613,11 +613,12 @@ def syntaxCheck(self, filename=None, fromContextMenu=True):
613613
return True
614614

615615
def keyPressEvent(self, e):
616-
t = unicode(e.text())
617-
## Close bracket automatically
618-
if t in self.opening:
619-
i = self.opening.index(t)
620-
self.insert(self.closing[i])
616+
if self.settings.value("pythonConsole/autoCloseBracketEditor", True).toBool():
617+
t = unicode(e.text())
618+
## Close bracket automatically
619+
if t in self.opening:
620+
i = self.opening.index(t)
621+
self.insert(self.closing[i])
621622
QsciScintilla.keyPressEvent(self, e)
622623

623624
def focusInEvent(self, e):
@@ -1145,11 +1146,12 @@ def refreshSettingsEditor(self):
11451146
objInspectorEnabled = self.settings.value("pythonConsole/enableObjectInsp",
11461147
False).toBool()
11471148
listObj = self.parent.objectListButton
1148-
listObj.setChecked(objInspectorEnabled)
1149+
if self.parent.listClassMethod.isVisible():
1150+
listObj.setChecked(objInspectorEnabled)
11491151
listObj.setEnabled(objInspectorEnabled)
11501152
if objInspectorEnabled:
11511153
cW = self.currentWidget()
1152-
if cW:
1154+
if cW and not self.parent.listClassMethod.isVisible():
11531155
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
11541156
self.listObject(cW)
11551157
QApplication.restoreOverrideCursor()

python/console/console_output.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ def setLexers(self):
148148
font = QFont(loadFont)
149149
font.setFixedPitch(True)
150150
font.setPointSize(fontSize)
151+
font.setStyleHint(QFont.TypeWriter)
152+
font.setStretch(QFont.SemiCondensed)
153+
font.setLetterSpacing(QFont.PercentageSpacing, 87.0)
154+
font.setBold(False)
151155

152156
self.lexer.setDefaultFont(font)
153157
self.lexer.setColor(Qt.red, 1)

python/console/console_sci.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def __init__(self, parent=None):
7272
# Brace matching: enable for a brace immediately before or after
7373
# the current position
7474
self.setBraceMatching(QsciScintilla.SloppyBraceMatch)
75-
self.setMatchedBraceBackgroundColor(QColor("#c6c6c6"))
75+
self.setMatchedBraceBackgroundColor(QColor("#b7f907"))
7676

7777
# Current line visible with special background color
7878
self.setCaretWidth(2)
@@ -380,8 +380,9 @@ def keyPressEvent(self, e):
380380
self.setCursorPosition(line, 4)
381381
self.recolor()
382382

383-
elif e.modifiers() & (Qt.ControlModifier | Qt.MetaModifier) and \
384-
e.key() == Qt.Key_V:
383+
elif (e.modifiers() & (Qt.ControlModifier | Qt.MetaModifier) and \
384+
e.key() == Qt.Key_V) or \
385+
(e.modifiers() & Qt.ShiftModifier and e.key() == Qt.Key_Insert):
385386
self.paste()
386387
e.accept()
387388

@@ -391,11 +392,12 @@ def keyPressEvent(self, e):
391392
self.showNext()
392393
## TODO: press event for auto-completion file directory
393394
else:
394-
t = unicode(e.text())
395-
## Close bracket automatically
396-
if t in self.opening:
397-
i = self.opening.index(t)
398-
self.insert(self.closing[i])
395+
if self.settings.value("pythonConsole/autoCloseBracket", True).toBool():
396+
t = unicode(e.text())
397+
## Close bracket automatically
398+
if t in self.opening:
399+
i = self.opening.index(t)
400+
self.insert(self.closing[i])
399401
QsciScintilla.keyPressEvent(self, e)
400402

401403
def contextMenuEvent(self, e):
@@ -494,10 +496,6 @@ def runCommand(self, cmd):
494496
self.writeCMD(cmd)
495497
import webbrowser
496498
self.updateHistory(cmd)
497-
line, pos = self.getCursorPosition()
498-
selCmdLenght = self.text(line).length()
499-
self.setSelection(line, 0, line, selCmdLenght)
500-
self.removeSelectedText()
501499
if cmd in ('_save', '_clear', '_clearAll', '_pyqgis', '_api'):
502500
if cmd == '_save':
503501
self.writeHistoryFile()
@@ -516,18 +514,18 @@ def runCommand(self, cmd):
516514
if msgText:
517515
self.parent.callWidgetMessageBar(msgText)
518516

519-
self.displayPrompt(False)
517+
more = False
520518
else:
521519
self.buffer.append(cmd)
522520
src = u"\n".join(self.buffer)
523521
more = self.runsource(src, "<input>")
524522
if not more:
525523
self.buffer = []
526-
## prevents to commands with more lines to break the console
527-
## in the case they have a eol different from '\n'
528-
self.setText('')
529-
self.move_cursor_to_end()
530-
self.displayPrompt(more)
524+
## prevents to commands with more lines to break the console
525+
## in the case they have a eol different from '\n'
526+
self.setText('')
527+
self.move_cursor_to_end()
528+
self.displayPrompt(more)
531529

532530
def write(self, txt):
533531
sys.stderr.write(txt)

python/console/console_settings.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ def __init__(self, parent):
3636
self.restoreSettings()
3737
self.initialCheck()
3838
self.autoCompletionOptions()
39-
self.fontConfig()
4039

4140
self.addAPIpath.setIcon(QIcon(":/images/themes/default/symbologyAdd.png"))
4241
self.addAPIpath.setToolTip(QCoreApplication.translate("PythonConsole", "Add API path"))
@@ -124,25 +123,13 @@ def removeAPI(self):
124123
for index in reversed(listItemSel):
125124
self.tableWidget.removeRow(index.row())
126125

127-
def fontConfig(self):
128-
#fontFamily = ['Courier','Monospace','Aurulent Sans','Bitstream Vera Serif']
129-
#for i in range(0, len(fontFamily)):
130-
#self.comboBox.addItem(fontFamily[i])
131-
settings = QSettings()
132-
self.fontComboBox.setCurrentIndex(settings.value("pythonConsole/fontfamilyindex").toInt()[0])
133-
self.fontComboBoxEditor.setCurrentIndex(settings.value("pythonConsole/fontfamilyindexEditor").toInt()[0])
134-
135126
def saveSettings(self):
136127
settings = QSettings()
137128
settings.setValue("pythonConsole/preloadAPI", QVariant(self.preloadAPI.isChecked()))
138129
settings.setValue("pythonConsole/autoSaveScript", QVariant(self.autoSaveScript.isChecked()))
139-
fontFamilyIndex = self.fontComboBox.currentIndex()
140-
settings.setValue("pythonConsole/fontfamilyindex", QVariant(fontFamilyIndex))
130+
141131
fontFamilyText = self.fontComboBox.currentText()
142132
settings.setValue("pythonConsole/fontfamilytext", QVariant(fontFamilyText))
143-
144-
fontFamilyIndexEditor = self.fontComboBoxEditor.currentIndex()
145-
settings.setValue("pythonConsole/fontfamilyindexEditor", QVariant(fontFamilyIndexEditor))
146133
fontFamilyTextEditor = self.fontComboBoxEditor.currentText()
147134
settings.setValue("pythonConsole/fontfamilytextEditor", QVariant(fontFamilyTextEditor))
148135

@@ -176,11 +163,17 @@ def saveSettings(self):
176163
settings.setValue("pythonConsole/autoCompleteEnabledEditor", QVariant(self.autoCompleteEnabledEditor.isChecked()))
177164
settings.setValue("pythonConsole/autoCompleteEnabled", QVariant(self.autoCompleteEnabled.isChecked()))
178165
settings.setValue("pythonConsole/enableObjectInsp", QVariant(self.enableObjectInspector.isChecked()))
166+
settings.setValue("pythonConsole/autoCloseBracket", QVariant(self.autoCloseBracket.isChecked()))
167+
settings.setValue("pythonConsole/autoCloseBracketEditor", QVariant(self.autoCloseBracketEditor.isChecked()))
179168

180169
def restoreSettings(self):
181170
settings = QSettings()
182171
self.spinBox.setValue(settings.value("pythonConsole/fontsize", 10).toInt()[0])
183172
self.spinBoxEditor.setValue(settings.value("pythonConsole/fontsizeEditor", 10).toInt()[0])
173+
self.fontComboBox.setCurrentFont(QFont(settings.value("pythonConsole/fontfamilytext",
174+
"Monospace").toString()))
175+
self.fontComboBoxEditor.setCurrentFont(QFont(settings.value("pythonConsole/fontfamilytextEditor",
176+
"Monospace").toString()))
184177
self.preloadAPI.setChecked(settings.value("pythonConsole/preloadAPI", True).toBool())
185178
itemTable = settings.value("pythonConsole/userAPI").toStringList()
186179
for i in range(len(itemTable)):
@@ -198,6 +191,8 @@ def restoreSettings(self):
198191
self.autoCompleteEnabledEditor.setChecked(settings.value("pythonConsole/autoCompleteEnabledEditor", True).toBool())
199192
self.autoCompleteEnabled.setChecked(settings.value("pythonConsole/autoCompleteEnabled", True).toBool())
200193
self.enableObjectInspector.setChecked(settings.value("pythonConsole/enableObjectInsp", False).toBool())
194+
self.autoCloseBracketEditor.setChecked(settings.value("pythonConsole/autoCloseBracketEditor", True).toBool())
195+
self.autoCloseBracket.setChecked(settings.value("pythonConsole/autoCloseBracket", True).toBool())
201196

202197
if settings.value("pythonConsole/autoCompleteSource") == 'fromDoc':
203198
self.autoCompFromDoc.setChecked(True)

python/console/console_settings.ui

Lines changed: 76 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@
5959
<x>0</x>
6060
<y>0</y>
6161
<width>543</width>
62-
<height>622</height>
62+
<height>674</height>
6363
</rect>
6464
</property>
6565
<layout class="QGridLayout" name="gridLayout_2">
66-
<item row="1" column="0">
66+
<item row="2" column="0">
6767
<widget class="QGroupBox" name="groupBox_3">
6868
<property name="title">
6969
<string>Editor</string>
@@ -132,7 +132,7 @@
132132
</item>
133133
</layout>
134134
</item>
135-
<item row="3" column="0">
135+
<item row="4" column="0">
136136
<widget class="QgsCollapsibleGroupBox" name="groupBoxAutoCompletionEditor">
137137
<property name="title">
138138
<string>Autocompletion</string>
@@ -239,6 +239,13 @@
239239
</property>
240240
</widget>
241241
</item>
242+
<item row="5" column="0">
243+
<widget class="QCheckBox" name="autoCloseBracketEditor">
244+
<property name="text">
245+
<string>Automatic parentheses insertion</string>
246+
</property>
247+
</widget>
248+
</item>
242249
</layout>
243250
</widget>
244251
</item>
@@ -248,69 +255,13 @@
248255
<string>Console</string>
249256
</property>
250257
<layout class="QGridLayout" name="gridLayout_9">
251-
<item row="0" column="0">
252-
<layout class="QHBoxLayout" name="horizontalLayout">
253-
<item>
254-
<widget class="QLabel" name="label">
255-
<property name="text">
256-
<string>Font</string>
257-
</property>
258-
</widget>
259-
</item>
260-
<item>
261-
<widget class="QFontComboBox" name="fontComboBox">
262-
<property name="sizePolicy">
263-
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
264-
<horstretch>0</horstretch>
265-
<verstretch>0</verstretch>
266-
</sizepolicy>
267-
</property>
268-
<property name="insertPolicy">
269-
<enum>QComboBox::NoInsert</enum>
270-
</property>
271-
</widget>
272-
</item>
273-
<item>
274-
<widget class="QLabel" name="label_3">
275-
<property name="text">
276-
<string>Size</string>
277-
</property>
278-
</widget>
279-
</item>
280-
<item>
281-
<widget class="QSpinBox" name="spinBox">
282-
<property name="minimumSize">
283-
<size>
284-
<width>51</width>
285-
<height>26</height>
286-
</size>
287-
</property>
288-
<property name="maximumSize">
289-
<size>
290-
<width>51</width>
291-
<height>26</height>
292-
</size>
293-
</property>
294-
<property name="minimum">
295-
<number>6</number>
296-
</property>
297-
<property name="maximum">
298-
<number>15</number>
299-
</property>
300-
<property name="value">
301-
<number>10</number>
302-
</property>
303-
</widget>
304-
</item>
305-
</layout>
306-
</item>
307-
<item row="1" column="0">
258+
<item row="3" column="0">
308259
<widget class="QgsCollapsibleGroupBox" name="groupBoxAutoCompletion">
309260
<property name="title">
310261
<string>Autocompletion</string>
311262
</property>
312263
<property name="collapsed" stdset="0">
313-
<bool>true</bool>
264+
<bool>false</bool>
314265
</property>
315266
<layout class="QGridLayout" name="gridLayout_8">
316267
<item row="0" column="0">
@@ -401,10 +352,73 @@
401352
</layout>
402353
</widget>
403354
</item>
355+
<item row="1" column="0">
356+
<layout class="QHBoxLayout" name="horizontalLayout">
357+
<item>
358+
<widget class="QLabel" name="label">
359+
<property name="text">
360+
<string>Font</string>
361+
</property>
362+
</widget>
363+
</item>
364+
<item>
365+
<widget class="QFontComboBox" name="fontComboBox">
366+
<property name="sizePolicy">
367+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
368+
<horstretch>0</horstretch>
369+
<verstretch>0</verstretch>
370+
</sizepolicy>
371+
</property>
372+
<property name="insertPolicy">
373+
<enum>QComboBox::NoInsert</enum>
374+
</property>
375+
</widget>
376+
</item>
377+
<item>
378+
<widget class="QLabel" name="label_3">
379+
<property name="text">
380+
<string>Size</string>
381+
</property>
382+
</widget>
383+
</item>
384+
<item>
385+
<widget class="QSpinBox" name="spinBox">
386+
<property name="minimumSize">
387+
<size>
388+
<width>51</width>
389+
<height>26</height>
390+
</size>
391+
</property>
392+
<property name="maximumSize">
393+
<size>
394+
<width>51</width>
395+
<height>26</height>
396+
</size>
397+
</property>
398+
<property name="minimum">
399+
<number>6</number>
400+
</property>
401+
<property name="maximum">
402+
<number>15</number>
403+
</property>
404+
<property name="value">
405+
<number>10</number>
406+
</property>
407+
</widget>
408+
</item>
409+
</layout>
410+
</item>
411+
<item row="4" column="0">
412+
<widget class="QCheckBox" name="autoCloseBracket">
413+
<property name="text">
414+
<string>Automatic parentheses insertion</string>
415+
</property>
416+
</widget>
417+
</item>
404418
</layout>
405419
</widget>
406420
</item>
407-
<item row="2" column="0">
421+
<item row="4" column="0">
408422
<widget class="QGroupBox" name="groupBox_2">
409423
<property name="title">
410424
<string>APIs</string>

0 commit comments

Comments
 (0)