Skip to content

Commit f890449

Browse files
committed
[processing] add toolbar to modeler dialog
1 parent cb6f8cc commit f890449

File tree

3 files changed

+203
-97
lines changed

3 files changed

+203
-97
lines changed

python/plugins/processing/modeler/ModelerDialog.py

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -53,32 +53,21 @@ def __init__(self, alg=None):
5353
self.hasChanged = False
5454
self.setupUi(self)
5555

56-
self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint |
57-
Qt.WindowMinMaxButtonsHint)
56+
#self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint |
57+
# Qt.WindowMinMaxButtonsHint)
5858
self.tabWidget.setCurrentIndex(0)
5959
self.scene = ModelerScene(self)
6060
self.scene.setSceneRect(QRectF(0, 0, 4000, 4000))
6161
self.view.setScene(self.scene)
6262
self.view.ensureVisible(0, 0, 10, 10)
6363

64-
# additional buttons
65-
self.editHelpButton = QPushButton(self.tr("Edit model help"))
66-
self.buttonBox.addButton(self.editHelpButton, QDialogButtonBox.ActionRole)
67-
self.runButton = QPushButton(self.tr("Run"))
68-
self.runButton.setToolTip(self.tr("Execute current model"))
69-
self.buttonBox.addButton(self.runButton, QDialogButtonBox.ActionRole)
70-
self.openButton = QPushButton(self.tr("Open"))
71-
self.openButton.setToolTip(self.tr("Open existing model"))
72-
self.buttonBox.addButton(self.openButton, QDialogButtonBox.ActionRole)
73-
self.saveButton = QPushButton(self.tr("Save"))
74-
self.saveButton.setToolTip(self.tr("Save current model"))
75-
self.buttonBox.addButton(self.saveButton, QDialogButtonBox.ActionRole)
76-
self.saveAsButton = QPushButton(self.tr("Save as..."))
77-
self.saveAsButton.setToolTip(self.tr("Save current model as"))
78-
self.buttonBox.addButton(self.saveAsButton, QDialogButtonBox.ActionRole)
79-
self.exportAsImageButton = QPushButton(self.tr("Export as image..."))
80-
self.exportAsImageButton.setToolTip(self.tr("Export current model to image"))
81-
self.buttonBox.addButton(self.exportAsImageButton, QDialogButtonBox.ActionRole)
64+
# set icons
65+
self.btnOpen.setIcon(QgsApplication.getThemeIcon("/mActionFileOpen.svg"))
66+
self.btnSave.setIcon(QgsApplication.getThemeIcon("/mActionFileSave.svg"))
67+
self.btnSaveAs.setIcon(QgsApplication.getThemeIcon("/mActionFileSaveAs.svg"))
68+
self.btnExportImage.setIcon(QgsApplication.getThemeIcon("/mActionSaveMapAsImage.png"))
69+
self.btnEditHelp.setIcon(QIcon(":/processing/images/edithelp.png"))
70+
self.btnRun.setIcon(QIcon(":/processing/images/runalgorithm.png"))
8271

8372
# fill trees with inputs and algorithms
8473
self.fillInputsTree()
@@ -97,12 +86,12 @@ def __init__(self, alg=None):
9786
self.searchBox.textChanged.connect(self.fillAlgorithmTree)
9887
self.algorithmTree.doubleClicked.connect(self.addAlgorithm)
9988

100-
self.openButton.clicked.connect(self.openModel)
101-
self.saveButton.clicked.connect(self.save)
102-
self.saveAsButton.clicked.connect(self.saveAs)
103-
self.exportAsImageButton.clicked.connect(self.exportAsImage)
104-
self.runButton.clicked.connect(self.runModel)
105-
self.editHelpButton.clicked.connect(self.editHelp)
89+
self.btnOpen.clicked.connect(self.openModel)
90+
self.btnSave.clicked.connect(self.save)
91+
self.btnSaveAs.clicked.connect(self.saveAs)
92+
self.btnExportImage.clicked.connect(self.exportAsImage)
93+
self.btnEditHelp.clicked.connect(self.editHelp)
94+
self.btnRun.clicked.connect(self.runModel)
10695

10796
if alg is not None:
10897
self.alg = alg
@@ -117,19 +106,21 @@ def __init__(self, alg=None):
117106
self.help = None
118107
self.update = False #indicates whether to update or not the toolbox after closing this dialog
119108

