feat: update saved tab label

This commit is contained in:
aclist 2026-04-18 20:08:32 +09:00
parent 0949a0d8a9
commit af4d79f190
4 changed files with 24 additions and 7 deletions

View File

@ -22,6 +22,11 @@ class Emitter(GObject.GObject):
"""User invoked Ctrl-f keybinding from ServerTreeView"""
pass
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=())
def saved_servers_changed(self) -> None:
"""Record was added/removed from Saved Servers model"""
pass
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=())
def request_maps_focus(self) -> None:
"""User invoked Ctrl-m keybinding from ServerTreeView"""

View File

@ -41,7 +41,9 @@ class ProxyModelManager:
self.success = True
def has_control_model(self) -> bool:
pass
if self.control_model is None:
return False
return True
def append_row(self, row: list) -> None:
self.proxy_model.append(row)

View File

@ -264,11 +264,13 @@ class ServerModelManager:
# NOTE: abort early if Saved Servers tab was not loaded yet
config_man.remove_saved_server(fqip)
if proxy_man.has_control_model() is False:
self.thread_man.set_cleanup_func(StoredFunc(self._cleanup_when_no_model))
return
proxy_man.remove_row_from_control(record)
else:
config_man.add_saved_server(fqip)
if proxy_man.has_control_model() is False:
self.thread_man.set_cleanup_func(StoredFunc(self._cleanup_when_no_model))
return
proxy_man.append_row_to_control(record)
@ -276,6 +278,9 @@ class ServerModelManager:
self._sort_unique_maps(control_model)
self.thread_man.set_cleanup_func(StoredFunc(self._cleanup_single_ip))
def _cleanup_when_no_model(self) -> None:
self.emitter.emit("saved_servers_changed")
def _dump_history(self) -> None:
history = self.controller.get_prefs().paths.history
try:
@ -325,6 +330,7 @@ class ServerModelManager:
self.emitter.emit("servers_loaded_init")
self.first_iteration = False
self.emitter.emit("saved_servers_changed")
def _update_maps(self) -> None:
filter_man = self.tv.get_filter_man()

View File

@ -56,6 +56,15 @@ class ServerNotebook(Gtk.ScrolledWindow):
self.connect("unmap", self._on_unmap)
self.emitter.connect("servers_loaded", self._on_servers_loaded)
self.emitter.connect("saved_servers_changed", self._on_saved_servers_changed)
def _on_saved_servers_changed(self, emitter: "Emitter") -> None:
saved = 1
if self.notebook.get_current_page() == saved:
return
page = self.notebook.get_nth_page(saved)
label = self.notebook.get_tab_label(page)
label.set_text(f"{server_labels.saved}*")
def _on_servers_loaded(self, emitter: "Emitter", tab: "ServerTab") -> None:
# NOTE: workaround for GTK bug where fullscreen causes headers to vanish when model is None
@ -101,13 +110,8 @@ class ServerNotebook(Gtk.ScrolledWindow):
if self.controller.loaded is False:
return
# TODO: wipe statusbar when changing pages
label = self.notebook.get_tab_label_text(child)
if label is None:
return
# TODO: strings, tab activity notifier
# TODO: strings
text = label.strip("*")
self.notebook.set_tab_label_text(child, text)