From f580c5d83cabcbeff3fed7b12b5fb0b9416ed6b2 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Sat, 18 Feb 2023 18:35:09 +0300 Subject: [PATCH] added header bar option on macOS --- app/ui/app_menu.ui | 22 ++++++++++++++++------ app/ui/main.glade | 6 +++--- app/ui/main.py | 28 +++++++++++++++++++++++----- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/app/ui/app_menu.ui b/app/ui/app_menu.ui index ee08a5e0..18aee0bd 100644 --- a/app/ui/app_menu.ui +++ b/app/ui/app_menu.ui @@ -75,13 +75,13 @@
Settings - app.on_settings + app.preferences
Exit - app.on_close_app + app.quit
@@ -156,6 +156,11 @@ Alternate layout app.set_alternate_layout + + Alternate window title + app.set_alternate_title + action-disabled + @@ -193,7 +198,7 @@
About - app.on_about_app + app.about
@@ -202,19 +207,19 @@
About - app.on_about_app + app.about
Settings - app.on_settings + app.preferences
Exit - app.on_close_app + app.quit
@@ -372,6 +377,11 @@ Alternate layout app.set_alternate_layout + + Alternate window title + app.set_alternate_title + action-disabled + diff --git a/app/ui/main.glade b/app/ui/main.glade index 5a8bfc43..3baae07c 100644 --- a/app/ui/main.glade +++ b/app/ui/main.glade @@ -898,7 +898,7 @@ Author: Dmitriy Yefremov True True 2 - app.on_settings + app.preferences Settings @@ -949,7 +949,7 @@ Author: Dmitriy Yefremov True True True - app.on_about_app + app.about About @@ -963,8 +963,8 @@ Author: Dmitriy Yefremov True True True + app.quit Exit - False diff --git a/app/ui/main.py b/app/ui/main.py index 8eacc9c1..417e7fbb 100644 --- a/app/ui/main.py +++ b/app/ui/main.py @@ -649,7 +649,8 @@ class Application(Gtk.Application): builder = get_builder(UI_RESOURCES_PATH + "app_menu.ui", tag="attribute") if not USE_HEADER_BAR: if IS_DARWIN: - self.set_app_menu(builder.get_object("mac_app_menu")) + if not self.get_app_menu(): + self.set_app_menu(builder.get_object("mac_app_menu")) self.set_menubar(builder.get_object("mac_menu_bar")) else: self.set_menubar(builder.get_object("menu_bar")) @@ -704,14 +705,17 @@ class Application(Gtk.Application): self.set_action(action_name, ac) def init_actions(self): + # Main actions. + self.set_action("preferences", self.on_settings) + self.set_action("about", self.on_about_app) + self.set_action("quit", self.on_close_app) + # Import. self.set_action("on_import_bouquet", self.on_import_bouquet) self.set_action("on_import_bouquets", self.on_import_bouquets) self.set_action("on_new_configuration", self.on_new_configuration) self.set_action("on_import_from_web", self.on_import_from_web) - self.set_action("on_settings", self.on_settings) + # Tools. self.set_action("on_backup_tool_show", self.on_backup_tool_show) - self.set_action("on_about_app", self.on_about_app) - self.set_action("on_close_app", self.on_close_app) self.set_state_action("on_telnet_show", self.on_telnet_show, False) self.set_state_action("on_logs_show", self.on_logs_show, False) # Filter. @@ -768,6 +772,9 @@ class Application(Gtk.Application): # Alternate layout. sa = self.set_state_action("set_alternate_layout", self.set_use_alt_layout, self._settings.alternate_layout) sa.connect("change-state", self.on_layout_change) + # Header bar for macOS. + sa = self.set_state_action("set_alternate_title", self.set_use_alt_title, self._settings.use_header_bar) + sa.set_enabled(IS_DARWIN) # Menu bar and playback. self.set_action("on_playback_close", self._player_box.on_close) if not USE_HEADER_BAR: @@ -804,7 +811,7 @@ class Application(Gtk.Application): self.set_accels_for_action("app.open_data", ["o"]) self.set_accels_for_action("app.on_hide", ["h"]) self.set_accels_for_action("app.on_locked", ["l"]) - self.set_accels_for_action("app.on_close_app", ["q"]) + self.set_accels_for_action("app.quit", ["q"]) self.set_accels_for_action("app.on_edit", ["e"]) self.set_accels_for_action("app.on_telnet_show", ["t"]) self.set_accels_for_action("app.on_logs_show", ["l"]) @@ -1106,6 +1113,17 @@ class Application(Gtk.Application): action.set_state(value) self._settings.alternate_layout = bool(value) + def set_use_alt_title(self, action, value): + action.set_state(value) + value = bool(value) + self._settings.use_header_bar = bool(value) + + msg = get_message("Restart the program to apply all changes.") + if value: + warn = "It can cause some problems." + msg = f"{get_message('EXPERIMENTAL!')} {warn} {msg}" + self.show_info_message(msg, Gtk.MessageType.WARNING) + @run_idle def on_layout_change(self, action, value): is_alt = bool(value)