Skip to content

Commit 61f01c9

Browse files
committedDec 3, 2012
create modeller dialog from .ui file
1 parent d8ec380 commit 61f01c9

File tree

2 files changed

+366
-147
lines changed

2 files changed

+366
-147
lines changed
 

‎python/plugins/sextante/modeler/ModelerDialog.py

Lines changed: 200 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -25,158 +25,206 @@
2525

2626
from PyQt4.QtCore import *
2727
from PyQt4.QtGui import *
28-
from PyQt4 import QtCore, QtGui
28+
29+
import codecs
30+
import pickle
31+
32+
from sextante.core.SextanteUtils import SextanteUtils
33+
34+
from sextante.gui.HelpEditionDialog import HelpEditionDialog
35+
from sextante.gui.ParametersDialog import ParametersDialog
36+
2937
from sextante.modeler.ModelerParameterDefinitionDialog import ModelerParameterDefinitionDialog
3038
from sextante.modeler.ModelerAlgorithm import ModelerAlgorithm
3139
from sextante.modeler.ModelerParametersDialog import ModelerParametersDialog
3240
from sextante.modeler.ModelerUtils import ModelerUtils
3341
from sextante.modeler.WrongModelException import WrongModelException
3442
from sextante.modeler.ModelerScene import ModelerScene
3543
from sextante.modeler.Providers import Providers
36-
from sextante.gui.HelpEditionDialog import HelpEditionDialog
37-
import pickle
38-
from sextante.gui.ParametersDialog import ParametersDialog
39-
from sextante.core.SextanteUtils import SextanteUtils
40-
import codecs
4144

42-
class ModelerDialog(QtGui.QDialog):
45+
from sextante.ui.ui_DlgModeler import Ui_DlgModeler
46+
47+
class ModelerDialog(QDialog, Ui_DlgModeler):
4348
def __init__(self, alg=None):
44-
QtGui.QDialog.__init__(self)
45-
self.setupUi()
46-
self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowSystemMenuHint |
47-
QtCore.Qt.WindowMinMaxButtonsHint)
49+
QDialog.__init__(self)
50+
51+
self.setupUi(self)
52+
53+
self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint |
54+
Qt.WindowMinMaxButtonsHint)
55+
56+
self.tabWidget.setCurrentIndex(0)
57+
58+
self.scene = ModelerScene(self)
59+
self.scene.setSceneRect(QRectF(0, 0, 4000, 4000))
60+
self.view.setScene(self.scene)
61+
self.view.ensureVisible(0, 0, 10, 10)
62+
63+
# additional buttons
64+
self.editHelpButton = QPushButton(self.tr("Edit model help"))
65+
self.buttonBox.addButton(self.editHelpButton, QDialogButtonBox.ActionRole)
66+
self.runButton = QPushButton(self.tr("Run"))
67+
self.runButton.setToolTip(self.tr("Execute current model"))
68+
self.buttonBox.addButton(self.runButton, QDialogButtonBox.ActionRole)
69+
self.openButton = QPushButton(self.tr("Open"))
70+
self.openButton.setToolTip(self.tr("Open existing model"))
71+
self.buttonBox.addButton(self.openButton, QDialogButtonBox.ActionRole)
72+
self.saveButton = QPushButton(self.tr("Save"))
73+
self.saveButton.setToolTip(self.tr("Save current model"))
74+
self.buttonBox.addButton(self.saveButton, QDialogButtonBox.ActionRole)
75+
76+
# fill trees with inputs and algorithms
77+
self.fillInputsTree()
78+
self.fillAlgorithmTree()
79+
80+
if hasattr(self.searchBox, 'setPlaceholderText'):
81+
self.searchBox.setPlaceholderText(self.tr("Search..."))
82+
if hasattr(self.textName, 'setPlaceholderText'):
83+
self.textName.setPlaceholderText("[Enter model name here]")
84+
if hasattr(self.textGroup, 'setPlaceholderText'):
85+
self.textGroup.setPlaceholderText("[Enter group name here]")
86+
87+
# connect signals and slots
88+
self.inputsTree.doubleClicked.connect(self.addInput)
89+
90+
self.searchBox.textChanged.connect(self.fillAlgorithmTree)
91+
self.algorithmTree.doubleClicked.connect(self.addAlgorithm)
92+
93+
self.openButton.clicked.connect(self.openModel)
94+
self.saveButton.clicked.connect(self.saveModel)
95+
self.runButton.clicked.connect(self.runModel)
96+
self.editHelpButton.clicked.connect(self.editHelp)
97+
4898
if alg is not None:
4999
self.alg = alg
50100
self.textGroup.setText(alg.group)
51101
self.textName.setText(alg.name)
52102
self.repaintModel()
53103
else:
54104
self.alg = ModelerAlgorithm()
105+
55106
self.view.centerOn(0, 0)
56107
self.alg.setModelerView(self)
57108
self.help = None
58109
self.update = False #indicates whether to update or not the toolbox after closing this dialog
59110

