mirror of
https://github.com/aclist/dztui.git
synced 2026-11-10 03:50:38 +01:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e5fadf928 | ||
|
|
fa2f86b03e | ||
|
|
c8fe6ec056 | ||
|
|
6901e5456e |
No files matched your search
@@ -24,14 +24,6 @@ from typing import Any
|
||||
logger = logging.getLogger(APP_NAME)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ModMeta:
|
||||
protocol: str
|
||||
published_id: str
|
||||
name: str
|
||||
timestamp: str
|
||||
|
||||
|
||||
def get_local_mod_ids(steam_path: Path) -> list[int]:
|
||||
workshop_path = get_local_mod_path(steam_path)
|
||||
mods = get_local_mods(workshop_path)
|
||||
|
||||
@@ -158,9 +158,6 @@ def build_gui(version: str, is_debug: bool) -> App | None:
|
||||
f.truncate(0)
|
||||
|
||||
if _is_steam_deck is False:
|
||||
# TODO: sudo escalation dialog
|
||||
# count = get_map_count()
|
||||
# TODO: move into module
|
||||
if FLATPAK_ROOT_PATH in lookup(XDG.config, Preferences.DEFAULT):
|
||||
has_client = has_flatpak_client()
|
||||
else:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -48,7 +48,7 @@ from dzgui.strings.dialogs import (
|
||||
waiting_for_directories,
|
||||
)
|
||||
from dzgui.strings import kb
|
||||
from dzgui.strings.server_mods import checkmark, resync
|
||||
from dzgui.strings.server_mods import checkmark, resync, invalid_mod
|
||||
from dzgui.util.format import format_exception, format_mib
|
||||
from dzgui.util.strings import dialog, server_timeout
|
||||
from dzgui.util.symlink import rebuild_symlinks
|
||||
@@ -197,9 +197,8 @@ class ConnectionManager:
|
||||
|
||||
is_last = self.is_last_server()
|
||||
|
||||
# TODO: strings
|
||||
invalid_mods = [
|
||||
(mod[0], mod[1]) for mod in remote_mods if mod[2] == "Invalid mod"
|
||||
(mod[0], mod[1]) for mod in remote_mods if mod[2] == invalid_mod
|
||||
]
|
||||
|
||||
prereqs = Prerequisites(
|
||||
@@ -277,8 +276,7 @@ class ConnectionManager:
|
||||
for mod in alpha_mods:
|
||||
# NOTE: if the mod is neither synched or out of date, it is a malformed mod
|
||||
if mod[2] == "":
|
||||
# TODO: strings
|
||||
mod[2] = "Invalid mod"
|
||||
mod[2] = invalid_mod
|
||||
|
||||
return alpha_mods, missing_mods
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ from typing import TYPE_CHECKING
|
||||
|
||||
from dzgui.model.model_factory import ModelFactory
|
||||
from dzgui.util import strings
|
||||
from dzgui.util.strings import all_maps
|
||||
from dzgui.strings.filters import all_maps
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.model.model_factory import FastInsertListStore
|
||||
@@ -106,16 +106,10 @@ class FilterManager:
|
||||
|
||||
self.reinit_map_store()
|
||||
maps.sort()
|
||||
for m in maps:
|
||||
# TODO: strings
|
||||
if m == "All maps":
|
||||
continue
|
||||
clean = [m for m in maps if m != all_maps]
|
||||
for m in clean:
|
||||
self.append_map([m])
|
||||
|
||||
# TODO: currently unused
|
||||
def get_unique_maps(self) -> list[str]:
|
||||
return [row[0] for row in self.map_store if row[0] != "All maps"]
|
||||
|
||||
def get_all_filters(self) -> tuple:
|
||||
map_name = self.get_active_map_name()
|
||||
enabled = self.get_filters()
|
||||
|
||||
@@ -5,6 +5,7 @@ from typing import Any, TYPE_CHECKING, Union
|
||||
from dzgui.const.enum import FilterMode
|
||||
from dzgui.model.model_factory import ModelFactory
|
||||
from dzgui.util import strings
|
||||
from dzgui.strings import filters as str_filters
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.managers.filter import FilterManager
|
||||
@@ -175,7 +176,7 @@ class ProxyModelManager:
|
||||
rows = self.filtered
|
||||
sel_map = self.filter_man.get_active_map_name()
|
||||
|
||||
if sel_map == strings.all_maps:
|
||||
if sel_map == str_filters.all_maps:
|
||||
return rows
|
||||
|
||||
rows = [row for row in rows if row[1] == sel_map]
|
||||
|
||||
@@ -1,2 +1,16 @@
|
||||
clipboard_button = "Copy to clipboard"
|
||||
clipboard_ip_button = "Copy IP to clipboard"
|
||||
|
||||
dock_button_collapse = "Collapse the connection panel"
|
||||
dock_button_expand = "Expand the connection panel"
|
||||
|
||||
workshop = "Steam Workshop"
|
||||
workshop_tooltip = "Open your Workshop subscriptions"
|
||||
|
||||
version_notifier = "Copied!"
|
||||
version_tooltip = "Click to copy to clipboard"
|
||||
|
||||
update_button = "Updates available"
|
||||
|
||||
unset_button_label = "Unset"
|
||||
unset_button_tooltip = "Unset this server as favorite"
|
||||
@@ -29,3 +29,5 @@ toggle_calc = "Toggle calculator"
|
||||
|
||||
server_details = "Server details"
|
||||
server_message = "Server message"
|
||||
|
||||
caught_cancel_signal = "Caught cancel signal, cleaning up"
|
||||
@@ -0,0 +1,4 @@
|
||||
all_maps = "All maps"
|
||||
filters_heading = "Filters"
|
||||
keyword_placeholder = "Filter by keyword"
|
||||
map_placeholder = "Filter by map"
|
||||
@@ -1 +1,2 @@
|
||||
tab_changed_label = "*"
|
||||
selectable_tree = "Ctrl-click to select multiple; Shift-click to select a range."
|
||||
@@ -0,0 +1,5 @@
|
||||
dialog_title = "Add a short note/reminder"
|
||||
dialog_subtitle = "Limit 30 chars"
|
||||
delete_button = "Delete note"
|
||||
ok_button = "Update note"
|
||||
current_note = "Current note: '{0}'"
|
||||
@@ -16,7 +16,9 @@ lan_combo = "LAN"
|
||||
fullscreen_eventbox = "This option is not available on Steam Deck."
|
||||
save_button = "Save"
|
||||
|
||||
api_placeholder = "Enter API key"
|
||||
api_failed = "API validation failed"
|
||||
api_validate = "Validate"
|
||||
|
||||
flatpak_label = "Flatpak client"
|
||||
flatpak_standard = "Standard"
|
||||
|
||||
@@ -3,4 +3,5 @@ mod_id = "ID"
|
||||
up_to_date = "Up to date"
|
||||
modlist = "Modlist"
|
||||
checkmark = "✓"
|
||||
resync="⟳"
|
||||
resync = "⟳"
|
||||
invalid_mod = "Invalid mod"
|
||||
@@ -159,9 +159,6 @@ filter_unofficial = "Unofficial"
|
||||
filter_modded = "Modded"
|
||||
filter_unmodded = "Unmodded"
|
||||
|
||||
# maps
|
||||
all_maps = "All maps"
|
||||
|
||||
# state
|
||||
unknown = "Unknown"
|
||||
none_provided = "None provided"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -106,8 +106,7 @@ class ClipboardButton(IconTextButton):
|
||||
self.controller = controller
|
||||
self.connect("clicked", self._on_button_clicked, func)
|
||||
|
||||
# TODO: strings
|
||||
self.set_tooltip_text("Copy to clipboard")
|
||||
self.set_tooltip_text(buttons.clipboard_button)
|
||||
|
||||
def _on_button_clicked(self, button: Self, func: Callable) -> None:
|
||||
def revert() -> Literal[False]:
|
||||
@@ -125,16 +124,14 @@ class CopyIpButton(ClipboardButton):
|
||||
def __init__(self, controller: Union["Controller", None], func: Callable) -> None:
|
||||
super().__init__(controller, func)
|
||||
|
||||
# TODO: strings
|
||||
self.set_tooltip_text("Copy IP to clipboard")
|
||||
self.set_tooltip_text(buttons.clipboard_ip_button)
|
||||
|
||||
|
||||
class CloseButton(IconTextButton):
|
||||
def __init__(self, label: str) -> None:
|
||||
super().__init__(icon=CLOSE, label=label)
|
||||
|
||||
# TODO: strings
|
||||
self.set_tooltip_text("Unset this server as favorite")
|
||||
self.set_tooltip_text(buttons.unset_button_tooltip)
|
||||
|
||||
|
||||
class WebButton(IconTextButton):
|
||||
@@ -252,6 +249,7 @@ class AddButton(IconTextButton):
|
||||
self.set_tooltip_text(connect_panel.add_tooltip)
|
||||
|
||||
|
||||
# TODO: drop
|
||||
class LoggerAlertsButton(IconTextButton):
|
||||
def __init__(self, warnings: int, errors: int) -> None:
|
||||
warnings_text = ""
|
||||
|
||||
@@ -3,6 +3,11 @@ from typing import Self, TYPE_CHECKING
|
||||
from dzgui.const.constants import CARET_DOWN, CARET_UP, UDP_PORT
|
||||
from dzgui.model.servers import ServerModelManager
|
||||
from dzgui.strings import connect_panel
|
||||
from dzgui.strings.buttons import (
|
||||
dock_button_collapse,
|
||||
dock_button_expand,
|
||||
unset_button_label,
|
||||
)
|
||||
from dzgui.util.keys import is_ctrl_mask
|
||||
from dzgui.views.components.buttons import (
|
||||
AddButton,
|
||||
@@ -36,21 +41,18 @@ class DockButton(IconButton):
|
||||
self.child = child
|
||||
self.connect("clicked", self._on_click)
|
||||
|
||||
self.collapse_text = "Collapse the connection panel"
|
||||
self.expand_text = "Expand the connection panel"
|
||||
|
||||
self.set_margin_top(10)
|
||||
self.set_tooltip_text(self.collapse_text)
|
||||
self.set_tooltip_text(dock_button_collapse)
|
||||
|
||||
def collapse(self) -> None:
|
||||
self.set_image(Icon(CARET_UP))
|
||||
self.child.hide()
|
||||
self.set_tooltip_text(self.expand_text)
|
||||
self.set_tooltip_text(dock_button_expand)
|
||||
|
||||
def expand(self) -> None:
|
||||
self.set_image(Icon(CARET_DOWN))
|
||||
self.child.show()
|
||||
self.set_tooltip_text(self.collapse_text)
|
||||
self.set_tooltip_text(dock_button_collapse)
|
||||
|
||||
def _on_click(self, button: Self) -> None:
|
||||
if self.expanded:
|
||||
@@ -81,7 +83,6 @@ class LanPanel(Gtk.Frame):
|
||||
self.scan = Gtk.Button(label=connect_panel.lan_scan_button)
|
||||
self.scan.connect("clicked", self._on_scan_clicked)
|
||||
|
||||
# TODO: strings
|
||||
self.early_abort = Gtk.CheckButton(label=connect_panel.lan_checkbox)
|
||||
self.early_abort.set_active(True)
|
||||
self.early_abort.set_tooltip_text(connect_panel.lan_abort_tooltip)
|
||||
@@ -189,8 +190,7 @@ class FavPanel(Gtk.Frame):
|
||||
self.fav_button.connect("clicked", self._on_connect_clicked)
|
||||
self.copy_button = CopyIpButton(self.controller, self.get_fav_ip)
|
||||
|
||||
# TODO: strings
|
||||
self.unset_button = CloseButton("Unset")
|
||||
self.unset_button = CloseButton(unset_button_label)
|
||||
self.unset_button.connect("clicked", self._on_unset_clicked)
|
||||
|
||||
if favorite is None:
|
||||
|
||||
@@ -4,6 +4,7 @@ from dzgui.api.servers import validate_ip
|
||||
from dzgui.const.constants import VIEW_CONCEAL, VIEW_REVEAL
|
||||
from dzgui.util.css import add_class, remove_class
|
||||
from dzgui.strings import connect_panel
|
||||
from dzgui.strings.options import api_placeholder, api_validate
|
||||
from dzgui.strings.errors import api_popover
|
||||
|
||||
import gi
|
||||
@@ -143,9 +144,8 @@ class APIEntry(Gtk.Box):
|
||||
|
||||
self.func: Callable | None = None
|
||||
|
||||
# TODO: strings
|
||||
self.entry = Gtk.Entry(
|
||||
width_chars=60, hexpand=True, placeholder_text="Enter API key"
|
||||
width_chars=60, hexpand=True, placeholder_text=api_placeholder
|
||||
)
|
||||
self.entry.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, VIEW_REVEAL)
|
||||
self.entry.set_icon_activatable(Gtk.EntryIconPosition.SECONDARY, True)
|
||||
@@ -154,8 +154,7 @@ class APIEntry(Gtk.Box):
|
||||
self.entry.connect("icon-release", self._on_icon_release)
|
||||
self.entry.connect("activate", self._on_field_activated)
|
||||
|
||||
# TODO: strings
|
||||
self.submit = Gtk.Button(label="Validate")
|
||||
self.submit = Gtk.Button(label=api_validate)
|
||||
self.submit.set_sensitive(False)
|
||||
self.submit.connect("clicked", self._on_submit)
|
||||
|
||||
|
||||
@@ -3,10 +3,19 @@ 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
|
||||
from dzgui.util.strings import all_maps
|
||||
from dzgui.strings.filters import (
|
||||
all_maps,
|
||||
filters_heading,
|
||||
keyword_placeholder,
|
||||
map_placeholder,
|
||||
)
|
||||
from dzgui.views.components.maps_combo import MapsCombo
|
||||
from dzgui.views.components.labels import BoldLabel
|
||||
|
||||
@@ -98,8 +107,7 @@ class ButtonGrid(Gtk.Grid):
|
||||
|
||||
class KeywordEntry(Gtk.Entry):
|
||||
def __init__(self, controller: "Controller") -> None:
|
||||
# TODO :strings
|
||||
super().__init__(placeholder_text="Filter by keyword")
|
||||
super().__init__(placeholder_text=keyword_placeholder)
|
||||
|
||||
self.keyword = ""
|
||||
self.controller = controller
|
||||
@@ -173,8 +181,7 @@ class FilterPanel(Gtk.Box):
|
||||
self.keyword_entry = KeywordEntry(self.controller)
|
||||
self.button_grid = ButtonGrid(self.controller, defaults, tooltips)
|
||||
|
||||
# TODO: strings
|
||||
self.filters_label = BoldLabel("Filters")
|
||||
self.filters_label = BoldLabel(filters_heading)
|
||||
|
||||
self.emitter.connect(
|
||||
"request_keyword_focus", lambda _: self.keyword_entry.grab_focus()
|
||||
@@ -194,13 +201,12 @@ class FilterPanel(Gtk.Box):
|
||||
|
||||
self.maps_entry: Gtk.Entry = self.maps_combo.get_child() # type: ignore
|
||||
self.maps_entry.set_completion(completion)
|
||||
# TODO: strings
|
||||
self.maps_entry.set_placeholder_text("Filter by map")
|
||||
self.maps_entry.set_placeholder_text(map_placeholder)
|
||||
self.maps_entry.connect("changed", self._on_map_completion, True)
|
||||
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 +216,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,9 +6,14 @@ 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
|
||||
from dzgui.strings.buttons import update_button, version_notifier, version_tooltip
|
||||
from dzgui.util.clip import copy_clipboard
|
||||
from dzgui.util.file import is_writeable
|
||||
from dzgui.views.components.buttonbox import ButtonBox
|
||||
@@ -61,20 +66,19 @@ class RightPanel(Gtk.Box):
|
||||
vexpand=True,
|
||||
halign=Gtk.Align.END,
|
||||
valign=Gtk.Align.END,
|
||||
# TODO: strings
|
||||
tooltip_text="Click to copy to clipboard",
|
||||
tooltip_text=version_tooltip,
|
||||
)
|
||||
eb = Gtk.EventBox(halign=Gtk.Align.END, valign=Gtk.Align.END)
|
||||
eb.add(self.version_label)
|
||||
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"
|
||||
"dialog-information-symbolic", label=update_button
|
||||
)
|
||||
|
||||
self.gutter_box = Gtk.Box(
|
||||
@@ -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
|
||||
@@ -127,7 +131,6 @@ class RightPanel(Gtk.Box):
|
||||
return
|
||||
self.copying = True
|
||||
version = self.version_label.get_text()
|
||||
# TODO: strings
|
||||
self.version_label.set_text("Copied!")
|
||||
self.version_label.set_text(version_notifier)
|
||||
copy_clipboard(version)
|
||||
GLib.timeout_add_seconds(1, revert)
|
||||
@@ -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)
|
||||
@@ -139,8 +140,7 @@ class WaitDialog(GenericDialog):
|
||||
self.cur_job += 1
|
||||
|
||||
def _on_cancel_clicked(self, button: Gtk.Button) -> None:
|
||||
# TODO: strings
|
||||
GLib.idle_add(self.update_text, "Caught cancel signal, cleaning up")
|
||||
GLib.idle_add(self.update_text, dialogs.caught_cancel_signal)
|
||||
self.controller.set_cancel_event()
|
||||
|
||||
def show_cancel(self, state: bool) -> None:
|
||||
@@ -271,7 +271,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 +295,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)
|
||||
|
||||
+11
-19
@@ -1,12 +1,13 @@
|
||||
from typing import Self, TYPE_CHECKING
|
||||
|
||||
from dzgui.strings import notes
|
||||
from dzgui.views.components.entry import ValidatedEntry
|
||||
from dzgui.views.dialogs.generic import GenericDialog
|
||||
|
||||
import gi # noqa E402
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gdk, Gtk # noqa E402
|
||||
from gi.repository import Gtk
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
@@ -14,23 +15,20 @@ if TYPE_CHECKING:
|
||||
|
||||
class NoteDialog(GenericDialog):
|
||||
def __init__(self, controller: "Controller"):
|
||||
# TODO: add to strings
|
||||
title = "Add a short note/reminder."
|
||||
secondary = "Limit 30 chars"
|
||||
super().__init__(
|
||||
controller=controller,
|
||||
text=title,
|
||||
text=notes.dialog_title,
|
||||
buttons=Gtk.ButtonsType.NONE,
|
||||
mtype=Gtk.MessageType.INFO,
|
||||
secondary=secondary,
|
||||
secondary=notes.dialog_subtitle,
|
||||
)
|
||||
|
||||
self.controller = controller
|
||||
|
||||
delete_button = Gtk.Button(label="Delete note")
|
||||
delete_button = Gtk.Button(label=notes.delete_button)
|
||||
delete_button.set_sensitive(False)
|
||||
self.add_action_widget(delete_button, Gtk.ResponseType.CANCEL)
|
||||
self.ok = self.add_button("Update note", Gtk.ResponseType.OK)
|
||||
self.ok = self.add_button(notes.ok_button, Gtk.ResponseType.OK)
|
||||
self.ok.grab_default()
|
||||
|
||||
self.entry = ValidatedEntry(controller, self.validate)
|
||||
@@ -42,7 +40,7 @@ class NoteDialog(GenericDialog):
|
||||
self.entry.set_text(note)
|
||||
if len(note) > 0:
|
||||
delete_button.set_sensitive(True)
|
||||
self.format_secondary_text(f"Current note: '{note}'")
|
||||
self.format_secondary_text(notes.current_note.format(note))
|
||||
elif len(note) == 0:
|
||||
self.ok.set_sensitive(False)
|
||||
|
||||
@@ -55,9 +53,6 @@ class NoteDialog(GenericDialog):
|
||||
self.entry.connect("changed", self._on_text_changed)
|
||||
|
||||
def _on_text_changed(self, entry: Gtk.Entry) -> None:
|
||||
"""
|
||||
Called in conjunction with signal callback in the parent class
|
||||
"""
|
||||
if len(entry.get_text()) == 0:
|
||||
self.ok.set_sensitive(False)
|
||||
|
||||
@@ -71,14 +66,11 @@ class NoteDialog(GenericDialog):
|
||||
|
||||
def _on_response(self, dialog: Self, response: Gtk.ResponseType) -> None:
|
||||
match response:
|
||||
case Gtk.ResponseType.DELETE_EVENT:
|
||||
self.destroy()
|
||||
case Gtk.ResponseType.OK:
|
||||
note = self.entry.get_text()
|
||||
self.controller.add_note(note)
|
||||
self.destroy()
|
||||
case Gtk.ResponseType.CANCEL:
|
||||
self.controller.delete_note()
|
||||
self.destroy()
|
||||
case Gtk.ResponseType.CANCEL | Gtk.ResponseType.CLOSE:
|
||||
self.destroy()
|
||||
case _:
|
||||
pass
|
||||
self.destroy()
|
||||
@@ -14,7 +14,7 @@ from dzgui.const.constants import (
|
||||
HERO_PATH,
|
||||
FLATPAK_ROOT_PATH,
|
||||
LEGACY_CONFIG_PATH,
|
||||
TMP_PATH
|
||||
TMP_PATH,
|
||||
)
|
||||
from dzgui.const.boilerplate import config_boilerplate
|
||||
from dzgui.const.endpoints import STEAM_API_SETUP
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -5,6 +5,7 @@ from typing import Self, TYPE_CHECKING
|
||||
from dzgui.const.constants import APP_NAME
|
||||
from dzgui.const.enum import ContextMenuGroup, ServerTab
|
||||
from dzgui.views.trees.tree_servers import ServerTreeView
|
||||
from dzgui.strings.generic import tab_changed_label
|
||||
from dzgui.util.strings import server_labels
|
||||
|
||||
import gi
|
||||
@@ -147,8 +148,7 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
||||
|
||||
label = self.notebook.get_tab_label_text(child)
|
||||
if label is not None:
|
||||
# TODO: strings
|
||||
text = label.strip("*")
|
||||
text = label.strip(tab_changed_label)
|
||||
self.notebook.set_tab_label_text(child, text)
|
||||
|
||||
tree = child.get_tree()
|
||||
|
||||
Reference in new issue
Block a user