@@ -46,38 +46,6 @@ def __init__(self):
4646 self .logger_dock .setWidget (self .logger_views [1 ])
4747 self .plot_dock = MeasuremenPlotter (self )
4848
49- # Add docks to the QMainWindow of the data tab
50- self .data_tab .addDockWidget (
51- Qt .TopDockWidgetArea ,
52- self .measurement_dock
53- )
54- self .data_tab .splitDockWidget (
55- self .measurement_dock , self .parameter_dock , Qt .Orientation .Vertical
56- )
57- self .data_tab .addDockWidget (
58- Qt .TopDockWidgetArea ,
59- self .observable_dock
60- )
61- self .data_tab .splitDockWidget (
62- self .observable_dock , self .condition_dock , Qt .Orientation .Vertical
63- )
64- self .data_tab .addDockWidget (
65- Qt .BottomDockWidgetArea ,
66- self .logger_dock
67- )
68- self .data_tab .addDockWidget (
69- Qt .BottomDockWidgetArea ,
70- self .plot_dock
71- )
72- self .data_tab .tabifyDockWidget (self .plot_dock , self .logger_dock )
73- # TODO: Needs better initial sizing. @Frank can you help?
74- self .data_tab .resizeDocks (
75- [self .logger_dock , self .measurement_dock ],
76- [self .height () * 0.15 , self .height () * 0.3 ],
77- Qt .Vertical
78- )
79-
80-
8149 # Connect the visibility changes of the QDockWidget instances to a slot that saves their visibility status
8250 self .dock_visibility = {
8351 self .condition_dock : self .condition_dock .isVisible (),
@@ -87,6 +55,7 @@ def __init__(self):
8755 self .logger_dock : self .logger_dock .isVisible (),
8856 self .plot_dock : self .plot_dock .isVisible (),
8957 }
58+ self .default_view ()
9059 self .condition_dock .visibilityChanged .connect (
9160 self .save_dock_visibility
9261 )
@@ -120,6 +89,49 @@ def __init__(self):
12089
12190 self .find_replace_bar = None
12291
92+ def default_view (self ):
93+ """Reset the view to a fixed 3x2 grid using manual geometry."""
94+ if hasattr (self , "dock_visibility" ):
95+ for dock in self .dock_visibility :
96+ dock .setParent (None ) # fully remove from layout
97+
98+ self .tab_widget .setCurrentIndex (0 )
99+ self .data_tab .updateGeometry ()
100+ self .data_tab .repaint ()
101+
102+ # Get available geometry
103+ available_rect = self .data_tab .contentsRect ()
104+ width = available_rect .width () // 2
105+ height = available_rect .height () // 3
106+ x_left = available_rect .left ()
107+ x_right = x_left + width
108+ y_positions = [available_rect .top () + i * height for i in range (3 )]
109+
110+ # Define dock + positions
111+ layout = [
112+ (self .measurement_dock , x_left , y_positions [0 ]),
113+ (self .parameter_dock , x_left , y_positions [1 ]),
114+ (self .logger_dock , x_left , y_positions [2 ]),
115+ (self .observable_dock , x_right , self .measurement_dock ),
116+ (self .condition_dock , x_right , self .parameter_dock ),
117+ (self .plot_dock , x_right , self .logger_dock ),
118+ ]
119+
120+ for dock , x , y in layout :
121+ area = Qt .LeftDockWidgetArea
122+ if x == x_left :
123+ self .data_tab .addDockWidget (area , dock )
124+ dock .setFloating (True )
125+ dock .setGeometry (x , y , width , height )
126+ dock .setFloating (False )
127+ if x == x_right :
128+ self .data_tab .splitDockWidget (
129+ y , dock , Qt .Horizontal
130+ )
131+
132+ if hasattr (self , "dock_visibility" ):
133+ for dock in self .dock_visibility :
134+ dock .setVisible (True )
123135
124136 def dragEnterEvent (self , event ):
125137 if event .mimeData ().hasUrls ():
@@ -214,7 +226,6 @@ def load_settings(self):
214226 self .data_tab .restoreGeometry (settings .value ("data_tab/geometry" ))
215227 self .data_tab .restoreState (settings .value ("data_tab/state" ))
216228
217-
218229 def save_settings (self ):
219230 """Save the settings to the QSettings object."""
220231 settings = QSettings ("petab" , "petab_gui" )
0 commit comments