Skip to content

Commit d8ec380

Browse files
committed
create config dialog from .ui
add tooltips to search boxes
1 parent 90c8536 commit d8ec380

File tree

3 files changed

+133
-54
lines changed

3 files changed

+133
-54
lines changed

python/plugins/sextante/gui/ConfigDialog.py

Lines changed: 27 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -25,64 +25,36 @@
2525

2626
from PyQt4.QtCore import *
2727
from PyQt4.QtGui import *
28-
from PyQt4 import QtCore, QtGui
28+
2929
from sextante.core.SextanteConfig import SextanteConfig
3030

31+
from sextante.ui.ui_DlgConfig import Ui_DlgConfig
3132

32-
class ConfigDialog(QtGui.QDialog):
33+
class ConfigDialog(QDialog, Ui_DlgConfig):
3334
def __init__(self, toolbox):
34-
QtGui.QDialog.__init__(self)
35+
QDialog.__init__(self)
36+
self.setupUi(self)
37+
3538
self.toolbox = toolbox
36-
self.setupUi()
3739

38-
def setupUi(self):
39-
self.resize(700, 500)
40-
self.setWindowTitle("SEXTANTE options")
41-
self.verticalLayout = QtGui.QVBoxLayout()
42-
self.verticalLayout.setSpacing(2)
43-
self.verticalLayout.setMargin(0)
44-
self.searchBox = QtGui.QLineEdit()
45-
self.searchBox.textChanged.connect(self.fillTree)
46-
self.verticalLayout.addWidget(self.searchBox)
47-
self.groupIcon = QtGui.QIcon()
48-
self.groupIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_DirClosedIcon),
49-
QtGui.QIcon.Normal, QtGui.QIcon.Off)
50-
self.groupIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_DirOpenIcon),
51-
QtGui.QIcon.Normal, QtGui.QIcon.On)
52-
self.keyIcon = QtGui.QIcon()
53-
self.keyIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_FileIcon))
54-
self.tree = QtGui.QTreeWidget()
55-
self.tree.setHeaderLabels(("Setting", "Value"))
56-
self.tree.header().setResizeMode(0, QtGui.QHeaderView.Stretch)
57-
self.tree.header().setResizeMode(1, QtGui.QHeaderView.Stretch)
58-
self.fillTree()
59-
self.verticalLayout.addWidget(self.tree)
60-
self.horizontalLayout = QtGui.QHBoxLayout()
61-
self.horizontalLayout.setSpacing(2)
62-
self.horizontalLayout.setMargin(0)
63-
self.buttonBox = QtGui.QDialogButtonBox()
64-
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
65-
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
66-
self.horizontalLayout.addSpacing(100)
67-
self.horizontalLayout.addWidget(self.buttonBox)
68-
self.verticalLayout.addLayout(self.horizontalLayout)
69-
self.setLayout(self.verticalLayout)
70-
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), self.okPressed)
71-
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), self.cancelPressed)
72-
QtCore.QMetaObject.connectSlotsByName(self)
40+
self.groupIcon = QIcon()
41+
self.groupIcon.addPixmap(self.style().standardPixmap(QStyle.SP_DirClosedIcon),
42+
QIcon.Normal, QIcon.Off)
43+
self.groupIcon.addPixmap(self.style().standardPixmap(QStyle.SP_DirOpenIcon),
44+
QIcon.Normal, QIcon.On)
7345

46+
self.fillTree()
7447

7548
def fillTree(self):
7649
self.items = {}
7750
self.tree.clear()
7851
text = str(self.searchBox.text())
7952
settings = SextanteConfig.getSettings()
8053
for group in settings.keys():
81-
groupItem = QtGui.QTreeWidgetItem()
54+
groupItem = QTreeWidgetItem()
8255
groupItem.setText(0,group)
8356
icon = SextanteConfig.getGroupIcon(group)
8457
groupItem.setIcon(0, icon)
85-
#groupItem.setIcon(0,self.groupIcon)
8658
for setting in settings[group]:
8759
if setting.hidden:
8860
continue
@@ -93,44 +65,46 @@ def fillTree(self):
9365
self.tree.addTopLevelItem(groupItem)
9466
if text != "":
9567
groupItem.setExpanded(True)
68+
9669
self.tree.sortItems(0, Qt.AscendingOrder)
70+
self.tree.resizeColumnToContents(0)
71+
self.tree.resizeColumnToContents(1)
9772

