Skip to content

Commit e05519d

Browse files
committedDec 3, 2012
create toolbox from .ui file
add clear button to filter (fix #5695)
1 parent 9dd4a92 commit e05519d

File tree

7 files changed

+103
-34
lines changed

7 files changed

+103
-34
lines changed
 

‎python/plugins/sextante/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,13 @@ ADD_SUBDIRECTORY(script)
2121
ADD_SUBDIRECTORY(taudem)
2222
#ADD_SUBDIRECTORY(tests)
2323

24+
FILE(GLOB UI_FILES ui/*.ui)
25+
PYQT4_WRAP_UI(PYUI_FILES ${UI_FILES})
26+
2427
FILE(GLOB OTHER_FILES metadata.txt)
2528
FILE(GLOB PY_FILES *.py)
2629

2730
PYQT4_ADD_RESOURCES(PYRC_FILES resources.qrc)
2831

2932
PLUGIN_INSTALL(sextante . ${PY_FILES} ${OTHER_FILES} ${PYRC_FILES})
33+
PLUGIN_INSTALL(sextante ui ${PYUI_FILES} ui/__init__.py)

‎python/plugins/sextante/SextantePlugin.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343
from sextante.modeler.ModelerDialog import ModelerDialog
4444

45-
import resources_rc
45+
import sextante.resources_rc
4646

4747
cmd_folder = os.path.split(inspect.getfile( inspect.currentframe() ))[0]
4848
if cmd_folder not in sys.path:
@@ -58,7 +58,8 @@ def __init__(self, iface):
5858

5959
def initGui(self):
6060
self.toolbox = SextanteToolbox(self.iface)
61-
self.toolbox.setVisible(False)
61+
self.iface.addDockWidget(Qt.RightDockWidgetArea, self.toolbox)
62+
self.toolbox.hide()
6263
Sextante.addAlgListListener(self.toolbox)
6364

6465
self.menu = QMenu(self.iface.mainWindow())
@@ -119,7 +120,10 @@ def unload(self):
119120
pass
120121

121122
def openToolbox(self):
122-
self.toolbox.setVisible(True)
123+
if self.toolbox.isVisible():
124+
self.toolbox.hide()
125+
else:
126+
self.toolbox.show()
123127

124128
def openModeler(self):
125129
dlg = ModelerDialog()

‎python/plugins/sextante/gui/SextanteToolbox.py

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -40,51 +40,41 @@
4040
from sextante.gui.BatchProcessingDialog import BatchProcessingDialog
4141
from sextante.gui.EditRenderingStylesDialog import EditRenderingStylesDialog
4242

43+
from sextante.ui.ui_SextanteToolbox import Ui_SextanteToolbox
44+
45+
import sextante.resources_rc
46+
4347
try:
4448
_fromUtf8 = QString.fromUtf8
4549
except AttributeError:
4650
_fromUtf8 = lambda s: s
4751

48-
49-
class SextanteToolbox(QDockWidget):
52+
class SextanteToolbox(QDockWidget, Ui_SextanteToolbox):
5053
def __init__(self, iface):
51-
QDialog.__init__(self)
54+
QDockWidget.__init__(self, None)
55+
self.setupUi(self)
56+
self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
57+
5258
self.iface=iface
53-
self.setupUi()
59+
60+
self.btnClear.setIcon(QIcon(":/sextante/images/clear.png"))
61+
62+
self.externalAppsButton.clicked.connect(self.configureProviders)
63+
self.searchBox.textChanged.connect(self.fillTree)
64+
self.algorithmTree.customContextMenuRequested.connect(self.showPopupMenu)
65+
self.algorithmTree.doubleClicked.connect(self.executeAlgorithm)
66+
self.btnClear.clicked.connect(self.clearFilter)
67+
68+
self.fillTree()
5469

5570
def algsListHasChanged(self):
5671
self.fillTree()
5772

5873
def updateTree(self):
5974
Sextante.updateAlgsList()
6075

61-
def setupUi(self):
62-
self.setObjectName("SEXTANTE_Toolbox")
63-
self.setFloating(False)
64-
self.resize(400, 500)
65-
self.setWindowTitle(self.tr("SEXTANTE Toolbox"))
66-
self.contents = QWidget()
67-
self.verticalLayout = QVBoxLayout(self.contents)
68-
self.verticalLayout.setSpacing(2)
69-
self.verticalLayout.setMargin(0)
70-
self.externalAppsButton = QPushButton()
71-
self.externalAppsButton.setText(self.tr("Click here to configure\nadditional algorithm providers"))
72-
QObject.connect(self.externalAppsButton, SIGNAL("clicked()"), self.configureProviders)
73-
self.verticalLayout.addWidget(self.externalAppsButton)
74-
self.searchBox = QLineEdit(self.contents)
75-
self.searchBox.textChanged.connect(self.fillTree)
76-
self.verticalLayout.addWidget(self.searchBox)
77-
self.algorithmTree = QTreeWidget(self.contents)
78-
self.algorithmTree.setHeaderHidden(True)
79-
self.algorithmTree.setContextMenuPolicy(Qt.CustomContextMenu)
80-
self.fillTree()
81-
self.connect(self.algorithmTree, SIGNAL('customContextMenuRequested(QPoint)'),
82-
self.showPopupMenu)
83-
self.verticalLayout.addWidget(self.algorithmTree)
84-
self.algorithmTree.doubleClicked.connect(self.executeAlgorithm)
85-
self.setWidget(self.contents)
86-
self.iface.addDockWidget(Qt.RightDockWidgetArea, self)
87-
QMetaObject.connectSlotsByName(self)
76+
def clearFilter(self):
77+
self.searchBox.clear()
8878

8979
def configureProviders(self):
9080
webbrowser.open("http://docs.qgis.org/html/en/user_manual/sextante/3rdParty.html")
648 Bytes
Loading

‎python/plugins/sextante/resources.qrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<file>images/script.png</file>
1616
<file>images/tool.png</file>
1717
<file>images/toolbox.png</file>
18+
<file>images/clear.png</file>
1819
<file>images/sextante_logo.png</file>
1920
</qresource>
2021
</RCC>
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>SextanteToolbox</class>
4+
<widget class="QDockWidget" name="SextanteToolbox">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>225</width>
10+
<height>444</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>SEXTANTE Toolbox</string>
15+
</property>
16+
<widget class="QWidget" name="dockWidgetContents">
17+
<layout class="QVBoxLayout" name="verticalLayout">
18+
<property name="spacing">
19+
<number>2</number>
20+
</property>
21+
<property name="margin">
22+
<number>0</number>
23+
</property>
24+
<item>
25+
<widget class="QPushButton" name="externalAppsButton">
26+
<property name="text">
27+
<string>Click here to configure
28+
additional algorithm providers</string>
29+
</property>
30+
</widget>
31+
</item>
32+
<item>
33+
<layout class="QHBoxLayout" name="horizontalLayout">
34+
<property name="spacing">
35+
<number>2</number>
36+
</property>
37+
<item>
38+
<widget class="QLineEdit" name="searchBox"/>
39+
</item>
40+
<item>
41+
<widget class="QToolButton" name="btnClear">
42+
<property name="text">
43+
<string>...</string>
44+
</property>
45+
</widget>
46+
</item>
47+
</layout>
48+
</item>
49+
<item>
50+
<widget class="QTreeWidget" name="algorithmTree">
51+
<property name="contextMenuPolicy">
52+
<enum>Qt::CustomContextMenu</enum>
53+
</property>
54+
<property name="headerHidden">
55+
<bool>true</bool>
56+
</property>
57+
<column>
58+
<property name="text">
59+
<string notr="true">1</string>
60+
</property>
61+
</column>
62+
</widget>
63+
</item>
64+
</layout>
65+
</widget>
66+
</widget>
67+
<resources/>
68+
<connections/>
69+
</ui>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

0 commit comments

Comments
 (0)
Please sign in to comment.