diff --git a/src/solarfm/__main__.py b/src/solarfm/__main__.py index b798304..3cb7b48 100644 --- a/src/solarfm/__main__.py +++ b/src/solarfm/__main__.py @@ -20,7 +20,7 @@ def run(): locale.setlocale(locale.LC_NUMERIC, 'C') setproctitle(f"{app_name}") - faulthandler.enable() # For better debug info + # faulthandler.enable() # For better debug info parser = argparse.ArgumentParser() # Add long and short arguments diff --git a/src/solarfm/core/mixins/ui/grid_mixin.py b/src/solarfm/core/mixins/ui/grid_mixin.py index 9808843..2cbcbdc 100644 --- a/src/solarfm/core/mixins/ui/grid_mixin.py +++ b/src/solarfm/core/mixins/ui/grid_mixin.py @@ -34,6 +34,7 @@ class GridMixin: dir = tab.get_current_directory() files = tab.get_files() + store.clear() for file in files: store.append([None, file[0]]) @@ -84,8 +85,8 @@ class GridMixin: Gtk.main_iteration() return False - def create_tab_widget(self, tab): - return TabHeaderWidget(tab, self.close_tab) + def create_tab_widget(self): + return TabHeaderWidget(self.close_tab) def create_scroll_and_store(self, tab, wid, use_tree_view = False): scroll = Gtk.ScrolledWindow() diff --git a/src/solarfm/core/mixins/ui/tab_mixin.py b/src/solarfm/core/mixins/ui/tab_mixin.py index 36bea62..99827f5 100644 --- a/src/solarfm/core/mixins/ui/tab_mixin.py +++ b/src/solarfm/core/mixins/ui/tab_mixin.py @@ -34,7 +34,7 @@ class TabMixin(GridMixin): else: tab.set_path(path) - tab_widget = self.create_tab_widget(tab) + tab_widget = self.get_tab_widget(tab) scroll, store = self.create_scroll_and_store(tab, wid) index = notebook.append_page(scroll, tab_widget) notebook.set_tab_detachable(scroll, True) @@ -51,6 +51,14 @@ class TabMixin(GridMixin): self.set_window_title() self.set_file_watcher(tab) + def get_tab_widget(self, tab): + tab_widget = self.create_tab_widget() + tab_widget.tab = tab + + tab_widget.label.set_label(f"{tab.get_end_of_path()}") + tab_widget.label.set_width_chars(len(tab.get_end_of_path())) + + return tab_widget def close_tab(self, button, eve = None): notebook = button.get_parent().get_parent() @@ -84,12 +92,13 @@ class TabMixin(GridMixin): del watcher del tab - gc.collect() if not settings_manager.is_trace_debug(): self.fm_controller.save_state() self.set_window_title() + gc.collect() + # NOTE: Not actually getting called even tho set in the glade file... def on_tab_dnded(self, notebook, page, x, y): ... @@ -114,12 +123,13 @@ class TabMixin(GridMixin): def on_tab_switch_update(self, notebook, content = None, index = None): self.selected_files.clear() wid, tid = content.get_children()[0].get_name().split("|") + self.fm_controller.set_wid_and_tid(wid, tid) self.set_path_text(wid, tid) self.set_window_title() def get_id_from_tab_box(self, tab_box): - return tab_box.get_children()[2].get_text() + return tab_box.tab.get_id() def get_tab_label(self, notebook, icon_grid): return notebook.get_tab_label(icon_grid.get_parent()).get_children()[0] diff --git a/src/solarfm/core/widgets/files_view/grid_mixin.py b/src/solarfm/core/widgets/files_view/grid_mixin.py index f45406a..2071fac 100644 --- a/src/solarfm/core/widgets/files_view/grid_mixin.py +++ b/src/solarfm/core/widgets/files_view/grid_mixin.py @@ -84,8 +84,8 @@ class GridMixin: Gtk.main_iteration() return False - def create_tab_widget(self, tab): - return TabHeaderWidget(tab, self.close_tab) + def create_tab_widget(self): + return TabHeaderWidget(self.close_tab) def create_scroll_and_store(self, tab, wid, use_tree_view = False): scroll = Gtk.ScrolledWindow() diff --git a/src/solarfm/core/widgets/files_view/tab_mixin.py b/src/solarfm/core/widgets/files_view/tab_mixin.py index 13bab35..f87eeb5 100644 --- a/src/solarfm/core/widgets/files_view/tab_mixin.py +++ b/src/solarfm/core/widgets/files_view/tab_mixin.py @@ -34,7 +34,7 @@ class TabMixin(GridMixin): else: tab.set_path(path) - tab_widget = self.create_tab_widget(tab) + tab_widget = self.get_tab_widget(tab) scroll, store = self.create_scroll_and_store(tab, wid) index = notebook.append_page(scroll, tab_widget) notebook.set_tab_detachable(scroll, True) @@ -53,6 +53,14 @@ class TabMixin(GridMixin): event_system.emit("set_window_title", (tab.get_current_directory(),)) self.set_file_watcher(tab) + def get_tab_widget(self, tab): + tab_widget = self.create_tab_widget() + tab_widget.tab_id = tab.get_id() + + tab_widget.label.set_label(f"{tab.get_end_of_path()}") + tab_widget.label.set_width_chars(len(tab.get_end_of_path())) + + return tab_widget def close_tab(self, button, eve = None): notebook = button.get_parent().get_parent() @@ -90,12 +98,13 @@ class TabMixin(GridMixin): del watcher del tab - gc.collect() if not settings_manager.is_trace_debug(): self.fm_controller.save_state() self.set_window_title() + gc.collect() + # NOTE: Not actually getting called even tho set in the glade file... def on_tab_dnded(self, notebook, page, x, y): ... @@ -119,13 +128,13 @@ class TabMixin(GridMixin): def on_tab_switch_update(self, notebook, content = None, index = None): self.selected_files.clear() - wid, tid = content.get_children()[0].get_name().split("|") + wid, tid = content.get_children()[0].tab.get_name().split("|") self.fm_controller.set_wid_and_tid(wid, tid) self.set_path_text(wid, tid) self.set_window_title() def get_id_from_tab_box(self, tab_box): - return tab_box.get_children()[2].get_text() + return tab_box.tab.get_id() def get_tab_label(self, notebook, icon_grid): return notebook.get_tab_label(icon_grid.get_parent()).get_children()[0] diff --git a/src/solarfm/core/widgets/popups/message_popup_widget.py b/src/solarfm/core/widgets/popups/message_popup_widget.py index 75b0b5c..f3517a4 100644 --- a/src/solarfm/core/widgets/popups/message_popup_widget.py +++ b/src/solarfm/core/widgets/popups/message_popup_widget.py @@ -103,7 +103,7 @@ class MessagePopupWidget(Gtk.Popover): self.popup() self.hide_message_timeout(seconds) - @threaded + @daemon_threaded def hide_message_timeout(self, seconds=3): time.sleep(seconds) GLib.idle_add(event_system.emit, ("hide_messages_popup")) @@ -126,4 +126,4 @@ class MessagePopupWidget(Gtk.Popover): with open(target, "w") as f: f.write(text) - save_location_prompt.destroy() + save_location_prompt.destroy() \ No newline at end of file diff --git a/src/solarfm/core/widgets/tab_header_widget.py b/src/solarfm/core/widgets/tab_header_widget.py index df07706..729db6f 100644 --- a/src/solarfm/core/widgets/tab_header_widget.py +++ b/src/solarfm/core/widgets/tab_header_widget.py @@ -9,14 +9,12 @@ from gi.repository import Gtk - class TabHeaderWidget(Gtk.Box): """docstring for TabHeaderWidget""" - def __init__(self, tab, close_tab): + def __init__(self, close_tab): super(TabHeaderWidget, self).__init__() - self._tab = tab self._close_tab = close_tab # NOTE: Close method in tab_mixin self._setup_styling() @@ -32,25 +30,19 @@ class TabHeaderWidget(Gtk.Box): ... def _load_widgets(self): - label = Gtk.Label() - tid = Gtk.Label() + self.label = Gtk.Label() close = Gtk.Button() icon = Gtk.Image(stock=Gtk.STOCK_CLOSE) - label.set_label(f"{self._tab.get_end_of_path()}") - label.set_width_chars(len(self._tab.get_end_of_path())) - label.set_xalign(0.0) - label.set_margin_left(25) - label.set_margin_right(25) - label.set_hexpand(True) - tid.set_label(f"{self._tab.get_id()}") + self.label.set_xalign(0.0) + self.label.set_margin_left(25) + self.label.set_margin_right(25) + self.label.set_hexpand(True) close.connect("released", self._close_tab) close.add(icon) - self.add(label) + self.add(self.label) self.add(close) - self.add(tid) - self.show_all() - tid.hide() + self.show_all() \ No newline at end of file