60-
def setupUi(self):
61-
self.resize(1000, 600)
62-
self.setWindowTitle("SEXTANTE Modeler")
63-
self.tabWidget = QtGui.QTabWidget()
64-
self.tabWidget.setMaximumSize(QtCore.QSize(350, 10000))
65-
self.tabWidget.setMinimumWidth(300)
66-
67-
#left hand side part
68-
#==================================
69-
self.inputsTree = QtGui.QTreeWidget()
70-
self.inputsTree.setHeaderHidden(True)
71-
self.fillInputsTree()
72-
self.inputsTree.doubleClicked.connect(self.addInput)
73-
self.tabWidget.addTab(self.inputsTree, "Inputs")
74-
75-
self.verticalLayout = QtGui.QVBoxLayout()
76-
self.verticalLayout.setSpacing(2)
77-
self.verticalLayout.setMargin(0)
78-
self.searchBox = QtGui.QLineEdit()
79-
self.searchBox.textChanged.connect(self.fillAlgorithmTree)
80-
self.verticalLayout.addWidget(self.searchBox)
81-
self.algorithmTree = QtGui.QTreeWidget()
82-
self.algorithmTree.setHeaderHidden(True)
83-
self.fillAlgorithmTree()
84-
self.verticalLayout.addWidget(self.algorithmTree)
85-
self.algorithmTree.doubleClicked.connect(self.addAlgorithm)
86-
87-
self.algorithmsTab = QtGui.QWidget()
88-
self.algorithmsTab.setLayout(self.verticalLayout)
89-
self.tabWidget.addTab(self.algorithmsTab, "Algorithms")
90-
91-
#right hand side part
92-
#==================================
93-
self.textName = QtGui.QLineEdit()
94-
if hasattr(self.textName, 'setPlaceholderText'):
95-
self.textName.setPlaceholderText("[Enter model name here]")
96-
self.textGroup = QtGui.QLineEdit()
97-
if hasattr(self.textGroup, 'setPlaceholderText'):
98-
self.textGroup.setPlaceholderText("[Enter group name here]")
99-
self.horizontalLayoutNames = QtGui.QHBoxLayout()
100-
self.horizontalLayoutNames.setSpacing(2)
101-
self.horizontalLayoutNames.setMargin(0)
102-
self.horizontalLayoutNames.addWidget(self.textName)
103-
self.horizontalLayoutNames.addWidget(self.textGroup)
104-
105-
self.scene = ModelerScene(self)
106-
self.scene.setSceneRect(QtCore.QRectF(0, 0, 4000, 4000))
107-
108-
self.canvasTabWidget = QtGui.QTabWidget()
109-
self.canvasTabWidget.setMinimumWidth(300)
110-
self.view = QtGui.QGraphicsView(self.scene)
111-
112-
#=======================================================================
113-
# self.canvasTabWidget.addTab(self.view, "Design")
114-
# self.pythonText = QtGui.QTextEdit()
115-
# self.createScriptButton = QtGui.QPushButton()
116-
# self.createScriptButton.setText("Create script from model code")
117-
# self.createScriptButton.clicked.connect(self.createScript)
118-
# self.verticalLayoutPython = QtGui.QVBoxLayout()
119-
# self.verticalLayoutPython.setSpacing(2)
120-
# self.verticalLayoutPython.setMargin(0)
121-
# self.verticalLayoutPython.addWidget(self.pythonText)
122-
# self.verticalLayoutPython.addWidget(self.createScriptButton)
123-
# self.pythonWidget = QtGui.QWidget()
124-
# self.pythonWidget.setLayout(self.verticalLayoutPython)
125-
# self.canvasTabWidget.addTab(self.pythonWidget, "Python code")
126-
#=======================================================================
127-
128-
self.canvasLayout = QtGui.QVBoxLayout()
129-
self.canvasLayout.setSpacing(2)
130-
self.canvasLayout.setMargin(0)
131-
self.canvasLayout.addLayout(self.horizontalLayoutNames)
132-
self.canvasLayout.addWidget(self.view)#canvasTabWidget)
133-
134-
#upper part, putting the two previous parts together
135-
#===================================================
136-
self.horizontalLayout = QtGui.QHBoxLayout()
137-
self.horizontalLayout.setSpacing(2)
138-
self.horizontalLayout.setMargin(0)
139-
self.horizontalLayout.addWidget(self.tabWidget)
140-
self.horizontalLayout.addLayout(self.canvasLayout)
141-
142-
#And the whole layout
143-
#==========================
144-
145-
self.buttonBox = QtGui.QDialogButtonBox()
146-
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
147-
self.editHelpButton = QtGui.QPushButton()
148-
self.editHelpButton.setText("Edit model help")
149-
self.buttonBox.addButton(self.editHelpButton, QtGui.QDialogButtonBox.ActionRole)
150-
self.runButton = QtGui.QPushButton()
151-
self.runButton.setText("Run")
152-
self.buttonBox.addButton(self.runButton, QtGui.QDialogButtonBox.ActionRole)
153-
self.openButton = QtGui.QPushButton()
154-
self.openButton.setText("Open")
155-
self.buttonBox.addButton(self.openButton, QtGui.QDialogButtonBox.ActionRole)
156-
self.saveButton = QtGui.QPushButton()
157-
self.saveButton.setText("Save")
158-
self.buttonBox.addButton(self.saveButton, QtGui.QDialogButtonBox.ActionRole)
159-
self.closeButton = QtGui.QPushButton()
160-
self.closeButton.setText("Close")
161-
self.buttonBox.addButton(self.closeButton, QtGui.QDialogButtonBox.ActionRole)
162-
QObject.connect(self.openButton, QtCore.SIGNAL("clicked()"), self.openModel)
163-
QObject.connect(self.saveButton, QtCore.SIGNAL("clicked()"), self.saveModel)
164-
QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), self.closeWindow)
165-
QObject.connect(self.runButton, QtCore.SIGNAL("clicked()"), self.runModel)
166-
QObject.connect(self.editHelpButton, QtCore.SIGNAL("clicked()"), self.editHelp)
167-
168-
self.globalLayout = QtGui.QVBoxLayout()
169-
self.globalLayout.setSpacing(2)
170-
self.globalLayout.setMargin(0)
171-
self.globalLayout.addLayout(self.horizontalLayout)
172-
self.globalLayout.addWidget(self.buttonBox)
173-
self.setLayout(self.globalLayout)
174-
QtCore.QMetaObject.connectSlotsByName(self)
175-
176-
self.view.ensureVisible(0, 0, 10, 10)
177-
178-
def closeWindow(self):
179-
self.close()
111+
#~ def setupUi(self):
112+
#~ self.resize(1000, 600)
113+
#~ self.setWindowTitle("SEXTANTE Modeler")
114+
#~ self.tabWidget = QtGui.QTabWidget()
115+
#~ self.tabWidget.setMaximumSize(QtCore.QSize(350, 10000))
116+
#~ self.tabWidget.setMinimumWidth(300)
117+
#~
118+
#~ #left hand side part
119+
#~ #==================================
120+
#~ self.inputsTree = QtGui.QTreeWidget()
121+
#~ self.inputsTree.setHeaderHidden(True)
122+
#~ self.fillInputsTree()
123+
#~ self.inputsTree.doubleClicked.connect(self.addInput)
124+
#~ self.tabWidget.addTab(self.inputsTree, "Inputs")
125+
#~
126+
#~ self.verticalLayout = QtGui.QVBoxLayout()
127+
#~ self.verticalLayout.setSpacing(2)
128+
#~ self.verticalLayout.setMargin(0)
129+
#~ self.searchBox = QtGui.QLineEdit()
130+
#~ self.searchBox.textChanged.connect(self.fillAlgorithmTree)
131+
#~ self.verticalLayout.addWidget(self.searchBox)
132+
#~ self.algorithmTree = QtGui.QTreeWidget()
133+
#~ self.algorithmTree.setHeaderHidden(True)
134+
#~ self.fillAlgorithmTree()
135+
#~ self.verticalLayout.addWidget(self.algorithmTree)
136+
#~ self.algorithmTree.doubleClicked.connect(self.addAlgorithm)
137+
#~
138+
#~ self.algorithmsTab = QtGui.QWidget()
139+
#~ self.algorithmsTab.setLayout(self.verticalLayout)
140+
#~ self.tabWidget.addTab(self.algorithmsTab, "Algorithms")
141+
#~
142+
#~ #right hand side part
143+
#~ #==================================
144+
#~ self.textName = QtGui.QLineEdit()
145+
#~ if hasattr(self.textName, 'setPlaceholderText'):
146+
#~ self.textName.setPlaceholderText("[Enter model name here]")
147+
#~ self.textGroup = QtGui.QLineEdit()
148+
#~ if hasattr(self.textGroup, 'setPlaceholderText'):
149+
#~ self.textGroup.setPlaceholderText("[Enter group name here]")
150+
#~ self.horizontalLayoutNames = QtGui.QHBoxLayout()
151+
#~ self.horizontalLayoutNames.setSpacing(2)
152+
#~ self.horizontalLayoutNames.setMargin(0)
153+
#~ self.horizontalLayoutNames.addWidget(self.textName)
154+
#~ self.horizontalLayoutNames.addWidget(self.textGroup)
155+
#~
156+
#~ self.scene = ModelerScene(self)
157+
#~ self.scene.setSceneRect(QtCore.QRectF(0, 0, 4000, 4000))
158+
#~
159+
#~ self.canvasTabWidget = QtGui.QTabWidget()
160+
#~ self.canvasTabWidget.setMinimumWidth(300)
161+
#~ self.view = QtGui.QGraphicsView(self.scene)
162+
#~
163+
#~ #=======================================================================
164+
#~ # self.canvasTabWidget.addTab(self.view, "Design")
165+
#~ # self.pythonText = QtGui.QTextEdit()
166+
#~ # self.createScriptButton = QtGui.QPushButton()
167+
#~ # self.createScriptButton.setText("Create script from model code")
168+
#~ # self.createScriptButton.clicked.connect(self.createScript)
169+
#~ # self.verticalLayoutPython = QtGui.QVBoxLayout()
170+
#~ # self.verticalLayoutPython.setSpacing(2)
171+
#~ # self.verticalLayoutPython.setMargin(0)
172+
#~ # self.verticalLayoutPython.addWidget(self.pythonText)
173+
#~ # self.verticalLayoutPython.addWidget(self.createScriptButton)
174+
#~ # self.pythonWidget = QtGui.QWidget()
175+
#~ # self.pythonWidget.setLayout(self.verticalLayoutPython)
176+
#~ # self.canvasTabWidget.addTab(self.pythonWidget, "Python code")
177+
#~ #=======================================================================
178+
#~
179+
#~ self.canvasLayout = QtGui.QVBoxLayout()
180+
#~ self.canvasLayout.setSpacing(2)
181+
#~ self.canvasLayout.setMargin(0)
182+
#~ self.canvasLayout.addLayout(self.horizontalLayoutNames)
183+
#~ self.canvasLayout.addWidget(self.view)#canvasTabWidget)
184+
#~
185+
#~ #upper part, putting the two previous parts together
186+
#~ #===================================================
187+
#~ self.horizontalLayout = QtGui.QHBoxLayout()
188+
#~ self.horizontalLayout.setSpacing(2)
189+
#~ self.horizontalLayout.setMargin(0)
190+
#~ self.horizontalLayout.addWidget(self.tabWidget)
191+
#~ self.horizontalLayout.addLayout(self.canvasLayout)
192+
#~
193+
#~ #And the whole layout
194+
#~ #==========================
195+
#~
196+
#~ self.buttonBox = QtGui.QDialogButtonBox()
197+
#~ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
198+
#~ self.editHelpButton = QtGui.QPushButton()
199+
#~ self.editHelpButton.setText("Edit model help")
200+
#~ self.buttonBox.addButton(self.editHelpButton, QtGui.QDialogButtonBox.ActionRole)
201+
#~ self.runButton = QtGui.QPushButton()
202+
#~ self.runButton.setText("Run")
203+
#~ self.buttonBox.addButton(self.runButton, QtGui.QDialogButtonBox.ActionRole)
204+
#~ self.openButton = QtGui.QPushButton()
205+
#~ self.openButton.setText("Open")
206+
#~ self.buttonBox.addButton(self.openButton, QtGui.QDialogButtonBox.ActionRole)
207+
#~ self.saveButton = QtGui.QPushButton()
208+
#~ self.saveButton.setText("Save")
209+
#~ self.buttonBox.addButton(self.saveButton, QtGui.QDialogButtonBox.ActionRole)
210+
#~ self.closeButton = QtGui.QPushButton()
211+
#~ self.closeButton.setText("Close")
212+
#~ self.buttonBox.addButton(self.closeButton, QtGui.QDialogButtonBox.ActionRole)
213+
#~ QObject.connect(self.openButton, QtCore.SIGNAL("clicked()"), self.openModel)
214+
#~ QObject.connect(self.saveButton, QtCore.SIGNAL("clicked()"), self.saveModel)
215+
#~ QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), self.closeWindow)
216+
#~ QObject.connect(self.runButton, QtCore.SIGNAL("clicked()"), self.runModel)
217+
#~ QObject.connect(self.editHelpButton, QtCore.SIGNAL("clicked()"), self.editHelp)
218+
#~
219+
#~ self.globalLayout = QtGui.QVBoxLayout()
220+
#~ self.globalLayout.setSpacing(2)
221+
#~ self.globalLayout.setMargin(0)
222+
#~ self.globalLayout.addLayout(self.horizontalLayout)
223+
#~ self.globalLayout.addWidget(self.buttonBox)
224+
#~ self.setLayout(self.globalLayout)
225+
#~ QtCore.QMetaObject.connectSlotsByName(self)
226+
#~
227+
#~ self.view.ensureVisible(0, 0, 10, 10)
180228

