From 4e59bdf38ed3403b5ee7f6789626c2074daaaeef Mon Sep 17 00:00:00 2001 From: DYefremov Date: Sat, 23 Oct 2021 11:48:20 +0300 Subject: [PATCH] redesigned info displaying for the picons tab --- app/ui/picons.glade | 368 ++++++++++++++++++++++++++++++-------------- app/ui/picons.py | 53 ++++--- 2 files changed, 286 insertions(+), 135 deletions(-) diff --git a/app/ui/picons.glade b/app/ui/picons.glade index 2deedf21..969ab05b 100644 --- a/app/ui/picons.glade +++ b/app/ui/picons.glade @@ -33,6 +33,24 @@ Author: Dmitriy Yefremov + + True + False + + + True + False + Open folder + + + + + True + False + Extract... + + + @@ -176,11 +194,6 @@ Author: Dmitriy Yefremov - - True - False - edit-undo - True False @@ -199,12 +212,16 @@ Author: Dmitriy Yefremov Remove selection True False - remove_selection_image False + + True + False + edit-undo + @@ -215,7 +232,7 @@ Author: Dmitriy Yefremov - + True False 0.49000000953674316 @@ -227,7 +244,6 @@ Author: Dmitriy Yefremov 5 5 2 - 5 vertical @@ -249,7 +265,7 @@ Author: Dmitriy Yefremov True False - edit-redo-symbolic + object-rotate-right-symbolic @@ -270,7 +286,7 @@ Author: Dmitriy Yefremov True False - gtk-cancel + gtk-close @@ -285,6 +301,28 @@ Author: Dmitriy Yefremov True False 5 + + + True + False + True + Add picons + add_menu + + + True + False + list-add + 0 + + + + + False + True + 0 + + False @@ -385,56 +423,84 @@ Author: Dmitriy Yefremov True False + center expand - Explorer + 50 True True False + Explorer True False converter_button + + + True + False + folder-open-symbolic + + True True 0 + True - Downloader + 50 True True False + Downloader True False manager_button + + + True + False + insert-image-symbolic + + True True 1 + True - Converter + 50 True True False + Converter True False manager_button + + + True + False + object-rotate-right-symbolic + + True True 2 + True @@ -521,11 +587,11 @@ Author: Dmitriy Yefremov True False - 5 True False + 3 vertical 5 @@ -580,7 +646,7 @@ Author: Dmitriy Yefremov False True - 1 + 0 @@ -725,7 +791,7 @@ Author: Dmitriy Yefremov True False vertical - 5 + 2 True @@ -826,7 +892,7 @@ Author: Dmitriy Yefremov True True - 3 + 1 @@ -847,71 +913,48 @@ Author: Dmitriy Yefremov True True - 2 + 1 - + False 0 in - + + True False - other - - + 5 + 5 + 5 + + + 128 + 72 + True False - 6 - end + gtk-missing-image + 6 + False - False - 0 - - - - - False - 10 - - - 128 - 72 - True - False - gtk-missing-image - 6 - - - - False - True - 0 - - - - - True - False - end - - - False - True - 1 - - - - - False - False + True 0 - + + True + False + end + + + False + True + 2 + @@ -922,7 +965,7 @@ Author: Dmitriy Yefremov False True - 6 + 2 @@ -1220,7 +1263,6 @@ Author: Dmitriy Yefremov 150 True True - 2 out @@ -1347,33 +1389,6 @@ Author: Dmitriy Yefremov 2 - - - True - False - Current picons path: - 0.019999999552965164 - - - False - True - 4 - - - - - True - True - folder-open - False - - - - False - True - 5 - - True @@ -1403,7 +1418,7 @@ Author: Dmitriy Yefremov True False - 2 + 5 True @@ -1415,6 +1430,7 @@ Author: Dmitriy Yefremov True False + 5 vertical @@ -1489,6 +1505,7 @@ Author: Dmitriy Yefremov True False center + 5 No(default) @@ -1696,41 +1713,162 @@ Author: Dmitriy Yefremov - - True + False + 5 + 0 + in - - 150 - True - True - in - 240 - - + + False + bottom + other + True + + + False + end + + + False + False + 0 + + + + True False - False - word-char - 5 - 5 - True + + + True + True + in + + + True + True + False + 5 + 5 + 2 + 2 + + + + + True + True + 0 + + + + + + + True + True + 0 + + + + - - + + + + + + True + True + 3 + + + + + 24 + True + False + 5 + 5 + 2 + 5 + + True False - Extra: + document-properties + + False + True + 0 + + + + + True + False + 0 + 4 + 0 + + + False + True + 1 + + + + + True + False + + + False + True + 2 + + + + + True + False + Current picons path + document-open-symbolic + + + False + True + 3 + + + + + True + False + Current picons path + / + end + 0 + + + + + + True + True + 4 + False True - 2 + 4 diff --git a/app/ui/picons.py b/app/ui/picons.py index 8de41551..89a0f646 100644 --- a/app/ui/picons.py +++ b/app/ui/picons.py @@ -58,6 +58,7 @@ class PiconManager(Gtk.Box): self._app = app self._app.connect("page-changed", self.update_picons_dest) self._app.connect("filter-toggled", self.on_app_filter_toggled) + self._app.connect("profile-changed", self.on_profile_changed) self._app.fav_view.connect("row-activated", self.on_fav_changed) self._picon_ids = picon_ids self._sat_positions = sat_positions @@ -127,15 +128,10 @@ class PiconManager(Gtk.Box): self._picons_src_filter_model.set_visible_func(self.picons_src_filter_function) self._picons_dst_filter_model = builder.get_object("picons_dst_filter_model") self._picons_dst_filter_model.set_visible_func(self.picons_dst_filter_function) - self._expander = builder.get_object("expander") - self._text_view = builder.get_object("text_view") self._src_filter_button = builder.get_object("src_filter_button") self._dst_filter_button = builder.get_object("dst_filter_button") self._picons_filter_entry = builder.get_object("picons_filter_entry") - self._picons_dir_entry = builder.get_object("picons_dir_entry") - self._info_check_button = builder.get_object("info_check_button") - self._picon_info_image = builder.get_object("picon_info_image") - self._picon_info_label = builder.get_object("picon_info_label") + self._current_path_label = builder.get_object("current_path_label") self._download_source_button = builder.get_object("download_source_button") self._receive_button = builder.get_object("receive_button") self._convert_button = builder.get_object("convert_button") @@ -163,6 +159,15 @@ class PiconManager(Gtk.Box): self._cancel_button.bind_property("visible", self._header_download_box, "visible", 4) self._convert_button.bind_property("visible", self._header_download_box, "visible", 4) self._download_source_button.bind_property("visible", self._receive_button, "visible") + # Info. + self._dst_count_label = builder.get_object("dst_count_label") + self._info_check_button = builder.get_object("info_check_button") + self._picon_info_image = builder.get_object("picon_info_image") + self._picon_info_label = builder.get_object("picon_info_label") + self._info_view = builder.get_object("info_view") + self._info_bar = builder.get_object("info_bar") + self._info_bar.bind_property("visible", builder.get_object("info_bar_frame"), "visible") + self._info_bar.connect("response", lambda b, r: b.set_visible(False)) # Filter. self._filter_bar = builder.get_object("filter_bar") self._auto_filer_switch = builder.get_object("auto_filer_switch") @@ -178,9 +183,7 @@ class PiconManager(Gtk.Box): self._src_button.bind_property("active", builder.get_object("explorer_dst_label"), "visible") self._src_button.bind_property("active", builder.get_object("src_picon_box_frame"), "visible") self._filter_button.bind_property("visible", self._src_button, "visible") - explorer_info_bar = builder.get_object("explorer_info_bar") - explorer_info_bar.bind_property("visible", builder.get_object("explorer_info_bar_frame"), "visible") - self._info_check_button.bind_property("active", explorer_info_bar, "visible") + self._info_check_button.bind_property("active", builder.get_object("explorer_info_box_frame"), "visible") # Header buttons. -> Used instead stack switcher. self._manager_button = builder.get_object("manager_button") self._manager_button.bind_property("active", builder.get_object("manager_label"), "visible") @@ -193,9 +196,9 @@ class PiconManager(Gtk.Box): # Settings self._settings = settings self._s_type = settings.setting_type - self._picons_dir_entry.set_text(self._settings.profile_picons_path) + self._current_path_label.set_text(self._settings.profile_picons_path) - self.pack_start(builder.get_object("picon_manager_frame"), True, True, 0) + self.pack_start(builder.get_object("main_frame"), True, True, 0) self.show() if not len(self._picon_ids) and self._s_type is SettingsType.ENIGMA_2: @@ -240,6 +243,10 @@ class PiconManager(Gtk.Box): self._services = {s.picon_id: s for s in self._app.current_services.values() if s.picon_id} self.update_picons_data(self._picons_dest_view) + def on_profile_changed(self, app, data): + self._current_path_label.set_text(self._settings.profile_picons_path) + self.update_picons_dest(app, self._app.page) + def update_picons_data(self, view, path=None): if view is self._picons_dest_view: self.update_picon_info() @@ -257,18 +264,24 @@ class PiconManager(Gtk.Box): if index % factor == 0: yield True + self._dst_count_label.set_text("0") if not os.path.isdir(path): return - for file in os.listdir(path): + for index, file in enumerate(os.listdir(path)): if self._terminate: return p_path = "{}{}{}".format(path, SEP, file) p = self.get_pixbuf_at_scale(p_path, 72, 48, True) if p: - yield model.append((p, file, p_path)) + model.append((p, file, p_path)) + if index % factor == 0: + self._dst_count_label.set_text(str(len(model))) + yield True + + self._dst_count_label.set_text(str(len(model))) yield True def update_picons_from_file(self, view, uri): @@ -382,8 +395,8 @@ class PiconManager(Gtk.Box): @run_idle def show_assign_info(self, fav_ids): - self._expander.set_expanded(True) - self._text_view.get_buffer().set_text("") + self._info_bar.show() + self._info_view.get_buffer().set_text("") for i in fav_ids: srv = self._app.current_services.get(i, None) if srv: @@ -663,7 +676,7 @@ class PiconManager(Gtk.Box): @run_task def start_download(self, providers): self._is_downloading = True - GLib.idle_add(self._expander.set_expanded, True) + GLib.idle_add(self._info_bar.set_visible, True) for prv in providers: if self._download_src is self.DownloadSource.LYNG_SAT and not self._POS_PATTERN.match(prv[2]): @@ -673,7 +686,7 @@ class PiconManager(Gtk.Box): return try: - picons_path = self._picons_dir_entry.get_text() + picons_path = self._current_path_label.get_text() os.makedirs(os.path.dirname(picons_path), exist_ok=True) self.show_info_message(get_message("Please, wait..."), Gtk.MessageType.INFO) providers = (Provider(*p) for p in providers) @@ -757,7 +770,7 @@ class PiconManager(Gtk.Box): @run_idle def append_output(self, char): - append_text_to_tview(char, self._text_view) + append_text_to_tview(char, self._info_view) @run_task def resize(self, path): @@ -802,7 +815,7 @@ class PiconManager(Gtk.Box): @run_task def run_func(self, func, update=False): try: - GLib.idle_add(self._expander.set_expanded, True) + GLib.idle_add(self._info_bar.set_visible, True) GLib.idle_add(self._header_download_box.set_sensitive, False) func() except OSError as e: @@ -954,7 +967,7 @@ class PiconManager(Gtk.Box): self._app.show_error_message("Select paths!") return - self._expander.set_expanded(True) + self._info_bar.set_visible(True) convert_to(src_path=picons_path, dest_path=save_path, s_type=SettingsType.ENIGMA_2,