Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Save pre/post-scripts paths with None instead of "" on reset #3620

Merged
merged 5 commits into from
Dec 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bottles/backend/managers/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -721,10 +721,10 @@ def get_programs(self, config: BottleConfig) -> List[dict]:
"arguments": _program.get("arguments"),
"name": _program.get("name"),
"path": _program.get("path"),
"folder": _program.get("folder", program_folder),
"icon": "com.usebottles.bottles-program",
"pre_script": _program.get("pre_script"),
"post_script": _program.get("post_script"),
"folder": _program.get("folder", program_folder),
"dxvk": _program.get("dxvk"),
"vkd3d": _program.get("vkd3d"),
"dxvk_nvapi": _program.get("dxvk_nvapi"),
Expand Down
8 changes: 4 additions & 4 deletions bottles/backend/wine/executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ def __init__(
exec_path: str,
args: str = "",
terminal: bool = False,
cwd: Optional[str] = None,
environment: Optional[dict] = None,
move_file: bool = False,
move_upd_fn: callable = None,
pre_script: Optional[str] = None,
post_script: Optional[str] = None,
cwd: Optional[str] = None,
monitoring: Optional[list] = None,
program_dxvk: Optional[bool] = None,
program_vkd3d: Optional[bool] = None,
Expand All @@ -59,10 +59,10 @@ def __init__(
self.exec_path = shlex.quote(exec_path)
self.args = args
self.terminal = terminal
self.cwd = self.__get_cwd(cwd)
self.environment = environment
self.pre_script = pre_script
self.post_script = post_script
self.cwd = self.__get_cwd(cwd)
self.monitoring = monitoring
self.use_gamescope = program_gamescope
self.use_virt_desktop = program_virt_desktop
Expand Down Expand Up @@ -120,9 +120,9 @@ def run_program(cls, config: BottleConfig, program: dict, terminal: bool = False
config=config,
exec_path=program.get("path"),
args=program.get("arguments"),
cwd=program.get("folder"),
pre_script=program.get("pre_script"),
post_script=program.get("post_script"),
cwd=program.get("folder"),
terminal=terminal,
program_dxvk=program.get("dxvk"),
program_vkd3d=program.get("vkd3d"),
Expand Down Expand Up @@ -274,11 +274,11 @@ def __launch_exe(self):
command=self.exec_path,
arguments=self.args,
terminal=self.terminal,
cwd=self.cwd,
environment=self.environment,
communicate=True,
pre_script=self.pre_script,
post_script=self.post_script,
cwd=self.cwd,
)
res = winecmd.run()
self.__set_monitors()
Expand Down
6 changes: 3 additions & 3 deletions bottles/backend/wine/winecommand.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,11 @@ def __init__(
arguments: str = "",
environment: dict = {},
communicate: bool = False,
cwd: Optional[str] = None,
colors: str = "default",
minimal: bool = False, # avoid gamemode/gamescope usage
pre_script: Optional[str] = None,
post_script: Optional[str] = None,
cwd: Optional[str] = None,
):
_environment = environment.copy()
self.config = self._get_config(config)
Expand Down Expand Up @@ -597,10 +597,10 @@ def get_cmd(
del extracted_env["WINEDLLOVERRIDES"]
environment.update(extracted_env)

if post_script is not None:
if post_script not in (None, ""):
command = f"{command} ; sh '{post_script}'"

if pre_script is not None:
if pre_script not in (None, ""):
command = f"sh '{pre_script}' ; {command}"

return command
Expand Down
2 changes: 1 addition & 1 deletion bottles/frontend/cli/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -666,9 +666,9 @@ def run_program(self):
_program_args = program.get("arguments")
if _keep and _program_args:
_args = _program_args + " " + _args
program.get("folder", "")
program.get("pre_script", None)
program.get("post_script", None)
program.get("folder", None)

program.get("dxvk")
program.get("vkd3d")
Expand Down
24 changes: 9 additions & 15 deletions bottles/frontend/windows/launchoptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,19 +169,19 @@ def __init__(self, parent, config, program, **kwargs):
"virtual_desktop",
)

if program.get("pre_script") not in ["", None]:
if program.get("pre_script") not in ("", None):
self.action_pre_script.set_subtitle(program["pre_script"])
self.btn_pre_script_reset.set_visible(True)

if program.get("post_script") not in ["", None]:
if program.get("post_script") not in ("", None):
self.action_post_script.set_subtitle(program["post_script"])
self.btn_post_script_reset.set_visible(True)

if program.get("folder") not in [
if program.get("folder") not in (
"",
None,
ManagerUtils.get_exe_parent_dir(self.config, self.program["path"]),
]:
):
self.action_cwd.set_subtitle(program["folder"])
self.btn_cwd_reset.set_visible(True)

Expand Down Expand Up @@ -252,10 +252,7 @@ def set_path(dialog, result):
# also thrown when dialog has been cancelled
if error.code == 2:
# error 2 seems to be 'dismiss' or 'cancel'
if (
self.program["pre_script"] is None
or self.program["pre_script"] == ""
):
if self.program.get("pre_script") in (None, ""):
self.action_pre_script.set_subtitle(
self.__default_pre_script_msg
)
Expand Down Expand Up @@ -285,10 +282,7 @@ def set_path(dialog, result):
# also thrown when dialog has been cancelled
if error.code == 2:
# error 2 seems to be 'dismiss' or 'cancel'
if (
self.program["post_script"] is None
or self.program["post_script"] == ""
):
if self.program.get("post_script") in (None, ""):
self.action_pre_script.set_subtitle(
self.__default_pre_script_msg
)
Expand All @@ -302,12 +296,12 @@ def set_path(dialog, result):
dialog.open(parent=self.window, callback=set_path)

def __reset_pre_script(self, *_args):
self.program["pre_script"] = ""
self.program["pre_script"] = None
self.action_pre_script.set_subtitle(self.__default_pre_script_msg)
self.btn_pre_script_reset.set_visible(False)

def __reset_post_script(self, *_args):
self.program["post_script"] = ""
self.program["post_script"] = None
self.action_post_script.set_subtitle(self.__default_post_script_msg)
self.btn_post_script_reset.set_visible(False)

Expand All @@ -328,7 +322,7 @@ def set_path(dialog, result):
# also thrown when dialog has been cancelled
if error.code == 2:
# error 2 seems to be 'dismiss' or 'cancel'
if self.program["folder"] is None or self.program["folder"] == "":
if self.program.get("folder") in (None, ""):
self.action_cwd.set_subtitle(self.__default_cwd_msg)
else:
# something else happened...
Expand Down
Loading