Skip to content

Commit d2238d8

Browse files
committedJul 30, 2020
Fix parse_dash_result helper script layout issues, add handling
of multiple matching images
1 parent 510c61e commit d2238d8

File tree

1 file changed

+44
-6
lines changed

1 file changed

+44
-6
lines changed
 

‎scripts/parse_dash_results.py

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@
4646
QDoubleSpinBox,
4747
QMessageBox,
4848
QWidget,
49-
QScrollArea)
49+
QScrollArea,
50+
QLayout,
51+
QDialogButtonBox,
52+
QListWidget)
5053
import struct
5154
import glob
5255

@@ -80,6 +83,33 @@ def imageFromPath(path):
8083
return image
8184

8285

86+
class SelectReferenceImageDialog(QDialog):
87+
88+
def __init__(self, parent, test_name, images):
89+
super().__init__(parent)
90+
91+
self.setWindowTitle('Select reference image')
92+
93+
self.button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
94+
self.button_box.accepted.connect(self.accept)
95+
self.button_box.rejected.connect(self.reject)
96+
97+
layout = QVBoxLayout()
98+
layout.addWidget(QLabel('Found multiple matching reference images for {}'.format(test_name)))
99+
100+
self.list = QListWidget()
101+
layout.addWidget(self.list, 1)
102+
103+
layout.addWidget(self.button_box)
104+
self.setLayout(layout)
105+
106+
for image in images:
107+
self.list.addItem(image)
108+
109+
def selected_image(self):
110+
return self.list.currentItem().text()
111+
112+
83113
class ResultHandler(QDialog):
84114

85115
def __init__(self, parent=None):
@@ -108,6 +138,7 @@ def __init__(self, parent=None):
108138
grid.addWidget(QLabel('New Mask'), 3, 1)
109139
grid.addWidget(self.mask_label, 4, 0)
110140
grid.addWidget(self.new_mask_label, 4, 1)
141+
grid.setSizeConstraint(QLayout.SetFixedSize)
111142

112143
self.widget.setLayout(grid)
113144
self.scrollArea.setWidget(self.widget)
@@ -225,15 +256,20 @@ def load_images(self, control_image_path, rendered_image_path, mask_image_path):
225256
return
226257

227258
self.control_label.setPixmap(QPixmap.fromImage(self.control_image))
259+
self.control_label.setFixedSize(self.control_image.size())
228260
self.rendered_label.setPixmap(QPixmap.fromImage(self.rendered_image))
261+
self.rendered_label.setFixedSize(self.rendered_image.size())
229262
self.mask_label.setPixmap(QPixmap.fromImage(self.mask_image))
263+
self.mask_label.setFixedSize(self.mask_image.size())
230264
self.diff_label.setPixmap(QPixmap.fromImage(self.diff_image))
265+
self.diff_label.setFixedSize(self.diff_image.size())
231266
self.preview_mask()
232267

233268
def preview_mask(self):
234269
self.new_mask_image = self.create_mask(
235270
self.control_image, self.rendered_image, self.mask_image, self.overload_spin.value())
236271
self.new_mask_label.setPixmap(QPixmap.fromImage(self.new_mask_image))
272+
self.new_mask_label.setFixedSize(self.new_mask_image.size())
237273

238274
def save_mask(self):
239275
self.new_mask_image.save(self.mask_image_path, "png")
@@ -296,15 +332,17 @@ def get_control_image_path(self, test_name):
296332
matching_control_images = [x[0]
297333
for x in os.walk(control_images_folder) if test_name in x[0]]
298334
if len(matching_control_images) > 1:
299-
QMessageBox.warning(
300-
self, 'Result', 'Found multiple matching control images for {}'.format(test_name))
301-
return None
335+
dlg = SelectReferenceImageDialog(self, test_name, matching_control_images)
336+
if not dlg.exec_():
337+
return None
338+
339+
found_control_image_path = dlg.selected_image()
302340
elif len(matching_control_images) == 0:
303341
QMessageBox.warning(
304342
self, 'Result', 'No matching control images found for {}'.format(test_name))
305343
return None
306-
307-
found_control_image_path = matching_control_images[0]
344+
else:
345+
found_control_image_path = matching_control_images[0]
308346

309347
# check for a single matching expected image
310348
images = glob.glob(os.path.join(found_control_image_path, '*.png'))

0 commit comments

Comments
 (0)
Please sign in to comment.