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