From fbceb44b60f4b51e16eeeae9461286e483bcfb7c Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Thu, 18 Jan 2024 11:59:10 +0100 Subject: [PATCH] Hide the additional parameters field as it is not implemented --- .../ZWidget/src/widgets/lineedit/lineedit.cpp | 2 ++ src/launcher/launcherwindow.cpp | 15 ++++++++++++++- src/launcher/playgamepage.cpp | 15 +++++++++++++++ src/launcher/playgamepage.h | 10 ++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/libraries/ZWidget/src/widgets/lineedit/lineedit.cpp b/libraries/ZWidget/src/widgets/lineedit/lineedit.cpp index 34391fd19..70de5266f 100644 --- a/libraries/ZWidget/src/widgets/lineedit/lineedit.cpp +++ b/libraries/ZWidget/src/widgets/lineedit/lineedit.cpp @@ -815,6 +815,8 @@ int LineEdit::GetCharacterIndex(double mouse_x) void LineEdit::UpdateTextClipping() { Canvas* canvas = GetCanvas(); + if (!canvas) + return; Size text_size = GetVisualTextSize(canvas, clip_start_offset, (int)text.size() - clip_start_offset); diff --git a/src/launcher/launcherwindow.cpp b/src/launcher/launcherwindow.cpp index 96039ea08..489411ff2 100644 --- a/src/launcher/launcherwindow.cpp +++ b/src/launcher/launcherwindow.cpp @@ -7,10 +7,15 @@ #include "version.h" #include "i_interface.h" #include "gstrings.h" +#include "c_cvars.h" #include #include #include +#if defined(EXTRAARGS) +CVAR(String, additional_parameters, "", CVAR_ARCHIVE | CVAR_NOSET | CVAR_GLOBALCONFIG); +#endif + int LauncherWindow::ExecModal(WadStuff* wads, int numwads, int defaultiwad, int* autoloadflags) { Size screenSize = GetScreenSize(); @@ -46,6 +51,10 @@ LauncherWindow::LauncherWindow(WadStuff* wads, int numwads, int defaultiwad, int UpdateLanguage(); +#if defined(EXTRAARGS) + PlayGame->SetExtraArgs(static_cast(additional_parameters).GetChars()); +#endif + Pages->SetCurrentWidget(PlayGame); PlayGame->SetFocus(); } @@ -54,11 +63,15 @@ void LauncherWindow::Start() { Settings->Save(); +#if defined(EXTRAARGS) std::string extraargs = PlayGame->GetExtraArgs(); - if (!extraargs.empty()) + if (extraargs != static_cast(additional_parameters).GetChars()) { + additional_parameters = extraargs.c_str(); + // To do: restart the process like the cocoa backend is doing? } +#endif ExecResult = PlayGame->GetSelectedGame(); DisplayWindow::ExitLoop(); diff --git a/src/launcher/playgamepage.cpp b/src/launcher/playgamepage.cpp index 5c585c9e5..5f6f7376e 100644 --- a/src/launcher/playgamepage.cpp +++ b/src/launcher/playgamepage.cpp @@ -12,9 +12,13 @@ PlayGamePage::PlayGamePage(LauncherWindow* launcher, WadStuff* wads, int numwads { WelcomeLabel = new TextLabel(this); SelectLabel = new TextLabel(this); +#if defined(EXTRAARGS) ParametersLabel = new TextLabel(this); +#endif GamesList = new ListView(this); +#if defined(EXTRAARGS) ParametersEdit = new LineEdit(this); +#endif for (int i = 0; i < numwads; i++) { @@ -40,10 +44,17 @@ PlayGamePage::PlayGamePage(LauncherWindow* launcher, WadStuff* wads, int numwads GamesList->OnActivated = [=]() { OnGamesListActivated(); }; } +#if defined(EXTRAARGS) +void PlayGamePage::SetExtraArgs(const std::string& args) +{ + ParametersEdit->SetText(args); +} + std::string PlayGamePage::GetExtraArgs() { return ParametersEdit->GetText(); } +#endif int PlayGamePage::GetSelectedGame() { @@ -53,7 +64,9 @@ int PlayGamePage::GetSelectedGame() void PlayGamePage::UpdateLanguage() { SelectLabel->SetText(GStrings("PICKER_SELECT")); +#if defined(EXTRAARGS) ParametersLabel->SetText(GStrings("PICKER_ADDPARM")); +#endif FString welcomeText = GStrings("PICKER_WELCOME"); welcomeText.Substitute("%s", GAMENAME); WelcomeLabel->SetText(welcomeText.GetChars()); @@ -85,6 +98,7 @@ void PlayGamePage::OnGeometryChanged() y = GetHeight() - 10.0; +#if defined(EXTRAARGS) double editHeight = 24.0; y -= editHeight; ParametersEdit->SetFrameGeometry(0.0, y, GetWidth(), editHeight); @@ -94,6 +108,7 @@ void PlayGamePage::OnGeometryChanged() y -= labelHeight; ParametersLabel->SetFrameGeometry(0.0, y, GetWidth(), labelHeight); y -= 10.0; +#endif double listViewBottom = y - 10.0; GamesList->SetFrameGeometry(0.0, listViewTop, GetWidth(), std::max(listViewBottom - listViewTop, 0.0)); diff --git a/src/launcher/playgamepage.h b/src/launcher/playgamepage.h index af0e95bc3..9378c3798 100644 --- a/src/launcher/playgamepage.h +++ b/src/launcher/playgamepage.h @@ -2,6 +2,8 @@ #include +// #define EXTRAARGS + class LauncherWindow; class TextLabel; class ListView; @@ -14,7 +16,11 @@ public: PlayGamePage(LauncherWindow* launcher, WadStuff* wads, int numwads, int defaultiwad); void UpdateLanguage(); +#if defined(EXTRAARGS) + void SetExtraArgs(const std::string& args); std::string GetExtraArgs(); +#endif + int GetSelectedGame(); private: @@ -26,7 +32,11 @@ private: TextLabel* WelcomeLabel = nullptr; TextLabel* SelectLabel = nullptr; +#if defined(EXTRAARGS) TextLabel* ParametersLabel = nullptr; +#endif ListView* GamesList = nullptr; +#if defined(EXTRAARGS) LineEdit* ParametersEdit = nullptr; +#endif };