chore: reroute connect method

This commit is contained in:
aclist 2026-02-28 22:34:25 +09:00
parent 3b40ea1846
commit 2fa51c80f4
5 changed files with 45 additions and 20 deletions

View File

@ -464,11 +464,12 @@ def response_to_fq_ip(res: dict) -> str:
def query_by_id(addr: str, key: str) -> Optional[dict]:
try:
resolved = map_id_to_record(key, addr)
res = query_direct(resolved.ip, resolved.qport)
return query_direct(resolved.ip, resolved.qport)
except Exception as e:
logger.critical(e)
return None
def query_by_ip(addr: str) -> Optional[dict]:
try:
record = addr.split(":")

View File

@ -12,6 +12,7 @@ from warnings import deprecated
import dzgui.api.pefile as PeFile
import dzgui.util._json as JSON # noqa
from dzgui.api.mods import (
get_delimited_mods,
get_local_mod_path,
@ -40,6 +41,7 @@ from dzgui.config.query import lookup
from dzgui.config.userprefs import UserPrefs
from dzgui.controllers.emitter import Emitter
from dzgui.managers.config import ConfigManager
from dzgui.managers.connection import ConnectionManager
from dzgui.managers.contextmenu import ContextMenuManager
from dzgui.model.proxy_model import ProxyModelManager
from dzgui.model.servers import ServerModelManager
@ -290,13 +292,13 @@ class Controller(GObject.GObject):
def toggle_config(self, key: Preferences) -> None:
self.config_man.toggle_config(key)
#config = self.prefs.paths.config
#try:
# config = self.prefs.paths.config
# try:
# update.toggle_config(config, context)
# # NOTE: 'use_miles' key is updated dynamically for statusbar unit
# if context == Preferences.DIST:
# self.prefs.use_miles = not self.prefs.use_miles
#except Exception as e:
# except Exception as e:
# logger.critical(e)
# trace = traceback.format_exc()
# dialog = ExceptionDialog(self, trace)
@ -304,9 +306,9 @@ class Controller(GObject.GObject):
def update_config(self, key: Preferences, value: str) -> None:
self.config_man.update_config(key, value)
#try:
# try:
# update.write_config(self.prefs.paths.config, key, value)
#except Exception as e:
# except Exception as e:
# logger.critical(e)
# trace = traceback.format_exc()
# dialog = ExceptionDialog(self, trace)
@ -588,6 +590,7 @@ class Controller(GObject.GObject):
return treeview.get_model() is not None
def _on_check_toggled(self, emitter: Emitter, label: str, state: bool) -> None:
print('check toggled, refiltering')
filter_man = self.get_filter_man()
filter_man.set_filter(label, state)
@ -595,6 +598,7 @@ class Controller(GObject.GObject):
ServerModelManager(self, self.get_active_treeview()).refilter(mode, label)
def _on_map_selection_changed(self, emitter: Emitter, selection: str) -> None:
print("map sel changed, refiltering")
smm = ServerModelManager(self, self.get_active_treeview())
smm.refilter(FilterMode.MAP, selection)
@ -615,3 +619,18 @@ class Controller(GObject.GObject):
def get_config_man(self) -> ConfigManager:
return self.config_man
def add_server(self, addr: str) -> None:
saved_tree = self.get_servers().get_saved()
if addr.isdigit():
ServerModelManager(self, saved).add_by_id(addr)
else:
ServerModelManager(self, saved).add_by_ip(addr)
def connect_server(self, addr: str) -> None:
if addr.isdigit():
config_man = self.get_config_man()
key = config_man.lookup(Preferences.BM)
ConnectionManager(self).connect_by_id(addr, key)
else:
ConnectionManager(self).connect_by_ip(addr)

View File

@ -21,12 +21,22 @@ class ConnectionManager:
self.controller = controller
self.thread_man = ThreadingManager(parent=controller)
@call_on_thread(dialog.querying)
def connect_by_id(self, addr: str, key: str) -> None:
res = Servers.query_by_id(addr, key)
if res is None:
self.thread_man.set_cleanup_func(StoredFunc(self._connection_failure))
# TODO: add to history if successful
print("CONNECT")
print(res)
@call_on_thread(dialog.querying)
def connect_by_ip(self, addr: str) -> None:
res = Servers.query_by_ip(addr)
if res is None:
self.thread_man.set_cleanup_func(StoredFunc(self._connection_failure))
# TODO: add to history if successful
print("CONNECT")
print(res)
def _connection_failure(self) -> None:

View File

@ -67,6 +67,7 @@ class ProxyModelManager:
# return store
#
def filter(self, mode: FilterMode, *args, **kwargs) -> None:
print("proxy model filtering now")
"""
Native Gtk.TreeView.refilter() method was not performant enough
when running in the main loop with 40k+ records

View File

@ -1,6 +1,5 @@
from typing import TYPE_CHECKING
from dzgui.managers.connection import ConnectionManager
from dzgui.model.servers import ServerModelManager
from dzgui.util.strings import connect_panel, fav_panel, lan_panel
from dzgui.views.components.buttons import (
@ -125,7 +124,7 @@ class FavPanel(Gtk.Frame):
self.server_name, self.server_ip = (
self.controller.get_config_man().get_favorite()
) # self.controller.get_favorite()
)
server_name = (
f"{self.server_name} ({self.server_ip})"
if self.server_name is not None
@ -204,26 +203,21 @@ class AddPanel(Gtk.Frame):
self.add(self.grid)
def _on_connect_clicked(self, button: Gtk.Button) -> None:
text = self.entry.get_text()
ConnectionManager(self.controller).connect_by_id_or_ip(text)
def _submit_query(self) -> None:
addr = self.entry.get_text()
# TODO: grabs ServerTab.SAVED ServerTreeView
tree = self.controller.get_servers().get_saved()
if addr.isdigit():
ServerModelManager(self.controller, tree).add_by_id(addr)
else:
ServerModelManager(self.controller, tree).add_by_ip(addr)
self.controller.connect_server(addr)
def _add_server(self) -> None:
addr = self.entry.get_text()
self.controller.add_server(addr)
def _on_activate(self, entry: Gtk.Entry) -> None:
# NOTE: default action is to add a record, not connect
if not self.add_server.is_sensitive():
return
self._submit_query()
self._add_server()
def _on_add_clicked(self, button: Gtk.Button) -> None:
self._submit_query()
self._add_server()
def _on_ip_validated(self, entry: Gtk.Entry, state: bool) -> None:
self.conn_server.set_sensitive(state)