mirror of
https://github.com/aclist/dztui.git
synced 2026-08-26 17:57:06 +02:00
292 lines
7.5 KiB
Python
292 lines
7.5 KiB
Python
from enum import Enum
|
|
from typing import Any, Self
|
|
|
|
from dzgui.util import strings
|
|
|
|
|
|
class Port(Enum):
|
|
DEFAULT = 1
|
|
CUSTOM = 2
|
|
|
|
|
|
class ServerTab(Enum):
|
|
BROWSER = 0
|
|
SAVED = 1
|
|
RECENT = 2
|
|
LAN = 3
|
|
|
|
|
|
class Popup(Enum):
|
|
WAIT = 1
|
|
NOTIFY = 2
|
|
CONFIRM = 3
|
|
ENTRY = 4
|
|
MODLIST = 6
|
|
DETAILS = 7
|
|
QUIT = 8
|
|
|
|
|
|
class VAdjustment(Enum):
|
|
UP = 1
|
|
DOWN = 2
|
|
TOP = 3
|
|
BOTTOM = 4
|
|
|
|
|
|
class CursorPosition(Enum):
|
|
UP = 1
|
|
DOWN = 2
|
|
TOP = 3
|
|
BOTTOM = 4
|
|
|
|
|
|
class FilterMode(Enum):
|
|
INITIAL = 1
|
|
TOGGLE_OFF = 2
|
|
TOGGLE_ON = 3
|
|
|
|
|
|
class EnumWithAttrs(Enum):
|
|
def __new__(cls, *args: Any, **kwargs: Any) -> Self:
|
|
value = len(cls.__members__) + 1
|
|
obj = object.__new__(cls)
|
|
obj._value_ = value
|
|
return obj
|
|
|
|
def __init__(self, d: dict):
|
|
self.dict = d
|
|
|
|
|
|
class Preferences(EnumWithAttrs):
|
|
STEAM = {
|
|
"key": "steam_api",
|
|
}
|
|
CLIENT = {
|
|
"key": "client",
|
|
}
|
|
WINDOW = {
|
|
"key": "fullscreen",
|
|
}
|
|
DIST = {
|
|
"key": "use_miles",
|
|
}
|
|
NAME = {
|
|
"key": "name",
|
|
}
|
|
DEFAULT = {
|
|
"key": "default_steam_path",
|
|
}
|
|
FAV_LBL = {
|
|
"key": "fav_label",
|
|
}
|
|
FAV_SRV = {
|
|
"key": "fav_server",
|
|
}
|
|
IP_LIST = {
|
|
"key": "ip_list",
|
|
}
|
|
START_TAB = {
|
|
"key": "start_tab",
|
|
}
|
|
|
|
|
|
class NotebookPage(EnumWithAttrs):
|
|
OFFLINE = {"crumbs": strings.crumbs.offline, "statusbar": True}
|
|
CHANGELOG = {"crumbs": strings.crumbs.changelog, "statusbar": True}
|
|
DEVELOPERS = {"crumbs": strings.crumbs.developers, "statusbar": False}
|
|
HELP = {"crumbs": strings.crumbs._help, "statusbar": True}
|
|
KEYS = {"crumbs": strings.crumbs.keys, "statusbar": True}
|
|
LOG = {"crumbs": strings.crumbs.log, "statusbar": True}
|
|
MODS = {"crumbs": strings.crumbs.mods, "statusbar": True}
|
|
OPTIONS = {"crumbs": strings.crumbs.options, "statusbar": False}
|
|
SERVERS = {"crumbs": strings.crumbs.servers, "statusbar": True}
|
|
THANKS = {"crumbs": strings.crumbs.thanks, "statusbar": True}
|
|
CONNECTION = {"crumbs": "Connect", "statusbar": True}
|
|
|
|
|
|
class RowType(EnumWithAttrs):
|
|
# TODO: strings
|
|
CHANGELOG = {
|
|
"label": "View changelog",
|
|
"tooltip": "Opens the DZGUI changelog",
|
|
}
|
|
SHOW_LOG = {
|
|
"label": "Show debug log",
|
|
"tooltip": "Read the DZGUI log generated since startup",
|
|
}
|
|
SEPARATOR = {
|
|
"label": "SEPARATOR",
|
|
"tooltip": "",
|
|
}
|
|
DUMP_LOG = {
|
|
"label": "Output system info to log file",
|
|
"tooltip": "Dump diagnostic data for troubleshooting",
|
|
}
|
|
DOCS = {
|
|
"label": "Documentation/help files (GitHub) ⧉",
|
|
"tooltip": "Open the DZGUI documentation in a browser",
|
|
}
|
|
DOCS_FALLBACK = {
|
|
"label": "Documentation/help files (Codeberg mirror) ⧉",
|
|
"tooltip": "Open the DZGUI documentation in a browser",
|
|
}
|
|
BUGS = {
|
|
"label": "Report a bug (GitHub) ⧉",
|
|
"tooltip": "Open the DZGUI issue tracker in a browser",
|
|
}
|
|
FORUM = {
|
|
"label": "DZGUI Subreddit ⧉",
|
|
"tooltip": "Open the DZGUI discussion forum in a browser",
|
|
}
|
|
SPONSOR = {
|
|
"label": "Sponsor (GitHub) ⧉",
|
|
"tooltip": "Sponsor development of the DZGUI project",
|
|
}
|
|
THANKS = {
|
|
"label": "Special thanks",
|
|
"tooltip": "A list of contributors, testers, and sponsors",
|
|
}
|
|
|
|
|
|
# TODO: rename to ContextMenuItem
|
|
class ContextMenu(EnumWithAttrs):
|
|
ADD_NOTE = {"label": strings.add_note}
|
|
ADD_SERVER = {"label": strings.add}
|
|
CONNECT = {"label": strings.connect}
|
|
COPY_LOG_CLIPBOARD = {"label": strings.copy_log}
|
|
COPY_SERVER_IP = {"label": strings.copy_ip}
|
|
COPY_SERVER_NAME = {"label": strings.copy_name}
|
|
UNSUB_MOD = {"label": strings.unsub_mod}
|
|
OPEN_WORKSHOP = {"label": strings.open_workshop}
|
|
REFRESH_PLAYERS = {"label": strings.refresh_players}
|
|
REMOVE_HISTORY = {"label": strings.remove_history}
|
|
REMOVE_SERVER = {"label": strings.remove}
|
|
SET_FAV = {"label": strings.add_fav}
|
|
SHOW_DETAILS = {"label": strings.show_details}
|
|
SHOW_MODS = {"label": strings.show_mods}
|
|
|
|
|
|
class ContextMenuGroup(Enum):
|
|
"""
|
|
Groupings of context menu items
|
|
"""
|
|
|
|
SERVER_MOD = (ContextMenu.OPEN_WORKSHOP,)
|
|
MOD = (ContextMenu.OPEN_WORKSHOP, ContextMenu.UNSUB_MOD)
|
|
MOD_OFFLINE = (None,)
|
|
LOG = (ContextMenu.COPY_LOG_CLIPBOARD,)
|
|
SERVER_BROWSER = (
|
|
ContextMenu.CONNECT,
|
|
ContextMenu.ADD_SERVER,
|
|
ContextMenu.SET_FAV,
|
|
ContextMenu.COPY_SERVER_NAME,
|
|
ContextMenu.COPY_SERVER_IP,
|
|
ContextMenu.ADD_NOTE,
|
|
ContextMenu.SHOW_MODS,
|
|
ContextMenu.SHOW_DETAILS,
|
|
ContextMenu.REFRESH_PLAYERS,
|
|
)
|
|
SCAN_LAN = (
|
|
ContextMenu.CONNECT,
|
|
ContextMenu.SET_FAV,
|
|
ContextMenu.COPY_SERVER_NAME,
|
|
ContextMenu.COPY_SERVER_IP,
|
|
ContextMenu.ADD_NOTE,
|
|
ContextMenu.SHOW_MODS,
|
|
ContextMenu.SHOW_DETAILS,
|
|
ContextMenu.REFRESH_PLAYERS,
|
|
)
|
|
SAVED = (
|
|
ContextMenu.CONNECT,
|
|
ContextMenu.SET_FAV,
|
|
ContextMenu.REMOVE_SERVER,
|
|
ContextMenu.COPY_SERVER_NAME,
|
|
ContextMenu.COPY_SERVER_IP,
|
|
ContextMenu.ADD_NOTE,
|
|
ContextMenu.SHOW_MODS,
|
|
ContextMenu.SHOW_DETAILS,
|
|
ContextMenu.REFRESH_PLAYERS,
|
|
)
|
|
RECENT = (
|
|
ContextMenu.CONNECT,
|
|
ContextMenu.ADD_SERVER,
|
|
ContextMenu.SET_FAV,
|
|
ContextMenu.REMOVE_HISTORY,
|
|
ContextMenu.COPY_SERVER_NAME,
|
|
ContextMenu.COPY_SERVER_IP,
|
|
ContextMenu.ADD_NOTE,
|
|
ContextMenu.SHOW_MODS,
|
|
ContextMenu.SHOW_DETAILS,
|
|
ContextMenu.REFRESH_PLAYERS,
|
|
)
|
|
|
|
|
|
class ModButton(EnumWithAttrs):
|
|
SELECT_ALL = {
|
|
"label": strings.mod_panel.select_all,
|
|
"tooltip": strings.mod_panel.select_all_tooltip,
|
|
}
|
|
UNSELECT_ALL = {
|
|
"label": strings.mod_panel.unselect_all,
|
|
"tooltip": strings.mod_panel.unselect_all_tooltip,
|
|
}
|
|
HIGHLIGHT_STALE = {
|
|
"label": strings.mod_panel.highlight_stale,
|
|
"tooltip": strings.mod_panel.highlight_stale_tooltip,
|
|
}
|
|
UNHIGHLIGHT_STALE = {
|
|
"label": strings.mod_panel.unhighlight_stale,
|
|
"tooltip": strings.mod_panel.unhighlight_stale_tooltip,
|
|
}
|
|
UNSUB_SELECTED = {
|
|
"label": strings.mod_panel.unsub_selected,
|
|
"tooltip": strings.mod_panel.unsub_selected_tooltip,
|
|
}
|
|
SELECT_STALE = {
|
|
"label": strings.mod_panel.select_stale,
|
|
"tooltip": strings.mod_panel.select_stale_tooltip,
|
|
}
|
|
|
|
|
|
class ButtonType(EnumWithAttrs):
|
|
SERVERS = {
|
|
"label": strings.buttons.servers_label,
|
|
"tooltip": strings.buttons.servers_tooltip,
|
|
"opens": NotebookPage.SERVERS,
|
|
}
|
|
MODS = {
|
|
"label": strings.buttons.mods_label,
|
|
"tooltip": strings.buttons.mods_tooltip,
|
|
"opens": NotebookPage.MODS,
|
|
}
|
|
OPTIONS = {
|
|
"label": strings.buttons.options_label,
|
|
"tooltip": strings.buttons.options_tooltip,
|
|
"opens": NotebookPage.OPTIONS,
|
|
}
|
|
HELP = {
|
|
"label": strings.buttons.help_label,
|
|
"tooltip": strings.buttons.help_tooltip,
|
|
"opens": NotebookPage.HELP,
|
|
}
|
|
EXIT = {
|
|
"label": strings.buttons.exit_label,
|
|
"tooltip": strings.buttons.exit_tooltip,
|
|
"opens": None,
|
|
}
|
|
|
|
|
|
HELP_MENU_ROWS = (
|
|
RowType.CHANGELOG,
|
|
RowType.SHOW_LOG,
|
|
RowType.DUMP_LOG,
|
|
RowType.SEPARATOR,
|
|
RowType.DOCS,
|
|
RowType.DOCS_FALLBACK,
|
|
RowType.BUGS,
|
|
RowType.FORUM,
|
|
RowType.SPONSOR,
|
|
RowType.SEPARATOR,
|
|
RowType.THANKS,
|
|
)
|