Skip to content

Commit 9f23dd2

Browse files
committed
[NEEDS-DOCS][processing] Move configuration to qgis options dialog
1 parent 2d807f5 commit 9f23dd2

File tree

3 files changed

+51
-69
lines changed

3 files changed

+51
-69
lines changed

python/plugins/processing/ProcessingPlugin.py

+19-16
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,15 @@
3232
import sys
3333

3434
from qgis.core import QgsApplication
35+
from qgis.gui import QgsOptionsWidgetFactory
3536
from qgis.PyQt.QtCore import Qt, QCoreApplication, QDir
3637
from qgis.PyQt.QtWidgets import QMenu, QAction
3738
from qgis.PyQt.QtGui import QIcon
3839

3940
from processing.core.Processing import Processing
4041
from processing.gui.ProcessingToolbox import ProcessingToolbox
4142
from processing.gui.HistoryDialog import HistoryDialog
42-
from processing.gui.ConfigDialog import ConfigDialog
43+
from processing.gui.ConfigDialog import ConfigOptionsPage, ConfigDialog
4344
from processing.gui.ResultsDock import ResultsDock
4445
from processing.gui.CommanderWindow import CommanderWindow
4546
from processing.modeler.ModelerDialog import ModelerDialog
@@ -53,10 +54,25 @@
5354
sys.path.insert(0, cmd_folder)
5455

5556

57+
class ProcessingOptionsFactory(QgsOptionsWidgetFactory):
58+
59+
def __init__(self):
60+
super(QgsOptionsWidgetFactory, self).__init__()
61+
62+
def icon(self):
63+
return QgsApplication.getThemeIcon('/processingAlgorithm.svg')
64+
65+
def createWidget(self, parent):
66+
return ConfigOptionsPage(parent)
67+
68+
5669
class ProcessingPlugin(object):
5770

5871
def __init__(self, iface):
5972
self.iface = iface
73+
self.options_factory = ProcessingOptionsFactory()
74+
self.options_factory.setTitle(self.tr('Processing'))
75+
iface.registerOptionsWidgetFactory(self.options_factory)
6076
Processing.initialize()
6177

6278
def initGui(self):
@@ -122,16 +138,6 @@ def initGui(self):
122138

123139
self.menu.addSeparator()
124140

125-
self.configAction = QAction(
126-
QIcon(QgsApplication.getThemeIcon('mActionOptions.svg')),
127-
self.tr('&Options...'), self.iface.mainWindow())
128-
self.configAction.setObjectName('configAction')
129-
self.configAction.setMenuRole(QAction.NoRole)
130-
131-
self.configAction.triggered.connect(self.openConfig)
132-
self.iface.registerMainWindowAction(self.configAction, 'Ctrl+Alt+C')
133-
self.menu.addAction(self.configAction)
134-
135141
initializeMenus()
136142
createMenus()
137143

@@ -152,10 +158,11 @@ def unload(self):
152158
self.iface.unregisterMainWindowAction(self.toolboxAction)
153159
self.iface.unregisterMainWindowAction(self.modelerAction)
154160
self.iface.unregisterMainWindowAction(self.historyAction)
155-
self.iface.unregisterMainWindowAction(self.configAction)
156161
self.iface.unregisterMainWindowAction(self.resultsAction)
157162
self.iface.unregisterMainWindowAction(self.commanderAction)
158163

164+
self.iface.unregisterOptionsWidgetFactory(self.options_factory)
165+
159166
removeMenus()
160167

161168
def openCommander(self):
@@ -190,9 +197,5 @@ def openHistory(self):
190197
dlg = HistoryDialog()
191198
dlg.exec_()
192199

193-
def openConfig(self):
194-
dlg = ConfigDialog(self.toolbox)
195-
dlg.exec_()
196-
197200
def tr(self, message):
198201
return QCoreApplication.translate('ProcessingPlugin', message)

python/plugins/processing/gui/ConfigDialog.py

+19-6
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@
4848
QStandardItem,
4949
QCursor)
5050

51-
from qgis.gui import QgsDoubleSpinBox, QgsSpinBox
51+
from qgis.gui import (QgsDoubleSpinBox,
52+
QgsSpinBox,
53+
QgsOptionsPageWidget)
5254
from qgis.core import NULL, QgsApplication, QgsSettings
5355