181229
def editHelp(self):
182230
dlg = HelpEditionDialog(self.alg)
@@ -223,15 +271,18 @@ def runModel(self):
223271

224272
def saveModel(self):
225273
if unicode(self.textGroup.text()).strip() == "" or unicode(self.textName.text()).strip() == "":
226-
QMessageBox.warning(self, "Warning", "Please enter group and model names before saving")
274+
QMessageBox.warning(self,
275+
self.tr("Warning"),
276+
self.tr("Please enter group and model names before saving")
277+
)
227278
return
228279
self.alg.setPositions(self.scene.getParameterPositions(), self.scene.getAlgorithmPositions())
229280
self.alg.name = unicode(self.textName.text())
230281
self.alg.group = unicode(self.textGroup.text())
231282
if self.alg.descriptionFile != None:
232283
filename = self.alg.descriptionFile
233284
else:
234-
filename = str(QtGui.QFileDialog.getSaveFileName(self, "Save Model", ModelerUtils.modelsFolder(), "SEXTANTE models (*.model)"))
285+
filename = unicode(QFileDialog.getSaveFileName(self, self.tr("Save Model"), ModelerUtils.modelsFolder(), self.tr("SEXTANTE models (*.model)")))
235286
if filename:
236287
if not filename.endswith(".model"):
237288
filename += ".model"
@@ -249,10 +300,13 @@ def saveModel(self):
249300
pickle.dump(self.help, f)
250301
f.close()
251302
self.help = None
252-
QtGui.QMessageBox.information(self, "Model saving", "Model was correctly saved.")
303+
QMessageBox.information(self,
304+
self.tr("Model saving"),
305+
self.tr("Model was correctly saved.")
306+
)
253307

