35
35
STATISTICS = "Statistics"
36
36
STD_DEV = "Std Dev"
37
37
38
+ RESPONSE_DEFAULT = 0
39
+ GEN_KW_DEFAULT = 2
40
+ STD_DEV_DEFAULT = 6
41
+
38
42
logger = logging .getLogger (__name__ )
39
43
40
44
from qtpy .QtWidgets import (
@@ -137,7 +141,15 @@ def __init__(self, config_file: str, parent: QWidget | None):
137
141
self .addPlotWidget (CROSS_ENSEMBLE_STATISTICS , CrossEnsembleStatisticsPlot ())
138
142
self .addPlotWidget (STD_DEV , StdDevPlot ())
139
143
self ._central_tab .currentChanged .connect (self .currentTabChanged )
140
- self ._prev_tab_widget : QWidget | None = None
144
+
145
+ self ._prev_tab_widget_index = - 1
146
+ self ._current_tab_index = - 1
147
+ self ._prev_key_dimensionality = - 1
148
+ self ._prev_tab_widget_index_map : dict [int , int ] = {
149
+ 2 : RESPONSE_DEFAULT ,
150
+ 1 : GEN_KW_DEFAULT ,
151
+ 3 : STD_DEV_DEFAULT ,
152
+ }
141
153
142
154
QApplication .setOverrideCursor (Qt .CursorShape .WaitCursor )
143
155
try :
@@ -166,6 +178,7 @@ def __init__(self, config_file: str, parent: QWidget | None):
166
178
167
179
@Slot (int )
168
180
def currentTabChanged (self , index : Any ) -> None :
181
+ self ._current_tab_index = index
169
182
self .updatePlot ()
170
183
171
184
@Slot (int )
@@ -334,7 +347,6 @@ def keySelected(self) -> None:
334
347
for widget in self ._plot_widgets
335
348
if widget ._plotter .dimensionality == key_def .dimensionality
336
349
]
337
-
338
350
current_widget = self ._central_tab .currentWidget ()
339
351
340
352
# Enabling/disabling tab triggers the
@@ -350,17 +362,20 @@ def keySelected(self) -> None:
350
362
)
351
363
self ._central_tab .currentChanged .connect (self .currentTabChanged )
352
364
353
- # Remember which tab widget was selected when switching between
354
- # both same and different data-types.
355
- if current_widget in available_widgets :
356
- self ._central_tab . setCurrentWidget ( current_widget )
357
- else :
358
- if self . _prev_tab_widget is None :
359
- self ._central_tab .setCurrentWidget ( available_widgets [ 0 ])
360
- else :
361
- self . _central_tab . setCurrentWidget ( self . _prev_tab_widget )
362
- self ._prev_tab_widget = current_widget
365
+ if 0 < self . _prev_key_dimensionality != key_def . dimensionality :
366
+ if self . _current_tab_index == - 1 :
367
+ self . _current_tab_index = self . _prev_tab_widget_index
368
+ self ._prev_tab_widget_index_map [ self . _prev_key_dimensionality ] = (
369
+ self . _current_tab_index
370
+ )
371
+ current_widget = self ._central_tab .widget (
372
+ self . _prev_tab_widget_index_map [ key_def . dimensionality ]
373
+ )
374
+ self ._current_tab_index = - 1
363
375
376
+ self ._central_tab .setCurrentWidget (current_widget )
377
+ self ._prev_tab_widget_index = self ._central_tab .currentIndex ()
378
+ self ._prev_key_dimensionality = key_def .dimensionality
364
379
self .updatePlot ()
365
380
366
381
def toggleCustomizeDialog (self ) -> None :
0 commit comments