Reworking some tab logic to omit adding a label widget

This commit is contained in:
itdominator 2024-01-29 22:53:51 -06:00
parent be7be00f78
commit 44ef6ea2bb
7 changed files with 42 additions and 30 deletions

View File

@ -20,7 +20,7 @@ def run():
locale.setlocale(locale.LC_NUMERIC, 'C') locale.setlocale(locale.LC_NUMERIC, 'C')
setproctitle(f"{app_name}") setproctitle(f"{app_name}")
faulthandler.enable() # For better debug info # faulthandler.enable() # For better debug info
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
# Add long and short arguments # Add long and short arguments

View File

@ -34,6 +34,7 @@ class GridMixin:
dir = tab.get_current_directory() dir = tab.get_current_directory()
files = tab.get_files() files = tab.get_files()
store.clear()
for file in files: for file in files:
store.append([None, file[0]]) store.append([None, file[0]])
@ -84,8 +85,8 @@ class GridMixin:
Gtk.main_iteration() Gtk.main_iteration()
return False return False
def create_tab_widget(self, tab): def create_tab_widget(self):
return TabHeaderWidget(tab, self.close_tab) return TabHeaderWidget(self.close_tab)
def create_scroll_and_store(self, tab, wid, use_tree_view = False): def create_scroll_and_store(self, tab, wid, use_tree_view = False):
scroll = Gtk.ScrolledWindow() scroll = Gtk.ScrolledWindow()

View File

@ -34,7 +34,7 @@ class TabMixin(GridMixin):
else: else:
tab.set_path(path) 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) scroll, store = self.create_scroll_and_store(tab, wid)
index = notebook.append_page(scroll, tab_widget) index = notebook.append_page(scroll, tab_widget)
notebook.set_tab_detachable(scroll, True) notebook.set_tab_detachable(scroll, True)
@ -51,6 +51,14 @@ class TabMixin(GridMixin):
self.set_window_title() self.set_window_title()
self.set_file_watcher(tab) 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): def close_tab(self, button, eve = None):
notebook = button.get_parent().get_parent() notebook = button.get_parent().get_parent()
@ -84,12 +92,13 @@ class TabMixin(GridMixin):
del watcher del watcher
del tab del tab
gc.collect()
if not settings_manager.is_trace_debug(): if not settings_manager.is_trace_debug():
self.fm_controller.save_state() self.fm_controller.save_state()
self.set_window_title() self.set_window_title()
gc.collect()
# NOTE: Not actually getting called even tho set in the glade file... # NOTE: Not actually getting called even tho set in the glade file...
def on_tab_dnded(self, notebook, page, x, y): 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): def on_tab_switch_update(self, notebook, content = None, index = None):
self.selected_files.clear() self.selected_files.clear()
wid, tid = content.get_children()[0].get_name().split("|") wid, tid = content.get_children()[0].get_name().split("|")
self.fm_controller.set_wid_and_tid(wid, tid) self.fm_controller.set_wid_and_tid(wid, tid)
self.set_path_text(wid, tid) self.set_path_text(wid, tid)
self.set_window_title() self.set_window_title()
def get_id_from_tab_box(self, tab_box): 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): def get_tab_label(self, notebook, icon_grid):
return notebook.get_tab_label(icon_grid.get_parent()).get_children()[0] return notebook.get_tab_label(icon_grid.get_parent()).get_children()[0]

View File

@ -84,8 +84,8 @@ class GridMixin:
Gtk.main_iteration() Gtk.main_iteration()
return False return False
def create_tab_widget(self, tab): def create_tab_widget(self):
return TabHeaderWidget(tab, self.close_tab) return TabHeaderWidget(self.close_tab)
def create_scroll_and_store(self, tab, wid, use_tree_view = False): def create_scroll_and_store(self, tab, wid, use_tree_view = False):
scroll = Gtk.ScrolledWindow() scroll = Gtk.ScrolledWindow()

View File

