forked from Boria138/PortProtonQt
fix(settings): fix work on Flatpak
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
@@ -10,7 +10,7 @@ from PySide6.QtWidgets import (
|
|||||||
from PySide6.QtCore import Qt, QObject, Signal, QMimeDatabase, QTimer, QThreadPool, QRunnable, Slot, QProcess, QProcessEnvironment
|
from PySide6.QtCore import Qt, QObject, Signal, QMimeDatabase, QTimer, QThreadPool, QRunnable, Slot, QProcess, QProcessEnvironment
|
||||||
from icoextract import IconExtractor, IconExtractorError
|
from icoextract import IconExtractor, IconExtractorError
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from portprotonqt.config_utils import get_portproton_location, read_favorite_folders, read_theme_from_config
|
from portprotonqt.config_utils import get_portproton_location, get_portproton_start_command, read_favorite_folders, read_theme_from_config
|
||||||
from portprotonqt.localization import _
|
from portprotonqt.localization import _
|
||||||
from portprotonqt.logger import get_logger
|
from portprotonqt.logger import get_logger
|
||||||
from portprotonqt.theme_manager import ThemeManager
|
from portprotonqt.theme_manager import ThemeManager
|
||||||
@@ -1717,8 +1717,10 @@ class ExeSettingsDialog(QDialog):
|
|||||||
if self.portproton_path is None:
|
if self.portproton_path is None:
|
||||||
logger.error("PortProton location not found")
|
logger.error("PortProton location not found")
|
||||||
return
|
return
|
||||||
base_path = os.path.join(self.portproton_path, "data")
|
self.start_sh = get_portproton_start_command()
|
||||||
self.start_sh = [os.path.join(base_path, "scripts", "start.sh")]
|
if self.start_sh is None:
|
||||||
|
logger.error("PortProton start command not found")
|
||||||
|
return
|
||||||
|
|
||||||
self.dist_options = []
|
self.dist_options = []
|
||||||
self.prefix_options = []
|
self.prefix_options = []
|
||||||
@@ -1792,9 +1794,9 @@ class ExeSettingsDialog(QDialog):
|
|||||||
self.load_current_settings()
|
self.load_current_settings()
|
||||||
|
|
||||||
def _get_process_args(self, subcommand_args):
|
def _get_process_args(self, subcommand_args):
|
||||||
"""Get the full arguments for QProcess.start, handling flatpak separator."""
|
"""Get the full arguments for QProcess.start, handling flatpak format."""
|
||||||
if self.start_sh[0] == "flatpak":
|
if self.start_sh and self.start_sh[0] == "flatpak":
|
||||||
return self.start_sh[1:] + ["--"] + subcommand_args
|
return self.start_sh + subcommand_args
|
||||||
else:
|
else:
|
||||||
return self.start_sh + subcommand_args
|
return self.start_sh + subcommand_args
|
||||||
|
|
||||||
@@ -1906,7 +1908,8 @@ class ExeSettingsDialog(QDialog):
|
|||||||
"""Load available toggles first, then current settings."""
|
"""Load available toggles first, then current settings."""
|
||||||
process = QProcess(self)
|
process = QProcess(self)
|
||||||
process.finished.connect(self.on_list_db_finished)
|
process.finished.connect(self.on_list_db_finished)
|
||||||
process.start(self.start_sh[0], ["cli", "--list-db"])
|
args = self._get_process_args(["cli", "--list-db"])
|
||||||
|
process.start(args[0], args[1:])
|
||||||
|
|
||||||
def on_list_db_finished(self, exit_code, exit_status):
|
def on_list_db_finished(self, exit_code, exit_status):
|
||||||
"""Handle --list-db output and extract available keys and system info."""
|
"""Handle --list-db output and extract available keys and system info."""
|
||||||
@@ -1953,7 +1956,8 @@ class ExeSettingsDialog(QDialog):
|
|||||||
# Load current settings
|
# Load current settings
|
||||||
process = QProcess(self)
|
process = QProcess(self)
|
||||||
process.finished.connect(self.on_show_ppdb_finished)
|
process.finished.connect(self.on_show_ppdb_finished)
|
||||||
process.start(self.start_sh[0], ["cli", "--show-ppdb", f"{self.exe_path}"])
|
args = self._get_process_args(["cli", "--show-ppdb", f"{self.exe_path}"])
|
||||||
|
process.start(args[0], args[1:])
|
||||||
|
|
||||||
def on_show_ppdb_finished(self, exit_code, exit_status):
|
def on_show_ppdb_finished(self, exit_code, exit_status):
|
||||||
"""Handle --show-ppdb output."""
|
"""Handle --show-ppdb output."""
|
||||||
@@ -2301,8 +2305,9 @@ class ExeSettingsDialog(QDialog):
|
|||||||
|
|
||||||
process = QProcess(self)
|
process = QProcess(self)
|
||||||
process.finished.connect(self.on_edit_db_finished)
|
process.finished.connect(self.on_edit_db_finished)
|
||||||
args = ["cli", "--edit-db", self.exe_path] + changes
|
process_args = ["cli", "--edit-db", self.exe_path] + changes
|
||||||
process.start(self.start_sh[0], args)
|
args = self._get_process_args(process_args)
|
||||||
|
process.start(args[0], args[1:])
|
||||||
self.apply_button.setEnabled(False)
|
self.apply_button.setEnabled(False)
|
||||||
|
|
||||||
def on_edit_db_finished(self, exit_code, exit_status):
|
def on_edit_db_finished(self, exit_code, exit_status):
|
||||||
|
|||||||
Reference in New Issue
Block a user