mirror of
https://github.com/aclist/dztui.git
synced 2026-08-27 18:27:07 +02:00
feat: version update logic
This commit is contained in:
parent
6e320763c9
commit
1268c388b0
@ -173,3 +173,30 @@ def get_mod_dir_size(path: Path) -> int:
|
||||
elif i.is_dir():
|
||||
size += get_mod_dir_size(i)
|
||||
return size
|
||||
|
||||
|
||||
def version_file_to_dict(file: Path) -> dict[str, str]:
|
||||
versions = file.read_text().splitlines()
|
||||
d: dict[str, str] = {}
|
||||
for version in versions:
|
||||
line = version.split(",")
|
||||
mod = line[0]
|
||||
stamp = line[1]
|
||||
d[mod] = stamp
|
||||
return d
|
||||
|
||||
|
||||
def update_signatures(
|
||||
mods: list[tuple[str, str, int, int]], version_file: Path
|
||||
) -> None:
|
||||
d = version_file_to_dict(version_file)
|
||||
for _title, mod, stamp, size in mods:
|
||||
d[mod] = str(stamp)
|
||||
versions: list[str] = []
|
||||
for k, v in d.items():
|
||||
row = ",".join([k, v])
|
||||
versions.append(row)
|
||||
|
||||
with open(version_file, "w") as f:
|
||||
for version in versions:
|
||||
f.write(f"{version}\n")
|
||||
|
||||
@ -25,7 +25,7 @@ def get_local_signatures(version_file: Path) -> dict[str, int]:
|
||||
for line in lines:
|
||||
line = line.split(",")
|
||||
_id = line[0]
|
||||
_hash = line[1]
|
||||
_hash = int(line[1])
|
||||
hashes[_id] = _hash
|
||||
return hashes
|
||||
|
||||
|
||||
@ -18,7 +18,12 @@ from dzgui.api.steam import (
|
||||
get_needs_update,
|
||||
)
|
||||
|
||||
from dzgui.api.mods import get_mod_dir_size, get_local_mod_ids, get_local_mod_path
|
||||
from dzgui.api.mods import (
|
||||
get_mod_dir_size,
|
||||
get_local_mod_ids,
|
||||
get_local_mod_path,
|
||||
update_signatures,
|
||||
)
|
||||
from dzgui.const.constants import (
|
||||
APP_NAME,
|
||||
APPID_DAYZ,
|
||||
@ -236,7 +241,7 @@ class ConnectionManager:
|
||||
dialog = ExceptionDialog(self.controller, server_timeout)
|
||||
dialog.run()
|
||||
|
||||
def connect_steam(self) -> None:
|
||||
def _connect_steam(self) -> None:
|
||||
print(self.record.ip)
|
||||
print(self.record.gameport)
|
||||
print(self.appid)
|
||||
@ -250,8 +255,9 @@ class ConnectionManager:
|
||||
# TODO: add to history file and list store
|
||||
|
||||
@call_on_thread("Waiting for Steam to update mods")
|
||||
def update_mods(self, raise_window: bool) -> None:
|
||||
def _update_mods(self, raise_window: bool) -> None:
|
||||
# NOTE: fast enqueue all mods in auto mode
|
||||
prefs = self.controller.get_prefs()
|
||||
for title, mod, stamp, size in self.missing_mods:
|
||||
# TODO: boolean cancel button on threadman dialog sets event inside threadman
|
||||
# TODO: check for early cancel event via sigint
|
||||
@ -277,8 +283,10 @@ class ConnectionManager:
|
||||
time.sleep(1)
|
||||
|
||||
# TODO: update version file
|
||||
update_signatures(self.missing_mods, prefs.paths.version)
|
||||
|
||||
# TODO: get config path or just push steam path directly
|
||||
rebuild_symlinks(self.controller.get_prefs().paths.config)
|
||||
rebuild_symlinks(prefs.paths.config)
|
||||
# TODO: update tree checkmarks when finished
|
||||
# TODO: make this internal to preconnect page
|
||||
func = StoredFunc(self.controller.update_status)
|
||||
@ -286,6 +294,6 @@ class ConnectionManager:
|
||||
|
||||
def update_and_connect(self, raise_window: bool) -> None:
|
||||
if len(self.missing_mods) > 0:
|
||||
self.update_mods(raise_window)
|
||||
self._update_mods(raise_window)
|
||||
else:
|
||||
self.connect_steam()
|
||||
self._connect_steam()
|
||||
|
||||
@ -92,7 +92,7 @@ class ModManager:
|
||||
if model is None:
|
||||
return None
|
||||
tree_iter = model.get_iter(tree_path)
|
||||
mod = model.get_value(tree_iter, 2)[0]
|
||||
mod = model.get_value(tree_iter, 2)
|
||||
return mod, tree_iter
|
||||
|
||||
def delete_single_mod(self, tree_path: Gtk.TreePath) -> Gtk.TreeIter | None:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user