120-
def closeEvent(self, evt):
109+
def closeEvent(self, evt):
121110
if self.hasChanged:
122-
ret = QMessageBox.question(self, 'Message',
123-
"The are unchanged changes in model. Close modeler without saving?",
124-
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
111+
ret = QMessageBox.question(self,
112+
self.tr("Message"),
113+
self.tr("The are unchanged changes in model. Close modeler without saving?"),
114+
QMessageBox.Yes | QMessageBox.No, QMessageBox.No
115+
)
125116

126117
if ret == QMessageBox.Yes:
127118
evt.accept()
128119
else:
129-
evt.ignore()
120+
evt.ignore()
130121
else:
131-
evt.accept()
132-
122+
evt.accept()
123+
133124
def editHelp(self):
134125
dlg = HelpEditionDialog(self.alg)
135126
dlg.exec_()
@@ -212,7 +203,10 @@ def saveModel(self, saveAs):
212203
if self.alg.descriptionFile != None and not saveAs:
213204
filename = self.alg.descriptionFile
214205
else:
215-
filename = unicode(QFileDialog.getSaveFileName(self, self.tr("Save Model"), ModelerUtils.modelsFolder(), self.tr("Processing models (*.model)")))
206+
filename = unicode(QFileDialog.getSaveFileName(self,
207+
self.tr("Save Model"),
208+
ModelerUtils.modelsFolder(),
209+
self.tr("Processing models (*.model)")))
216210
if filename:
217211
if not filename.endswith(".model"):
218212
filename += ".model"
@@ -224,14 +218,14 @@ def saveModel(self, saveAs):
224218
except:
225219
if saveAs:
226220
QMessageBox.warning(self,
227-
self.tr("I/O error"),
228-
self.tr("Unable to save edits. Reason:\n %1").arg(unicode(sys.exc_info()[1]))
229-
)
221+
self.tr("I/O error"),
222+
self.tr("Unable to save edits. Reason:\n %s") % (unicode(sys.exc_info()[1]))
223+
)
230224
else:
231225
QMessageBox.warning(self,
232-
self.tr("Can't save model"),
233-
self.tr("This model can't be saved in its original location\n(probably you do not have permission to do it).\nPlease, use the 'Save as...' option.")
234-
)
226+
self.tr("Can't save model"),
227+
self.tr("This model can't be saved in its original location\n(probably you do not have permission to do it).\nPlease, use the 'Save as...' option.")
228+
)
235229
return
236230
fout.write(text)
237231
fout.close()
@@ -246,11 +240,14 @@ def saveModel(self, saveAs):
246240
self.tr("Model saved"),
247241
self.tr("Model was correctly saved.")
248242
)
249-
243+
250244
self.hasChanged = False
251245

252246
def openModel(self):
253-
filename = unicode(QFileDialog.getOpenFileName(self, self.tr("Open Model"), ModelerUtils.modelsFolder(), self.tr("Processing models (*.model)")))
247+
filename = unicode(QFileDialog.getOpenFileName(self,
248+
self.tr("Open Model"),
249+
ModelerUtils.modelsFolder(),
250+
self.tr("Processing models (*.model)")))
254251
if filename:
255252
try:
256253
alg = ModelerAlgorithm()
@@ -267,7 +264,7 @@ def openModel(self):
267264
except WrongModelException, e:
268265
QMessageBox.critical(self,
269266
self.tr("Could not open model"),
270-
self.tr("The selected model could not be loaded.\nWrong line: %1").arg(e.msg)
267+
self.tr("The selected model could not be loaded.\nWrong line: %s") % e.msg
271268
)
272269

273270
def repaintModel(self):
@@ -418,7 +415,6 @@ def fillAlgorithmTreeUsingCategories(self):
418415
if text != "":
419416
groupItem.setExpanded(True)
420417

421-
422418
def fillAlgorithmTreeUsingProviders(self):
423419
self.algorithmTree.clear()
424420
text = str(self.searchBox.text())

python/plugins/processing/ui/DlgModeler.ui