@ -34,7 +34,7 @@ class TabMixin(GridMixin):
else: else:
tab.set_path(path) 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) scroll, store = self.create_scroll_and_store(tab, wid)
index = notebook.append_page(scroll, tab_widget) index = notebook.append_page(scroll, tab_widget)
notebook.set_tab_detachable(scroll, True) notebook.set_tab_detachable(scroll, True)
@ -53,6 +53,14 @@ class TabMixin(GridMixin):
event_system.emit("set_window_title", (tab.get_current_directory(),)) event_system.emit("set_window_title", (tab.get_current_directory(),))
self.set_file_watcher(tab) 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): def close_tab(self, button, eve = None):
notebook = button.get_parent().get_parent() notebook = button.get_parent().get_parent()
@ -90,12 +98,13 @@ class TabMixin(GridMixin):
del watcher del watcher
del tab del tab
gc.collect()
if not settings_manager.is_trace_debug(): if not settings_manager.is_trace_debug():
self.fm_controller.save_state() self.fm_controller.save_state()
self.set_window_title() self.set_window_title()
gc.collect()
# NOTE: Not actually getting called even tho set in the glade file... # NOTE: Not actually getting called even tho set in the glade file...
def on_tab_dnded(self, notebook, page, x, y): 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): def on_tab_switch_update(self, notebook, content = None, index = None):
self.selected_files.clear() 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.fm_controller.set_wid_and_tid(wid, tid)
self.set_path_text(wid, tid) self.set_path_text(wid, tid)
self.set_window_title() self.set_window_title()
def get_id_from_tab_box(self, tab_box): 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): def get_tab_label(self, notebook, icon_grid):
return notebook.get_tab_label(icon_grid.get_parent()).get_children()[0] return notebook.get_tab_label(icon_grid.get_parent()).get_children()[0]

View File

@ -103,7 +103,7 @@ class MessagePopupWidget(Gtk.Popover):
self.popup() self.popup()
self.hide_message_timeout(seconds) self.hide_message_timeout(seconds)
@threaded @daemon_threaded
def hide_message_timeout(self, seconds=3): def hide_message_timeout(self, seconds=3):
time.sleep(seconds) time.sleep(seconds)
GLib.idle_add(event_system.emit, ("hide_messages_popup")) GLib.idle_add(event_system.emit, ("hide_messages_popup"))

View File

@ -9,14 +9,12 @@ from gi.repository import Gtk
class TabHeaderWidget(Gtk.Box): class TabHeaderWidget(Gtk.Box):
"""docstring for TabHeaderWidget""" """docstring for TabHeaderWidget"""
def __init__(self, tab, close_tab): def __init__(self, close_tab):
super(TabHeaderWidget, self).__init__() super(TabHeaderWidget, self).__init__()
self._tab = tab
self._close_tab = close_tab # NOTE: Close method in tab_mixin self._close_tab = close_tab # NOTE: Close method in tab_mixin
self._setup_styling() self._setup_styling()
@ -32,25 +30,19 @@ class TabHeaderWidget(Gtk.Box):
... ...
def _load_widgets(self): def _load_widgets(self):
label = Gtk.Label() self.label = Gtk.Label()
tid = Gtk.Label()
close = Gtk.Button() close = Gtk.Button()
icon = Gtk.Image(stock=Gtk.STOCK_CLOSE) icon = Gtk.Image(stock=Gtk.STOCK_CLOSE)
label.set_label(f"{self._tab.get_end_of_path()}") self.label.set_xalign(0.0)
label.set_width_chars(len(self._tab.get_end_of_path())) self.label.set_margin_left(25)
label.set_xalign(0.0) self.label.set_margin_right(25)
label.set_margin_left(25) self.label.set_hexpand(True)
label.set_margin_right(25)
label.set_hexpand(True)
tid.set_label(f"{self._tab.get_id()}")
close.connect("released", self._close_tab) close.connect("released", self._close_tab)
close.add(icon) close.add(icon)
self.add(label) self.add(self.label)
self.add(close) self.add(close)
self.add(tid)
self.show_all() self.show_all()
tid.hide()