254308
def openModel(self):
255-
filename = unicode(QtGui.QFileDialog.getOpenFileName(self, "Open Model", ModelerUtils.modelsFolder(), "SEXTANTE models (*.model)"))
309+
filename = unicode(QFileDialog.getOpenFileName(self, self.tr("Open Model"), ModelerUtils.modelsFolder(), self.tr("SEXTANTE models (*.model)")))
256310
if filename:
257311
try:
258312
alg = ModelerAlgorithm()
@@ -265,17 +319,18 @@ def openModel(self):
265319
self.view.ensureVisible(self.scene.getLastAlgorithmItem())
266320
self.view.centerOn(0,0)
267321
except WrongModelException, e:
268-
QMessageBox.critical(self, "Could not open model", "The selected model could not be loaded\nWrong line:" + e.msg)
269-
322+
QMessageBox.critical(self,
323+
self.tr("Could not open model"),
324+
self.tr("The selected model could not be loaded.\nWrong line: %1").arg(e.msg)
325+
)
270326

271327
def repaintModel(self):
272328
self.scene = ModelerScene()
273-
self.scene.setSceneRect(QtCore.QRectF(0, 0, ModelerAlgorithm.CANVAS_SIZE, ModelerAlgorithm.CANVAS_SIZE))
329+
self.scene.setSceneRect(QRectF(0, 0, ModelerAlgorithm.CANVAS_SIZE, ModelerAlgorithm.CANVAS_SIZE))
274330
self.scene.paintModel(self.alg)
275331
self.view.setScene(self.scene)
276332
#self.pythonText.setText(self.alg.getAsPythonCode())
277333