98-
def okPressed(self):
73+
def accept(self):
9974
for setting in self.items.keys():
10075
if isinstance(setting.value,bool):
101-
setting.value = (self.items[setting].checkState(1) == QtCore.Qt.Checked)
76+
setting.value = (self.items[setting].checkState(1) == Qt.Checked)
10277
elif isinstance(setting.value, (float,int, long)):
10378
value = str(self.items[setting].text(1))
10479
try:
10580
value = float(value)
10681
setting.value = value
10782
except ValueError:
108-
QtGui.QMessageBox.critical(self, "Wrong value","Wrong parameter value:\n" + value)
83+
QMessageBox.critical(self,
84+
self.tr("Wrong value"),
85+
self.tr("Wrong parameter value:\n%1").arg(value)
86+
)
10987
return
11088
else:
11189
setting.value = str(self.items[setting].text(1))
11290
SextanteConfig.addSetting(setting)
11391
SextanteConfig.saveSettings()
11492
self.toolbox.updateTree()
115-
self.close()
116-
117-
118-
def cancelPressed(self):
119-
self.close()
12093

94+
QDialog.accept(self)
12195

122-
class TreeSettingItem(QtGui.QTreeWidgetItem):
96+
class TreeSettingItem(QTreeWidgetItem):
12397

12498
def __init__(self, setting, icon):
12599
QTreeWidgetItem.__init__(self)
126100
self.setting = setting
127101
self.setText(0, setting.description)
128-
self.setFlags(self.flags() | QtCore.Qt.ItemIsEditable)
102+
self.setFlags(self.flags() | Qt.ItemIsEditable)
129103
if isinstance(setting.value,bool):
130104
if setting.value:
131-
self.setCheckState(1, QtCore.Qt.Checked)
105+
self.setCheckState(1, Qt.Checked)
132106
else:
133-
self.setCheckState(1, QtCore.Qt.Unchecked)
107+
self.setCheckState(1, Qt.Unchecked)
134108
else:
135109
self.setText(1, str(setting.value))
136110
self.setIcon(0, icon)
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>DlgConfig</class>
4+
<widget class="QDialog" name="DlgConfig">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>640</width>
10+
<height>450</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>SEXTANTE options</string>
15+
</property>
16+
<layout class="QVBoxLayout" name="verticalLayout">
17+
<property name="spacing">
18+
<number>2</number>
19+
</property>
20+
<property name="margin">
21+
<number>0</number>
22+
</property>
23+
<item>
24+
<widget class="QgsFilterLineEdit" name="searchBox">
25+
<property name="toolTip">
26+
<string>Enter setting name to filter list</string>
27+
</property>
28+
</widget>
29+
</item>
30+
<item>
31+
<widget class="QTreeWidget" name="tree">
32+
<property name="alternatingRowColors">
33+
<bool>true</bool>
34+
</property>
35+
<column>
36+
<property name="text">
37+
<string>Setting</string>
38+
</property>
39+
</column>
40+
<column>
41+
<property name="text">
42+
<string>Value</string>
43+
</property>
44+
</column>
45+
</widget>
46+
</item>
47+
<item>
48+
<widget class="QDialogButtonBox" name="buttonBox">
49+
<property name="orientation">
50+
<enum>Qt::Horizontal</enum>
51+
</property>
52+
<property name="standardButtons">
53+
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
54+
</property>
55+
</widget>
56+
</item>
57+
</layout>
58+
</widget>
59+
<customwidgets>
60+
<customwidget>
61+
<class>QgsFilterLineEdit</class>
62+
<extends>QLineEdit</extends>
63+
<header>qgis.gui</header>
64+
</customwidget>
65+
</customwidgets>
66+
<resources/>
67+
<connections>
68+
<connection>
69+
<sender>buttonBox</sender>
70+
<signal>accepted()</signal>
71+
<receiver>DlgConfig</receiver>
72+
<slot>accept()</slot>
73+
<hints>
74+
<hint type="sourcelabel">
75+
<x>248</x>
76+
<y>254</y>
77+
</hint>
78+
<hint type="destinationlabel">
79+
<x>157</x>
80+
<y>274</y>
81+
</hint>
82+
</hints>
83+
</connection>
84+
<connection>
85+
<sender>buttonBox</sender>
86+
<signal>rejected()</signal>
87+
<receiver>DlgConfig</receiver>
88+
<slot>reject()</slot>
89+
<hints>
90+
<hint type="sourcelabel">
91+
<x>316</x>
92+
<y>260</y>
93+
</hint>
94+
<hint type="destinationlabel">
95+
<x>286</x>
96+
<y>274</y>
97+
</hint>
98+
</hints>
99+
</connection>
100+
</connections>
101+
</ui>

python/plugins/sextante/ui/SextanteToolbox.ui

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ additional algorithm providers</string>
3030
</widget>
3131
</item>
3232
<item>
33-
<widget class="QgsFilterLineEdit" name="searchBox"/>
33+
<widget class="QgsFilterLineEdit" name="searchBox">
34+
<property name="toolTip">
35+
<string>Enter algorithm name to filter list</string>
36+
</property>
37+
</widget>
3438
</item>
3539
<item>
3640
<widget class="QTreeWidget" name="algorithmTree">

0 commit comments

Comments
 (0)