@@ -15,12 +15,22 @@ class AppearanceSettingsChapter(BaseSettingsChapter):
1515 "dark" : "Dark theme" ,
1616 }
1717
18+ pane_tab_position_map = {
19+ "top" : "Top" ,
20+ "bottom" : "Bottom" ,
21+ "left" : "Left" ,
22+ "right" : "Right" ,
23+ }
24+
1825 def __init__ (self , parent = None ):
1926 super ().__init__ (parent )
2027
2128 # Theme selector
2229 self .theme_combo = QtWidgets .QComboBox ()
2330
31+ # Pane tab position selector
32+ self .pane_tab_position_combo = QtWidgets .QComboBox ()
33+
2434 self .build_layout ()
2535 self .connect_signals ()
2636 self .reset ()
@@ -29,6 +39,7 @@ def connect_signals(self):
2939 """Connect signals and slots."""
3040 # Emit changed signal when settings change
3141 self .theme_combo .currentTextChanged .connect (lambda : self .changed .emit ())
42+ self .pane_tab_position_combo .currentTextChanged .connect (lambda : self .changed .emit ())
3243
3344 def build_layout (self ):
3445 """Build the chapter layout."""
@@ -41,7 +52,15 @@ def build_layout(self):
4152 theme_layout .addWidget (self .theme_combo , 0 , 1 )
4253 theme_group .setLayout (theme_layout )
4354
55+ # Pane tab position section
56+ pane_tab_group = QtWidgets .QGroupBox ("Pane Tab Position" )
57+ pane_tab_layout = QtWidgets .QGridLayout ()
58+ pane_tab_layout .addWidget (QtWidgets .QLabel ("Position:" ), 0 , 0 )
59+ pane_tab_layout .addWidget (self .pane_tab_position_combo , 0 , 1 )
60+ pane_tab_group .setLayout (pane_tab_layout )
61+
4462 layout .addWidget (theme_group )
63+ layout .addWidget (pane_tab_group )
4564 layout .addStretch ()
4665
4766 self .setLayout (layout )
@@ -52,19 +71,28 @@ def reset(self):
5271 self .theme_combo .clear ()
5372 self .theme_combo .addItems (self .theme_map .values ())
5473 self .theme_combo .setCurrentText (self .theme_map .get (settings ["appearance" ]["theme" ], "System default" ))
74+
75+ self .pane_tab_position_combo .clear ()
76+ self .pane_tab_position_combo .addItems (self .pane_tab_position_map .values ())
77+ self .pane_tab_position_combo .setCurrentText (self .pane_tab_position_map .get (settings ["appearance" ]["pane_tab_position" ], "Bottom" ))
5578
5679 def has_changes (self ):
5780 """Check if there are unsaved changes."""
5881 current_state = {
5982 'theme' : self .theme_combo .currentText (),
83+ 'pane_tab_position' : self .pane_tab_position_combo .currentText (),
6084 }
6185 initial_state = {
6286 'theme' : self .theme_map .get (settings ["appearance" ]["theme" ], "System default" ),
87+ 'pane_tab_position' : self .pane_tab_position_map .get (settings ["appearance" ]["pane_tab_position" ], "Bottom" ),
6388 }
6489 return current_state != initial_state
6590
6691 def set_settings (self ):
67- """Save startup settings."""
92+ """Save appearance settings."""
6893 new_theme = self .theme_combo .currentText ()
6994 settings ["appearance" ]["theme" ] = [key for key , value in self .theme_map .items () if value == new_theme ][0 ]
95+
96+ new_pane_position = self .pane_tab_position_combo .currentText ()
97+ settings ["appearance" ]["pane_tab_position" ] = [key for key , value in self .pane_tab_position_map .items () if value == new_pane_position ][0 ]
7098
0 commit comments