Skip to content

Commit a6ebe83

Browse files
committedNov 24, 2016
[processing] upgrade modeler to make use of qgsdockwidgets
1 parent 7e0cd9a commit a6ebe83

File tree

2 files changed

+280
-105
lines changed

2 files changed

+280
-105
lines changed
 

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
from qgis.PyQt import uic
3434
from qgis.PyQt.QtCore import Qt, QRectF, QMimeData, QPoint, QPointF, QSettings, QByteArray, QSize, pyqtSignal
35-
from qgis.PyQt.QtWidgets import QGraphicsView, QTreeWidget, QMessageBox, QFileDialog, QTreeWidgetItem, QSizePolicy
35+
from qgis.PyQt.QtWidgets import QGraphicsView, QTreeWidget, QMessageBox, QFileDialog, QTreeWidgetItem, QSizePolicy, QMainWindow
3636
from qgis.PyQt.QtGui import QIcon, QImage, QPainter
3737
from qgis.core import QgsApplication
3838
from qgis.gui import QgsMessageBar
@@ -67,6 +67,17 @@ def __init__(self, alg=None):
6767
self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
6868
self.centralWidget().layout().insertWidget(0, self.bar)
6969

70+
try:
71+
self.setDockOptions(self.dockOptions() | QMainWindow.GroupedDragging)
72+
except:
73+
pass
74+
75+
self.addDockWidget(Qt.LeftDockWidgetArea, self.propertiesDock)
76+
self.addDockWidget(Qt.LeftDockWidgetArea, self.inputsDock)
77+
self.addDockWidget(Qt.LeftDockWidgetArea, self.algorithmsDock)
78+
self.tabifyDockWidget(self.inputsDock, self.algorithmsDock)
79+
self.inputsDock.raise_()
80+
7081
self.zoom = 1
7182

