mirror of
https://github.com/aclist/dztui.git
synced 2026-08-26 01:37:18 +02:00
chore: clear typehinting errors
This commit is contained in:
parent
e64feac425
commit
25640751a5
@ -1,4 +1,3 @@
|
||||
import dayzquery
|
||||
import hashlib
|
||||
import logging
|
||||
import shlex
|
||||
@ -9,7 +8,7 @@ from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
import dzgui.api.pefile as PeFile
|
||||
from dzgui.api.servers import Record, get_rules, fqip_to_record
|
||||
from dzgui.api.servers import get_rules, fqip_to_record
|
||||
from dzgui.const.constants import (
|
||||
APP_NAME,
|
||||
APPID_DAYZ,
|
||||
@ -17,7 +16,6 @@ from dzgui.const.constants import (
|
||||
WORKSHOP_PATH,
|
||||
)
|
||||
|
||||
from dzgui.util.strings import checkmark
|
||||
from dzgui.config.query import lookup
|
||||
from dzgui.const.enum import Preferences
|
||||
|
||||
@ -110,23 +108,6 @@ def get_missing_mods(local: list, remote: list) -> list:
|
||||
return [mod for mod in remote if mod not in local]
|
||||
|
||||
|
||||
# TODO: drop
|
||||
# def get_server_modlist(server: Record, steam: Path) -> list:
|
||||
# try:
|
||||
# rules = dayzquery.dayz_rules((server.ip, server.qport))
|
||||
# except Exception as e:
|
||||
# raise e
|
||||
# remote_mods = [[mod.name, mod.workshop_id] for mod in rules.mods]
|
||||
# remote_mods.sort(key=lambda row: row[0])
|
||||
# local_mods = get_local_mod_ids(steam)
|
||||
# for mod in remote_mods:
|
||||
# if mod[1] in local_mods:
|
||||
# mod.append(checkmark)
|
||||
# else:
|
||||
# mod.append("")
|
||||
# return remote_mods
|
||||
|
||||
|
||||
def _hash(uid: str) -> str:
|
||||
md5 = hashlib.md5()
|
||||
md5.update(uid.encode("ascii"))
|
||||
|
||||
@ -443,12 +443,12 @@ def get_rules(record: Record) -> list["DayzMod"]:
|
||||
return [mod for mod in mods]
|
||||
|
||||
|
||||
def query_by_id(addr: str, key: str, full: bool = False) -> dict[Any] | None:
|
||||
def query_by_id(server_id: int, key: str, full: bool = False) -> dict[Any] | None:
|
||||
"""
|
||||
Used with numeric Battlemetrics IDs
|
||||
"""
|
||||
try:
|
||||
resolved = map_id_to_record(key, addr)
|
||||
resolved = map_id_to_record(key, server_id)
|
||||
return query_direct(resolved.ip, resolved.qport, full)
|
||||
except Exception as e:
|
||||
logger.critical(e)
|
||||
@ -470,11 +470,11 @@ def query_playercount(record: Record) -> tuple[int, int] | None:
|
||||
return None
|
||||
|
||||
|
||||
def query_by_ip(addr: str, full: bool = False) -> dict[Any] | None:
|
||||
def query_by_ip(addr: str, full: bool = False) -> dict[str, Any] | PreReqs | None:
|
||||
record = short_ip_to_record(addr)
|
||||
return query_by_record(record, full)
|
||||
|
||||
def query_by_record(record: Record, full: bool = False) -> dict[Any] | None:
|
||||
def query_by_record(record: Record, full: bool = False) -> dict[str, Any] | PreReqs | None:
|
||||
if full:
|
||||
try:
|
||||
info = a2s.info((record.ip, record.qport), 3.0)
|
||||
@ -511,11 +511,6 @@ def response_to_fqip(res: dict) -> str:
|
||||
return f"{ip}:{gameport}:{qport}"
|
||||
|
||||
|
||||
def source_info_to_record(res: a2s.SourceInfo) -> Record:
|
||||
print(res)
|
||||
return
|
||||
return Record(ip, int(gameport), int(qport))
|
||||
|
||||
def response_to_record(res: dict) -> Record:
|
||||
ip = res["addr"].split(":")[0]
|
||||
gameport = res["gameport"]
|
||||
|
||||
@ -83,7 +83,7 @@ def find_user_id(path: Path) -> str | None:
|
||||
j = json.loads(vdf)
|
||||
for user in j["users"]:
|
||||
if j["users"][user]["MostRecent"] == "1":
|
||||
return user
|
||||
return str(user)
|
||||
return None
|
||||
except Exception as e:
|
||||
logger.warn(e)
|
||||
@ -91,7 +91,7 @@ def find_user_id(path: Path) -> str | None:
|
||||
|
||||
|
||||
def vdf2json(path: Path) -> str:
|
||||
def _istr(indent, string):
|
||||
def _istr(indent: int, string: str):
|
||||
return (indent * " ") + string
|
||||
|
||||
jbuf = "{\n"
|
||||
|
||||
@ -48,7 +48,7 @@ def get_favorites(path: Path) -> list[str]:
|
||||
|
||||
|
||||
def enum_to_key(enum: Preferences) -> str:
|
||||
return enum.dict["key"]
|
||||
return str(enum.dict["key"])
|
||||
|
||||
|
||||
def get_client_index(client: str) -> int:
|
||||
|
||||
@ -46,6 +46,7 @@ if TYPE_CHECKING:
|
||||
from dzgui.views.components.filter_panel import FilterPanel
|
||||
from dzgui.views.components.right_panel import RightPanel
|
||||
from dzgui.views.components.statusbar import Statusbar
|
||||
from dzgui.views.pages.preconnect import PreConnectionAssistant
|
||||
from dzgui.views.pages.servers import ServerNotebook
|
||||
from dzgui.views.trees.tree_log import LogTreeView
|
||||
from dzgui.views.trees.tree_menu import MenuTreeView
|
||||
@ -199,7 +200,6 @@ class Controller(GObject.GObject):
|
||||
except Exception:
|
||||
return
|
||||
case ButtonType.MODS:
|
||||
# TODO: reload using refresh button, rather than on demand?
|
||||
self.load_mods()
|
||||
|
||||
self.open_page(button.opens)
|
||||
@ -393,7 +393,7 @@ class Controller(GObject.GObject):
|
||||
if addr.isdigit():
|
||||
config_man = self.get_config_man()
|
||||
key = config_man.lookup(Preferences.BM)
|
||||
ConnectionManager(self).connect_by_id(addr, key)
|
||||
ConnectionManager(self).connect_by_id(int(addr), key)
|
||||
else:
|
||||
ConnectionManager(self).connect_by_ip(addr)
|
||||
|
||||
@ -452,7 +452,7 @@ class Controller(GObject.GObject):
|
||||
def get_modtreeview(self) -> "ModTreeView":
|
||||
return self.mediator.modtreeview
|
||||
|
||||
def get_exit_event(self) -> None:
|
||||
def get_exit_event(self) -> threading.Event:
|
||||
return self.exit_event
|
||||
|
||||
def set_exit_event(self) -> None:
|
||||
@ -461,10 +461,7 @@ class Controller(GObject.GObject):
|
||||
def open_connection_assistant(self, res: "PreReqs", mods: list["DayzMod"]) -> None:
|
||||
self.open_page(NotebookPage.CONNECTION)
|
||||
self.mediator.preconnect.populate(res, mods)
|
||||
# TODO: populate assistant
|
||||
# TODO: embed dialogs
|
||||
# dialog = ServerModDialog(self, mods)
|
||||
|
||||
def set_start_tab(self) -> int:
|
||||
def set_start_tab(self) -> None:
|
||||
ind = self.config_man.get_start_tab()
|
||||
self.get_servers().notebook.set_current_page(ind)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import shutil
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Any, Union, TYPE_CHECKING
|
||||
from typing import Union, TYPE_CHECKING
|
||||
|
||||
import dzgui.api.pefile as PeFile
|
||||
import dzgui.api.servers as Servers
|
||||
@ -30,8 +30,8 @@ class ConnectionManager:
|
||||
self.thread_man = ThreadingManager(controller)
|
||||
|
||||
@call_on_thread(dialog.querying)
|
||||
def connect_by_id(self, addr: str, key: str) -> None:
|
||||
res = Servers.query_by_id(addr, key, full=True)
|
||||
def connect_by_id(self, _id: int, key: str) -> None:
|
||||
res = Servers.query_by_id(_id, key, full=True)
|
||||
self._prepare_connection(res)
|
||||
|
||||
@call_on_thread(dialog.querying)
|
||||
@ -89,7 +89,7 @@ class ConnectionManager:
|
||||
StoredFunc(self._present_details_dialog, details), destroy_first=True
|
||||
)
|
||||
|
||||
def _query_modlist(self, record: Servers.Record) -> None:
|
||||
def _query_modlist(self, record: Servers.Record) -> list[list[str]]:
|
||||
mods = Servers.get_rules(record)
|
||||
steam_path = self.controller.query_config(Preferences.DEFAULT)
|
||||
local = get_local_mod_ids(steam_path)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import re
|
||||
|
||||
from typing import Any, Optional, TYPE_CHECKING
|
||||
from typing import Any, Optional, TYPE_CHECKING, Union
|
||||
from warnings import deprecated
|
||||
|
||||
from dzgui.const.enum import FilterMode
|
||||
@ -14,6 +14,7 @@ if TYPE_CHECKING:
|
||||
from dzgui.model.servers import NewPlayerCount
|
||||
|
||||
|
||||
# TODO: annotate list contents (list[list[Any]])
|
||||
class ProxyModelManager:
|
||||
"""
|
||||
Manages access to cached FastInsertListStore resources and
|
||||
@ -34,7 +35,7 @@ class ProxyModelManager:
|
||||
|
||||
# TODO: list typehints
|
||||
self.control_model: list | None = None
|
||||
self.filtered: list | None = None
|
||||
self.filtered: list = []
|
||||
self.success = True
|
||||
|
||||
def has_control_model(self) -> bool:
|
||||
@ -60,6 +61,8 @@ class ProxyModelManager:
|
||||
# self.control_model.append(row)
|
||||
|
||||
def remove_row_from_control(self, record: "Record") -> None:
|
||||
if self.control_model is None:
|
||||
return
|
||||
addr = f"{record.ip}:{record.gameport}"
|
||||
qport = record.qport
|
||||
for row in self.control_model:
|
||||
@ -75,7 +78,9 @@ class ProxyModelManager:
|
||||
def get_proxy_model(self) -> "FastInsertListStore":
|
||||
return self.proxy_model
|
||||
|
||||
def filter(self, mode: FilterMode, skip_cache: bool = False) -> None:
|
||||
def filter(
|
||||
self, mode: FilterMode, skip_cache: bool = False
|
||||
) -> Union["FastInsertListStore", None]:
|
||||
"""
|
||||
Native Gtk.TreeView.refilter() method was not performant enough
|
||||
when running in the main loop with 40k+ records
|
||||
@ -91,7 +96,7 @@ class ProxyModelManager:
|
||||
cache = self.filter_cache[filters]
|
||||
self.set_proxy_model(cache[0])
|
||||
self.set_filtered(cache[1])
|
||||
return
|
||||
return None
|
||||
|
||||
match mode:
|
||||
case FilterMode.INITIAL:
|
||||
@ -224,10 +229,11 @@ class ProxyModelManager:
|
||||
def convert_model_to_list(self, model: "FastInsertListStore") -> list:
|
||||
return [[el for el in row] for row in model]
|
||||
|
||||
def set_filtered(self, rows: Optional[list]) -> None:
|
||||
def set_filtered(self, rows: list | None) -> None:
|
||||
if rows is None:
|
||||
rows = []
|
||||
self.filtered = rows
|
||||
self.filtered = []
|
||||
else:
|
||||
self.filtered = rows
|
||||
|
||||
def get_filtered(self) -> list:
|
||||
return self.filtered
|
||||
@ -248,7 +254,7 @@ class ProxyModelManager:
|
||||
return self.control_model
|
||||
|
||||
def wipe_cache(self, full: bool = False) -> None:
|
||||
self.filtered = None
|
||||
self.filtered = []
|
||||
self.filter_cache = {}
|
||||
|
||||
def push(self, data: list[Any]) -> None:
|
||||
|
||||
@ -187,10 +187,10 @@ class ServerModelManager:
|
||||
self._push_data(parsed)
|
||||
|
||||
@call_on_thread(dialog.querying)
|
||||
def add_by_id(self, addr: str) -> None:
|
||||
def add_by_id(self, _id: str) -> None:
|
||||
config_man = self.controller.get_config_man()
|
||||
key = config_man.lookup(Preferences.BM)
|
||||
res = Servers.query_by_id(addr, key)
|
||||
res = Servers.query_by_id(int(_id), key)
|
||||
self._parse_single_record(res)
|
||||
|
||||
@call_on_thread(dialog.querying)
|
||||
@ -266,6 +266,8 @@ class ServerModelManager:
|
||||
# NOTE: expected to only contain one item
|
||||
records = Servers.parse_json([response])
|
||||
server = records[0]
|
||||
if server is None:
|
||||
return
|
||||
|
||||
proxy_man = self._get_proxy_man()
|
||||
config_man = self.controller.get_config_man()
|
||||
|
||||
@ -62,9 +62,9 @@ def get_coords(ips: "Path", ip: str) -> Coords:
|
||||
if proc.returncode != 0:
|
||||
raise GeolocationError("Failed to split records")
|
||||
|
||||
ips = proc.stdout.splitlines()
|
||||
ip_list = proc.stdout.splitlines()
|
||||
|
||||
for address in ips:
|
||||
for address in ip_list:
|
||||
fields = address.split(",")
|
||||
upper = fields[1]
|
||||
|
||||
|
||||
@ -194,11 +194,10 @@ class Notebook(ScrollableMixin, Gtk.Notebook): # type: ignore
|
||||
def get_prior_page(self) -> NotebookPage:
|
||||
return self.prior_page
|
||||
|
||||
def get_page_by_enum(self) -> NotebookPage | None:
|
||||
def get_page_by_enum(self) -> NotebookPage:
|
||||
for k, v in self.indexes.items():
|
||||
if v == self.get_current_page():
|
||||
return k
|
||||
return None
|
||||
|
||||
def toggle_keybindings(self) -> None:
|
||||
cur_page = self.get_page_by_enum()
|
||||
|
||||
@ -117,13 +117,13 @@ class RefreshButton(IconTextButton):
|
||||
self.show_time(True)
|
||||
GLib.timeout_add_seconds(1, self.decrement)
|
||||
|
||||
def decrement(self) -> type[GLib.SOURCE_REMOVE] | Literal[True]:
|
||||
def decrement(self) -> bool:
|
||||
self.time -= 1
|
||||
if self.time == 0:
|
||||
self.time = 30
|
||||
self.show_time(False)
|
||||
self.set_sensitive(True)
|
||||
return GLib.SOURCE_REMOVE
|
||||
return False
|
||||
self.show_time(True)
|
||||
return True
|
||||
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
from dzgui.util import strings, css, open_links
|
||||
from dzgui.util import css
|
||||
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk # noqa
|
||||
|
||||
|
||||
class HeadingFrame(Gtk.Box):
|
||||
def __init__(self, widget: Gtk.Widget, heading: str) -> None:
|
||||
super().__init__(orientation=Gtk.Orientation.VERTICAL)
|
||||
|
||||
label = Gtk.Label(label=heading)
|
||||
label.set_halign(Gtk.Align.START)
|
||||
# TODO: rename selector
|
||||
css.add_class(label, "settings-subheading")
|
||||
|
||||
frame = Gtk.Frame(hexpand=True)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import Self, TYPE_CHECKING
|
||||
|
||||
from dzgui.const.enum import ModButton
|
||||
from dzgui.const.constants import NO_EXPAND, FILL, NO_PADDING
|
||||
@ -64,7 +64,7 @@ class ModSelectionPanel(Gtk.Box):
|
||||
|
||||
self.connect("map", self._reinit_button)
|
||||
|
||||
def _reinit_button(self, s) -> None:
|
||||
def _reinit_button(self, widget: Self) -> None:
|
||||
for child in self.stale_panel.get_children():
|
||||
if child.enum == ModButton.UNHIGHLIGHT_STALE:
|
||||
child.set_sensitive(False)
|
||||
|
||||
@ -131,7 +131,7 @@ class Statusbar(Gtk.Grid):
|
||||
def get_text(self) -> str:
|
||||
area = self.statusbar.get_message_area()
|
||||
label = area.get_children()[0]
|
||||
return label.get_text()
|
||||
return str(label.get_text())
|
||||
|
||||
def set_by_context(
|
||||
self, context: Union[NotebookPage, "ServerTab"], string: str
|
||||
|
||||
@ -66,7 +66,7 @@ class ContextMixin(TreeView):
|
||||
item.connect("activate", self._on_menu_click, row)
|
||||
|
||||
if row == ContextMenu.SHOW_MODS:
|
||||
item.set_sensitive(self.is_modded())
|
||||
item.set_sensitive(self.is_modded()) # type: ignore
|
||||
|
||||
if row == ContextMenu.ADD_NOTE:
|
||||
if self.controller.has_note():
|
||||
|
||||
@ -21,13 +21,13 @@ class CursorMixin:
|
||||
case Gdk.KEY_l | Gdk.KEY_Right:
|
||||
if event.state is Gdk.ModifierType.CONTROL_MASK:
|
||||
return
|
||||
self.emitter.emit("request_button_box_focus")
|
||||
self.emitter.emit("request_button_box_focus") # type: ignore
|
||||
case _:
|
||||
return False
|
||||
|
||||
def _move_cursor(self, position: CursorPosition) -> bool:
|
||||
cur_row = self.get_focused_row_index()
|
||||
model = self.get_model()
|
||||
cur_row = self.get_focused_row_index() # type: ignore
|
||||
model = self.get_model() # type: ignore
|
||||
if model:
|
||||
end = len(model) - 1
|
||||
else:
|
||||
@ -55,5 +55,5 @@ class CursorMixin:
|
||||
dest = end
|
||||
|
||||
path = Gtk.TreePath.new_from_indices([dest])
|
||||
self.set_cursor(path)
|
||||
self.set_cursor(path) # type: ignore
|
||||
return True
|
||||
|
||||
@ -7,10 +7,9 @@ from gi.repository import Gtk, Gdk # noqa
|
||||
|
||||
|
||||
class HelpMenuMixin:
|
||||
def _on_esc_keypress(
|
||||
self, widget: Gtk.Widget, event: Gdk.EventKey
|
||||
) -> Literal[True]:
|
||||
def _on_esc_keypress(self, widget: Gtk.Widget, event: Gdk.EventKey) -> bool:
|
||||
if event.keyval == Gdk.KEY_Escape:
|
||||
prior = self.controller.get_prior_page()
|
||||
prior = self.controller.get_prior_page() # type: ignore
|
||||
self.controller.open_page(prior) # type: ignore
|
||||
return True
|
||||
return False
|
||||
|
||||
@ -1,16 +1,15 @@
|
||||
from dzgui.views.trees.tree_base import TreeView
|
||||
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa E402
|
||||
|
||||
|
||||
class ModsMixin:
|
||||
def _on_mod_row_activated(self,
|
||||
tree: TreeView,
|
||||
path: Gtk.TreePath,
|
||||
column: Gtk.TreeViewColumn
|
||||
) -> None:
|
||||
def _on_mod_row_activated(
|
||||
self, tree: TreeView, path: Gtk.TreePath, column: Gtk.TreeViewColumn
|
||||
) -> None:
|
||||
|
||||
path = self.get_focused_row_path()
|
||||
self.controller.open_mod_page(path)
|
||||
path = self.get_focused_row_path() # type: ignore
|
||||
self.controller.open_mod_page(path) # type: ignore
|
||||
|
||||
@ -8,21 +8,28 @@ from gi.repository import Gtk, Gdk # noqa
|
||||
|
||||
|
||||
class ScrollableMixin:
|
||||
def _on_keypress(self, widget: Gtk.Widget, event: Gdk.EventKey) -> None:
|
||||
def _on_keypress(self, widget: Gtk.Widget, event: Gdk.EventKey) -> bool:
|
||||
match event.keyval:
|
||||
case Gdk.KEY_k | Gdk.KEY_Up:
|
||||
self._set_adjustment(VAdjustment.UP)
|
||||
return True
|
||||
case Gdk.KEY_Down | Gdk.KEY_j:
|
||||
self._set_adjustment(VAdjustment.DOWN)
|
||||
return True
|
||||
case Gdk.KEY_g:
|
||||
self._set_adjustment(VAdjustment.TOP)
|
||||
return True
|
||||
case Gdk.KEY_G:
|
||||
self._set_adjustment(VAdjustment.BOTTOM)
|
||||
return True
|
||||
case Gdk.KEY_l | Gdk.KEY_Right:
|
||||
self.controller.get_emitter().emit("request_button_box_focus")
|
||||
self.controller.get_emitter().emit("request_button_box_focus") # type: ignore
|
||||
return True
|
||||
case _:
|
||||
return False
|
||||
|
||||
def _set_adjustment(self, adjustment: VAdjustment) -> None:
|
||||
vadj = self.get_vadjustment()
|
||||
vadj = self.get_vadjustment() # type: ignore
|
||||
match adjustment:
|
||||
case VAdjustment.TOP:
|
||||
adj = vadj.get_lower()
|
||||
|
||||
@ -5,17 +5,20 @@ from dzgui.util.strings import navigation, servers, vim, key_header, key_context
|
||||
from dzgui.util.css import add_class
|
||||
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gdk # noqa E402
|
||||
from gi.repository import Gtk # noqa E402
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
|
||||
class Keybindings(ScrollableMixin, Gtk.ScrolledWindow):
|
||||
|
||||
class Keybindings(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
||||
"""
|
||||
Notebook page holding a prearranged grid
|
||||
of keybindings and their descriptions
|
||||
"""
|
||||
|
||||
def __init__(self, controller: "Controller") -> None:
|
||||
super().__init__()
|
||||
|
||||
@ -57,9 +60,7 @@ class Keybindings(ScrollableMixin, Gtk.ScrolledWindow):
|
||||
if not sep:
|
||||
grid.attach(desc, col, row, w, h)
|
||||
else:
|
||||
grid.attach_next_to(
|
||||
desc, sep, Gtk.PositionType.BOTTOM, w, h
|
||||
)
|
||||
grid.attach_next_to(desc, sep, Gtk.PositionType.BOTTOM, w, h)
|
||||
row += 1
|
||||
sep = None
|
||||
grid.attach_next_to(frame, desc, Gtk.PositionType.RIGHT, w, h)
|
||||
@ -67,18 +68,14 @@ class Keybindings(ScrollableMixin, Gtk.ScrolledWindow):
|
||||
l_spacer = Gtk.Label(label="")
|
||||
r_spacer = Gtk.Label(label="")
|
||||
grid.attach(l_spacer, col, row + 1, w, h)
|
||||
grid.attach_next_to(
|
||||
r_spacer, l_spacer, Gtk.PositionType.RIGHT, w, h
|
||||
)
|
||||
grid.attach_next_to(r_spacer, l_spacer, Gtk.PositionType.RIGHT, w, h)
|
||||
row += 1
|
||||
return grid
|
||||
|
||||
def build_sidebar(self, categories: list) -> Gtk.Grid:
|
||||
row, col = 0, 0
|
||||
w, h = 1, 1
|
||||
sidebar = Gtk.Grid(
|
||||
row_homogeneous=True, orientation=Gtk.Orientation.VERTICAL
|
||||
)
|
||||
sidebar = Gtk.Grid(row_homogeneous=True, orientation=Gtk.Orientation.VERTICAL)
|
||||
for cat in categories:
|
||||
label = Gtk.Label(label=cat)
|
||||
add_class(label, "left-label")
|
||||
@ -96,9 +93,7 @@ class Keybindings(ScrollableMixin, Gtk.ScrolledWindow):
|
||||
|
||||
row, column = 1, 1
|
||||
w, h = 1, 1
|
||||
sidebar = self.build_sidebar(
|
||||
key_contexts
|
||||
)
|
||||
sidebar = self.build_sidebar(key_contexts)
|
||||
separator = Gtk.Separator()
|
||||
keys_box = self.build_keys(items)
|
||||
|
||||
@ -106,6 +101,6 @@ class Keybindings(ScrollableMixin, Gtk.ScrolledWindow):
|
||||
grid.attach_next_to(separator, sidebar, Gtk.PositionType.RIGHT, w, h)
|
||||
grid.attach_next_to(keys_box, separator, Gtk.PositionType.RIGHT, w, h)
|
||||
return grid
|
||||
|
||||
|
||||
def grab_content_area(self) -> None:
|
||||
self.box.grab_focus()
|
||||
|
||||
@ -52,8 +52,8 @@ class PreConnectionAssistant(Gtk.ScrolledWindow):
|
||||
spacing=10,
|
||||
)
|
||||
|
||||
self.rules: dict[Any]
|
||||
self.mods: list["DayzMod"]
|
||||
# self.rules: dict[Any]
|
||||
# self.mods: list["DayzMod"]
|
||||
|
||||
self.controller.register_widget("preconnect", self)
|
||||
|
||||
@ -97,7 +97,7 @@ class PreConnectionAssistant(Gtk.ScrolledWindow):
|
||||
|
||||
self.tree_frame = HeadingFrame(self.tree_box, preconnect.mods)
|
||||
|
||||
self.warnings = []
|
||||
self.warnings: list[WarningLabel] = []
|
||||
# TODO: populate with strings and icons
|
||||
# set visibility if warnings > 1
|
||||
# warning category enums with matching strings
|
||||
@ -162,7 +162,7 @@ class PreConnectionAssistant(Gtk.ScrolledWindow):
|
||||
def download_mods(self) -> None:
|
||||
pass
|
||||
|
||||
def connect(self) -> None:
|
||||
def connect_server(self) -> None:
|
||||
# TODO: add to history file and list store
|
||||
"""
|
||||
spawn dialog in thread
|
||||
|
||||
@ -134,7 +134,8 @@ class TreeView(CursorMixin, Gtk.TreeView): # type: ignore
|
||||
self.get_selection().unselect_path(path)
|
||||
|
||||
def focus_first_row(self) -> None:
|
||||
self.set_cursor(0)
|
||||
path = Gtk.TreePath.new_from_indices([0])
|
||||
self.set_cursor(path)
|
||||
|
||||
def get_value_at_index(self, index: int) -> str:
|
||||
(model, pathlist) = self.get_model_and_pathlist()
|
||||
@ -143,7 +144,7 @@ class TreeView(CursorMixin, Gtk.TreeView): # type: ignore
|
||||
path = pathlist[0]
|
||||
tree_iter = model.get_iter(path)
|
||||
value = model.get_value(tree_iter, index)
|
||||
return value
|
||||
return str(value)
|
||||
|
||||
def get_name(self) -> str:
|
||||
name = self.get_value_at_index(0)
|
||||
|
||||
@ -306,7 +306,7 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
||||
|
||||
def get_record(self) -> Record | None:
|
||||
if self.loaded is False:
|
||||
return
|
||||
return None
|
||||
r = self.get_record_string()
|
||||
try:
|
||||
ip, gameport, qport = r.split(":")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user