mirror of
https://github.com/aclist/dztui.git
synced 2026-08-26 17:57:06 +02:00
feat: add developer debugging page
This commit is contained in:
parent
9fc8b4ce83
commit
94f5397c4c
@ -88,6 +88,7 @@ class NotebookPage(EnumWithAttrs):
|
||||
OPTIONS = {"crumbs": strings.crumbs.options,}
|
||||
SERVERS = {"crumbs": strings.crumbs.servers,}
|
||||
THANKS = {"crumbs": strings.crumbs.thanks,}
|
||||
DEVELOPERS = {"crumbs": strings.crumbs.developers,}
|
||||
|
||||
|
||||
class RowType(EnumWithAttrs):
|
||||
|
||||
@ -70,6 +70,7 @@ class Controller:
|
||||
self.log_store = Gtk.ListStore(str, str, str, str)
|
||||
|
||||
self.notes_cache: dict[str, str] = {}
|
||||
self.is_developer: bool
|
||||
|
||||
self.mediator: AppNavigation
|
||||
self.prefs: UserPrefs
|
||||
@ -283,6 +284,9 @@ class Controller:
|
||||
def toggle_mod_panel(self, state: bool) -> None:
|
||||
self.mediator.grid.sel_panel.set_visible(state)
|
||||
|
||||
def show_developers_page(self) -> None:
|
||||
self.open_page(NotebookPage.DEVELOPERS)
|
||||
|
||||
def open_page(self, page: NotebookPage) -> None:
|
||||
self.mediator.grid.notebook.set_page_by_enum(page)
|
||||
|
||||
@ -543,3 +547,9 @@ class Controller:
|
||||
h = WINDOW_DEFAULT_Y
|
||||
logger.info(f"Using default window size {w},{h}")
|
||||
window.set_default_size(w, h)
|
||||
|
||||
def set_developer_mode(self, mode: bool) -> None:
|
||||
self.is_developer = mode
|
||||
|
||||
def get_developer_mode(self) -> bool:
|
||||
return self.is_developer
|
||||
|
||||
@ -37,6 +37,7 @@ parser = argparse.ArgumentParser(description=flags.description)
|
||||
|
||||
parser.add_argument("-v", "--version", action="store_true", help=flags.version)
|
||||
parser.add_argument("-u", "--uninstall", action="store_true", help=flags.uninstall)
|
||||
parser.add_argument("-d", "--developers", action="store_true", help=flags.developers)
|
||||
args = parser.parse_args()
|
||||
|
||||
# TODO: profile load time
|
||||
@ -112,4 +113,4 @@ def main() -> None:
|
||||
XDG
|
||||
)
|
||||
print("All OK. Loading UI...")
|
||||
App(prefs)
|
||||
App(prefs, args.developers)
|
||||
|
||||
@ -265,6 +265,7 @@ class Crumbs:
|
||||
options: str
|
||||
servers: str
|
||||
thanks: str
|
||||
developers: str
|
||||
|
||||
@dataclass(slots=True, frozen=True)
|
||||
class Thanks:
|
||||
@ -448,7 +449,8 @@ crumbs = Crumbs(
|
||||
my_servers="Main menu > Saved servers",
|
||||
options="Options",
|
||||
servers="Main menu > Server browser",
|
||||
thanks="Help > Special thanks"
|
||||
thanks="Help > Special thanks",
|
||||
developers="Help > Developers",
|
||||
)
|
||||
|
||||
checkmark = "✓"
|
||||
@ -459,11 +461,13 @@ class Flags:
|
||||
description: str
|
||||
version: str
|
||||
uninstall: str
|
||||
developers: str
|
||||
|
||||
flags = Flags(
|
||||
description="DayZ server browser and mod manager",
|
||||
version="Print version information",
|
||||
uninstall="Uninstall data files (use prior to 'pip uninstall')"
|
||||
uninstall="Uninstall data files (use prior to 'pip uninstall')",
|
||||
developers="Enables developer debugging features",
|
||||
)
|
||||
|
||||
@dataclass(slots=True, frozen=True)
|
||||
@ -477,3 +481,16 @@ picker = FilePicker(
|
||||
)
|
||||
|
||||
api_error = "API key validation error or timeout. See 'Help > Show debug log' for details."
|
||||
|
||||
|
||||
@dataclass(slots=True, frozen=True)
|
||||
class DevelopersPage:
|
||||
paths_label: str
|
||||
prefs_label: str
|
||||
columns: list[str]
|
||||
|
||||
developers = DevelopersPage(
|
||||
paths_label="Resolved XDG paths",
|
||||
prefs_label="Boot preferences",
|
||||
columns=["Key", "Value"]
|
||||
)
|
||||
|
||||
@ -364,6 +364,10 @@ class Notebook(ScrollableMixin, Gtk.Notebook):
|
||||
|
||||
self.thanks = ScrollableNote(Thanks(), back_button=False)
|
||||
|
||||
from dzgui.views.pages.devs import Developers
|
||||
developers = Developers(MainController)
|
||||
self.developers = ScrollableNote(developers)
|
||||
|
||||
self.pages = {
|
||||
self.scrollable_treelist: NotebookPage.MAIN,
|
||||
self.clog: NotebookPage.CHANGELOG,
|
||||
@ -372,7 +376,8 @@ class Notebook(ScrollableMixin, Gtk.Notebook):
|
||||
self.ssu: NotebookPage.SERVERS,
|
||||
self.scroll_mod: NotebookPage.MODS,
|
||||
self.scroll_log: NotebookPage.LOG,
|
||||
self.thanks: NotebookPage.THANKS
|
||||
self.thanks: NotebookPage.THANKS,
|
||||
self.developers: NotebookPage.DEVELOPERS,
|
||||
}
|
||||
self.indexes = {}
|
||||
|
||||
@ -621,9 +626,10 @@ class Grid(Gtk.Grid):
|
||||
|
||||
|
||||
class App(Gtk.Application):
|
||||
def __init__(self, prefs) -> None:
|
||||
def __init__(self, prefs, is_developer) -> None:
|
||||
GLib.set_prgname(APP_NAME)
|
||||
MainController.set_prefs(prefs)
|
||||
MainController.set_developer_mode(is_developer)
|
||||
|
||||
self.win = OuterWindow()
|
||||
|
||||
|
||||
@ -166,6 +166,13 @@ class Options(Gtk.Box):
|
||||
hexpand=True,
|
||||
)
|
||||
|
||||
developers=Gtk.Button(label="Developers", halign=Gtk.Align.START)
|
||||
developers.connect("clicked", self._on_developers_clicked)
|
||||
if self.controller.get_developer_mode():
|
||||
grid.attach(
|
||||
developers, 1, 0, self.DEFAULT_WIDTH, self.DEFAULT_HEIGHT
|
||||
)
|
||||
|
||||
for frame in [
|
||||
self.make_frame(api_box, strings.options.api_keys),
|
||||
self.make_frame(prefs_grid, strings.options.prefs),
|
||||
@ -181,6 +188,9 @@ class Options(Gtk.Box):
|
||||
self.scrollable.add(grid)
|
||||
self.add(self.scrollable)
|
||||
|
||||
def _on_developers_clicked(self, button: Gtk.Button) -> None:
|
||||
self.controller.show_developers_page()
|
||||
|
||||
def _on_link_button_clicked(self, button: Gtk.Button, url: str) -> None:
|
||||
open_links.open_link_by_url(url)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user