mirror of
https://github.com/aclist/dztui.git
synced 2026-08-26 17:57:06 +02:00
feat: threading WIP
This commit is contained in:
parent
fdb6b342f7
commit
00ca59698c
@ -91,8 +91,9 @@ class Controller:
|
||||
self.crumbs_cache = ""
|
||||
self.mediator = AppNavigation()
|
||||
self.prefs: UserPrefs
|
||||
|
||||
self.model_manager = ModelManager()
|
||||
# TODO: poc
|
||||
self.loaded = False
|
||||
|
||||
def register_widget(self, attr: str, widget: Gtk.Widget) -> None:
|
||||
try:
|
||||
@ -483,6 +484,8 @@ class Controller:
|
||||
# NOTE: manipulates mod store
|
||||
case ContextMenu.DELETE_MOD:
|
||||
self.delete_single_mod(path)
|
||||
# TODO: hook treeview changed signal
|
||||
# Gtk.TreeModel, row-inserted/row-deleted
|
||||
self.update_mod_statusbar()
|
||||
remove_stale_signatures(
|
||||
self.prefs.paths.config,
|
||||
@ -545,11 +548,31 @@ class Controller:
|
||||
def unselect_all_mods(self) -> None:
|
||||
self.mediator.modtreeview.get_selection().unselect_all()
|
||||
|
||||
def dump_test(self) -> None:
|
||||
import time
|
||||
time.sleep(1)
|
||||
# TODO: use model managers, etc.
|
||||
self.data = (["BAR", "a", "a", "a", 1, 1, 1, "185.207.214.16:2302", 0, 0, "a", False])
|
||||
# TODO: refer to prior implementation--should need to load data into model while in thread
|
||||
self.get_func_data()
|
||||
self.destroy_on_idle()
|
||||
|
||||
def get_func_data(self) -> tuple:
|
||||
# TODO: use model manager
|
||||
treeview = self.get_active_treeview()
|
||||
model = treeview.get_model()
|
||||
data = self.data
|
||||
model.append(data)
|
||||
treeview.set_loaded(True)
|
||||
self.update_server_status()
|
||||
treeview.grab_focus()
|
||||
|
||||
def highlight_stale(self) -> None:
|
||||
self.call_on_thread(self.colorize_mods)
|
||||
|
||||
def call_on_thread(self, func: Callable, *args) -> None:
|
||||
self.wait_dialog = GenericDialog(self, strings.dialog.fetching, Popup.WAIT)
|
||||
from dzgui.views.dialogs.generic import WaitDialog
|
||||
self.wait_dialog = WaitDialog(self, strings.dialog.fetching)
|
||||
self.wait_dialog.show_all()
|
||||
thread = threading.Thread(target=func, args=args)
|
||||
thread.start()
|
||||
@ -644,21 +667,21 @@ class Controller:
|
||||
self.populate_model()
|
||||
|
||||
def populate_model(self) -> None:
|
||||
print("POPULATING MODEL")
|
||||
# TODO: always use same server model, store in servertreeview class
|
||||
treeview = self.get_active_treeview()
|
||||
if treeview.get_loaded() is False:
|
||||
new_model = self.model_manager.new_model()
|
||||
# NOTE: set_query_func()
|
||||
func = treeview.get_query_func()
|
||||
print(func)
|
||||
if func is not None:
|
||||
model = treeview.get_model()
|
||||
print(model)
|
||||
# TODO: this may lag?
|
||||
model.clear()
|
||||
data = func()
|
||||
# TODO: threading
|
||||
model.append(data)
|
||||
treeview.set_loaded(True)
|
||||
self.update_server_status()
|
||||
treeview.grab_focus()
|
||||
self.set_callback(None, None)#self.get_func_data)
|
||||
self.call_on_thread(func)
|
||||
|
||||
def focus_button_box(self) -> None:
|
||||
self.mediator.right_panel.focus_button_box()
|
||||
|
||||
@ -549,6 +549,7 @@ class LanPanel:
|
||||
scan_button: str
|
||||
placeholder: str
|
||||
entry_tooltip: str
|
||||
scan_tooltip: str
|
||||
|
||||
lan_panel = LanPanel(
|
||||
heading="LAN query port",
|
||||
@ -556,11 +557,10 @@ lan_panel = LanPanel(
|
||||
custom_button="Custom port",
|
||||
scan_button="Scan",
|
||||
placeholder="Enter the query port (1-65535)",
|
||||
entry_tooltip="Specify the port to search for DayZ servers on the local network"
|
||||
entry_tooltip="Specify the port to search for DayZ servers on the local network",
|
||||
scan_tooltip="Scan for servers"
|
||||
)
|
||||
|
||||
|
||||
|
||||
distance_suffix = "Distance: calculating..."
|
||||
dialog_error = "ERROR"
|
||||
|
||||
|
||||
@ -216,10 +216,12 @@ class OuterWindow(Gtk.Window):
|
||||
self.show_all()
|
||||
|
||||
css.load_css()
|
||||
MainController.open_page(NotebookPage.SERVERS)
|
||||
# TODO: first run
|
||||
MainController.open_page(NotebookPage.SERVERS)
|
||||
MainController.mediator.grid.conpan.lan.set_visible(False)
|
||||
self.grid.right_panel.sel_panel.hide()
|
||||
# TODO: POC, trigger page change here
|
||||
MainController.loaded = True
|
||||
|
||||
def _on_delete_event(
|
||||
self, window: "OuterWindow", event: Gdk.EventKey
|
||||
|
||||
@ -12,10 +12,11 @@ gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, GLib # noqa E402
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
from GLib import SOURCE_REMOVE
|
||||
|
||||
class RightPanel(Gtk.Box):
|
||||
def __init__(self, controller):
|
||||
def __init__(self, controller: "Controller"):
|
||||
super().__init__(spacing=6, orientation=Gtk.Orientation.VERTICAL)
|
||||
|
||||
self.controller = controller
|
||||
|
||||
@ -100,7 +100,8 @@ class WaitDialog(GenericDialog):
|
||||
content.pack_end(spinner, NO_EXPAND, NO_FILL, 0)
|
||||
|
||||
spinner.start()
|
||||
self.show_all()
|
||||
# FIXME: center on parent window
|
||||
#self.show_all()
|
||||
|
||||
def _on_dialog_delete(
|
||||
self, response_id: Gtk.ResponseType, event: Gdk.Event
|
||||
|
||||
@ -29,6 +29,7 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
||||
self.recent = ServerTreeView(controller, ServerTab.RECENT)
|
||||
self.lan = ServerTreeView(controller, ServerTab.LAN)
|
||||
|
||||
self.browser.set_query_func(self.query_test2)
|
||||
self.lan.set_query_func(self.query_test)
|
||||
# TODO: set context menu on init
|
||||
self.browser.set_context_menu(ContextMenuGroup.SERVER_BROWSER)
|
||||
@ -51,23 +52,24 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
||||
if label == "LAN":
|
||||
pass
|
||||
else:
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
tree.loaded = True
|
||||
pass
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#store.append(["BAR", "a", "a", "a", 0, 0, 0, "189.127.165.207:2302", 0, 0, "a", False])
|
||||
#tree.loaded = True
|
||||
# TODO: set model on init of servertreeview
|
||||
tree.set_model(store)
|
||||
|
||||
@ -98,8 +100,9 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
||||
return
|
||||
self.get_active_treeview().grab_focus()
|
||||
|
||||
|
||||
def _on_page_changed(self, notebook: Gtk.Notebook, child: Gtk.Widget, index: int) -> None:
|
||||
if self.controller.loaded is False:
|
||||
return
|
||||
# TODO: abstract
|
||||
label = self.notebook.get_tab_label_text(child)
|
||||
if label is None:
|
||||
@ -126,6 +129,10 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
||||
# self.controller.mediator.grid.conpan.lan.set_visible(False)
|
||||
|
||||
# TODO: put in controller
|
||||
def query_test2(self) -> None:
|
||||
# TODO: should trigger first page action after entire UI is loaded
|
||||
self.controller.dump_test()
|
||||
|
||||
def query_test(self) -> None:
|
||||
data = (["BAR", "a", "a", "a", 1, 1, 1, "185.207.214.16:2302", 0, 0, "a", False])
|
||||
return data
|
||||
|
||||
Loading…
Reference in New Issue
Block a user