mirror of
https://github.com/aclist/dztui.git
synced 2026-08-27 02:07:18 +02:00
feat: pack pages in ScrolledWindow
This commit is contained in:
parent
922ff7b3b2
commit
91425cbcaa
@ -33,6 +33,7 @@ from dzgui.views.components.connect_panel import ConnectPanel
|
||||
from dzgui.views.pages.devs import Developers
|
||||
from dzgui.views.pages.help import Help
|
||||
from dzgui.views.pages.keys import Keybindings
|
||||
from dzgui.views.pages.log import Log
|
||||
from dzgui.views.pages.mods import Mods
|
||||
from dzgui.views.pages.options import Options
|
||||
from dzgui.views.pages.servers import ServerNotebook
|
||||
@ -207,7 +208,6 @@ class OuterWindow(Gtk.Window):
|
||||
self.set_titlebar(self.hb)
|
||||
|
||||
self.connect("delete-event", self._on_delete_event)
|
||||
#self.connect("key-press-event", self._on_keypress)
|
||||
|
||||
self.grid = Grid()
|
||||
self.add(self.grid)
|
||||
@ -236,33 +236,6 @@ class AppHeaderBar(Gtk.HeaderBar):
|
||||
self.set_show_close_button(True)
|
||||
|
||||
|
||||
# TODO: deprecated
|
||||
class ScrollableNote(ScrollableMixin, Gtk.Box): # type: ignore
|
||||
def __init__(self, content_box: Gtk.Box, back_button: bool = False):
|
||||
super().__init__(orientation=Gtk.Orientation.VERTICAL)
|
||||
|
||||
self.scrollable = Gtk.ScrolledWindow()
|
||||
self.scrollable.set_vexpand(True)
|
||||
|
||||
self.back_button = Gtk.Button(
|
||||
label="Back", hexpand=True, halign=Gtk.Align.CENTER
|
||||
)
|
||||
|
||||
self.gutter = Gtk.Box(
|
||||
orientation=Gtk.Orientation.HORIZONTAL, valign=Gtk.Align.END
|
||||
)
|
||||
if back_button:
|
||||
self.gutter.add(self.back_button)
|
||||
self.back_button.connect("clicked", self._on_back_clicked)
|
||||
|
||||
self.scrollable.add(content_box)
|
||||
self.add(self.scrollable)
|
||||
self.add(self.gutter)
|
||||
|
||||
def _on_back_clicked(self, button: Gtk.Button) -> None:
|
||||
pass
|
||||
|
||||
|
||||
class Notebook(ScrollableMixin, Gtk.Notebook): # type: ignore
|
||||
def __init__(self) -> None:
|
||||
super().__init__(show_tabs=False)
|
||||
@ -278,21 +251,12 @@ class Notebook(ScrollableMixin, Gtk.Notebook): # type: ignore
|
||||
self.keys = Keybindings()
|
||||
self.settings = Options(MainController)
|
||||
|
||||
# NOTE: server, mod, and log tables should have hexpand property set to True
|
||||
self.servers = ServerNotebook(MainController)
|
||||
self.mods = Mods(MainController)
|
||||
|
||||
# TODO: make all treeviews internally scrollable in base class
|
||||
self.scroll_log = Gtk.ScrolledWindow()
|
||||
self.scroll_log.set_hexpand(True)
|
||||
self.log_table = LogTreeView(MainController)
|
||||
self.scroll_log.add(self.log_table)
|
||||
|
||||
# TODO: make all treeviews internally scrollable in base class
|
||||
self.thanks = ScrollableNote(Thanks(), back_button=False)
|
||||
# TODO: change this class to scrolledwindow
|
||||
developers = Developers(MainController)
|
||||
self.developers = ScrollableNote(developers)
|
||||
self.thanks = Thanks()
|
||||
self.log = Log(MainController)
|
||||
self.developers = Developers(MainController)
|
||||
|
||||
self.pages = {
|
||||
self.help: NotebookPage.HELP,
|
||||
@ -301,7 +265,7 @@ class Notebook(ScrollableMixin, Gtk.Notebook): # type: ignore
|
||||
self.settings: NotebookPage.OPTIONS,
|
||||
self.servers: NotebookPage.SERVERS,
|
||||
self.mods: NotebookPage.MODS,
|
||||
self.scroll_log: NotebookPage.LOG,
|
||||
self.log: NotebookPage.LOG,
|
||||
self.thanks: NotebookPage.THANKS,
|
||||
self.developers: NotebookPage.DEVELOPERS,
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ logger = logging.getLogger(__name__)
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
|
||||
class Changelog(ScrollableMixin, Gtk.ScrolledWindow):
|
||||
class Changelog(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
||||
def __init__(self, controller: "Controller"):
|
||||
super().__init__(propagate_natural_width=False)
|
||||
|
||||
|
||||
@ -15,19 +15,21 @@ if TYPE_CHECKING:
|
||||
from dzgui.config.userprefs import UserPrefs
|
||||
from dzgui.config.xdg import Xdg
|
||||
|
||||
class Developers(Gtk.Box):
|
||||
class Developers(Gtk.ScrolledWindow):
|
||||
"""
|
||||
Shows TreeViews displaying contents of parsed XDG paths
|
||||
and user preferences
|
||||
"""
|
||||
def __init__(self, controller: "Controller") -> None:
|
||||
super().__init__(
|
||||
orientation=Gtk.Orientation.VERTICAL,
|
||||
margin_start=10,
|
||||
margin_end=10,
|
||||
)
|
||||
|
||||
self.controller = controller
|
||||
self.box = Gtk.Box(
|
||||
orientation=Gtk.Orientation.VERTICAL,
|
||||
margin_start=10,
|
||||
margin_end=10
|
||||
)
|
||||
|
||||
heading = Gtk.Label(label=developers.header)
|
||||
heading.set_halign(Gtk.Align.CENTER)
|
||||
@ -47,17 +49,13 @@ class Developers(Gtk.Box):
|
||||
paths_tree.set_cursor(path)
|
||||
prefs_tree.set_cursor(path)
|
||||
|
||||
for el in [
|
||||
paths_label,
|
||||
paths_tree,
|
||||
prefs_label,
|
||||
prefs_tree
|
||||
]:
|
||||
for el in [paths_label, paths_tree, prefs_label, prefs_tree]:
|
||||
trees_box.add(el)
|
||||
|
||||
self.add(heading)
|
||||
self.add(back_button)
|
||||
self.add(trees_box)
|
||||
for el in [heading, back_button, trees_box]:
|
||||
self.box.add(el)
|
||||
|
||||
self.add(self.box)
|
||||
|
||||
def _on_back_clicked(self, button: Gtk.Button) -> None:
|
||||
self.controller.open_page(NotebookPage.OPTIONS)
|
||||
|
||||
21
dzgui/views/pages/log.py
Normal file
21
dzgui/views/pages/log.py
Normal file
@ -0,0 +1,21 @@
|
||||
from typing import TYPE_CHECKING
|
||||
from dzgui.views.trees.tree_log import LogTreeView
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk # noqa E402
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
|
||||
class Log(Gtk.ScrolledWindow):
|
||||
def __init__(self, controller: "Controller") -> None:
|
||||
super().__init__()
|
||||
self.treeview = LogTreeView(controller)
|
||||
self.add(self.treeview)
|
||||
|
||||
self.controller = controller
|
||||
self.controller.register_widget("logtreeview", self.treeview)
|
||||
|
||||
def get_treeview(self) -> LogTreeView:
|
||||
return self.treeview
|
||||
@ -1,34 +1,34 @@
|
||||
from dzgui.util.format import format_pango
|
||||
from dzgui.util.strings import thanks
|
||||
from dzgui.views.mixins.scrollable_mixin import ScrollableMixin
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk # noqa E402
|
||||
|
||||
"""
|
||||
Special thanks page recognizing contributors to the project in alpha-order
|
||||
"""
|
||||
# TODO: wrap and center long values
|
||||
|
||||
# TODO: make scrollable, test long values/wrapping
|
||||
|
||||
class Thanks(Gtk.Box):
|
||||
class Thanks(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
||||
"""
|
||||
Special thanks page recognizing contributors to the project in alpha-order
|
||||
"""
|
||||
def __init__(self) -> None:
|
||||
super().__init__(
|
||||
orientation=Gtk.Orientation.VERTICAL,
|
||||
spacing=10
|
||||
)
|
||||
|
||||
super().__init__()
|
||||
|
||||
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
|
||||
label = format_pango(thanks.header)
|
||||
header = Gtk.Label()
|
||||
header.set_markup(label)
|
||||
self.add(header)
|
||||
|
||||
description = Gtk.Label(label=thanks.description, justify=Gtk.Justification.CENTER)
|
||||
self.add(description)
|
||||
|
||||
users = [f"- {user}" for user in sorted(thanks.users, key=str.lower)]
|
||||
pretty_users = "\n".join(users)
|
||||
body = Gtk.Label()
|
||||
body.set_markup(pretty_users)
|
||||
self.add(body)
|
||||
|
||||
for el in header, description, body:
|
||||
self.box.add(el)
|
||||
self.add(self.box)
|
||||
|
||||
self.connect("key-press-event", self._on_keypress)
|
||||
|
||||
@ -16,7 +16,7 @@ if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
from dzgui.const.enum import ContextMenuGroup
|
||||
|
||||
class TreeView(CursorMixin, Gtk.TreeView):
|
||||
class TreeView(CursorMixin, Gtk.TreeView): # type: ignore
|
||||
def __init__(self, controller: "Controller", menu: "ContextMenuGroup" = None) -> None:
|
||||
super().__init__(
|
||||
enable_search=False,
|
||||
|
||||
@ -24,8 +24,8 @@ class LogTreeView(ContextMixin, TreeView):
|
||||
self.controller.register_widget("logtreeview", self)
|
||||
|
||||
# TODO: maybe put this in init
|
||||
self.set_fixed_height_mode(True)
|
||||
self.set_headers_visible(True)
|
||||
self.set_fixed_height_mode(True)
|
||||
self.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
|
||||
|
||||
model = self.controller.get_log_store()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user