Skip to content

Commit b1d3db0

Browse files
committed
[feat] Add monochrome plots and allow chainging units of volume and concentration
1 parent b980e12 commit b1d3db0

File tree

3 files changed

+356
-108
lines changed

3 files changed

+356
-108
lines changed

src/main/python/pyes/ui/PyES_pyqtgraphPlotExport.py

Lines changed: 99 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
QCheckBox,
4848
QComboBox,
4949
QFormLayout,
50+
QFrame,
5051
QGridLayout,
5152
QHBoxLayout,
5253
QHeaderView,
@@ -60,13 +61,14 @@
6061
QVBoxLayout,
6162
QWidget,
6263
)
64+
from ui.widgets import ColorButton
6365

6466

6567
class Ui_PlotWindow(object):
6668
def setupUi(self, PlotWindow):
6769
if not PlotWindow.objectName():
6870
PlotWindow.setObjectName("PlotWindow")
69-
PlotWindow.resize(800, 600)
71+
PlotWindow.resize(945, 704)
7072
PlotWindow.setMinimumSize(QSize(800, 600))
7173
self.centralwidget = QWidget(PlotWindow)
7274
self.centralwidget.setObjectName("centralwidget")
@@ -83,22 +85,64 @@ def setupUi(self, PlotWindow):
8385
self.verticalLayout = QVBoxLayout(self.widget)
8486
self.verticalLayout.setSpacing(2)
8587
self.verticalLayout.setObjectName("verticalLayout")
86-
self.verticalLayout.setContentsMargins(2, 2, 2, 2)
88+
self.verticalLayout.setContentsMargins(2, 0, 2, 2)
8789
self.widget_2 = QWidget(self.widget)
8890
self.widget_2.setObjectName("widget_2")
8991
self.gridLayout = QGridLayout(self.widget_2)
9092
self.gridLayout.setSpacing(2)
9193
self.gridLayout.setObjectName("gridLayout")
9294
self.gridLayout.setContentsMargins(0, 0, 0, 0)
93-
self.deselect_all = QPushButton(self.widget_2)
94-
self.deselect_all.setObjectName("deselect_all")
95+
self.c_unit = QComboBox(self.widget_2)
96+
self.c_unit.addItem("")
97+
self.c_unit.addItem("")
98+
self.c_unit.addItem("")
99+
self.c_unit.setObjectName("c_unit")
100+
101+
self.gridLayout.addWidget(self.c_unit, 9, 1, 1, 1)
102+
103+
self.line = QFrame(self.widget_2)
104+
self.line.setObjectName("line")
105+
self.line.setFrameShape(QFrame.HLine)
106+
self.line.setFrameShadow(QFrame.Sunken)
95107

96-
self.gridLayout.addWidget(self.deselect_all, 3, 1, 1, 1)
108+
self.gridLayout.addWidget(self.line, 4, 0, 1, 2)
97109

98110
self.regions_check = QCheckBox(self.widget_2)
99111
self.regions_check.setObjectName("regions_check")
100112

101-
self.gridLayout.addWidget(self.regions_check, 1, 0, 1, 2)
113+
self.gridLayout.addWidget(self.regions_check, 7, 0, 1, 2)
114+
115+
self.errors_check = QCheckBox(self.widget_2)
116+
self.errors_check.setObjectName("errors_check")
117+
118+
self.gridLayout.addWidget(self.errors_check, 8, 0, 1, 2)
119+
120+
self.v_unit_label = QLabel(self.widget_2)
121+
self.v_unit_label.setObjectName("v_unit_label")
122+
123+
self.gridLayout.addWidget(self.v_unit_label, 10, 0, 1, 1)
124+
125+
self.plot_options_label = QLabel(self.widget_2)
126+
self.plot_options_label.setObjectName("plot_options_label")
127+
128+
self.gridLayout.addWidget(self.plot_options_label, 5, 0, 1, 2)
129+
130+
self.v_unit = QComboBox(self.widget_2)
131+
self.v_unit.addItem("")
132+
self.v_unit.addItem("")
133+
self.v_unit.setObjectName("v_unit")
134+
135+
self.gridLayout.addWidget(self.v_unit, 10, 1, 1, 1)
136+
137+
self.deselect_all = QPushButton(self.widget_2)
138+
self.deselect_all.setObjectName("deselect_all")
139+
140+
self.gridLayout.addWidget(self.deselect_all, 1, 0, 1, 1)
141+
142+
self.select_all = QPushButton(self.widget_2)
143+
self.select_all.setObjectName("select_all")
144+
145+
self.gridLayout.addWidget(self.select_all, 1, 1, 1, 1)
102146

103147
self.tabWidget_2 = QTabWidget(self.widget_2)
104148
self.tabWidget_2.setObjectName("tabWidget_2")
@@ -147,17 +191,22 @@ def setupUi(self, PlotWindow):
147191
self.filter = QPushButton(self.widget_2)
148192
self.filter.setObjectName("filter")
149193

