feat: dzgui 7 alpha

This commit is contained in:
aclist committed 2025-12-08 17:32:25 +09:00
1 parent 1acdbd58c5
commit 2e5b771137
150 files changed
+10359

No files matched your search

+86
View File
@@ -0,0 +1,86 @@
import logging
import multiprocessing
import subprocess
from typing import TYPE_CHECKING
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa
from dzgui.const.enum import RowType, NotebookPage
from dzgui.util.open_links import open_link_by_rowtype
from dzgui.views.trees.tree_base import TreeView
logger = logging.getLogger(__name__)
if TYPE_CHECKING:
from dzgui.controllers.mc import Controller
class MenuTreeView(TreeView):
"""
Simple Gtk.ListStore representation of main
menu options
"""
def __init__(self, controller: "Controller") -> None:
super().__init__(controller)
self.controller = controller
renderer = Gtk.CellRendererText()
column = Gtk.TreeViewColumn("Main menu", renderer, text=0)
column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
self.append_column(column)
row_store = self.controller.get_row_store()
self.set_model(row_store)
self.selected_row = self.get_selection()
self.set_row_separator_func(self._separate)
self.connect("generic_row_activated", self._parent_row_activated)
self.connect("generic_treesel_changed", self._parent_selection_changed)
def _parent_row_activated(self,
tree: TreeView,
path: Gtk.TreePath,
column: Gtk.TreeViewColumn
) -> None:
row_type = self.get_value_at_index(1)
print(row_type)
match row_type:
case RowType.THANKS:
self.controller.open_page(NotebookPage.THANKS)
case RowType.SERVER_BROWSER:
# TODO: add threading
# TODO: handle recent, saved, lan, etc.
# self.controller.open_page(NotebookPage.SERVERS)
return
case RowType.SHOW_LOG:
self.controller.populate_log()
case RowType.CHANGELOG:
self.controller.open_page(NotebookPage.CHANGELOG)
case RowType.DUMP_LOG:
self.controller.dump_diagnostics()
pass
docs = [
RowType.DOCS,
RowType.DOCS_FALLBACK,
RowType.BUGS,
RowType.FORUM,
RowType.SPONSOR,
]
if row_type in docs:
# FIXME: prior method is returning a str, not enum
open_link_by_rowtype(row_type)
def _parent_selection_changed(
self,
base_class: TreeView,
sel: Gtk.TreeSelection
) -> None:
row = self.get_value_at_index(1)
if row == "":
return
self.controller.set_statusbar_by_row(row)