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()