mirror of
https://github.com/aclist/dztui.git
synced 2026-11-12 13:00:37 +01:00
chore: clear typehinting errors
This commit is contained in:
1 parent
8fb3462f35
commit
e03c6905c6
11 files changed
+41
-55
No files matched your search
+1
-1
@@ -111,7 +111,7 @@ class WorkshopACF(ACF):
|
|||||||
def __init__(self, file: Path) -> None:
|
def __init__(self, file: Path) -> None:
|
||||||
super().__init__(file)
|
super().__init__(file)
|
||||||
|
|
||||||
def unpack(self, d: dict, lines: list[Any] = []) -> str:
|
def unpack(self, d: dict[str, str], lines: list[Any] = []) -> str:
|
||||||
t1 = "AppWorkshop"
|
t1 = "AppWorkshop"
|
||||||
t2 = ("WorkshopItemsInstalled", "WorkshopItemDetails")
|
t2 = ("WorkshopItemsInstalled", "WorkshopItemDetails")
|
||||||
for k, v in d.items():
|
for k, v in d.items():
|
||||||
|
|||||||
+1
-5
@@ -114,10 +114,6 @@ def get_delimited_mods(steam_path: Path) -> list[Any]:
|
|||||||
return parse_mods(mods)
|
return parse_mods(mods)
|
||||||
|
|
||||||
|
|
||||||
def get_missing_mods(local: list, remote: list) -> list:
|
|
||||||
return [mod for mod in remote if mod not in local]
|
|
||||||
|
|
||||||
|
|
||||||
def _hash(uid: str, use_custom: bool = False) -> str:
|
def _hash(uid: str, use_custom: bool = False) -> str:
|
||||||
md5 = hashlib.md5()
|
md5 = hashlib.md5()
|
||||||
md5.update(uid.encode("ascii"))
|
md5.update(uid.encode("ascii"))
|
||||||
@@ -152,7 +148,7 @@ def remove_stale_signatures(
|
|||||||
|
|
||||||
|
|
||||||
def find_stale_mods(config: Path) -> list[int]:
|
def find_stale_mods(config: Path) -> list[int]:
|
||||||
def push_record(rec: str) -> list:
|
def push_record(rec: str) -> list[int]:
|
||||||
record = fqip_to_record(rec)
|
record = fqip_to_record(rec)
|
||||||
if record is None:
|
if record is None:
|
||||||
return []
|
return []
|
||||||
|
|||||||
+2
-2
@@ -51,7 +51,7 @@ def is_writeable(path_str: str) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def get_xdg_paths() -> dict:
|
def get_xdg_paths() -> dict[str, Path]:
|
||||||
home = Path.home()
|
home = Path.home()
|
||||||
xdg_paths = {
|
xdg_paths = {
|
||||||
"XDG_CONFIG_HOME": home / ".config",
|
"XDG_CONFIG_HOME": home / ".config",
|
||||||
@@ -73,7 +73,7 @@ def get_xdg_paths() -> dict:
|
|||||||
return resolved_paths
|
return resolved_paths
|
||||||
|
|
||||||
|
|
||||||
def parse_filepaths(xdg: dict) -> Xdg:
|
def parse_filepaths(xdg: dict[str, Path]) -> Xdg:
|
||||||
config = xdg["XDG_CONFIG_HOME"]
|
config = xdg["XDG_CONFIG_HOME"]
|
||||||
state = xdg["XDG_STATE_HOME"]
|
state = xdg["XDG_STATE_HOME"]
|
||||||
share = xdg["XDG_DATA_HOME"]
|
share = xdg["XDG_DATA_HOME"]
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
import logging
|
import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
from dzgui.const.constants import APP_NAME, FLATPAK_APPID, GTK_APP_ID, TMP_PATH
|
from dzgui.const.constants import APP_NAME, FLATPAK_APPID, GTK_APP_ID, TMP_PATH
|
||||||
|
|
||||||
logger = logging.getLogger(APP_NAME)
|
logger = logging.getLogger(APP_NAME)
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
def apply_overrides(xdg: dict[str, str]) -> None:
|
|
||||||
|
def apply_overrides(xdg: dict[str, "Path"]) -> None:
|
||||||
try:
|
try:
|
||||||
# NOTE: D-Bus registration required for sandbox
|
# NOTE: D-Bus registration required for sandbox
|
||||||
args = [
|
args = [
|
||||||
@@ -19,7 +23,7 @@ def apply_overrides(xdg: dict[str, str]) -> None:
|
|||||||
subprocess.run([*args], capture_output=True)
|
subprocess.run([*args], capture_output=True)
|
||||||
|
|
||||||
paths: list[str] = []
|
paths: list[str] = []
|
||||||
paths.extend([*xdg.values()])
|
paths.extend([str(path) for path in xdg.values()])
|
||||||
paths.append(TMP_PATH)
|
paths.append(TMP_PATH)
|
||||||
|
|
||||||
for path in paths:
|
for path in paths:
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class AbortDialog(ColorAwareApp, Gtk.MessageDialog): # type: ignore
|
|||||||
|
|
||||||
self.connect("response", self._on_response)
|
self.connect("response", self._on_response)
|
||||||
|
|
||||||
self.run()
|
self.run() # type: ignore[no-untyped-call]
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
def _on_response(self, dialog: Self, response: Gtk.ResponseType) -> None:
|
def _on_response(self, dialog: Self, response: Gtk.ResponseType) -> None:
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ class FilePicker(Gtk.FileChooserDialog):
|
|||||||
transient_for=parent,
|
transient_for=parent,
|
||||||
resizable=True,
|
resizable=True,
|
||||||
)
|
)
|
||||||
self.add_buttons("_Cancel", Gtk.ResponseType.CANCEL)
|
self.add_buttons("_Cancel", Gtk.ResponseType.CANCEL) # type: ignore[no-untyped-call]
|
||||||
self.add_buttons("_Save", Gtk.ResponseType.OK)
|
self.add_buttons("_Save", Gtk.ResponseType.OK) # type: ignore[no-untyped-call]
|
||||||
self.set_default_response(Gtk.ResponseType.OK)
|
self.set_default_response(Gtk.ResponseType.OK)
|
||||||
|
|
||||||
self.set_current_name(picker.placeholder)
|
self.set_current_name(picker.placeholder)
|
||||||
|
|
||||||
def pick_file(self) -> Path | None:
|
def pick_file(self) -> Path | None:
|
||||||
res = self.run()
|
res = self.run() # type: ignore[no-untyped-call]
|
||||||
if res in (Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT):
|
if res in (Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
return None
|
return None
|
||||||
@@ -43,12 +43,12 @@ class FolderPicker(Gtk.FileChooserDialog):
|
|||||||
parent=parent,
|
parent=parent,
|
||||||
resizable=True,
|
resizable=True,
|
||||||
)
|
)
|
||||||
self.add_buttons("_Cancel", Gtk.ResponseType.CANCEL)
|
self.add_buttons("_Cancel", Gtk.ResponseType.CANCEL) # type: ignore[no-untyped-call]
|
||||||
self.add_buttons("_OK", Gtk.ResponseType.OK)
|
self.add_buttons("_OK", Gtk.ResponseType.OK) # type: ignore[no-untyped-call]
|
||||||
self.set_default_response(Gtk.ResponseType.OK)
|
self.set_default_response(Gtk.ResponseType.OK)
|
||||||
|
|
||||||
def pick_folder(self) -> Path | None:
|
def pick_folder(self) -> Path | None:
|
||||||
res = self.run()
|
res = self.run() # type: ignore[no-untyped-call]
|
||||||
if res in (Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT):
|
if res in (Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ from gi.repository import Gtk, GLib, Pango # noqa E402
|
|||||||
|
|
||||||
|
|
||||||
class Assistant(Gtk.Assistant):
|
class Assistant(Gtk.Assistant):
|
||||||
def __init__(self, is_deck: bool, paths: dict[str, str]):
|
def __init__(self, is_deck: bool, paths: dict[str, Path]):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
if is_deck:
|
if is_deck:
|
||||||
# NOTE: deemed to be "safe" dimensions that exclude taskbar size
|
# NOTE: deemed to be "safe" dimensions that exclude taskbar size
|
||||||
@@ -63,7 +63,7 @@ class Assistant(Gtk.Assistant):
|
|||||||
|
|
||||||
|
|
||||||
class Window(Gtk.Window):
|
class Window(Gtk.Window):
|
||||||
def __init__(self, is_deck: bool, paths: dict[str, str]) -> None:
|
def __init__(self, is_deck: bool, paths: dict[str, Path]) -> None:
|
||||||
super().__init__(title=APP_NAME, icon_name=APP_NAME)
|
super().__init__(title=APP_NAME, icon_name=APP_NAME)
|
||||||
self.assistant = Assistant(is_deck, paths)
|
self.assistant = Assistant(is_deck, paths)
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ class CheckboxWithPath(CheckboxWithLabel):
|
|||||||
|
|
||||||
|
|
||||||
class UninstallPage(ScrolledWizardPage):
|
class UninstallPage(ScrolledWizardPage):
|
||||||
def __init__(self, paths: dict[str, str], pyapp: str | None):
|
def __init__(self, paths: dict[str, Path], pyapp: str | None):
|
||||||
super().__init__(heading=uninstall.pg1_heading, description=uninstall.pg1_blurb)
|
super().__init__(heading=uninstall.pg1_heading, description=uninstall.pg1_blurb)
|
||||||
|
|
||||||
self.pyapp = pyapp
|
self.pyapp = pyapp
|
||||||
@@ -219,7 +219,7 @@ class UninstallPage(ScrolledWizardPage):
|
|||||||
|
|
||||||
|
|
||||||
class UninstallWizard(ColorAwareApp, Gtk.Application): # type: ignore
|
class UninstallWizard(ColorAwareApp, Gtk.Application): # type: ignore
|
||||||
def __init__(self, is_deck: bool, paths: dict[str, str]) -> None:
|
def __init__(self, is_deck: bool, paths: dict[str, Path]) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
config = Path(paths["XDG_CONFIG_HOME"])
|
config = Path(paths["XDG_CONFIG_HOME"])
|
||||||
if not config.is_dir() or not config.joinpath("config.json").is_file():
|
if not config.is_dir() or not config.joinpath("config.json").is_file():
|
||||||
|
|||||||
@@ -426,7 +426,7 @@ class PreferencesPage(EnumeratedWizardPage):
|
|||||||
|
|
||||||
|
|
||||||
class FlatpakOverridePage(EnumeratedWizardPage):
|
class FlatpakOverridePage(EnumeratedWizardPage):
|
||||||
def __init__(self, xdg_paths: dict[str, str]) -> None:
|
def __init__(self, xdg_paths: dict[str, Path]) -> None:
|
||||||
super().__init__(
|
super().__init__(
|
||||||
enum=PageNum.FLATPAK,
|
enum=PageNum.FLATPAK,
|
||||||
heading=wizard.heading_flatpak,
|
heading=wizard.heading_flatpak,
|
||||||
@@ -476,7 +476,7 @@ class CompletionPage(EnumeratedWizardPage):
|
|||||||
|
|
||||||
|
|
||||||
class Assistant(Gtk.Assistant):
|
class Assistant(Gtk.Assistant):
|
||||||
def __init__(self, is_deck: bool, XDG: "Xdg", xdg_paths: dict[str, str]):
|
def __init__(self, is_deck: bool, XDG: "Xdg", xdg_paths: dict[str, Path]):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
if is_deck:
|
if is_deck:
|
||||||
# NOTE: deemed to be "safe" dimensions that exclude taskbar size
|
# NOTE: deemed to be "safe" dimensions that exclude taskbar size
|
||||||
@@ -781,7 +781,7 @@ class SteamPathPage(EnumeratedWizardPage):
|
|||||||
|
|
||||||
|
|
||||||
class SetupWizard(ColorAwareApp, Gtk.Application): # type: ignore
|
class SetupWizard(ColorAwareApp, Gtk.Application): # type: ignore
|
||||||
def __init__(self, is_deck: bool, XDG: "Xdg", xdg_paths: dict[str, str]) -> None:
|
def __init__(self, is_deck: bool, XDG: "Xdg", xdg_paths: dict[str, Path]) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
GLib.set_prgname(APP_NAME)
|
GLib.set_prgname(APP_NAME)
|
||||||
self.win = Window(is_deck, XDG, xdg_paths)
|
self.win = Window(is_deck, XDG, xdg_paths)
|
||||||
@@ -792,7 +792,7 @@ class SetupWizard(ColorAwareApp, Gtk.Application): # type: ignore
|
|||||||
|
|
||||||
|
|
||||||
class Window(Gtk.Window):
|
class Window(Gtk.Window):
|
||||||
def __init__(self, is_deck: bool, XDG: "Xdg", xdg_paths: dict[str, str]) -> None:
|
def __init__(self, is_deck: bool, XDG: "Xdg", xdg_paths: dict[str, Path]) -> None:
|
||||||
super().__init__(title=APP_NAME, icon_name=APP_NAME)
|
super().__init__(title=APP_NAME, icon_name=APP_NAME)
|
||||||
self.assistant = Assistant(is_deck, XDG, xdg_paths)
|
self.assistant = Assistant(is_deck, XDG, xdg_paths)
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ if TYPE_CHECKING:
|
|||||||
from dzgui.controllers.mc import Controller
|
from dzgui.controllers.mc import Controller
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: refactor into autopopulated ListStores
|
||||||
class Keybindings(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
class Keybindings(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
||||||
"""
|
"""
|
||||||
Notebook page holding a prearranged grid
|
Notebook page holding a prearranged grid
|
||||||
@@ -35,7 +36,7 @@ class Keybindings(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
|||||||
|
|
||||||
self.connect("key-press-event", self._on_keypress)
|
self.connect("key-press-event", self._on_keypress)
|
||||||
|
|
||||||
def build_keys(self, items: list) -> Gtk.Grid:
|
def build_keys(self, items: list[dict[str, str]]) -> Gtk.Grid:
|
||||||
grid = Gtk.Grid(row_spacing=10, column_homogeneous=True)
|
grid = Gtk.Grid(row_spacing=10, column_homogeneous=True)
|
||||||
grid.set_halign(Gtk.Align.START)
|
grid.set_halign(Gtk.Align.START)
|
||||||
row, col = 1, 0
|
row, col = 1, 0
|
||||||
@@ -72,7 +73,7 @@ class Keybindings(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
|||||||
row += 1
|
row += 1
|
||||||
return grid
|
return grid
|
||||||
|
|
||||||
def build_sidebar(self, categories: list) -> Gtk.Grid:
|
def build_sidebar(self, categories: list[str]) -> Gtk.Grid:
|
||||||
row, col = 0, 0
|
row, col = 0, 0
|
||||||
w, h = 1, 1
|
w, h = 1, 1
|
||||||
sidebar = Gtk.Grid(row_homogeneous=True, orientation=Gtk.Orientation.VERTICAL)
|
sidebar = Gtk.Grid(row_homogeneous=True, orientation=Gtk.Orientation.VERTICAL)
|
||||||
@@ -83,7 +84,7 @@ class Keybindings(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
|||||||
sidebar.attach(label, col, row, w, h)
|
sidebar.attach(label, col, row, w, h)
|
||||||
return sidebar
|
return sidebar
|
||||||
|
|
||||||
def build_grid(self, items: list) -> Gtk.Grid:
|
def build_grid(self, items: list[dict[str, str]]) -> Gtk.Grid:
|
||||||
grid = Gtk.Grid(
|
grid = Gtk.Grid(
|
||||||
row_spacing=20,
|
row_spacing=20,
|
||||||
halign=Gtk.Align.CENTER,
|
halign=Gtk.Align.CENTER,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Callable, TYPE_CHECKING
|
from typing import Any, Callable, TYPE_CHECKING
|
||||||
|
|
||||||
from dzgui.api import pefile as PeFile
|
from dzgui.api import pefile as PeFile
|
||||||
from dzgui.api.steam import get_last_updated
|
from dzgui.api.steam import get_last_updated
|
||||||
@@ -406,7 +406,8 @@ class Options(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore
|
|||||||
def _on_link_button_clicked(self, button: Gtk.Button, url: str) -> None:
|
def _on_link_button_clicked(self, button: Gtk.Button, url: str) -> None:
|
||||||
open_links.open_link_by_url(url)
|
open_links.open_link_by_url(url)
|
||||||
|
|
||||||
def _make_grid(self, rows: list) -> Gtk.Grid:
|
# TODO: use FlowBox
|
||||||
|
def _make_grid(self, rows: list[list[Any]]) -> Gtk.Grid:
|
||||||
grid = Gtk.Grid(
|
grid = Gtk.Grid(
|
||||||
orientation=Gtk.Orientation.VERTICAL,
|
orientation=Gtk.Orientation.VERTICAL,
|
||||||
column_spacing=10,
|
column_spacing=10,
|
||||||
|
|||||||
@@ -79,11 +79,6 @@ class TreeView(CursorMixin, Gtk.TreeView): # type: ignore
|
|||||||
index = path.get_indices()[0]
|
index = path.get_indices()[0]
|
||||||
return index
|
return index
|
||||||
|
|
||||||
def get_selected_records(self) -> list:
|
|
||||||
sel = self.get_selection()
|
|
||||||
model, rows = sel.get_selected_rows()
|
|
||||||
return [model[row] for row in rows]
|
|
||||||
|
|
||||||
def _on_keypress(self, treeview: Gtk.TreeView, event: Gdk.EventKey) -> bool:
|
def _on_keypress(self, treeview: Gtk.TreeView, event: Gdk.EventKey) -> bool:
|
||||||
from dzgui.views.trees.tree_servers import ServerTreeView
|
from dzgui.views.trees.tree_servers import ServerTreeView
|
||||||
|
|
||||||
@@ -145,9 +140,11 @@ class TreeView(CursorMixin, Gtk.TreeView): # type: ignore
|
|||||||
self.set_cursor(path)
|
self.set_cursor(path)
|
||||||
|
|
||||||
def get_value_at_index(self, index: int) -> Any:
|
def get_value_at_index(self, index: int) -> Any:
|
||||||
(model, pathlist) = self.get_model_and_pathlist()
|
model, pathlist = self.get_model_and_pathlist()
|
||||||
if len(pathlist) < 1:
|
if len(pathlist) < 1:
|
||||||
return ""
|
return ""
|
||||||
|
if model is None:
|
||||||
|
return ""
|
||||||
path = pathlist[0]
|
path = pathlist[0]
|
||||||
tree_iter = model.get_iter(path)
|
tree_iter = model.get_iter(path)
|
||||||
value = model.get_value(tree_iter, index)
|
value = model.get_value(tree_iter, index)
|
||||||
@@ -161,20 +158,16 @@ class TreeView(CursorMixin, Gtk.TreeView): # type: ignore
|
|||||||
sel = self.get_selection()
|
sel = self.get_selection()
|
||||||
self._on_tree_selection_changed(sel)
|
self._on_tree_selection_changed(sel)
|
||||||
|
|
||||||
def get_model_and_pathlist(self) -> tuple:
|
def get_model_and_pathlist(
|
||||||
|
self,
|
||||||
|
) -> tuple[Gtk.TreeModel | None, list[Gtk.TreePath]]:
|
||||||
select = self.get_selection()
|
select = self.get_selection()
|
||||||
sels = select.get_selected_rows()
|
sels = select.get_selected_rows()
|
||||||
(model, pathlist) = sels
|
model: Gtk.TreeModel | None
|
||||||
|
pathlist: list[Gtk.TreePath]
|
||||||
|
model, pathlist = sels
|
||||||
return (model, pathlist)
|
return (model, pathlist)
|
||||||
|
|
||||||
# @deprecated("Currently unused")
|
|
||||||
# def get_mpath(self) -> Optional[Gtk.TreePath]:
|
|
||||||
# (model, pathlist) = self.get_model_and_pathlist()
|
|
||||||
# if len(pathlist) < 1:
|
|
||||||
# return None
|
|
||||||
# path = pathlist[0]
|
|
||||||
# return path
|
|
||||||
|
|
||||||
def _on_row_activated(
|
def _on_row_activated(
|
||||||
self,
|
self,
|
||||||
treeview: Gtk.TreeView,
|
treeview: Gtk.TreeView,
|
||||||
@@ -189,15 +182,6 @@ class TreeView(CursorMixin, Gtk.TreeView): # type: ignore
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# @deprecated("unused")
|
|
||||||
# def get_selected_row(self) -> Optional[Gtk.TreeModelRow]:
|
|
||||||
# ind = self.get_selected_row_index()
|
|
||||||
# model = self.get_model()
|
|
||||||
# if model is None:
|
|
||||||
# return None
|
|
||||||
# row = model[ind]
|
|
||||||
# return row
|
|
||||||
|
|
||||||
def get_col_value_by_path_index(self, path: Gtk.TreePath, index: int) -> Any:
|
def get_col_value_by_path_index(self, path: Gtk.TreePath, index: int) -> Any:
|
||||||
model = self.get_model()
|
model = self.get_model()
|
||||||
if model is None:
|
if model is None:
|
||||||
|
|||||||
Reference in new issue
Block a user