mirror of
https://github.com/aclist/dztui.git
synced 2026-10-30 14:42:54 +01:00
feat: dynamic notes dialog (WIP)
This commit is contained in:
1 parent
560349e16b
commit
fa12fc36f9
5 files changed
+51
-12
No files matched your search
+20
-1
@@ -103,6 +103,7 @@ class StoredFunc:
|
|||||||
class Controller(GObject.GObject):
|
class Controller(GObject.GObject):
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.dist_cache: dict[str, "Haversine", "ServerTab"] = {}
|
self.dist_cache: dict[str, "Haversine", "ServerTab"] = {}
|
||||||
|
self.notes_cache: dict[str, str] = {}
|
||||||
self.mediator = AppNavigation()
|
self.mediator = AppNavigation()
|
||||||
self.prefs: UserPrefs
|
self.prefs: UserPrefs
|
||||||
self.cleanup_func: StoredFunc = None
|
self.cleanup_func: StoredFunc = None
|
||||||
@@ -610,7 +611,6 @@ class Controller(GObject.GObject):
|
|||||||
ConnectionManager(self).connect_by_ip(addr)
|
ConnectionManager(self).connect_by_ip(addr)
|
||||||
|
|
||||||
def connect_by_record(self, record: "Record") -> None:
|
def connect_by_record(self, record: "Record") -> None:
|
||||||
# NOTE: calls on thread
|
|
||||||
ConnectionManager(self).connect_by_record(record)
|
ConnectionManager(self).connect_by_record(record)
|
||||||
|
|
||||||
def get_details(self, record: "Record") -> None:
|
def get_details(self, record: "Record") -> None:
|
||||||
@@ -626,3 +626,22 @@ class Controller(GObject.GObject):
|
|||||||
def open_workshop_page(self, mod: str) -> None:
|
def open_workshop_page(self, mod: str) -> None:
|
||||||
cmd = self.query_config(Preferences.CLIENT)
|
cmd = self.query_config(Preferences.CLIENT)
|
||||||
open_workshop_page(mod, cmd)
|
open_workshop_page(mod, cmd)
|
||||||
|
|
||||||
|
def get_note(self) -> None:
|
||||||
|
# TODO: load from file
|
||||||
|
tv = self.get_active_treeview()
|
||||||
|
record = tv.get_record_string()
|
||||||
|
try:
|
||||||
|
text = self.notes_cache[record]
|
||||||
|
return text
|
||||||
|
except Exception:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def add_note(self, note: str) -> None:
|
||||||
|
print(note)
|
||||||
|
|
||||||
|
def delete_note(self) -> None:
|
||||||
|
tv = self.get_active_treeview()
|
||||||
|
record = tv.get_record_string()
|
||||||
|
del self.notes_cache[record]
|
||||||
|
# TODO: serialize into file
|
||||||
@@ -7,6 +7,7 @@ from dzgui.util import strings
|
|||||||
from dzgui.util.clip import copy_clipboard
|
from dzgui.util.clip import copy_clipboard
|
||||||
from dzgui.util.open_links import open_workshop_page
|
from dzgui.util.open_links import open_workshop_page
|
||||||
|
|
||||||
|
from dzgui.views.dialogs.note import NoteDialog
|
||||||
from dzgui.views.trees.tree_servers import ServerTreeView
|
from dzgui.views.trees.tree_servers import ServerTreeView
|
||||||
|
|
||||||
|
|
||||||
@@ -33,14 +34,9 @@ class ContextMenuManager:
|
|||||||
match action:
|
match action:
|
||||||
# UNTHREADED
|
# UNTHREADED
|
||||||
case ContextMenu.ADD_NOTE:
|
case ContextMenu.ADD_NOTE:
|
||||||
from dzgui.views.dialogs.note import NoteDialog
|
|
||||||
|
|
||||||
dialog = NoteDialog(self.controller)
|
dialog = NoteDialog(self.controller)
|
||||||
dialog.run()
|
dialog.run()
|
||||||
print("DEBUG: unimplemented")
|
print("DEBUG: unimplemented")
|
||||||
# dialog = NoteDialog()
|
|
||||||
# spawn edit dialog and update cache, notes file
|
|
||||||
pass
|
|
||||||
case ContextMenu.COPY_LOG_CLIPBOARD:
|
case ContextMenu.COPY_LOG_CLIPBOARD:
|
||||||
self.copy_log()
|
self.copy_log()
|
||||||
case ContextMenu.COPY_SERVER_IP:
|
case ContextMenu.COPY_SERVER_IP:
|
||||||
@@ -48,6 +44,7 @@ class ContextMenuManager:
|
|||||||
case ContextMenu.COPY_SERVER_NAME:
|
case ContextMenu.COPY_SERVER_NAME:
|
||||||
self.copy_server_name()
|
self.copy_server_name()
|
||||||
case ContextMenu.DELETE_MOD:
|
case ContextMenu.DELETE_MOD:
|
||||||
|
print("DEBUG: unimplemented")
|
||||||
# self.delete_single_mod()
|
# self.delete_single_mod()
|
||||||
# TODO: connect to emitter automatically
|
# TODO: connect to emitter automatically
|
||||||
# Gtk.TreeModel, row-inserted/row-deleted
|
# Gtk.TreeModel, row-inserted/row-deleted
|
||||||
|
|||||||
@@ -187,6 +187,8 @@ class ServerModelManager:
|
|||||||
parsed = Servers.parse_json(servers)
|
parsed = Servers.parse_json(servers)
|
||||||
self._push_data(parsed)
|
self._push_data(parsed)
|
||||||
|
|
||||||
|
# TODO: add cleanup?
|
||||||
|
# FIXME: use "adding server" string
|
||||||
@call_on_thread(dialog.querying)
|
@call_on_thread(dialog.querying)
|
||||||
def add_by_id(self, addr: str) -> None:
|
def add_by_id(self, addr: str) -> None:
|
||||||
config_man = self.controller.get_config_man()
|
config_man = self.controller.get_config_man()
|
||||||
@@ -194,11 +196,16 @@ class ServerModelManager:
|
|||||||
res = Servers.query_by_id(addr, key)
|
res = Servers.query_by_id(addr, key)
|
||||||
self._parse_single_record(res)
|
self._parse_single_record(res)
|
||||||
|
|
||||||
|
# TODO: add cleanup?
|
||||||
|
# FIXME: use "adding server" string
|
||||||
@call_on_thread(dialog.querying)
|
@call_on_thread(dialog.querying)
|
||||||
def add_by_ip(self, addr: str) -> None:
|
def add_by_ip(self, addr: str) -> None:
|
||||||
res = Servers.query_by_ip(addr)
|
res = Servers.query_by_ip(addr)
|
||||||
self._parse_single_record(res)
|
self._parse_single_record(res)
|
||||||
|
|
||||||
|
# TODO: add cleanup?
|
||||||
|
# FIXME: use "adding server" string
|
||||||
|
@call_on_thread(dialog.querying)
|
||||||
def add_by_record(self, record: Servers.Record) -> None:
|
def add_by_record(self, record: Servers.Record) -> None:
|
||||||
res = Servers.query_by_record(record)
|
res = Servers.query_by_record(record)
|
||||||
self._parse_single_record(res)
|
self._parse_single_record(res)
|
||||||
|
|||||||
@@ -366,6 +366,7 @@ class Grid(Gtk.Grid):
|
|||||||
|
|
||||||
class App(Gtk.Application):
|
class App(Gtk.Application):
|
||||||
def __init__(self, prefs: "UserPrefs") -> None:
|
def __init__(self, prefs: "UserPrefs") -> None:
|
||||||
|
|
||||||
GLib.set_prgname(APP_NAME)
|
GLib.set_prgname(APP_NAME)
|
||||||
MainController.set_prefs(prefs)
|
MainController.set_prefs(prefs)
|
||||||
|
|
||||||
|
|||||||
@@ -36,11 +36,16 @@ def validate_ip_or_id(text: str) -> bool:
|
|||||||
|
|
||||||
|
|
||||||
class ValidatedEntry(Gtk.Entry):
|
class ValidatedEntry(Gtk.Entry):
|
||||||
def __init__(self, controller: "Controller", func: Callable) -> None:
|
def __init__(
|
||||||
|
self,
|
||||||
|
controller: "Controller",
|
||||||
|
func: Callable,
|
||||||
|
placeholder_text: str = "",
|
||||||
|
tooltip_text: str = "",
|
||||||
|
) -> None:
|
||||||
|
# TODO: tooltip text should not be hardcoded
|
||||||
super().__init__(
|
super().__init__(
|
||||||
hexpand=True,
|
hexpand=True, placeholder_text=placeholder_text, tooltip_text=tooltip_text
|
||||||
placeholder_text=connect_panel.placeholder,
|
|
||||||
tooltip_text=connect_panel.entry_tooltip,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
self.func: Callable
|
self.func: Callable
|
||||||
@@ -116,13 +121,23 @@ class ValidatedEntry(Gtk.Entry):
|
|||||||
|
|
||||||
class IpEntry(ValidatedEntry):
|
class IpEntry(ValidatedEntry):
|
||||||
def __init__(self, controller: "Controller") -> None:
|
def __init__(self, controller: "Controller") -> None:
|
||||||
super().__init__(controller, func=validate_ip_or_id)
|
super().__init__(
|
||||||
|
controller,
|
||||||
|
func=validate_ip_or_id,
|
||||||
|
placeholder_text=connect_panel.placeholder,
|
||||||
|
tooltip_text=connect_panel.entry_tooltip,
|
||||||
|
)
|
||||||
self.set_placeholder_text(connect_panel.placeholder)
|
self.set_placeholder_text(connect_panel.placeholder)
|
||||||
self.set_tooltip_text(connect_panel.entry_tooltip)
|
self.set_tooltip_text(connect_panel.entry_tooltip)
|
||||||
|
|
||||||
|
|
||||||
class PortEntry(ValidatedEntry):
|
class PortEntry(ValidatedEntry):
|
||||||
def __init__(self, controller: "Controller") -> None:
|
def __init__(self, controller: "Controller") -> None:
|
||||||
super().__init__(controller, func=validate_port)
|
super().__init__(
|
||||||
|
controller,
|
||||||
|
func=validate_port,
|
||||||
|
placeholder_text=connect_panel.placeholder,
|
||||||
|
tooltip_text=connect_panel.entry_tooltip,
|
||||||
|
)
|
||||||
self.set_placeholder_text(lan_panel.placeholder)
|
self.set_placeholder_text(lan_panel.placeholder)
|
||||||
self.set_tooltip_text(lan_panel.entry_tooltip)
|
self.set_tooltip_text(lan_panel.entry_tooltip)
|
||||||
Reference in new issue
Block a user