mirror of
https://github.com/aclist/dztui.git
synced 2026-11-09 19:40:38 +01:00
Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15d4b71350 | ||
|
|
16d3df618a | ||
|
|
22dd8fc67f | ||
|
|
03fa707305 | ||
|
|
2479cbd41b |
No files matched your search
@@ -37,6 +37,8 @@ Users wishing to review the licenses to these components can inspect the `LICENS
|
||||
|
||||
Steam and the Steam logo are trademarks and/or registered trademarks of Valve Corporation in the U.S. and/or other countries.
|
||||
|
||||
DayZ is a trademark and brand of Bohemia Interactive a.s.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
DZGUI is beta-quality software and is provided as-is.
|
||||
@@ -61,6 +61,13 @@ NIGHT_ICON = "weather-clear-night-symbolic"
|
||||
|
||||
SEPARATOR = "SEPARATOR"
|
||||
|
||||
# TODO: drop
|
||||
NO_PADDING = 0
|
||||
NO_EXPAND = False
|
||||
NO_FILL = False
|
||||
EXPAND = True
|
||||
FILL = True
|
||||
|
||||
SCROLL_INCREMENT = 50
|
||||
WINDOW_DEFAULT_X = 1400
|
||||
WINDOW_DEFAULT_Y = 800
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import logging
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from dzgui.const.constants import APP_NAME
|
||||
from dzgui.const.constants import APP_NAME, NO_EXPAND, NO_FILL, NO_PADDING
|
||||
from dzgui.const.enum import ButtonType
|
||||
|
||||
import gi
|
||||
@@ -63,7 +63,7 @@ class ButtonBox(Gtk.Box):
|
||||
|
||||
self.buttons.append(button)
|
||||
button.connect("clicked", self._on_selection_button_clicked)
|
||||
self.pack_start(button, expand=False, fill=False, padding=0)
|
||||
self.pack_start(button, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||
|
||||
def _focus_first_button(self, emitter: "Emitter") -> None:
|
||||
self.buttons[0].grab_focus()
|
||||
|
||||
@@ -3,6 +3,10 @@ from typing import Literal, TYPE_CHECKING
|
||||
|
||||
from dzgui.const.constants import (
|
||||
APP_NAME,
|
||||
EXPAND,
|
||||
NO_EXPAND,
|
||||
NO_FILL,
|
||||
NO_PADDING,
|
||||
SEARCH_ICON,
|
||||
)
|
||||
from dzgui.util.format import format_exception
|
||||
@@ -38,10 +42,7 @@ class ButtonGrid(Gtk.Grid):
|
||||
self.checks: list[Gtk.CheckButton] = []
|
||||
|
||||
flowbox = Gtk.FlowBox(
|
||||
halign=Gtk.Align.CENTER,
|
||||
min_children_per_line=3,
|
||||
max_children_per_line=3,
|
||||
selection_mode=Gtk.SelectionMode.NONE,
|
||||
halign=Gtk.Align.CENTER, min_children_per_line=3, max_children_per_line=3, selection_mode=Gtk.SelectionMode.NONE
|
||||
)
|
||||
|
||||
for check in defaults.keys():
|
||||
@@ -200,7 +201,7 @@ class FilterPanel(Gtk.Box):
|
||||
self.maps_entry.connect("key-press-event", self._on_map_entry_keypress)
|
||||
self.maps_entry.connect("activate", self._on_maps_activated)
|
||||
|
||||
self.maps_combo.pack_start(renderer_text, expand=True)
|
||||
self.maps_combo.pack_start(renderer_text, EXPAND)
|
||||
self.maps_combo.connect("changed", self._on_map_changed)
|
||||
self.maps_combo.connect("key-press-event", self._on_combo_keypress)
|
||||
|
||||
@@ -210,7 +211,7 @@ class FilterPanel(Gtk.Box):
|
||||
self.maps_combo,
|
||||
self.button_grid,
|
||||
):
|
||||
self.pack_start(el, expand=False, fill=False, padding=0)
|
||||
self.pack_start(el, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||
|
||||
def _on_maps_activated(self, entry: Gtk.Entry) -> None:
|
||||
text = entry.get_text()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from typing import Self, TYPE_CHECKING
|
||||
|
||||
from dzgui.const.enum import ModButton
|
||||
from dzgui.const.constants import NO_EXPAND, FILL, NO_PADDING
|
||||
from dzgui.util.strings import mod_panel
|
||||
from dzgui.views.components.labels import BoldLabel
|
||||
|
||||
@@ -54,7 +55,7 @@ class ModSelectionPanel(Gtk.Box):
|
||||
for button in buttons:
|
||||
b = EnumeratedModButton(button)
|
||||
b.connect("clicked", self._on_button_clicked)
|
||||
self.main_panel.pack_start(b, expand=False, fill=True, padding=0)
|
||||
self.main_panel.pack_start(b, NO_EXPAND, FILL, NO_PADDING)
|
||||
|
||||
self.stale_panel = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
|
||||
self.highlight_stale_button = ModPanelButton(ModButton.HIGHLIGHT_STALE)
|
||||
@@ -66,11 +67,11 @@ class ModSelectionPanel(Gtk.Box):
|
||||
self.unhighlight_stale_button,
|
||||
self.select_stale_button,
|
||||
):
|
||||
self.stale_panel.pack_start(b, expand=False, fill=True, padding=0)
|
||||
self.stale_panel.pack_start(b, NO_EXPAND, FILL, NO_PADDING)
|
||||
b.connect("clicked", self._on_button_clicked)
|
||||
|
||||
for el in header, self.main_panel, self.stale_panel:
|
||||
self.pack_start(el, expand=False, fill=True, padding=0)
|
||||
self.pack_start(el, NO_EXPAND, FILL, NO_PADDING)
|
||||
|
||||
self.connect("map", self._reinit_button)
|
||||
|
||||
|
||||
@@ -6,6 +6,10 @@ from typing import Literal, TYPE_CHECKING
|
||||
|
||||
from dzgui.const.constants import (
|
||||
APP_NAME,
|
||||
NO_EXPAND,
|
||||
NO_FILL,
|
||||
FILL,
|
||||
NO_PADDING,
|
||||
)
|
||||
from dzgui.const.enum import ServerTab
|
||||
from dzgui.managers.update import UpdateManager
|
||||
@@ -69,9 +73,9 @@ class RightPanel(Gtk.Box):
|
||||
eb.connect("button-press-event", self._on_version_clicked)
|
||||
|
||||
for el in self.button_vbox, self.keys, self.filters_vbox, self.refresh_button:
|
||||
self.pack_start(el, expand=False, fill=True, padding=0)
|
||||
self.pack_start(el, NO_EXPAND, FILL, NO_PADDING)
|
||||
|
||||
self.pack_start(self.sel_panel, expand=False, fill=True, padding=0)
|
||||
self.pack_start(self.sel_panel, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||
|
||||
self.update_button = IconTextButton(
|
||||
"dialog-information-symbolic", label="Updates available"
|
||||
@@ -92,7 +96,7 @@ class RightPanel(Gtk.Box):
|
||||
"clicked", self._on_update_button_clicked, exe_path, update
|
||||
)
|
||||
self.gutter_box.add(eb)
|
||||
self.pack_start(self.gutter_box, expand=False, fill=True, padding=0)
|
||||
self.pack_start(self.gutter_box, NO_EXPAND, FILL, NO_PADDING)
|
||||
|
||||
def _on_update_button_clicked(
|
||||
self, button: Gtk.Button, exe_path: str, url: str
|
||||
|
||||
@@ -14,6 +14,7 @@ from dzgui.const.constants import HEX_GREEN, HEX_RED
|
||||
from dzgui.init.coords import get_local_coords
|
||||
from dzgui.init.dayz import is_dayz_installed
|
||||
from dzgui.init.update import check_updates
|
||||
from dzgui.const.constants import EXPAND, FILL
|
||||
from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager
|
||||
from dzgui.strings import preboot, dialogs
|
||||
from dzgui.util.format import format_exception
|
||||
@@ -117,8 +118,8 @@ class BootDialog(ColorAwareApp, Gtk.Dialog): # type: ignore
|
||||
self.error_box.add(self.button_hbox)
|
||||
|
||||
self.content = self.get_content_area()
|
||||
self.content.pack_start(self.scrollable_tree, expand=True, fill=True, padding=0)
|
||||
self.content.pack_start(self.error_box, expand=True, fill=True, padding=0)
|
||||
self.content.pack_start(self.scrollable_tree, EXPAND, FILL, 0)
|
||||
self.content.pack_start(self.error_box, EXPAND, FILL, 0)
|
||||
self.show_all()
|
||||
|
||||
self.error_box.hide()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from typing import Literal, Self, TYPE_CHECKING
|
||||
|
||||
from dzgui.const.constants import NO_EXPAND, NO_FILL, NO_PADDING, EXPAND, FILL
|
||||
from dzgui.strings import dialogs
|
||||
from dzgui.util import strings
|
||||
from dzgui.views.components.buttons import ClipboardButton
|
||||
@@ -45,7 +46,7 @@ class GenericDialog(Gtk.MessageDialog):
|
||||
|
||||
def pack(self, widget: Gtk.Widget) -> None:
|
||||
content = self.get_content_area()
|
||||
content.pack_start(widget, expand=True, fill=True, padding=0)
|
||||
content.pack_start(widget, EXPAND, FILL, NO_PADDING)
|
||||
|
||||
|
||||
class ConfirmationDialog(GenericDialog):
|
||||
@@ -120,13 +121,13 @@ class WaitDialog(GenericDialog):
|
||||
spinner_box.add(spinner)
|
||||
|
||||
if self.jobs > 1:
|
||||
content.pack_start(self.prog, expand=False, fill=False, padding=0)
|
||||
content.pack_start(self.prog, NO_EXPAND, NO_FILL, 0)
|
||||
else:
|
||||
content.pack_start(spinner_box, expand=False, fill=False, padding=0)
|
||||
content.pack_start(spinner_box, NO_EXPAND, NO_FILL, 0)
|
||||
spinner.start()
|
||||
|
||||
if show_cancel is True:
|
||||
content.pack_start(self.cancel, expand=False, fill=False, padding=0)
|
||||
content.pack_start(self.cancel, NO_EXPAND, NO_FILL, 0)
|
||||
|
||||
def update_text(self, msg: str) -> None:
|
||||
self.format_secondary_text(msg)
|
||||
@@ -271,7 +272,7 @@ class ExceptionDialog(TextBufferDialog):
|
||||
bottom_margin=10,
|
||||
)
|
||||
textview.set_buffer(Gtk.TextBuffer(text=trace))
|
||||
box.pack_start(textview, expand=True, fill=True, padding=0)
|
||||
box.pack_start(textview, EXPAND, FILL, 0)
|
||||
|
||||
self.error_details = Gtk.ScrolledWindow(
|
||||
overlay_scrolling=False,
|
||||
@@ -295,7 +296,7 @@ class ExceptionDialog(TextBufferDialog):
|
||||
)
|
||||
|
||||
details_textview.set_buffer(self.details_buffer)
|
||||
details_box.pack_start(details_textview, expand=True, fill=True, padding=10)
|
||||
details_box.pack_start(details_textview, EXPAND, FILL, 10)
|
||||
self.error_details.add(details_box)
|
||||
|
||||
self.error_notebook = Gtk.Notebook(show_tabs=False, margin_bottom=15)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import textwrap
|
||||
from typing import Self, TYPE_CHECKING
|
||||
|
||||
from dzgui.const.constants import NO_EXPAND, NO_FILL
|
||||
from dzgui.util.strings import notice
|
||||
from dzgui.views.dialogs.generic import GenericDialog
|
||||
from dzgui.views.components.buttons import SteamTextButton
|
||||
@@ -41,7 +42,7 @@ class WorkshopLinkDialog(GenericDialog):
|
||||
button.set_margin_start(60)
|
||||
button.set_margin_end(60)
|
||||
button.connect("clicked", self._on_button_clicked, uid)
|
||||
self.dialogBox.pack_end(button, expand=False, fill=False, padding=0)
|
||||
self.dialogBox.pack_end(button, NO_EXPAND, NO_FILL, 0)
|
||||
|
||||
self.show_all()
|
||||
self.connect("response", self._on_dialog_response)
|
||||
|
||||
@@ -13,6 +13,9 @@ from dzgui.const.constants import (
|
||||
FLATPAK_RUN_CMD,
|
||||
FLATPAK_SANDBOX,
|
||||
FLATPAK_STEAM_PATH,
|
||||
NO_EXPAND,
|
||||
NO_FILL,
|
||||
NO_PADDING,
|
||||
VIEW_CONCEAL,
|
||||
VIEW_REVEAL,
|
||||
)
|
||||
@@ -231,8 +234,8 @@ class ToggleField(Gtk.Box):
|
||||
self.radio1 = Gtk.RadioButton.new_with_label(None, first_option)
|
||||
self.radio2 = Gtk.RadioButton.new_from_widget(self.radio1)
|
||||
self.radio2.set_label(second_option)
|
||||
self.pack_start(self.radio1, expand=False, fill=False, padding=0)
|
||||
self.pack_start(self.radio2, expand=False, fill=False, padding=0)
|
||||
self.pack_start(self.radio1, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||
self.pack_start(self.radio2, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||
|
||||
def set_suboption_active(self, state: bool) -> None:
|
||||
# NOTE: defer connection of signal until after state is set
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from pathlib import Path
|
||||
from shared import get_git_root
|
||||
|
||||
BOILERPLATE = """
|
||||
This file includes the combined licenses to the following components:
|
||||
@@ -40,7 +40,7 @@ class CombinedLicense:
|
||||
|
||||
def concat_license() -> str:
|
||||
combined = CombinedLicense()
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
root = get_git_root()
|
||||
licenses = root.joinpath("docs/licenses")
|
||||
|
||||
main_license = root.joinpath(LICENSE_FILE)
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import shutil
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
par = Path(__file__).parent.parent
|
||||
clog = par / "CHANGELOG.md"
|
||||
target = par / "dzgui/data/CHANGELOG.md"
|
||||
from shared import get_git_root
|
||||
|
||||
root = get_git_root()
|
||||
clog = root.joinpath("CHANGELOG.md")
|
||||
target = root.joinpath("dzgui/data/CHANGELOG.md")
|
||||
|
||||
shutil.copy(clog, target)
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import tomllib
|
||||
from pathlib import Path
|
||||
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
from shared import get_git_root
|
||||
|
||||
|
||||
def get_entrypoint() -> None:
|
||||
root = get_git_root()
|
||||
p = root.joinpath("pyproject.toml")
|
||||
with open(p, "rb") as f:
|
||||
t = tomllib.load(f)
|
||||
|
||||
+3
-2
@@ -3,14 +3,15 @@ import requests
|
||||
import subprocess
|
||||
import tarfile
|
||||
|
||||
from pathlib import Path
|
||||
from urllib.parse import unquote
|
||||
|
||||
from shared import get_git_root
|
||||
|
||||
BUILD = "3.13.9"
|
||||
DATE = "20251014"
|
||||
CPYTHON_BUILD = f"cpython-{BUILD}"
|
||||
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
root = get_git_root()
|
||||
build_dir = root.joinpath("build")
|
||||
cpython_dir = build_dir.joinpath(CPYTHON_BUILD)
|
||||
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@ from pathlib import Path
|
||||
from concat_licenses import concat_license
|
||||
from parse_toml import get_entrypoint
|
||||
from prebuild import get_pyapp, rebuild_cpython
|
||||
from shared import get_git_root
|
||||
|
||||
|
||||
def update_uname(info: tarfile.TarInfo) -> tarfile.TarInfo:
|
||||
@@ -17,7 +18,7 @@ def update_uname(info: tarfile.TarInfo) -> tarfile.TarInfo:
|
||||
return info
|
||||
|
||||
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
root = get_git_root()
|
||||
dist_dir = root.joinpath("dist")
|
||||
build_dir = root.joinpath("build")
|
||||
|
||||
|
||||
+1
-10
@@ -1,16 +1,7 @@
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
from dzgui.app_init import build_gui
|
||||
|
||||
|
||||
def get_git_root() -> Path:
|
||||
proc = subprocess.run(
|
||||
["git", "rev-parse", "--show-toplevel"], capture_output=True, text=True
|
||||
)
|
||||
if proc.returncode != 0:
|
||||
raise OSError("Failed to parse git root")
|
||||
return Path(proc.stdout.rstrip())
|
||||
from shared import get_git_root
|
||||
|
||||
|
||||
def get_image_path() -> Path:
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def get_git_root() -> Path:
|
||||
proc = subprocess.run(
|
||||
["git", "rev-parse", "--show-toplevel"], capture_output=True, text=True
|
||||
)
|
||||
if proc.returncode != 0:
|
||||
raise OSError("Failed to parse git root")
|
||||
return Path(proc.stdout.rstrip())
|
||||
Reference in new issue
Block a user