[NEEDS-DOCS][processing] Move configuration to qgis options dialog

This commit is contained in:
Nyall Dawson 2017-03-07 18:12:06 +10:00
parent 2d807f5405
commit 9f23dd2414
3 changed files with 51 additions and 69 deletions

View File

@ -32,6 +32,7 @@ import os
import sys import sys
from qgis.core import QgsApplication from qgis.core import QgsApplication
from qgis.gui import QgsOptionsWidgetFactory
from qgis.PyQt.QtCore import Qt, QCoreApplication, QDir from qgis.PyQt.QtCore import Qt, QCoreApplication, QDir
from qgis.PyQt.QtWidgets import QMenu, QAction from qgis.PyQt.QtWidgets import QMenu, QAction
from qgis.PyQt.QtGui import QIcon from qgis.PyQt.QtGui import QIcon
@ -39,7 +40,7 @@ from qgis.PyQt.QtGui import QIcon
from processing.core.Processing import Processing from processing.core.Processing import Processing
from processing.gui.ProcessingToolbox import ProcessingToolbox from processing.gui.ProcessingToolbox import ProcessingToolbox
from processing.gui.HistoryDialog import HistoryDialog from processing.gui.HistoryDialog import HistoryDialog
from processing.gui.ConfigDialog import ConfigDialog from processing.gui.ConfigDialog import ConfigOptionsPage, ConfigDialog
from processing.gui.ResultsDock import ResultsDock from processing.gui.ResultsDock import ResultsDock
from processing.gui.CommanderWindow import CommanderWindow from processing.gui.CommanderWindow import CommanderWindow
from processing.modeler.ModelerDialog import ModelerDialog from processing.modeler.ModelerDialog import ModelerDialog
@ -53,10 +54,25 @@ if cmd_folder not in sys.path:
sys.path.insert(0, cmd_folder) sys.path.insert(0, cmd_folder)
class ProcessingOptionsFactory(QgsOptionsWidgetFactory):
def __init__(self):
super(QgsOptionsWidgetFactory, self).__init__()
def icon(self):
return QgsApplication.getThemeIcon('/processingAlgorithm.svg')
def createWidget(self, parent):
return ConfigOptionsPage(parent)
class ProcessingPlugin(object): class ProcessingPlugin(object):
def __init__(self, iface): def __init__(self, iface):
self.iface = iface self.iface = iface
self.options_factory = ProcessingOptionsFactory()
self.options_factory.setTitle(self.tr('Processing'))
iface.registerOptionsWidgetFactory(self.options_factory)
Processing.initialize() Processing.initialize()
def initGui(self): def initGui(self):
@ -122,16 +138,6 @@ class ProcessingPlugin(object):
self.menu.addSeparator() self.menu.addSeparator()
self.configAction = QAction(
QIcon(QgsApplication.getThemeIcon('mActionOptions.svg')),
self.tr('&Options...'), self.iface.mainWindow())
self.configAction.setObjectName('configAction')
self.configAction.setMenuRole(QAction.NoRole)
self.configAction.triggered.connect(self.openConfig)
self.iface.registerMainWindowAction(self.configAction, 'Ctrl+Alt+C')
self.menu.addAction(self.configAction)
initializeMenus() initializeMenus()
createMenus() createMenus()
@ -152,10 +158,11 @@ class ProcessingPlugin(object):
self.iface.unregisterMainWindowAction(self.toolboxAction) self.iface.unregisterMainWindowAction(self.toolboxAction)
self.iface.unregisterMainWindowAction(self.modelerAction) self.iface.unregisterMainWindowAction(self.modelerAction)
self.iface.unregisterMainWindowAction(self.historyAction) self.iface.unregisterMainWindowAction(self.historyAction)
self.iface.unregisterMainWindowAction(self.configAction)
self.iface.unregisterMainWindowAction(self.resultsAction) self.iface.unregisterMainWindowAction(self.resultsAction)
self.iface.unregisterMainWindowAction(self.commanderAction) self.iface.unregisterMainWindowAction(self.commanderAction)
self.iface.unregisterOptionsWidgetFactory(self.options_factory)
removeMenus() removeMenus()
def openCommander(self): def openCommander(self):
@ -190,9 +197,5 @@ class ProcessingPlugin(object):
dlg = HistoryDialog() dlg = HistoryDialog()
dlg.exec_() dlg.exec_()
def openConfig(self):
dlg = ConfigDialog(self.toolbox)
dlg.exec_()
def tr(self, message): def tr(self, message):
return QCoreApplication.translate('ProcessingPlugin', message) return QCoreApplication.translate('ProcessingPlugin', message)

