added display picons option

This commit is contained in:
DYefremov
2022-01-05 00:41:06 +03:00
parent c997724300
commit 8f8d7633b8
5 changed files with 49 additions and 15 deletions

View File

@@ -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):

View File

@@ -134,6 +134,10 @@
</item>
</section>
<section>
<item>
<attribute name="label" translatable="yes">Display picons</attribute>
<attribute name="action">app.display_picons</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Alternate layout</attribute>
<attribute name="action">app.set_alternate_layout</attribute>
@@ -330,6 +334,10 @@
</item>
</section>
<section>
<item>
<attribute name="label" translatable="yes">Display picons</attribute>
<attribute name="action">app.display_picons</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Alternate layout</attribute>
<attribute name="action">app.set_alternate_layout</attribute>

View File

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

View File

@@ -1885,7 +1885,6 @@ Author: Dmitriy Yefremov
<item id="72">72</item>
<item id="96">96</item>
</items>
<signal name="changed" handler="on_picons_size_changed" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>

View File

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