From 8f8d7633b8ed8485b88e7fd81945a2a2b774cb97 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Wed, 5 Jan 2022 00:41:06 +0300 Subject: [PATCH] added display picons option --- app/settings.py | 14 +++++++++++--- app/ui/app_menu.ui | 8 ++++++++ app/ui/main.py | 29 +++++++++++++++++++++++++++-- app/ui/settings_dialog.glade | 1 - app/ui/settings_dialog.py | 12 +++--------- 5 files changed, 49 insertions(+), 15 deletions(-) diff --git a/app/settings.py b/app/settings.py index 9037381d..020c0b4f 100644 --- a/app/settings.py +++ b/app/settings.py @@ -2,7 +2,7 @@ # # The MIT License (MIT) # -# Copyright (c) 2018-2021 Dmitriy Yefremov +# Copyright (c) 2018-2022 Dmitriy Yefremov # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -676,6 +676,14 @@ class Settings: def dark_mode(self, value): self._settings["dark_mode"] = value + @property + def display_picons(self): + return self._settings.get("display_picons", True) + + @display_picons.setter + def display_picons(self, value): + self._settings["display_picons"] = value + @property def alternate_layout(self): return self._settings.get("alternate_layout", IS_DARWIN) @@ -711,7 +719,7 @@ class Settings: @property @lru_cache(1) def themes_path(self): - return "{}{}.themes{}".format(HOME_PATH, SEP, SEP) + return f"{HOME_PATH}{SEP}.themes{SEP}" @property def icon_theme(self): @@ -724,7 +732,7 @@ class Settings: @property @lru_cache(1) def icon_themes_path(self): - return "{}{}.icons{}".format(HOME_PATH, SEP, SEP) + return f"{HOME_PATH}{SEP}.icons{SEP}" @property def is_darwin(self): diff --git a/app/ui/app_menu.ui b/app/ui/app_menu.ui index 55cf70aa..9ac58ffd 100644 --- a/app/ui/app_menu.ui +++ b/app/ui/app_menu.ui @@ -134,6 +134,10 @@
+ + Display picons + app.display_picons + Alternate layout app.set_alternate_layout @@ -330,6 +334,10 @@
+ + Display picons + app.display_picons + Alternate layout app.set_alternate_layout diff --git a/app/ui/main.py b/app/ui/main.py index b41bb4d9..763e8f19 100644 --- a/app/ui/main.py +++ b/app/ui/main.py @@ -436,9 +436,13 @@ class Application(Gtk.Application): self._player_box.bind_property("visible", toolbar_box, "visible", 4) # Picons. self._picon_renderer = builder.get_object("picon_renderer") - builder.get_object("picon_column").set_cell_data_func(self._picon_renderer, self.picon_data_func) + self._picon_column = builder.get_object("picon_column") + self._picon_column.set_cell_data_func(self._picon_renderer, self.picon_data_func) self._fav_picon_renderer = builder.get_object("fav_picon_renderer") - builder.get_object("fav_picon_column").set_cell_data_func(self._fav_picon_renderer, self.fav_picon_data_func) + self._fav_picon_column = builder.get_object("fav_picon_column") + self._fav_picon_column.set_cell_data_func(self._fav_picon_renderer, self.fav_picon_data_func) + self._picon_column.set_visible(self._settings.display_picons) + self._fav_picon_column.set_visible(self._settings.display_picons) # Setting the last size of the window if it was saved. main_window_size = self._settings.get("window_size") if main_window_size: @@ -544,6 +548,8 @@ class Application(Gtk.Application): sa = self.set_state_action("show_control", self.on_page_show, self._settings.get("show_control", True)) sa.connect("change-state", lambda a, v: self._stack_control_box.set_visible(v)) self.bind_property("is-enigma", sa, "enabled") + # Display picons. + self.set_state_action("display_picons", self.set_display_picons, self._settings.display_picons) # 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) @@ -703,6 +709,8 @@ class Application(Gtk.Application): if self._picons_size != self._settings.list_picon_size: self._picons_size = self._settings.list_picon_size self._picons.clear() + self.refresh_models() + self._picon_renderer.set_fixed_size(self._picons_size, self._picons_size * 0.65) self._fav_picon_renderer.set_fixed_size(self._picons_size, self._picons_size * 0.65) @@ -3500,6 +3508,23 @@ class Application(Gtk.Application): # ***************** Picons ********************* # + @run_idle + def set_display_picons(self, action, value): + action.set_state(value) + set_display = bool(value) + self._settings.display_picons = set_display + self._picon_column.set_visible(set_display) + self._fav_picon_column.set_visible(set_display) + self.refresh_models() + + @run_idle + def refresh_models(self): + model = self._services_view.get_model() + self._services_view.set_model(None) + self._services_view.set_model(model) + self._fav_view.set_model(None) + self._fav_view.set_model(self._fav_model) + def picon_data_func(self, column, renderer, model, itr, data): renderer.set_property("pixbuf", self._picons.get(model.get_value(itr, Column.SRV_PICON_ID))) diff --git a/app/ui/settings_dialog.glade b/app/ui/settings_dialog.glade index deb2d515..0ec9a0c7 100644 --- a/app/ui/settings_dialog.glade +++ b/app/ui/settings_dialog.glade @@ -1885,7 +1885,6 @@ Author: Dmitriy Yefremov 72 96 - 1 diff --git a/app/ui/settings_dialog.py b/app/ui/settings_dialog.py index 296a0592..3de55294 100644 --- a/app/ui/settings_dialog.py +++ b/app/ui/settings_dialog.py @@ -69,7 +69,6 @@ class SettingsDialog: "on_add_picon_path": self.on_add_picon_path, "on_remove_picon_path": self.on_remove_picon_path, "on_lang_changed": self.on_lang_changed, - "on_picons_size_changed": self.on_picons_size_changed, "on_main_settings_visible": self.on_main_settings_visible, "on_http_use_ssl_toggled": self.on_http_use_ssl_toggled, "on_click_mode_togged": self.on_click_mode_togged, @@ -92,7 +91,6 @@ class SettingsDialog: self._profiles = self._settings.profiles self._s_type = self._settings.setting_type self._updated = False - self._current_page = None builder = get_builder(UI_RESOURCES_PATH + "settings_dialog.glade", handlers) @@ -626,14 +624,10 @@ class SettingsDialog: if box.get_active_id() != self._settings.language: self.show_info_message("Save and restart the program to apply the settings.", Gtk.MessageType.WARNING) - def on_picons_size_changed(self, box): - if self._current_page == "appearance" and box.get_active_id() != self._settings.list_picon_size: - self.show_info_message("Save and restart the program to apply the settings.", Gtk.MessageType.WARNING) - def on_main_settings_visible(self, stack, param): - self._current_page = stack.get_visible_child_name() - self._apply_presets_button.set_visible(self._current_page == "streaming") - self._reset_button.set_visible(self._current_page == "profiles") + name = stack.get_visible_child_name() + self._apply_presets_button.set_visible(name == "streaming") + self._reset_button.set_visible(name == "profiles") def on_http_use_ssl_toggled(self, button): active = button.get_active()