278-
279334
def addInput(self):
280335
item = self.inputsTree.currentItem()
281336
paramType = str(item.text(0))
@@ -288,18 +343,16 @@ def addInput(self):
288343
self.repaintModel()
289344
self.view.ensureVisible(self.scene.getLastParameterItem())
290345

291-
292346
def fillInputsTree(self):
293-
parametersItem = QtGui.QTreeWidgetItem()
294-
parametersItem.setText(0, "Parameters")
347+
parametersItem = QTreeWidgetItem()
348+
parametersItem.setText(0, self.tr("Parameters"))
295349
for paramType in ModelerParameterDefinitionDialog.paramTypes:
296-
paramItem = QtGui.QTreeWidgetItem()
350+
paramItem = QTreeWidgetItem()
297351
paramItem.setText(0, paramType)
298352
parametersItem.addChild(paramItem)
299353
self.inputsTree.addTopLevelItem(parametersItem)
300354
parametersItem.setExpanded(True)
301355

302-
303356
def addAlgorithm(self):
304357
item = self.algorithmTree.currentItem()
305358
if isinstance(item, TreeAlgorithmItem):
@@ -331,15 +384,15 @@ def fillAlgorithmTree(self):
331384
if alg.group in groups:
332385
groupItem = groups[alg.group]
333386
else:
334-
groupItem = QtGui.QTreeWidgetItem()
387+
groupItem = QTreeWidgetItem()
335388
groupItem.setText(0, alg.group)
336389
groupItem.setToolTip(0, alg.group)
337390
groups[alg.group] = groupItem
338391
algItem = TreeAlgorithmItem(alg)
339392
groupItem.addChild(algItem)
340393