5456
from processing.core.ProcessingConfig import (ProcessingConfig,
@@ -64,13 +66,27 @@
6466
os.path.join(pluginPath, 'ui', 'DlgConfig.ui'))
6567

6668

69+
class ConfigOptionsPage(QgsOptionsPageWidget):
70+
71+
def __init__(self, parent):
72+
super(ConfigOptionsPage, self).__init__(parent)
73+
self.config_widget = ConfigDialog()
74+
layout = QHBoxLayout()
75+
layout.setContentsMargins(0, 0, 0, 0)
76+
layout.setMargin(0)
77+
self.setLayout(layout)
78+
layout.addWidget(self.config_widget)
79+
80+
def apply(self):
81+
self.config_widget.accept()
82+
83+
6784
class ConfigDialog(BASE, WIDGET):
6885

69-
def __init__(self, toolbox):
86+
def __init__(self):
7087
super(ConfigDialog, self).__init__(None)
7188
self.setupUi(self)
7289

73-
self.toolbox = toolbox
7490
self.groupIcon = QIcon()
7591
self.groupIcon.addPixmap(self.style().standardPixmap(
7692
QStyle.SP_DirClosedIcon), QIcon.Normal, QIcon.Off)
@@ -262,7 +278,6 @@ def resetMenusToDefaults(self):
262278
self.saveMenus = True
263279

264280
def accept(self):
265-
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
266281
qsettings = QgsSettings()
267282
for setting in list(self.items.keys()):
268283
if setting.group != menusSettingsGroup or self.saveMenus:
@@ -278,8 +293,6 @@ def accept(self):
278293
setting.save(qsettings)
279294
Processing.updateAlgsList()
280295
settingsWatcher.settingsChanged.emit()
281-
QApplication.restoreOverrideCursor()
282-
QDialog.accept(self)
283296

284297
def itemExpanded(self, idx):
285298
if idx == self.menusItem.index():
+13-47
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<ui version="4.0">
33
<class>DlgConfig</class>
4-
<widget class="QDialog" name="DlgConfig">
4+
<widget class="QWidget" name="DlgConfig">
55
<property name="geometry">
66
<rect>
77
<x>0</x>
@@ -17,8 +17,17 @@
1717
<property name="spacing">
1818
<number>6</number>
1919
</property>
20-
<property name="margin">
21-
<number>9</number>
20+
<property name="leftMargin">
21+
<number>0</number>
22+
</property>
23+
<property name="topMargin">
24+
<number>0</number>
25+
</property>
26+
<property name="rightMargin">
27+
<number>0</number>
28+
</property>
29+
<property name="bottomMargin">
30+
<number>0</number>
2231
</property>
2332
<item>
2433
<widget class="QgsFilterLineEdit" name="searchBox">
@@ -37,16 +46,6 @@
3746
</property>
3847
</widget>
3948
</item>
40-
<item>
41-
<widget class="QDialogButtonBox" name="buttonBox">
42-
<property name="orientation">
43-
<enum>Qt::Horizontal</enum>
44-
</property>
45-
<property name="standardButtons">
46-
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
47-
</property>
48-
</widget>
49-
</item>
5049
</layout>
5150
</widget>
5251
<customwidgets>
@@ -57,38 +56,5 @@
5756
</customwidget>
5857
</customwidgets>
5958
<resources/>
60-
<connections>
61-
<connection>
62-
<sender>buttonBox</sender>
63-
<signal>accepted()</signal>
64-
<receiver>DlgConfig</receiver>
65-
<slot>accept()</slot>
66-
<hints>
67-
<hint type="sourcelabel">
68-
<x>248</x>
69-
<y>254</y>
70-
</hint>
71-
<hint type="destinationlabel">
72-
<x>157</x>
73-
<y>274</y>
74-
</hint>
75-
</hints>
76-
</connection>
77-
<connection>
78-
<sender>buttonBox</sender>
79-
<signal>rejected()</signal>
80-
<receiver>DlgConfig</receiver>
81-
<slot>reject()</slot>
82-
<hints>
83-
<hint type="sourcelabel">
84-
<x>316</x>
85-
<y>260</y>
86-
</hint>
87-
<hint type="destinationlabel">
88-
<x>286</x>
89-
<y>274</y>
90-
</hint>
91-
</hints>
92-
</connection>
93-
</connections>
59+
<connections/>
9460
</ui>

0 commit comments

Comments
 (0)