mirror of
https://github.com/aclist/dztui.git
synced 2026-08-28 02:37:20 +02:00
fixme: decrement button after thread closes
This commit is contained in:
parent
d9ec01d9b0
commit
c6f1d62c73
@ -139,3 +139,5 @@ class Emitter(GObject.GObject):
|
||||
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(str,))
|
||||
def keyword_set(self, keyword: str) -> None:
|
||||
pass
|
||||
|
||||
# TODO: if servers fail to load, may leave dangling widgets waiting for a signal
|
||||
|
||||
@ -526,6 +526,7 @@ class Controller(GObject.GObject):
|
||||
|
||||
# TODO: rename
|
||||
def _on_servers_loaded_init(self, emitter: "Emitter") -> None:
|
||||
"""Triggered after servers load but prior to maps loading"""
|
||||
# FIXME: wipe maps store when changing tabs if model is none
|
||||
tv = self.get_active_treeview()
|
||||
if tv.loaded is False:
|
||||
|
||||
@ -143,4 +143,5 @@ def main() -> None:
|
||||
use_miles,
|
||||
)
|
||||
print("All OK. Loading UI...")
|
||||
logger.critical("TEST")
|
||||
App(prefs)
|
||||
|
||||
@ -87,8 +87,6 @@ class ServerModelManager:
|
||||
def refresh(self) -> None:
|
||||
self.preserve_on_fail = True
|
||||
self.load()
|
||||
# TODO: if refresh is active, callback to button decrement signal
|
||||
# and do not mark refresh as sensitive
|
||||
|
||||
@call_on_thread(dialog.fetching)
|
||||
def _dump_api(self) -> None:
|
||||
|
||||
@ -21,6 +21,8 @@ from gi.repository import Gtk, GLib # noqa E402
|
||||
if TYPE_CHECKING:
|
||||
from gi.repository import GLib
|
||||
from dzgui.controllers.mc import Controller
|
||||
from dzgui.controllers.emitter import Emitter
|
||||
from dzgui.const.enum import ServerTab
|
||||
|
||||
|
||||
class Icon(Gtk.Image):
|
||||
@ -88,6 +90,9 @@ class RefreshButton(IconTextButton):
|
||||
label=atomic_buttons.refresh,
|
||||
)
|
||||
self.controller = controller
|
||||
emitter = self.controller.get_emitter()
|
||||
self.loading = False
|
||||
|
||||
self.time = 30
|
||||
|
||||
self.set_margin_top(10)
|
||||
@ -96,18 +101,21 @@ class RefreshButton(IconTextButton):
|
||||
self.set_tooltip_text(atomic_buttons.refresh_tooltip)
|
||||
|
||||
self.connect("clicked", self._on_refresh_clicked)
|
||||
emitter.connect("servers_loaded", self.start_decrement)
|
||||
|
||||
def _on_refresh_clicked(self, button: Self) -> None:
|
||||
"""Spawned in a thread"""
|
||||
self.loading = True
|
||||
self.controller.refresh_tree()
|
||||
# TODO: get server tab enum
|
||||
# if LAN tab, reload existing entries in place
|
||||
self.set_sensitive(False)
|
||||
self.show_time(True)
|
||||
# FIXME: do this after threaded call fully finishes
|
||||
# FIXME: other signals cause refresh button to become sensitive
|
||||
# after model is loaded
|
||||
# TODO: put in smm cleanup func, use signal
|
||||
GLib.timeout_add_seconds(1, self.decrement)
|
||||
self.controller.refresh_tree()
|
||||
|
||||
def start_decrement(self, emitter: "Emitter", tab: "ServerTab") -> None:
|
||||
if self.loading:
|
||||
self.set_sensitive(False)
|
||||
self.loading = False
|
||||
self.show_time(True)
|
||||
GLib.timeout_add_seconds(1, self.decrement)
|
||||
|
||||
def decrement(self) -> "GLib.SOURCE_REMOVE" | Literal[True]:
|
||||
self.time -= 1
|
||||
|
||||
@ -68,7 +68,6 @@ class RightPanel(Gtk.Box):
|
||||
|
||||
def _on_servers_loaded(self, emitter: "Emitter", context: "ServerTab") -> None:
|
||||
# TODO: similar logic on notebook page change
|
||||
print("servers loaded")
|
||||
state = self.controller.has_server_model()
|
||||
for widget in (self.refresh_button, self.filters_vbox):
|
||||
widget.set_sensitive(state)
|
||||
|
||||
@ -16,6 +16,8 @@ if TYPE_CHECKING:
|
||||
class Log(CursorMixin, HelpMenuMixin, Gtk.Box): # type: ignore
|
||||
def __init__(self, controller: "Controller") -> None:
|
||||
super().__init__(orientation=Gtk.Orientation.VERTICAL)
|
||||
# NOTE: LogTreeView is kept in a separate ScrolledWindow so that
|
||||
# checkboxes will be flush on bottom
|
||||
self.scrolled = Gtk.ScrolledWindow()
|
||||
self.treeview = LogTreeView(controller)
|
||||
self.scrolled.add(self.treeview)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user