7283
self.setWindowFlags(Qt.WindowMinimizeButtonHint |
@@ -76,9 +87,7 @@ def __init__(self, alg=None):
7687
settings = QSettings()
7788
self.restoreState(settings.value("/Processing/stateModeler", QByteArray()))
7889
self.restoreGeometry(settings.value("/Processing/geometryModeler", QByteArray()))
79-
self.splitter.restoreState(settings.value("/Processing/stateModelerSplitter", QByteArray()))
8090

81-
self.tabWidget.setCurrentIndex(0)
8291
self.scene = ModelerScene(self)
8392
self.scene.setSceneRect(QRectF(0, 0, self.CANVAS_SIZE, self.CANVAS_SIZE))
8493

@@ -231,7 +240,6 @@ def closeEvent(self, evt):
231240
settings = QSettings()
232241
settings.setValue("/Processing/stateModeler", self.saveState())
233242
settings.setValue("/Processing/geometryModeler", self.saveGeometry())
234-
settings.setValue("/Processing/stateModelerSplitter", self.splitter.saveState())
235243

236244
if self.hasChanged:
237245
ret = QMessageBox.question(

‎python/plugins/processing/ui/DlgModeler.ui

Lines changed: 268 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -22,122 +22,272 @@
2222
<number>6</number>
2323
</property>
2424
<item>
25-
<widget class="QSplitter" name="splitter">
26-
<property name="orientation">
27-
<enum>Qt::Horizontal</enum>
25+
<widget class="QGraphicsView" name="view"/>
26+
</item>
27+
</layout>
28+
</widget>
29+
<widget class="QgsDockWidget" name="propertiesDock">
30+
<property name="features">
31+
<set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
32+
</property>
33+
<property name="windowTitle">
34+
<string>Model properties</string>
35+
</property>
36+
<attribute name="dockWidgetArea">
37+
<number>1</number>
38+
</attribute>
39+
<layout class="QVBoxLayout" name="verticalDockLayout_1">
40+
<property name="spacing">
41+
<number>0</number>
42+
</property>
43+
<property name="margin">
44+
<number>0</number>
45+
</property>
46+
<item>
47+
<widget class="QScrollArea" name="scrollArea_1">
48+
<property name="sizePolicy">
49+
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
50+
<horstretch>0</horstretch>
51+
<verstretch>0</verstretch>
52+
</sizepolicy>
2853
</property>
29-
<widget class="QTabWidget" name="tabWidget">
30-
<property name="minimumSize">
31-
<size>
32-
<width>300</width>
33-
<height>0</height>
34-
</size>
35-
</property>
36-
<property name="tabPosition">
37-
<enum>QTabWidget::South</enum>
38-
</property>
39-
<property name="currentIndex">
40-
<number>1</number>
54+
<property name="focusPolicy">
55+
<enum>Qt::WheelFocus</enum>
56+
</property>
57+
<property name="frameShape">
58+
<enum>QFrame::StyledPanel</enum>
59+
</property>
60+
<property name="frameShadow">
61+
<enum>QFrame::Plain</enum>
62+
</property>
63+
<property name="widgetResizable">
64+
<bool>true</bool>
65+
</property>
66+
<widget class="QWidget" name="scrollAreaWidgetContents_1">
67+
<property name="geometry">
68+
<rect>
69+
<x>0</x>
70+
<y>0</y>
71+
<width>287</width>
72+
<height>500</height>
73+
</rect>
4174
</property>
42-
<widget class="QWidget" name="tab">
43-
<attribute name="title">
44-
<string>Inputs</string>
45-
</attribute>
46-
<layout class="QVBoxLayout" name="verticalLayout_3">
47-
<property name="spacing">
48-
<number>4</number>
49-
</property>
50-
<property name="margin">
51-
<number>0</number>
52-
</property>
53-
<item>
54-
<widget class="QTreeWidget" name="inputsTree">
55-
<property name="alternatingRowColors">
56-
<bool>true</bool>
57-
</property>
58-
<attribute name="headerVisible">
59-
<bool>false</bool>
60-
</attribute>
61-
<column>
75+
<layout class="QVBoxLayout" name="verticalLayout_2">
76+
<property name="spacing">
77+
<number>4</number>
78+
</property>
79+
<property name="margin">
80+
<number>6</number>
81+
</property>
82+
<item>
83+
<layout class="QGridLayout" name="gridLayout">
84+
<property name="spacing">
85+
<number>4</number>
86+
</property>
87+
<item row="0" column="0">
88+
<widget class="QLabel" name="label_1">
6289
<property name="text">
63-
<string notr="true">1</string>
90+
<string>Name</string>
6491
</property>
65-
</column>
66-
</widget>
67-
</item>
68-
</layout>
69-
</widget>
70-
<widget class="QWidget" name="tab_2">
71-
<attribute name="title">
72-
<string>Algorithms</string>
73-
</attribute>
74-
<layout class="QVBoxLayout" name="verticalLayout_4">
75-
<property name="spacing">
76-
<number>4</number>
77-
</property>
78-
<property name="margin">
79-
<number>0</number>
80-
</property>
81-
<item>
82-
<widget class="QgsFilterLineEdit" name="searchBox">
83-
<property name="toolTip">
84-
<string>Enter algorithm name to filter list</string>
85-
</property>
86-
</widget>
87-
</item>
88-
<item>
89-
<widget class="QTreeWidget" name="algorithmTree">
90-
<property name="alternatingRowColors">
91-
<bool>true</bool>
92-
</property>
93-
<attribute name="headerVisible">
94-
<bool>false</bool>
95-
</attribute>
96-
<column>
92+
</widget>
93+
</item>
94+
<item row="0" column="1">
95+
<widget class="QLineEdit" name="textName">
96+
<property name="toolTip">
97+
<string>Enter model name here</string>
98+
</property>
99+
</widget>
100+
</item>
101+
<item row="1" column="0">
102+
<widget class="QLabel" name="label_2">
97103
<property name="text">
98-
<string notr="true">1</string>
104+
<string>Group</string>
105+
</property>
106+
</widget>
107+
</item>
108+
<item row="1" column="1">
109+
<widget class="QLineEdit" name="textGroup">
110+
<property name="toolTip">
111+
<string>Enter group name here</string>
99112
</property>
100-
</column>
101-
</widget>
102-
</item>
103-
</layout>
104-
</widget>
113+
</widget>
114+
</item>
115+
</layout>
116+
</item>
117+
</layout>
105118
</widget>
106-
<widget class="QWidget" name="layoutWidget">
107-
<layout class="QGridLayout" name="gridLayout">
119+
</widget>
120+
</item>
121+
</layout>
122+
</widget>
123+
<widget class="QgsDockWidget" name="inputsDock">
124+
<property name="features">
125+
<set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
126+
</property>
127+
<property name="windowTitle">
128+
<string>Inputs</string>
129+
</property>
130+
<attribute name="dockWidgetArea">
131+
<number>1</number>
132+
</attribute>
133+
<layout class="QVBoxLayout" name="verticalDockLayout_2">
134+
<property name="spacing">
135+
<number>0</number>
136+
</property>
137+
<property name="margin">
138+
<number>0</number>
139+
</property>
140+
<item>
141+
<widget class="QScrollArea" name="scrollArea_2">
142+
<property name="sizePolicy">
143+
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
144+
<horstretch>0</horstretch>
145+
<verstretch>0</verstretch>
146+
</sizepolicy>
147+
</property>
148+
<property name="focusPolicy">
149+
<enum>Qt::WheelFocus</enum>
150+
</property>
151+
<property name="frameShape">
152+
<enum>QFrame::StyledPanel</enum>
153+
</property>
154+
<property name="frameShadow">
155+
<enum>QFrame::Plain</enum>
156+
</property>
157+
<property name="widgetResizable">
158+
<bool>true</bool>
159+
</property>
160+
<widget class="QWidget" name="scrollAreaWidgetContents_2">
161+
<property name="geometry">
162+
<rect>
163+
<x>0</x>
164+
<y>0</y>
165+
<width>287</width>
166+
<height>1113</height>
167+
</rect>
168+
</property>
169+
<layout class="QVBoxLayout" name="verticalLayout_3">
108170
<property name="spacing">
109171
<number>4</number>
110172
</property>
111-
<item row="0" column="0">
112-
<widget class="QLabel" name="label_1">
113-
<property name="text">
114-
<string>Model</string>
173+
<property name="margin">
174+
<number>6</number>
175+
</property>
176+
<item>
177+
<layout class="QVBoxLayout" name="verticalLayout_4">
178+
<property name="spacing">
179+
<number>4</number>
115180
</property>
116-
</widget>
117-
</item>
118-
<item row="0" column="1">
119-
<widget class="QLineEdit" name="textName">
120-
<property name="toolTip">
121-
<string>Enter model name here</string>
181+
<property name="margin">
182+
<number>6</number>
122183
</property>
123-
</widget>
184+
<item>
185+
<widget class="QTreeWidget" name="inputsTree">
186+
<property name="alternatingRowColors">
187+
<bool>true</bool>
188+
</property>
189+
<attribute name="headerVisible">
190+
<bool>false</bool>
191+
</attribute>
192+
<column>
193+
<property name="text">
194+
<string notr="true">1</string>
195+
</property>
196+
</column>
197+
</widget>
198+
</item>
199+
</layout>
124200
</item>
125-
<item row="0" column="2">
126-
<widget class="QLabel" name="label_2">
127-
<property name="text">
128-
<string>Group</string>
201+
</layout>
202+
</widget>
203+
</widget>
204+
</item>
205+
</layout>
206+
</widget>
207+
<widget class="QgsDockWidget" name="algorithmsDock">
208+
<property name="features">
209+
<set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
210+
</property>
211+
<property name="windowTitle">
212+
<string>Algorithms</string>
213+
</property>
214+
<attribute name="dockWidgetArea">
215+
<number>1</number>
216+
</attribute>
217+
<layout class="QVBoxLayout" name="verticalDockLayout_3">
218+
<property name="spacing">
219+
<number>0</number>
220+
</property>
221+
<property name="margin">
222+
<number>0</number>
223+
</property>
224+
<item>
225+
<widget class="QScrollArea" name="scrollArea_3">
226+
<property name="sizePolicy">
227+
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
228+
<horstretch>0</horstretch>
229+
<verstretch>0</verstretch>
230+
</sizepolicy>
231+
</property>
232+
<property name="focusPolicy">
233+
<enum>Qt::WheelFocus</enum>
234+
</property>
235+
<property name="frameShape">
236+
<enum>QFrame::StyledPanel</enum>
237+
</property>
238+
<property name="frameShadow">
239+
<enum>QFrame::Plain</enum>
240+
</property>
241+
<property name="widgetResizable">
242+
<bool>true</bool>
243+
</property>
244+
<widget class="QWidget" name="scrollAreaWidgetContents_3">
245+
<property name="geometry">
246+
<rect>
247+
<x>0</x>
248+
<y>0</y>
249+
<width>287</width>
250+
<height>1113</height>
251+
</rect>
252+
</property>
253+
<layout class="QVBoxLayout" name="verticalLayout_5">
254+
<property name="spacing">
255+
<number>4</number>
256+
</property>
257+
<property name="margin">
258+
<number>6</number>
259+
</property>
260+
<item>
261+
<layout class="QVBoxLayout" name="verticalLayout_6">
262+
<property name="spacing">
263+
<number>4</number>
129264
</property>
130-
</widget>
131-
</item>
132-
<item row="0" column="3">
133-
<widget class="QLineEdit" name="textGroup">
134-
<property name="toolTip">
135-
<string>Enter group name here</string>
265+
<property name="margin">
266+
<number>6</number>
136267
</property>
137-
</widget>
138-
</item>
139-
<item row="1" column="0" colspan="4">
140-
<widget class="QGraphicsView" name="view"/>
268+
<item>
269+
<widget class="QgsFilterLineEdit" name="searchBox">
270+
<property name="toolTip">
271+
<string>Enter algorithm name to filter list</string>
272+
</property>
273+
</widget>
274+
</item>
275+
<item>
276+
<widget class="QTreeWidget" name="algorithmTree">
277+
<property name="alternatingRowColors">
278+
<bool>true</bool>
279+
</property>
280+
<attribute name="headerVisible">
281+
<bool>false</bool>
282+
</attribute>
283+
<column>
284+
<property name="text">
285+
<string notr="true">1</string>
286+
</property>
287+
</column>
288+
</widget>
289+
</item>
290+
</layout>
141291
</item>
142292
</layout>
143293
</widget>
@@ -269,6 +419,23 @@
269419
<extends>QLineEdit</extends>
270420
<header>qgis.gui</header>
271421
</customwidget>
422+
<customwidget>
423+
<class>QgsDockWidget</class>
424+
<extends>QDockWidget</extends>
425+
<header>qgis.gui</header>
426+
</customwidget>
427+
<customwidget>
428+
<class>QgsCollapsibleGroupBox</class>
429+
<extends>QGroupBox</extends>
430+
<header>qgis.gui</header>
431+
<container>1</container>
432+
</customwidget>
433+
<customwidget>
434+
<class>QgsCollapsibleGroupBoxBasic</class>
435+
<extends>QGroupBox</extends>
436+
<header>qgis.gui</header>
437+
<container>1</container>
438+
</customwidget>
272439
</customwidgets>
273440
<resources/>
274441
<connections/>

0 commit comments

Comments
 (0)
Please sign in to comment.