Skip to content

Commit

Permalink
GraphicPacksWindow: Disable update button when a game is running (#1137)
Browse files Browse the repository at this point in the history
  • Loading branch information
goeiecool9999 authored Mar 26, 2024
1 parent 111e383 commit 4f3d462
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 11 deletions.
16 changes: 6 additions & 10 deletions src/gui/DownloadGraphicPacksWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,14 +110,6 @@ void deleteDownloadedGraphicPacks()

void DownloadGraphicPacksWindow::UpdateThread()
{
if (CafeSystem::IsTitleRunning())
{
wxMessageBox(_("Graphic packs cannot be updated while a game is running."), _("Graphic packs"), 5, this->GetParent());
// cancel update
m_threadState = ThreadFinished;
return;
}

// get github url
std::string githubAPIUrl;
curlDownloadFileState_t tempDownloadState;
Expand Down Expand Up @@ -326,8 +318,6 @@ DownloadGraphicPacksWindow::DownloadGraphicPacksWindow(wxWindow* parent)


m_downloadState = std::make_unique<curlDownloadFileState_t>();

m_thread = std::thread(&DownloadGraphicPacksWindow::UpdateThread, this);
}

DownloadGraphicPacksWindow::~DownloadGraphicPacksWindow()
Expand All @@ -344,6 +334,12 @@ const std::string& DownloadGraphicPacksWindow::GetException() const

int DownloadGraphicPacksWindow::ShowModal()
{
if(CafeSystem::IsTitleRunning())
{
wxMessageBox(_("Graphic packs cannot be updated while a game is running."), _("Graphic packs"), 5, this->GetParent());
return wxID_CANCEL;
}
m_thread = std::thread(&DownloadGraphicPacksWindow::UpdateThread, this);
wxDialog::ShowModal();
return m_threadState == ThreadCanceled ? wxID_CANCEL : wxID_OK;
}
Expand Down
10 changes: 10 additions & 0 deletions src/gui/GraphicPacksWindow2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,7 @@ GraphicPacksWindow2::GraphicPacksWindow2(wxWindow* parent, uint64_t title_id_fil

SetSizer(main_sizer);

UpdateTitleRunning(CafeSystem::IsTitleRunning());
FillGraphicPackList();
}

Expand Down Expand Up @@ -676,6 +677,15 @@ void GraphicPacksWindow2::OnInstalledGamesChanged(wxCommandEvent& event)
event.Skip();
}

void GraphicPacksWindow2::UpdateTitleRunning(bool running)
{
m_update_graphicPacks->Enable(!running);
if(running)
m_update_graphicPacks->SetToolTip(_("Graphic packs cannot be updated while a game is running."));
else
m_update_graphicPacks->SetToolTip(nullptr);
}

void GraphicPacksWindow2::ReloadPack(const GraphicPackPtr& graphic_pack) const
{
if (graphic_pack->HasShaders() || graphic_pack->HasPatches() || graphic_pack->HasCustomVSyncFrequency())
Expand Down
1 change: 1 addition & 0 deletions src/gui/GraphicPacksWindow2.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class GraphicPacksWindow2 : public wxDialog
~GraphicPacksWindow2();

static void RefreshGraphicPacks();
void UpdateTitleRunning(bool running);

private:
std::string m_filter;
Expand Down
10 changes: 10 additions & 0 deletions src/gui/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -625,6 +625,7 @@ bool MainWindow::FileLoad(const fs::path launchPath, wxLaunchGameEvent::INITIATE
CreateCanvas();
CafeSystem::LaunchForegroundTitle();
RecreateMenu();
UpdateChildWindowTitleRunningState();

return true;
}
Expand Down Expand Up @@ -683,6 +684,7 @@ void MainWindow::OnFileMenu(wxCommandEvent& event)
RecreateMenu();
CreateGameListAndStatusBar();
DoLayout();
UpdateChildWindowTitleRunningState();
}
}

Expand Down Expand Up @@ -2320,6 +2322,14 @@ void MainWindow::RecreateMenu()
SetMenuVisible(false);
}

void MainWindow::UpdateChildWindowTitleRunningState()
{
const bool running = CafeSystem::IsTitleRunning();

if(m_graphic_pack_window)
m_graphic_pack_window->UpdateTitleRunning(running);
}

void MainWindow::RestoreSettingsAfterGameExited()
{
RecreateMenu();
Expand Down
4 changes: 3 additions & 1 deletion src/gui/MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class DebuggerWindow2;
struct GameEntry;
class DiscordPresence;
class TitleManager;
class GraphicPacksWindow2;
class wxLaunchGameEvent;

wxDECLARE_EVENT(wxEVT_LAUNCH_GAME, wxLaunchGameEvent);
Expand Down Expand Up @@ -146,6 +147,7 @@ class MainWindow : public wxFrame, public CafeSystem::SystemImplementation

private:
void RecreateMenu();
void UpdateChildWindowTitleRunningState();
static wxString GetInitialWindowTitle();
void ShowGettingStartedDialog();

Expand All @@ -163,7 +165,7 @@ class MainWindow : public wxFrame, public CafeSystem::SystemImplementation
MemorySearcherTool* m_toolWindow = nullptr;
TitleManager* m_title_manager = nullptr;
PadViewFrame* m_padView = nullptr;
wxWindow* m_graphic_pack_window = nullptr;
GraphicPacksWindow2* m_graphic_pack_window = nullptr;

wxTimer* m_timer;
wxPoint m_mouse_position{};
Expand Down

0 comments on commit 4f3d462

Please sign in to comment.