@@ -1580,6 +1580,9 @@ def variable_icon(var):
15801580#: Any warnings applying to the transform (`list[tuple[Msg, str]]`)
15811581RestoreWarningRole = TransformRole + 1
15821582
1583+ #: Hint key that was used to load stored settings.
1584+ RestoreHintKey = RestoreWarningRole + 1
1585+
15831586
15841587class VariableEditDelegate (QStyledItemDelegate ):
15851588 ReinterpretNames = {
@@ -2133,12 +2136,12 @@ def reset_selected(self):
21332136 modified = []
21342137 for ind in self .selected_var_indices ():
21352138 midx = model .index (ind )
2139+ model .setData (midx , [], TransformRole )
21362140 model .setData (midx , None , RestoreWarningRole )
2137- if midx .data (TransformRole ):
2138- model .setData (midx , [], TransformRole )
2139- var = midx .data (Qt .EditRole )
2140- self ._store_transform (var , [])
2141- modified .append (var )
2141+ key = model .data (midx , RestoreHintKey )
2142+ var = midx .data (Qt .EditRole )
2143+ self ._domain_change_hints .pop (key , None )
2144+ modified .append (var )
21422145 if modified :
21432146 with disconnected (editor .variable_changed ,
21442147 self ._on_variable_changed ):
@@ -2154,6 +2157,8 @@ def reset_all(self):
21542157 midx = model .index (i )
21552158 model .setData (midx , [], TransformRole )
21562159 model .setData (midx , None , RestoreWarningRole )
2160+ key = model .data (midx , RestoreHintKey )
2161+ self ._domain_change_hints .pop (key , None )
21572162 self .open_editor ()
21582163 self ._invalidate ()
21592164 self ._update_restore_warnings ()
@@ -2224,6 +2229,7 @@ def _restore(self):
22242229 tr , msgs = self ._sanitize_transform (coldesc .vtype , tr )
22252230 model .setData (midx , tr , TransformRole )
22262231 model .setData (midx , msgs , RestoreWarningRole )
2232+ model .setData (midx , key , RestoreHintKey )
22272233 if first_key is None :
22282234 first_key = key
22292235 # Reduce the number of hints to MAX_HINTS, but keep all current hints
@@ -2251,7 +2257,7 @@ def messages(midx):
22512257 )
22522258 self .Warning .cat_mapping_does_not_apply .clear ()
22532259 # Show warnings for non-applicable transforms
2254- for msg , names in groupby (msgs , key = itemgetter (0 )):
2260+ for msg , names in groupby (sorted ( msgs ) , key = itemgetter (0 )):
22552261 msg (", " .join (map (itemgetter (1 ), names )))
22562262
22572263 def _on_selection_changed (self , _ , deselected ):
@@ -2308,15 +2314,16 @@ def _on_variable_changed(self):
23082314 self ._update_restore_warnings ()
23092315
23102316 def _store_transform (
2311- self , var : Variable , transform : Iterable [Transform ], deconvar = None
2317+ self , var : Variable , transform : Sequence [Transform ] | None , deconvar = None
23122318 ) -> None :
23132319 deconvar = deconvar or deconstruct (var )
23142320 # Remove the existing key (if any) to put the new one at the end,
23152321 # to make sure it comes after the sentinel
23162322 self ._domain_change_hints .pop (deconvar , None )
23172323 # pylint: disable=unsupported-assignment-operation
2318- self ._domain_change_hints [deconvar ] = \
2319- [deconstruct (t ) for t in transform ]
2324+ if transform :
2325+ self ._domain_change_hints [deconvar ] = \
2326+ [deconstruct (t ) for t in transform ]
23202327
23212328 def _find_stored_transform (
23222329 self , var : Variable
0 commit comments