150-
self.gridLayout.addWidget(self.filter, 4, 0, 1, 2)
194+
self.gridLayout.addWidget(self.filter, 3, 0, 1, 2)
151195

152-
self.select_all = QPushButton(self.widget_2)
153-
self.select_all.setObjectName("select_all")
196+
self.c_unit_label = QLabel(self.widget_2)
197+
self.c_unit_label.setObjectName("c_unit_label")
154198

155-
self.gridLayout.addWidget(self.select_all, 3, 0, 1, 1)
199+
self.gridLayout.addWidget(self.c_unit_label, 9, 0, 1, 1)
156200

157-
self.errors_check = QCheckBox(self.widget_2)
158-
self.errors_check.setObjectName("errors_check")
201+
self.monochrome_check = QCheckBox(self.widget_2)
202+
self.monochrome_check.setObjectName("monochrome_check")
203+
204+
self.gridLayout.addWidget(self.monochrome_check, 6, 0, 1, 1)
205+
206+
self.monochrome_color = ColorButton(self.widget_2)
207+
self.monochrome_color.setObjectName("monochrome_color")
159208

160-
self.gridLayout.addWidget(self.errors_check, 2, 0, 1, 2)
209+
self.gridLayout.addWidget(self.monochrome_color, 6, 1, 1, 1)
161210

162211
self.verticalLayout.addWidget(self.widget_2)
163212

@@ -236,6 +285,7 @@ def setupUi(self, PlotWindow):
236285

237286
self.horizontalLayout.addLayout(self.verticalLayout_4)
238287

288+
self.horizontalLayout.setStretch(1, 1)
239289
PlotWindow.setCentralWidget(self.centralwidget)
240290