341394
if len(groups) > 0:
342-
providerItem = QtGui.QTreeWidgetItem()
395+
providerItem = QTreeWidgetItem()
343396
providerItem.setText(0, Providers.providers[providerName].getDescription())
344397
providerItem.setToolTip(0, Providers.providers[providerName].getDescription())
345398
providerItem.setIcon(0, Providers.providers[providerName].getIcon())
@@ -353,7 +406,7 @@ def fillAlgorithmTree(self):
353406

354407
self.algorithmTree.sortItems(0, Qt.AscendingOrder)
355408

356-
class TreeAlgorithmItem(QtGui.QTreeWidgetItem):
409+
class TreeAlgorithmItem(QTreeWidgetItem):
357410

358411
def __init__(self, alg):
359412
QTreeWidgetItem.__init__(self)
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>DlgModeler</class>
4+
<widget class="QDialog" name="DlgModeler">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>1000</width>
10+
<height>600</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>SEXTANTE modeler</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="QSplitter" name="splitter">
25+
<property name="orientation">
26+
<enum>Qt::Horizontal</enum>
27+
</property>
28+
<widget class="QTabWidget" name="tabWidget">
29+
<property name="currentIndex">
30+
<number>0</number>
31+
</property>
32+
<widget class="QWidget" name="tab">
33+
<attribute name="title">
34+
<string>Inputs</string>
35+
</attribute>
36+
<layout class="QVBoxLayout" name="verticalLayout_2">
37+
<property name="spacing">
38+
<number>2</number>
39+
</property>
40+
<property name="margin">
41+
<number>0</number>
42+
</property>
43+
<item>
44+
<widget class="QTreeWidget" name="inputsTree">
45+
<property name="alternatingRowColors">
46+
<bool>true</bool>
47+
</property>
48+
<attribute name="headerVisible">
49+
<bool>false</bool>
50+
</attribute>
51+
</widget>
52+
</item>
53+
</layout>
54+
</widget>
55+
<widget class="QWidget" name="tab_2">
56+
<attribute name="title">
57+
<string>Algorithms</string>
58+
</attribute>
59+
<layout class="QVBoxLayout" name="verticalLayout_3">
60+
<property name="spacing">
61+
<number>2</number>
62+
</property>
63+
<property name="margin">
64+
<number>0</number>
65+
</property>
66+
<item>
67+
<widget class="QgsFilterLineEdit" name="searchBox">
68+
<property name="toolTip">
69+
<string>Enter algorithm name to filter list</string>
70+
</property>
71+
</widget>
72+
</item>
73+
<item>
74+
<widget class="QTreeWidget" name="algorithmTree">
75+
<property name="alternatingRowColors">
76+
<bool>true</bool>
77+
</property>
78+
<attribute name="headerVisible">
79+
<bool>false</bool>
80+
</attribute>
81+
</widget>
82+
</item>
83+
</layout>
84+
</widget>
85+
</widget>
86+
<widget class="QWidget" name="">
87+
<layout class="QGridLayout" name="gridLayout">
88+
<property name="spacing">
89+
<number>2</number>
90+
</property>
91+
<item row="0" column="0">
92+
<widget class="QLineEdit" name="textName">
93+
<property name="toolTip">
94+
<string>Enter model name here</string>
95+
</property>
96+
</widget>
97+
</item>
98+
<item row="0" column="1">
99+
<widget class="QLineEdit" name="textGroup">
100+
<property name="toolTip">
101+
<string>Enter group name here</string>
102+
</property>
103+
</widget>
104+
</item>
105+
<item row="1" column="0" colspan="2">
106+
<widget class="QGraphicsView" name="view"/>
107+
</item>
108+
</layout>
109+
</widget>
110+
</widget>
111+
</item>
112+
<item>
113+
<widget class="QDialogButtonBox" name="buttonBox">
114+
<property name="orientation">
115+
<enum>Qt::Horizontal</enum>
116+
</property>
117+
<property name="standardButtons">
118+
<set>QDialogButtonBox::Close</set>
119+
</property>
120+
</widget>
121+
</item>
122+
</layout>
123+
</widget>
124+
<customwidgets>
125+
<customwidget>
126+
<class>QgsFilterLineEdit</class>
127+
<extends>QLineEdit</extends>
128+
<header>qgis.gui</header>
129+
</customwidget>
130+
</customwidgets>
131+
<resources/>
132+
<connections>
133+
<connection>
134+
<sender>buttonBox</sender>
135+
<signal>accepted()</signal>
136+
<receiver>DlgModeler</receiver>
137+
<slot>accept()</slot>
138+
<hints>
139+
<hint type="sourcelabel">
140+
<x>248</x>
141+
<y>254</y>
142+
</hint>
143+
<hint type="destinationlabel">
144+
<x>157</x>
145+
<y>274</y>
146+
</hint>
147+
</hints>
148+
</connection>
149+
<connection>
150+
<sender>buttonBox</sender>
151+
<signal>rejected()</signal>
152+
<receiver>DlgModeler</receiver>
153+
<slot>reject()</slot>
154+
<hints>
155+
<hint type="sourcelabel">
156+
<x>316</x>
157+
<y>260</y>
158+
</hint>
159+
<hint type="destinationlabel">
160+
<x>286</x>
161+
<y>274</y>
162+
</hint>
163+
</hints>
164+
</connection>
165+
</connections>
166+
</ui>

0 commit comments

Comments
 (0)
Please sign in to comment.