Skip to content

Commit 8456be4

Browse files
committed
Fixing problem with domain visibility on color change
1 parent 4928a3a commit 8456be4

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

openmc_plotter/renderer_widget.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def __init__(
2727

2828
self._domain_data = {}
2929
self._color_maps = {}
30+
self._visibility_maps = {}
3031
self._setDomainData(material_domains, cell_domains)
3132

3233
mode_value = self._resolveModeValue(initial_color_mode)
@@ -302,6 +303,18 @@ def _setDomainData(self, material_domains, cell_domains):
302303
self._cell_mode: self._normalizeDomainMap(cell_domains),
303304
}
304305

306+
previous_visibility = self._visibility_maps
307+
self._visibility_maps = {
308+
self._material_mode: {
309+
domain_id: previous_visibility.get(self._material_mode, {}).get(domain_id, True)
310+
for domain_id in self._domain_data[self._material_mode]
311+
},
312+
self._cell_mode: {
313+
domain_id: previous_visibility.get(self._cell_mode, {}).get(domain_id, True)
314+
for domain_id in self._domain_data[self._cell_mode]
315+
},
316+
}
317+
305318
self._color_maps = {
306319
self._material_mode: {
307320
domain_id: entry["color"]
@@ -402,7 +415,8 @@ def _populateVisibilityList(self, items):
402415
label.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)
403416

404417
checkbox = QCheckBox(row)
405-
checkbox.setChecked(True)
418+
visible = self._visibility_maps.setdefault(mode, {}).setdefault(domain_id, True)
419+
checkbox.setChecked(visible)
406420

407421
checkbox.toggled.connect(
408422
lambda checked, did=domain_id: self._onVisibilityToggle(did, checked)
@@ -442,6 +456,8 @@ def _setColorButtonStyle(self, button, rgb):
442456
)
443457

444458
def _onVisibilityToggle(self, domain_id, checked):
459+
mode = self.modeCombo.currentData()
460+
self._visibility_maps.setdefault(mode, {})[int(domain_id)] = bool(checked)
445461
self.plotter.set_visibility(domain_id, checked)
446462
self.gl_widget.request_final_render()
447463

@@ -474,9 +490,17 @@ def _applyMappedColors(self, mode):
474490
except Exception:
475491
continue
476492

493+
def _applyMappedVisibility(self, mode):
494+
for domain_id, visible in self._visibility_maps.get(mode, {}).items():
495+
try:
496+
self.plotter.set_visibility(domain_id, visible)
497+
except Exception:
498+
continue
499+
477500
def _refreshCurrentMode(self, mode, request_render):
478501
self.plotter.set_color_by(mode)
479502
self._applyMappedColors(mode)
503+
self._applyMappedVisibility(mode)
480504
self._populateVisibilityList(self._domainItemsForMode(mode))
481505
if request_render:
482506
self.gl_widget.request_final_render()

0 commit comments

Comments
 (0)