Skip to content

Commit

Permalink
[sextante] improvements in configuration dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
volaya committed Apr 21, 2013
1 parent 51a9148 commit b938724
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 10 deletions.
6 changes: 4 additions & 2 deletions python/plugins/sextante/core/SextanteConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ class SextanteConfig():
def initialize():
icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/alg.png")
SextanteConfig.settingIcons["General"] = icon
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_THREADS, "Run algorithms in a new thread (still unstable)", True))
SextanteConfig.addSetting(Setting("General", SextanteConfig.SHOW_DEBUG_IN_DIALOG, "Show debug information and commands executed in the execution dialog's Log panel (threaded execution only)", True))
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_THREADS, "Run algorithms in a new thread", True))
SextanteConfig.addSetting(Setting("General", SextanteConfig.SHOW_DEBUG_IN_DIALOG, "Show extra info in Log panel (threaded execution only)", True))
SextanteConfig.addSetting(Setting("General", SextanteConfig.KEEP_DIALOG_OPEN, "Keep dialog open after running an algorithm", False))
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_SELECTED, "Use only selected features", True))
SextanteConfig.addSetting(Setting("General", SextanteConfig.TABLE_LIKE_PARAM_PANEL, "Show table-like parameter panels", False))
Expand All @@ -80,6 +80,8 @@ def setGroupIcon(group, icon):

@staticmethod
def getGroupIcon(group):
if group == "General":
return QtGui.QIcon(os.path.dirname(__file__) + "/../images/toolbox.png")
if group in SextanteConfig.settingIcons:
return SextanteConfig.settingIcons[group]
else:
Expand Down
44 changes: 36 additions & 8 deletions python/plugins/sextante/gui/ConfigDialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
* *
***************************************************************************
"""
import os
from PyQt4 import QtGui

__author__ = 'Victor Olaya'
__date__ = 'August 2012'
Expand All @@ -34,9 +36,7 @@ class ConfigDialog(QDialog, Ui_DlgConfig):
def __init__(self, toolbox):
QDialog.__init__(self)
self.setupUi(self)

self.toolbox = toolbox

self.groupIcon = QIcon()
self.groupIcon.addPixmap(self.style().standardPixmap(QStyle.SP_DirClosedIcon),
QIcon.Normal, QIcon.Off)
Expand All @@ -47,15 +47,21 @@ def __init__(self, toolbox):
self.searchBox.setPlaceholderText(self.tr("Search..."))

self.searchBox.textChanged.connect(self.fillTree)

self.fillTree()
self.tree.itemClicked.connect(self.edit)
self.tree.itemDoubleClicked.connect(self.edit)

def edit(self, item, column):
if column > 0:
self.tree.editItem(item, column)

def fillTree(self):
self.items = {}
self.tree.clear()
text = str(self.searchBox.text())
settings = SextanteConfig.getSettings()
for group in settings.keys():
priorityKeys = ['General', "Models", "Scripts"]
for group in priorityKeys:
groupItem = QTreeWidgetItem()
groupItem.setText(0,group)
icon = SextanteConfig.getGroupIcon(group)
Expand All @@ -70,10 +76,32 @@ def fillTree(self):
self.tree.addTopLevelItem(groupItem)
if text != "":
groupItem.setExpanded(True)

providersItem = QTreeWidgetItem()
providersItem.setText(0, "Providers")
icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/alg.png")
providersItem.setIcon(0, icon)
for group in settings.keys():
if group in priorityKeys:
continue
groupItem = QTreeWidgetItem()
groupItem.setText(0,group)
icon = SextanteConfig.getGroupIcon(group)
groupItem.setIcon(0, icon)
for setting in settings[group]:
if setting.hidden:
continue
if text =="" or text.lower() in setting.description.lower():
settingItem = TreeSettingItem(setting, icon)
self.items[setting]=settingItem
groupItem.addChild(settingItem)
if text != "":
groupItem.setExpanded(True)
providersItem.addChild(groupItem)
self.tree.addTopLevelItem(providersItem)

self.tree.sortItems(0, Qt.AscendingOrder)
self.tree.resizeColumnToContents(0)
self.tree.resizeColumnToContents(1)
self.tree.setColumnWidth(0, 400)

def accept(self):
for setting in self.items.keys():
Expand Down Expand Up @@ -103,13 +131,13 @@ class TreeSettingItem(QTreeWidgetItem):
def __init__(self, setting, icon):
QTreeWidgetItem.__init__(self)
self.setting = setting
self.setText(0, setting.description)
self.setFlags(self.flags() | Qt.ItemIsEditable)
self.setText(0, setting.description)
if isinstance(setting.value,bool):
if setting.value:
self.setCheckState(1, Qt.Checked)
else:
self.setCheckState(1, Qt.Unchecked)
else:
self.setFlags(self.flags() | Qt.ItemIsEditable)
self.setText(1, unicode(setting.value))
self.setIcon(0, icon)

0 comments on commit b938724

Please sign in to comment.