View File

@ -48,7 +48,9 @@ from qgis.PyQt.QtGui import (QIcon,
QStandardItem, QStandardItem,
QCursor) QCursor)
from qgis.gui import QgsDoubleSpinBox, QgsSpinBox from qgis.gui import (QgsDoubleSpinBox,
QgsSpinBox,
QgsOptionsPageWidget)
from qgis.core import NULL, QgsApplication, QgsSettings from qgis.core import NULL, QgsApplication, QgsSettings
from processing.core.ProcessingConfig import (ProcessingConfig, from processing.core.ProcessingConfig import (ProcessingConfig,
@ -64,13 +66,27 @@ WIDGET, BASE = uic.loadUiType(
os.path.join(pluginPath, 'ui', 'DlgConfig.ui')) os.path.join(pluginPath, 'ui', 'DlgConfig.ui'))
class ConfigOptionsPage(QgsOptionsPageWidget):
def __init__(self, parent):
super(ConfigOptionsPage, self).__init__(parent)
self.config_widget = ConfigDialog()
layout = QHBoxLayout()
layout.setContentsMargins(0, 0, 0, 0)
layout.setMargin(0)
self.setLayout(layout)
layout.addWidget(self.config_widget)
def apply(self):
self.config_widget.accept()
class ConfigDialog(BASE, WIDGET): class ConfigDialog(BASE, WIDGET):
def __init__(self, toolbox): def __init__(self):
super(ConfigDialog, self).__init__(None) super(ConfigDialog, self).__init__(None)
self.setupUi(self) self.setupUi(self)
self.toolbox = toolbox
self.groupIcon = QIcon() self.groupIcon = QIcon()
self.groupIcon.addPixmap(self.style().standardPixmap( self.groupIcon.addPixmap(self.style().standardPixmap(
QStyle.SP_DirClosedIcon), QIcon.Normal, QIcon.Off) QStyle.SP_DirClosedIcon), QIcon.Normal, QIcon.Off)
@ -262,7 +278,6 @@ class ConfigDialog(BASE, WIDGET):
self.saveMenus = True self.saveMenus = True
def accept(self): def accept(self):
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
qsettings = QgsSettings() qsettings = QgsSettings()
for setting in list(self.items.keys()): for setting in list(self.items.keys()):
if setting.group != menusSettingsGroup or self.saveMenus: if setting.group != menusSettingsGroup or self.saveMenus:
@ -278,8 +293,6 @@ class ConfigDialog(BASE, WIDGET):
setting.save(qsettings) setting.save(qsettings)
Processing.updateAlgsList() Processing.updateAlgsList()
settingsWatcher.settingsChanged.emit() settingsWatcher.settingsChanged.emit()
QApplication.restoreOverrideCursor()
QDialog.accept(self)
def itemExpanded(self, idx): def itemExpanded(self, idx):
if idx == self.menusItem.index(): if idx == self.menusItem.index():

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>DlgConfig</class> <class>DlgConfig</class>
<widget class="QDialog" name="DlgConfig"> <widget class="QWidget" name="DlgConfig">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
@ -17,8 +17,17 @@
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>9</number> <number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property> </property>
<item> <item>
<widget class="QgsFilterLineEdit" name="searchBox"> <widget class="QgsFilterLineEdit" name="searchBox">
@ -37,16 +46,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
@ -57,38 +56,5 @@
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections> <connections/>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>DlgConfig</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>DlgConfig</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui> </ui>