Lines changed: 108 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,110 @@
2020
<property name="margin">
2121
<number>0</number>
2222
</property>
23+
<item>
24+
<layout class="QHBoxLayout" name="horizontalLayout">
25+
<property name="spacing">
26+
<number>-1</number>
27+
</property>
28+
<property name="margin">
29+
<number>3</number>
30+
</property>
31+
<item>
32+
<widget class="QToolButton" name="btnOpen">
33+
<property name="toolTip">
34+
<string>Open model</string>
35+
</property>
36+
<property name="text">
37+
<string>...</string>
38+
</property>
39+
</widget>
40+
</item>
41+
<item>
42+
<widget class="QToolButton" name="btnSave">
43+
<property name="toolTip">
44+
<string>Save</string>
45+
</property>
46+
<property name="text">
47+
<string>...</string>
48+
</property>
49+
</widget>
50+
</item>
51+
<item>
52+
<widget class="QToolButton" name="btnSaveAs">
53+
<property name="toolTip">
54+
<string>Save as...</string>
55+
</property>
56+
<property name="text">
57+
<string>...</string>
58+
</property>
59+
</widget>
60+
</item>
61+
<item>
62+
<widget class="Line" name="line">
63+
<property name="orientation">
64+
<enum>Qt::Vertical</enum>
65+
</property>
66+
</widget>
67+
</item>
68+
<item>
69+
<widget class="QToolButton" name="btnExportImage">
70+
<property name="toolTip">
71+
<string>Export as image</string>
72+
</property>
73+
<property name="text">
74+
<string>...</string>
75+
</property>
76+
</widget>
77+
</item>
78+
<item>
79+
<widget class="Line" name="line_2">
80+
<property name="orientation">
81+
<enum>Qt::Vertical</enum>
82+
</property>
83+
</widget>
84+
</item>
85+
<item>
86+
<widget class="QToolButton" name="btnEditHelp">
87+
<property name="toolTip">
88+
<string>Edit model help</string>
89+
</property>
90+
<property name="text">
91+
<string>...</string>
92+
</property>
93+
</widget>
94+
</item>
95+
<item>
96+
<widget class="Line" name="line_3">
97+
<property name="orientation">
98+
<enum>Qt::Vertical</enum>
99+
</property>
100+
</widget>
101+
</item>
102+
<item>
103+
<widget class="QToolButton" name="btnRun">
104+
<property name="toolTip">
105+
<string>Run model</string>
106+
</property>
107+
<property name="text">
108+
<string>...</string>
109+
</property>
110+
</widget>
111+
</item>
112+
<item>
113+
<spacer name="horizontalSpacer">
114+
<property name="orientation">
115+
<enum>Qt::Horizontal</enum>
116+
</property>
117+
<property name="sizeHint" stdset="0">
118+
<size>
119+
<width>40</width>
120+
<height>20</height>
121+
</size>
122+
</property>
123+
</spacer>
124+
</item>
125+
</layout>
126+
</item>
23127
<item>
24128
<widget class="QSplitter" name="splitter">
25129
<property name="orientation">
@@ -32,6 +136,9 @@
32136
<height>0</height>
33137
</size>
34138
</property>
139+
<property name="tabPosition">
140+
<enum>QTabWidget::South</enum>
141+
</property>
35142
<property name="currentIndex">
36143
<number>1</number>
37144
</property>
@@ -125,16 +232,6 @@
125232
</widget>
126233
</widget>
127234
</item>
128-
<item>
129-
<widget class="QDialogButtonBox" name="buttonBox">
130-
<property name="orientation">
131-
<enum>Qt::Horizontal</enum>
132-
</property>
133-
<property name="standardButtons">
134-
<set>QDialogButtonBox::Close</set>
135-
</property>
136-
</widget>
137-
</item>
138235
</layout>
139236
</widget>
140237
<customwidgets>
@@ -145,38 +242,5 @@
145242
</customwidget>
146243
</customwidgets>
147244
<resources/>
148-
<connections>
149-
<connection>
150-
<sender>buttonBox</sender>
151-
<signal>accepted()</signal>
152-
<receiver>DlgModeler</receiver>
153-
<slot>accept()</slot>
154-
<hints>
155-
<hint type="sourcelabel">
156-
<x>248</x>
157-
<y>254</y>
158-
</hint>
159-
<hint type="destinationlabel">
160-
<x>157</x>
161-
<y>274</y>
162-
</hint>
163-
</hints>
164-
</connection>
165-
<connection>
166-
<sender>buttonBox</sender>
167-
<signal>rejected()</signal>
168-
<receiver>DlgModeler</receiver>
169-
<slot>reject()</slot>
170-
<hints>
171-
<hint type="sourcelabel">
172-
<x>316</x>
173-
<y>260</y>
174-
</hint>
175-
<hint type="destinationlabel">
176-
<x>286</x>
177-
<y>274</y>
178-
</hint>
179-
</hints>
180-
</connection>
181-
</connections>
245+
<connections/>
182246
</ui>

0 commit comments

Comments
 (0)