Skip to content

Commit

Permalink
[NEEDS-DOCS][processing] Move configuration to qgis options dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Mar 7, 2017
1 parent 2d807f5 commit 9f23dd2
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 69 deletions.
35 changes: 19 additions & 16 deletions python/plugins/processing/ProcessingPlugin.py
Expand Up @@ -32,14 +32,15 @@
import sys

from qgis.core import QgsApplication
from qgis.gui import QgsOptionsWidgetFactory
from qgis.PyQt.QtCore import Qt, QCoreApplication, QDir
from qgis.PyQt.QtWidgets import QMenu, QAction
from qgis.PyQt.QtGui import QIcon

from processing.core.Processing import Processing
from processing.gui.ProcessingToolbox import ProcessingToolbox
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.CommanderWindow import CommanderWindow
from processing.modeler.ModelerDialog import ModelerDialog
Expand All @@ -53,10 +54,25 @@
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):

def __init__(self, iface):
self.iface = iface
self.options_factory = ProcessingOptionsFactory()
self.options_factory.setTitle(self.tr('Processing'))
iface.registerOptionsWidgetFactory(self.options_factory)
Processing.initialize()

def initGui(self):
Expand Down Expand Up @@ -122,16 +138,6 @@ def initGui(self):

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()
createMenus()

Expand All @@ -152,10 +158,11 @@ def unload(self):
self.iface.unregisterMainWindowAction(self.toolboxAction)
self.iface.unregisterMainWindowAction(self.modelerAction)
self.iface.unregisterMainWindowAction(self.historyAction)
self.iface.unregisterMainWindowAction(self.configAction)
self.iface.unregisterMainWindowAction(self.resultsAction)
self.iface.unregisterMainWindowAction(self.commanderAction)

self.iface.unregisterOptionsWidgetFactory(self.options_factory)

removeMenus()

def openCommander(self):
Expand Down Expand Up @@ -190,9 +197,5 @@ def openHistory(self):
dlg = HistoryDialog()
dlg.exec_()

def openConfig(self):
dlg = ConfigDialog(self.toolbox)
dlg.exec_()

def tr(self, message):
return QCoreApplication.translate('ProcessingPlugin', message)
25 changes: 19 additions & 6 deletions python/plugins/processing/gui/ConfigDialog.py
Expand Up @@ -48,7 +48,9 @@
QStandardItem,
QCursor)

from qgis.gui import QgsDoubleSpinBox, QgsSpinBox
from qgis.gui import (QgsDoubleSpinBox,
QgsSpinBox,
QgsOptionsPageWidget)
from qgis.core import NULL, QgsApplication, QgsSettings

from processing.core.ProcessingConfig import (ProcessingConfig,
Expand All @@ -64,13 +66,27 @@
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):

def __init__(self, toolbox):
def __init__(self):
super(ConfigDialog, self).__init__(None)
self.setupUi(self)

self.toolbox = toolbox
self.groupIcon = QIcon()
self.groupIcon.addPixmap(self.style().standardPixmap(
QStyle.SP_DirClosedIcon), QIcon.Normal, QIcon.Off)
Expand Down Expand Up @@ -262,7 +278,6 @@ def resetMenusToDefaults(self):
self.saveMenus = True

def accept(self):
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
qsettings = QgsSettings()
for setting in list(self.items.keys()):
if setting.group != menusSettingsGroup or self.saveMenus:
Expand All @@ -278,8 +293,6 @@ def accept(self):
setting.save(qsettings)
Processing.updateAlgsList()
settingsWatcher.settingsChanged.emit()
QApplication.restoreOverrideCursor()
QDialog.accept(self)

def itemExpanded(self, idx):
if idx == self.menusItem.index():
Expand Down
60 changes: 13 additions & 47 deletions python/plugins/processing/ui/DlgConfig.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DlgConfig</class>
<widget class="QDialog" name="DlgConfig">
<widget class="QWidget" name="DlgConfig">
<property name="geometry">
<rect>
<x>0</x>
Expand All @@ -17,8 +17,17 @@
<property name="spacing">
<number>6</number>
</property>
<property name="margin">
<number>9</number>
<property name="leftMargin">
<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>
<item>
<widget class="QgsFilterLineEdit" name="searchBox">
Expand All @@ -37,16 +46,6 @@
</property>
</widget>
</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>
</widget>
<customwidgets>
Expand All @@ -57,38 +56,5 @@
</customwidget>
</customwidgets>
<resources/>
<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>
<connections/>
</ui>

0 comments on commit 9f23dd2

Please sign in to comment.