mirror of
https://github.com/aclist/dztui.git
synced 2026-10-30 22:52:42 +01:00
fix: server threading WIP
This commit is contained in:
1 parent
6fc348ea34
commit
b735995c65
2 files changed
+19
-33
No files matched your search
+15
-30
@@ -270,7 +270,7 @@ class Controller(GObject.GObject):
|
|||||||
if haversine is None:
|
if haversine is None:
|
||||||
dist = "Unknown"
|
dist = "Unknown"
|
||||||
else:
|
else:
|
||||||
# FIXME: always opens file; cache distance pref
|
# FIXME: always opens file; cache distance pref at boot and when it changes
|
||||||
if self.query_config(Preferences.DIST) is True:
|
if self.query_config(Preferences.DIST) is True:
|
||||||
raw = round(haversine.as_miles())
|
raw = round(haversine.as_miles())
|
||||||
separated = number(raw)
|
separated = number(raw)
|
||||||
@@ -357,7 +357,7 @@ class Controller(GObject.GObject):
|
|||||||
except Exception:
|
except Exception:
|
||||||
return
|
return
|
||||||
case ButtonType.MODS:
|
case ButtonType.MODS:
|
||||||
# TODO: reload using refresh button, rather than on demand
|
# TODO: reload using refresh button, rather than on demand?
|
||||||
self.load_mods()
|
self.load_mods()
|
||||||
|
|
||||||
self.mediator.notebook.set_page_by_enum(button.opens)
|
self.mediator.notebook.set_page_by_enum(button.opens)
|
||||||
@@ -376,9 +376,7 @@ class Controller(GObject.GObject):
|
|||||||
for future in futures:
|
for future in futures:
|
||||||
res = future.result()
|
res = future.result()
|
||||||
if res.status != 200 or not res.parsed:
|
if res.status != 200 or not res.parsed:
|
||||||
# NOTE: this is happening in a thread, need to exit first
|
# TODO: pop warning dialog, create enum around various failure states
|
||||||
# TODO: set internal state and pass failure flag
|
|
||||||
# TODO: pop warning dialog
|
|
||||||
print("failed to parse/timeout error")
|
print("failed to parse/timeout error")
|
||||||
self.push_data(None, success=False)
|
self.push_data(None, success=False)
|
||||||
return
|
return
|
||||||
@@ -447,15 +445,6 @@ class Controller(GObject.GObject):
|
|||||||
def copy_ip(self, path: Gtk.TreePath) -> None:
|
def copy_ip(self, path: Gtk.TreePath) -> None:
|
||||||
treeview = self.get_active_treeview()
|
treeview = self.get_active_treeview()
|
||||||
record = treeview.get_record()
|
record = treeview.get_record()
|
||||||
# TODO: maybe delegate to filter man
|
|
||||||
#addr = self.get_col_value_by_path_index(path, 7)
|
|
||||||
#if addr is None:
|
|
||||||
# return
|
|
||||||
#qport = self.get_col_value_by_path_index(path, 8)
|
|
||||||
## TODO: abstract get record function
|
|
||||||
#ip = addr.split(":")[0]
|
|
||||||
#gameport = int(addr.split(":")[1])
|
|
||||||
#record = Servers.Record(ip, gameport, qport)
|
|
||||||
self.copy_clipboard(f"{record.ip}:{record.qport}")
|
self.copy_clipboard(f"{record.ip}:{record.qport}")
|
||||||
|
|
||||||
def copy_clipboard(self, text: str) -> None:
|
def copy_clipboard(self, text: str) -> None:
|
||||||
@@ -635,29 +624,24 @@ class Controller(GObject.GObject):
|
|||||||
# TODO: if success failed, throw popup
|
# TODO: if success failed, throw popup
|
||||||
treeview = self.get_active_treeview()
|
treeview = self.get_active_treeview()
|
||||||
context = self.get_active_context()
|
context = self.get_active_context()
|
||||||
# TODO: rename signal
|
|
||||||
self.emitter.emit("servers_loaded", context)
|
self.emitter.emit("servers_loaded", context)
|
||||||
|
|
||||||
treeview.grab_focus()
|
treeview.grab_focus()
|
||||||
self.destroy_on_idle()
|
self.destroy_on_idle()
|
||||||
if treeview.get_filter_man().get_model() is None:
|
if self.success is False:
|
||||||
# FIXME: this may not indicate failure, just empty results
|
dialog = ExceptionDialog(self, "API TIMEOUT")
|
||||||
# TODO: different dialogs for server tab contexts
|
dialog.run()
|
||||||
|
#if treeview.get_filter_man().get_model() is None:
|
||||||
|
# TODO: different dialogs for server tab contexts, e.g. lan timeout
|
||||||
# TODO: if history/favorites is empty, don't even trigger a call
|
# TODO: if history/favorites is empty, don't even trigger a call
|
||||||
# TODO: add proper string for this dialog
|
|
||||||
# TODO: this is a placeholder string
|
|
||||||
# TODO: only pop this is success was failure
|
|
||||||
if self.success is False:
|
|
||||||
dialog = ExceptionDialog(self, "API TIMEOUT")
|
|
||||||
dialog.run()
|
|
||||||
|
|
||||||
def push_data(self, data: tuple, mode: Optional[FilterMode], success: bool) -> None:
|
def push_data(self, data: tuple, mode: Optional[FilterMode], success: bool) -> None:
|
||||||
|
|
||||||
treeview = self.get_active_treeview()
|
treeview = self.get_active_treeview()
|
||||||
# context = self.get_active_context()
|
|
||||||
manager = treeview.get_filter_man()
|
manager = treeview.get_filter_man()
|
||||||
|
|
||||||
# TODO:
|
# TODO:
|
||||||
self.success = success
|
self.success = success
|
||||||
|
|
||||||
if success:
|
if success:
|
||||||
if data is None:
|
if data is None:
|
||||||
insert = None
|
insert = None
|
||||||
@@ -667,7 +651,6 @@ class Controller(GObject.GObject):
|
|||||||
manager.set_control(data)
|
manager.set_control(data)
|
||||||
# TODO: init maps here
|
# TODO: init maps here
|
||||||
manager.filter(mode)
|
manager.filter(mode)
|
||||||
# FIXME: inserting none may cause problems if this was a simple refresh action
|
|
||||||
insert = manager.get_model()
|
insert = manager.get_model()
|
||||||
treeview.set_model(insert)
|
treeview.set_model(insert)
|
||||||
treeview.set_loaded(True)
|
treeview.set_loaded(True)
|
||||||
@@ -780,14 +763,15 @@ class Controller(GObject.GObject):
|
|||||||
def filter_threaded(self, mode: FilterMode, label: str) -> None:
|
def filter_threaded(self, mode: FilterMode, label: str) -> None:
|
||||||
tv = self.get_active_treeview()
|
tv = self.get_active_treeview()
|
||||||
tv.filter_man.filter(mode, label)
|
tv.filter_man.filter(mode, label)
|
||||||
self.push_data("", mode)
|
self.push_data("", mode, success=True)
|
||||||
|
|
||||||
def refilter_model(self, mode: FilterMode, label: str) -> None:
|
# FIXME: optional label/map/keyword parameter
|
||||||
|
def refilter_model(self, mode: FilterMode, label: Optional[str] = None) -> None:
|
||||||
tv = self.get_active_treeview()
|
tv = self.get_active_treeview()
|
||||||
# TODO: shouldn't empty model be None?
|
|
||||||
if tv.get_model() is None:
|
if tv.get_model() is None:
|
||||||
return
|
return
|
||||||
tv.set_model(None)
|
tv.set_model(None)
|
||||||
|
# TODO: deprecated in this context?
|
||||||
self.set_callback(None, None)
|
self.set_callback(None, None)
|
||||||
self.filter_threaded(mode, label)
|
self.filter_threaded(mode, label)
|
||||||
|
|
||||||
@@ -802,6 +786,7 @@ class Controller(GObject.GObject):
|
|||||||
self.emitter.emit("servers_loaded", treeview.get_enum())
|
self.emitter.emit("servers_loaded", treeview.get_enum())
|
||||||
return
|
return
|
||||||
# TODO: on legacy version, model clearing happens in thread
|
# TODO: on legacy version, model clearing happens in thread
|
||||||
|
# (compare)
|
||||||
treeview.set_model(None)
|
treeview.set_model(None)
|
||||||
# manager = treeview.get_filter_man()
|
# manager = treeview.get_filter_man()
|
||||||
# manager.clear_model()
|
# manager.clear_model()
|
||||||
|
|||||||
@@ -253,7 +253,9 @@ class FilterPanel(Gtk.Box):
|
|||||||
def set_active_combo(self, row: int) -> None:
|
def set_active_combo(self, row: int) -> None:
|
||||||
self.maps_combo.set_active(row)
|
self.maps_combo.set_active(row)
|
||||||
|
|
||||||
def toggle_check_by_key(self, emitter: "Emitter", keyval: int) -> None | Literal[False]:
|
def toggle_check_by_key(
|
||||||
|
self, emitter: "Emitter", keyval: int
|
||||||
|
) -> None | Literal[False]:
|
||||||
mappings = {
|
mappings = {
|
||||||
Gdk.KEY_1: 0,
|
Gdk.KEY_1: 0,
|
||||||
Gdk.KEY_2: 1,
|
Gdk.KEY_2: 1,
|
||||||
@@ -292,7 +294,6 @@ class FilterPanel(Gtk.Box):
|
|||||||
self.controller.refilter_model(mode, label)
|
self.controller.refilter_model(mode, label)
|
||||||
|
|
||||||
def _on_map_changed(self, combo: Gtk.ComboBox) -> None:
|
def _on_map_changed(self, combo: Gtk.ComboBox) -> None:
|
||||||
treeview = self.controller.get_active_treeview()
|
|
||||||
old_sel = self.selected_map
|
old_sel = self.selected_map
|
||||||
model = combo.get_model()
|
model = combo.get_model()
|
||||||
tree_iter = combo.get_active_iter()
|
tree_iter = combo.get_active_iter()
|
||||||
@@ -307,4 +308,4 @@ class FilterPanel(Gtk.Box):
|
|||||||
self.prior_map = self.selected_map
|
self.prior_map = self.selected_map
|
||||||
self.selected_map = selection
|
self.selected_map = selection
|
||||||
self.maps_entry.set_text(selection)
|
self.maps_entry.set_text(selection)
|
||||||
treeview.filter(FilterMode.MAP)
|
self.controller.refilter_model(FilterMode.MAP)
|
||||||
Reference in new issue
Block a user