Skip to content
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixing problem with domain visibility on color change
  • Loading branch information
pshriwise committed Feb 16, 2026
commit 8456be40f16b73b01ccdd27b7f7b2492ec03a9b7
26 changes: 25 additions & 1 deletion openmc_plotter/renderer_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ def __init__(

self._domain_data = {}
self._color_maps = {}
self._visibility_maps = {}
self._setDomainData(material_domains, cell_domains)

mode_value = self._resolveModeValue(initial_color_mode)
Expand Down Expand Up @@ -302,6 +303,18 @@ def _setDomainData(self, material_domains, cell_domains):
self._cell_mode: self._normalizeDomainMap(cell_domains),
}

previous_visibility = self._visibility_maps
self._visibility_maps = {
self._material_mode: {
domain_id: previous_visibility.get(self._material_mode, {}).get(domain_id, True)
for domain_id in self._domain_data[self._material_mode]
},
self._cell_mode: {
domain_id: previous_visibility.get(self._cell_mode, {}).get(domain_id, True)
for domain_id in self._domain_data[self._cell_mode]
},
}

self._color_maps = {
self._material_mode: {
domain_id: entry["color"]
Expand Down Expand Up @@ -402,7 +415,8 @@ def _populateVisibilityList(self, items):
label.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)

checkbox = QCheckBox(row)
checkbox.setChecked(True)
visible = self._visibility_maps.setdefault(mode, {}).setdefault(domain_id, True)
checkbox.setChecked(visible)

checkbox.toggled.connect(
lambda checked, did=domain_id: self._onVisibilityToggle(did, checked)
Expand Down Expand Up @@ -442,6 +456,8 @@ def _setColorButtonStyle(self, button, rgb):
)

def _onVisibilityToggle(self, domain_id, checked):
mode = self.modeCombo.currentData()
self._visibility_maps.setdefault(mode, {})[int(domain_id)] = bool(checked)
self.plotter.set_visibility(domain_id, checked)
self.gl_widget.request_final_render()

Expand Down Expand Up @@ -474,9 +490,17 @@ def _applyMappedColors(self, mode):
except Exception:
continue

def _applyMappedVisibility(self, mode):
for domain_id, visible in self._visibility_maps.get(mode, {}).items():
try:
self.plotter.set_visibility(domain_id, visible)
except Exception:
continue

def _refreshCurrentMode(self, mode, request_render):
self.plotter.set_color_by(mode)
self._applyMappedColors(mode)
self._applyMappedVisibility(mode)
self._populateVisibilityList(self._domainItemsForMode(mode))
if request_render:
self.gl_widget.request_final_render()
Expand Down