1
0
Fork 0
mirror of synced 2024-06-29 11:40:37 +12:00

Fix origin stuff on windows

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
This commit is contained in:
lennard 2023-02-02 00:02:46 +02:00 committed by loathingKernel
parent efc07e4645
commit d399382afd
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
5 changed files with 24 additions and 21 deletions

View file

@ -1,4 +1,3 @@
import platform
from logging import getLogger from logging import getLogger
from PyQt5.QtCore import QSettings, Qt, pyqtSlot, QThreadPool from PyQt5.QtCore import QSettings, Qt, pyqtSlot, QThreadPool
@ -156,9 +155,8 @@ class GamesTab(QStackedWidget):
self.filter_games(self.active_filter) self.filter_games(self.active_filter)
self.update_count_games_label() self.update_count_games_label()
if platform.system() != "Windows": worker = OriginWineWorker(self.core, self.rcore.origin_games)
worker = OriginWineWorker(self.core, self.rcore.origin_games) QThreadPool.globalInstance().start(worker)
QThreadPool.globalInstance().start(worker)
def add_library_widget(self, rgame: RareGame): def add_library_widget(self, rgame: RareGame):
try: try:

View file

@ -245,10 +245,10 @@ class GameInfo(QWidget, SideTabContents):
self.rgame.version if not self.rgame.is_non_asset else "N/A" self.rgame.version if not self.rgame.is_non_asset else "N/A"
) )
self.ui.lbl_install_size.setEnabled(self.rgame.is_installed and not self.rgame.is_non_asset) self.ui.lbl_install_size.setEnabled(bool(self.rgame.install_size))
self.ui.install_size.setEnabled(self.rgame.is_installed and not self.rgame.is_non_asset) self.ui.install_size.setEnabled(bool(self.rgame.install_size))
self.ui.install_size.setText( self.ui.install_size.setText(
format_size(self.rgame.igame.install_size) if self.rgame.is_installed and not self.rgame.is_non_asset else "N/A" format_size(self.rgame.igame.install_size) if self.rgame.install_size else "N/A"
) )
self.ui.lbl_install_path.setEnabled(bool(self.rgame.install_path)) self.ui.lbl_install_path.setEnabled(bool(self.rgame.install_path))

View file

@ -9,7 +9,7 @@ from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLab
from rare.models.game import RareGame from rare.models.game import RareGame
from rare.shared import RareCore from rare.shared import RareCore
from rare.utils.misc import format_size from rare.utils.misc import path_size, format_size
from rare.widgets.elide_label import ElideLabel from rare.widgets.elide_label import ElideLabel
from rare.widgets.indicator_edit import PathEdit, IndicatorReasons, IndicatorReasonsCommon from rare.widgets.indicator_edit import PathEdit, IndicatorReasons, IndicatorReasonsCommon
@ -103,15 +103,9 @@ class MoveGamePopUp(QWidget):
# Get free space on drive and size of game folder # Get free space on drive and size of game folder
_, _, free_space = shutil.disk_usage(dst_path) _, _, free_space = shutil.disk_usage(dst_path)
source_size = sum( source_size = path_size(src_path)
os.stat(os.path.join(dp, f)).st_size
for dp, dn, filenames in os.walk(src_path)
for f in filenames
)
# Calculate from bytes to gigabytes # Calculate from bytes to gigabytes
# free_space = round(free_space / 1000 ** 3, 2)
# source_size = round(source_size / 1000 ** 3, 2)
self.req_space.setText(format_size(source_size)) self.req_space.setText(format_size(source_size))
self.avail_space.setText(format_size(free_space)) self.avail_space.setText(format_size(free_space))

View file

@ -11,7 +11,7 @@ from PyQt5.QtCore import pyqtSignal, QObject, QRunnable
from rare.lgndr.core import LegendaryCore from rare.lgndr.core import LegendaryCore
from rare.models.game import RareGame from rare.models.game import RareGame
from rare.models.pathspec import PathSpec from rare.models.pathspec import PathSpec
from rare.utils.misc import read_registry from rare.utils.misc import read_registry, path_size, format_size
from .worker import Worker from .worker import Worker
if platform.system() == "Windows": if platform.system() == "Windows":
@ -115,12 +115,15 @@ class OriginWineWorker(QRunnable):
self.__cache[wine_prefix] = reg self.__cache[wine_prefix] = reg
# TODO: find a better solution # TODO: find a better solution
reg_path = reg_path.replace("\\", "\\\\")\ reg_path = reg_path.replace("\\", "\\\\") \
.replace("SOFTWARE", "Software").replace("WOW6432Node", "Wow6432Node") .replace("SOFTWARE", "Software").replace("WOW6432Node", "Wow6432Node")
install_dir = reg.get(reg_path, '"Install Dir"', fallback=None) install_dir = reg.get(reg_path, '"Install Dir"', fallback=None)
if install_dir: if install_dir:
size = sum(os.path.getsize(f) for f in os.listdir(install_dir) if os.path.isfile(f)) if os.path.exists(install_dir):
logger.debug(f"Found install path for {rgame.title}: {install_dir}") size = path_size(install_dir)
rgame.set_origin_attributes(install_dir, size) rgame.set_origin_attributes(install_dir, size)
logger.debug(f"Found Origin game {rgame.title} ({install_dir}, {format_size(size)})")
else:
logger.warning(f"Found Origin game {rgame.title} ({install_dir} does not exist)")
logger.info(f"Origin registry worker finished in {time.time() - t}s") logger.info(f"Origin registry worker finished in {time.time() - t}s")

View file

@ -150,7 +150,7 @@ def get_translations():
def get_latest_version(): def get_latest_version():
try: try:
resp = requests.get( resp = requests.get(
"https://api.github.com/repos/Dummerle/Rare/releases/latest" "https://api.github.com/repos/Dummerle/Rare/releases/latest", timeout=2,
) )
tag = resp.json()["tag_name"] tag = resp.json()["tag_name"]
return tag return tag
@ -158,6 +158,14 @@ def get_latest_version():
return "0.0.0" return "0.0.0"
def path_size(path: Union[str, os.PathLike]) -> int:
return sum(
os.stat(os.path.join(dp, f)).st_size
for dp, dn, filenames in os.walk(path)
for f in filenames
)
def format_size(b: Union[int, float]) -> str: def format_size(b: Union[int, float]) -> str:
for s in ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei"]: for s in ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei"]:
if b < 1024: if b < 1024: