Skip to content

Commit c14cda6

Browse files
committed
Set tab position in settings
1 parent fe35918 commit c14cda6

3 files changed

Lines changed: 43 additions & 2 deletions

File tree

activity_browser/app/main_window.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ def apply_settings(self, load=False):
217217
logger.warning(f"Project: {bd.projects.current} is not yet BW25 compatible")
218218
app.actions.ProjectSwitch.set_warning_bar()
219219

220-
# Apply appearance settings
220+
# Apply color scheme settings
221221
if app.settings["appearance"]["theme"] == "dark":
222222
hint = QtCore.Qt.ColorScheme.Dark
223223
elif app.settings["appearance"]["theme"] == "light":
@@ -227,6 +227,18 @@ def apply_settings(self, load=False):
227227

228228
app.application.styleHints().setColorScheme(hint)
229229

230+
# apply pane tab position
231+
position = app.settings["appearance"]["pane_tab_position"]
232+
if position == "top":
233+
qt_position = QtWidgets.QTabWidget.North
234+
if position == "bottom":
235+
qt_position = QtWidgets.QTabWidget.South
236+
if position == "left":
237+
qt_position = QtWidgets.QTabWidget.West
238+
if position == "right":
239+
qt_position = QtWidgets.QTabWidget.East
240+
self.setTabPosition(QtCore.Qt.DockWidgetArea.AllDockWidgetAreas, qt_position)
241+
230242
def connect_signals(self):
231243
app.signals.project.changed.connect(self.sync)
232244
app.signals.settings.changed.connect(self.apply_settings)

activity_browser/app/pages/settings/appearance.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

activity_browser/bwutils/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
},
1717
"appearance": {
1818
"theme": "default",
19+
"pane_tab_position": "bottom",
1920
}
2021
}
2122

0 commit comments

Comments
 (0)