Skip to content
Merged
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
Next Next commit
Allow score boxes to change without applying updates
  • Loading branch information
paulromano committed Feb 15, 2024
commit e5660ee64cd64f33fe7bd7622f06cdb5c74dd199
66 changes: 32 additions & 34 deletions openmc_plotter/docks.py
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,7 @@ def __init__(self, model, font_metric, parent=None):
self.tallyColorForm = ColorForm(self.model, self.main_window, 'tally')
self.scoresGroupBox = Expander(title="Scores:")
self.scoresListWidget = QListWidget()
self.scoresListWidget.itemChanged.connect(self.updateScores)
self.nuclidesListWidget = QListWidget()

# Main layout
Expand Down Expand Up @@ -502,7 +503,6 @@ def selectTally(self, tally_label=None):

# scores
self.score_map = {}
self.score_map.clear()
self.scoresListWidget.clear()

sorted_scores = sorted(tally.scores)
Expand Down Expand Up @@ -628,39 +628,37 @@ def updateScores(self):
applied_scores.append(score)
self.model.appliedScores = tuple(applied_scores)

if not applied_scores:
# if no scores are selected, enable all scores again
for score, score_box in self.score_map.items():
sunits = _SCORE_UNITS.get(score, _REACTION_UNITS)
empty_item = QListWidgetItem()
score_box.setFlags(empty_item.flags() |
QtCore.Qt.ItemIsUserCheckable)
score_box.setFlags(empty_item.flags() &
~QtCore.Qt.ItemIsSelectable)
elif 'total' in applied_scores:
self.model.appliedScores = ('total',)
# if total is selected, disable all other scores
for score, score_box in self.score_map.items():
if score != 'total':
score_box.setFlags(QtCore.Qt.ItemIsUserCheckable)
score_box.setToolTip(
"De-select 'total' to enable other scores")
else:
# get units of applied scores
selected_units = _SCORE_UNITS.get(
applied_scores[0], _REACTION_UNITS)
# disable scores with incompatible units
for score, score_box in self.score_map.items():
sunits = _SCORE_UNITS.get(score, _REACTION_UNITS)
if sunits != selected_units:
score_box.setFlags(QtCore.Qt.ItemIsUserCheckable)
score_box.setToolTip(
"Score is incompatible with currently selected scores")
else:
score_box.setFlags(score_box.flags() |
QtCore.Qt.ItemIsUserCheckable)
score_box.setFlags(score_box.flags() &
~QtCore.Qt.ItemIsSelectable)
with QtCore.QSignalBlocker(self.scoresListWidget):
if not applied_scores:
# if no scores are selected, enable all scores again
for score, score_box in self.score_map.items():
score_box.setFlags(QtCore.Qt.ItemIsUserCheckable |
QtCore.Qt.ItemIsEnabled |
QtCore.Qt.ItemIsSelectable)
elif 'total' in applied_scores:
self.model.appliedScores = ('total',)
# if total is selected, disable all other scores
for score, score_box in self.score_map.items():
if score != 'total':
score_box.setFlags(QtCore.Qt.ItemIsUserCheckable)
score_box.setToolTip(
"De-select 'total' to enable other scores")
else:
# get units of applied scores
selected_units = _SCORE_UNITS.get(
applied_scores[0], _REACTION_UNITS)
# disable scores with incompatible units
for score, score_box in self.score_map.items():
sunits = _SCORE_UNITS.get(score, _REACTION_UNITS)
if sunits != selected_units:
score_box.setFlags(QtCore.Qt.ItemIsUserCheckable)
score_box.setToolTip(
"Score is incompatible with currently selected scores")
else:
score_box.setFlags(score_box.flags() |
QtCore.Qt.ItemIsUserCheckable)
score_box.setFlags(score_box.flags() &
~QtCore.Qt.ItemIsSelectable)

def updateNuclides(self):
applied_nuclides = []
Expand Down