241291
self.retranslateUi(PlotWindow)
@@ -256,12 +306,41 @@ def retranslateUi(self, PlotWindow):
256306
PlotWindow.setWindowTitle(
257307
QCoreApplication.translate("PlotWindow", "Export Plot", None)
258308
)
259-
self.deselect_all.setText(
260-
QCoreApplication.translate("PlotWindow", "Deselect All", None)
309+
self.c_unit.setItemText(
310+
0, QCoreApplication.translate("PlotWindow", "mol/l", None)
311+
)
312+
self.c_unit.setItemText(
313+
1, QCoreApplication.translate("PlotWindow", "mmol/l", None)
261314
)
315+
self.c_unit.setItemText(
316+
2, QCoreApplication.translate("PlotWindow", "\u03bcmol/l", None)
317+
)
318+
262319
self.regions_check.setText(
263320
QCoreApplication.translate("PlotWindow", "Solids as regions", None)
264321
)
322+
self.errors_check.setText(
323+
QCoreApplication.translate("PlotWindow", "Plot error bars", None)
324+
)
325+
self.v_unit_label.setText(
326+
QCoreApplication.translate("PlotWindow", "Volume Units", None)
327+
)
328+
self.plot_options_label.setText(
329+
QCoreApplication.translate(
330+
"PlotWindow",
331+
'<html><head/><body><p><span style=" font-weight:700;">Plot Options</span></p></body></html>',
332+
None,
333+
)
334+
)
335+
self.v_unit.setItemText(0, QCoreApplication.translate("PlotWindow", "l", None))
336+
self.v_unit.setItemText(1, QCoreApplication.translate("PlotWindow", "ml", None))
337+
338+
self.deselect_all.setText(
339+
QCoreApplication.translate("PlotWindow", "Deselect All", None)
340+
)
341+
self.select_all.setText(
342+
QCoreApplication.translate("PlotWindow", "Select All", None)
343+
)
265344
self.tabWidget_2.setTabText(
266345
self.tabWidget_2.indexOf(self.species),
267346
QCoreApplication.translate("PlotWindow", "Species", None),
@@ -271,12 +350,13 @@ def retranslateUi(self, PlotWindow):
271350
QCoreApplication.translate("PlotWindow", "Solids", None),
272351
)
273352
self.filter.setText(QCoreApplication.translate("PlotWindow", "Filter", None))
274-
self.select_all.setText(
275-
QCoreApplication.translate("PlotWindow", "Select All", None)
353+
self.c_unit_label.setText(
354+
QCoreApplication.translate("PlotWindow", "Concentration Units", None)
276355
)
277-
self.errors_check.setText(
278-
QCoreApplication.translate("PlotWindow", "Plot error bars", None)
356+
self.monochrome_check.setText(
357+
QCoreApplication.translate("PlotWindow", "Monochrome", None)
279358
)
359+
self.monochrome_color.setText("")
280360
self.tabWidget.setTabText(
281361
self.tabWidget.indexOf(self.conc_tab),
282362
QCoreApplication.translate("PlotWindow", "Concentrations", None),

src/main/python/pyes/ui/PyES_pyqtgraphPlotExport.ui

Lines changed: 95 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>800</width>
10-
<height>600</height>
9+
<width>945</width>
10+
<height>704</height>
1111
</rect>
1212
</property>
1313
<property name="minimumSize">
@@ -20,7 +20,7 @@
2020
<string>Export Plot</string>
2121
</property>
2222
<widget class="QWidget" name="centralwidget">
23-
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0">
23+
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
2424
<property name="leftMargin">
2525
<number>2</number>
2626
</property>
@@ -49,7 +49,7 @@
4949
<number>2</number>
5050
</property>
5151
<property name="topMargin">
52-
<number>2</number>
52+
<number>0</number>
5353
</property>
5454
<property name="rightMargin">
5555
<number>2</number>
@@ -75,17 +75,85 @@
7575
<property name="spacing">
7676
<number>2</number>
7777
</property>
78-
<item row="3" column="1">
78+
<item row="9" column="1">
79+
<widget class="QComboBox" name="c_unit">
80+
<item>
81+
<property name="text">
82+
<string>mol/l</string>
83+
</property>
84+
</item>
85+
<item>
86+
<property name="text">
87+
<string>mmol/l</string>
88+
</property>
89+
</item>
90+
<item>
91+
<property name="text">
92+
<string>μmol/l</string>
93+
</property>
94+
</item>
95+
</widget>
96+
</item>
97+
<item row="4" column="0" colspan="2">
98+
<widget class="Line" name="line">
99+
<property name="orientation">
100+
<enum>Qt::Horizontal</enum>
101+
</property>
102+
</widget>
103+
</item>
104+
<item row="7" column="0" colspan="2">
105+
<widget class="QCheckBox" name="regions_check">
106+
<property name="text">
107+
<string>Solids as regions</string>
108+
</property>
109+
</widget>
110+
</item>
111+
<item row="8" column="0" colspan="2">
112+
<widget class="QCheckBox" name="errors_check">
113+
<property name="text">
114+
<string>Plot error bars</string>
115+
</property>
116+
</widget>
117+
</item>
118+
<item row="10" column="0">
119+
<widget class="QLabel" name="v_unit_label">
120+
<property name="text">
121+
<string>Volume Units</string>
122+
</property>
123+
</widget>
124+
</item>
125+
<item row="5" column="0" colspan="2">
126+
<widget class="QLabel" name="plot_options_label">
127+
<property name="text">
128+
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Plot Options&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
129+
</property>
130+
</widget>
131+
</item>
132+
<item row="10" column="1">
133+
<widget class="QComboBox" name="v_unit">
134+
<item>
135+
<property name="text">
136+
<string>l</string>
137+
</property>
138+
</item>
139+
<item>
140+
<property name="text">
141+
<string>ml</string>
142+
</property>
143+
</item>
144+
</widget>
145+
</item>
146+
<item row="1" column="0">
79147
<widget class="QPushButton" name="deselect_all">
80148
<property name="text">
81149
<string>Deselect All</string>
82150
</property>
83151
</widget>
84152
</item>
85-
<item row="1" column="0" colspan="2">
86-
<widget class="QCheckBox" name="regions_check">
153+
<item row="1" column="1">
154+
<widget class="QPushButton" name="select_all">
87155
<property name="text">
88-
<string>Solids as regions</string>
156+
<string>Select All</string>
89157
</property>
90158
</widget>
91159
</item>
@@ -157,24 +225,31 @@
157225
</widget>
158226
</widget>
159227
</item>
160-
<item row="4" column="0" colspan="2">
228+
<item row="3" column="0" colspan="2">
161229
<widget class="QPushButton" name="filter">
162230
<property name="text">
163231
<string>Filter</string>
164232
</property>
165233
</widget>
166234
</item>
167-
<item row="3" column="0">
168-
<widget class="QPushButton" name="select_all">
235+
<item row="9" column="0">
236+
<widget class="QLabel" name="c_unit_label">
169237
<property name="text">
170-
<string>Select All</string>
238+
<string>Concentration Units</string>
171239
</property>
172240
</widget>
173241
</item>
174-
<item row="2" column="0" colspan="2">
175-
<widget class="QCheckBox" name="errors_check">
242+
<item row="6" column="0">
243+
<widget class="QCheckBox" name="monochrome_check">
176244
<property name="text">
177-
<string>Plot error bars</string>
245+
<string>Monochrome</string>
246+
</property>
247+
</widget>
248+
</item>
249+
<item row="6" column="1">
250+
<widget class="ColorButton" name="monochrome_color">
251+
<property name="text">
252+
<string/>
178253
</property>
179254
</widget>
180255
</item>
@@ -308,6 +383,11 @@
308383
<header>pyqtgraph</header>
309384
<container>1</container>
310385
</customwidget>
386+
<customwidget>
387+
<class>ColorButton</class>
388+
<extends>QPushButton</extends>
389+
<header>ui.widgets</header>
390+
</customwidget>
311391
</customwidgets>
312392
<resources/>
313393
<connections>

0 commit comments

Comments
 (0)