@@ -381,7 +381,6 @@ def _createFilterTree(self, spatial_filters):
381381 self .filterTree .setHeaderItem (header )
382382 self .filterTree .setItemHidden (header , True )
383383 self .filterTree .setColumnCount (1 )
384- self .filterTree .itemChanged .connect (self .updateFilters )
385384
386385 self .filter_map = {}
387386 self .bin_map = {}
@@ -489,8 +488,6 @@ def selectTally(self, tally_label=None):
489488
490489 # scores
491490 self .score_map = {}
492- self .scoresListWidget .itemClicked .connect (
493- self .main_window .updateScores )
494491 self .score_map .clear ()
495492 self .scoresListWidget .clear ()
496493
@@ -525,7 +522,6 @@ def selectTally(self, tally_label=None):
525522
526523 # nuclides
527524 self .nuclide_map = {}
528- self .nuclidesListWidget .itemClicked .connect (self .main_window .updateNuclides )
529525 self .nuclide_map .clear ()
530526 self .nuclidesListWidget .clear ()
531527
@@ -574,13 +570,27 @@ def updateSelectedTally(self):
574570 self .tallySelector .setCurrentIndex (idx )
575571
576572 def updateFilters (self ):
573+ # if the filters header is checked, uncheck all bins and return
577574 applied_filters = defaultdict (tuple )
578575 for f , f_item in self .filter_map .items ():
579576 if type (f ) == openmc .MeshFilter :
580577 continue
581578
582579 filter_checked = f_item .checkState (0 )
583- if filter_checked != QtCore .Qt .Unchecked :
580+ if filter_checked == QtCore .Qt .Unchecked :
581+ for i in range (f_item .childCount ()):
582+ bin_item = f_item .child (i )
583+ bin_item .setCheckState (0 , QtCore .Qt .Unchecked )
584+ applied_filters [f ] = tuple ()
585+ elif filter_checked == QtCore .Qt .Checked :
586+ if isinstance (f , openmc .EnergyFunctionFilter ):
587+ bins = [0 ]
588+ else :
589+ for i in range (f_item .childCount ()):
590+ bin_item = f_item .child (i )
591+ bin_item .setCheckState (0 , QtCore .Qt .Checked )
592+ applied_filters [f ] = tuple (i for i in range (f_item .childCount ()))
593+ elif filter_checked == QtCore .Qt .PartiallyChecked :
584594 selected_bins = []
585595 if isinstance (f , openmc .EnergyFunctionFilter ):
586596 bins = [0 ]
@@ -593,7 +603,7 @@ def updateFilters(self):
593603 selected_bins .append (idx )
594604 applied_filters [f ] = tuple (selected_bins )
595605
596- self .model .appliedFilters = applied_filters
606+ self .model .appliedFilters = applied_filters
597607
598608 def updateScores (self ):
599609 applied_scores = []
@@ -649,6 +659,11 @@ def updateNuclides(self):
649659 nuclide_box .setFlags (empty_item .flags () | QtCore .Qt .ItemIsUserCheckable )
650660 nuclide_box .setFlags (empty_item .flags () & ~ QtCore .Qt .ItemIsSelectable )
651661
662+ def updateModel (self ):
663+ self .updateFilters ()
664+ self .updateScores ()
665+ self .updateNuclides ()
666+
652667 def update (self ):
653668
654669 # update the color form
0 commit comments