mirror of
https://github.com/cemu-project/Cemu.git
synced 2024-11-22 09:09:18 +01:00
Portable way of opening URLs and directories (#156)
Replaced every instance of ShellExecute with wxLaunchDefaultBrowser
This commit is contained in:
parent
f3c70e69b4
commit
1a1de370e4
@ -1,9 +1,5 @@
|
|||||||
#include "gui/ChecksumTool.h"
|
#include "gui/ChecksumTool.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <shellapi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "Cafe/TitleList/GameInfo.h"
|
#include "Cafe/TitleList/GameInfo.h"
|
||||||
#include "gui/helpers/wxCustomEvents.h"
|
#include "gui/helpers/wxCustomEvents.h"
|
||||||
#include "util/helpers/helpers.h"
|
#include "util/helpers/helpers.h"
|
||||||
@ -521,11 +517,8 @@ void ChecksumTool::VerifyJsonEntry(const rapidjson::Document& doc)
|
|||||||
}
|
}
|
||||||
file.flush();
|
file.flush();
|
||||||
file.close();
|
file.close();
|
||||||
#ifdef _WIN32
|
|
||||||
ShellExecuteA(GetHWND(), "open", path.c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
wxLaunchDefaultBrowser(fmt::format("file:{}", path));
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
wxMessageBox(_("Can't open file to write!"), _("Error"), wxOK | wxCENTRE | wxICON_ERROR, this);
|
wxMessageBox(_("Can't open file to write!"), _("Error"), wxOK | wxCENTRE | wxICON_ERROR, this);
|
||||||
|
@ -37,10 +37,6 @@
|
|||||||
#include "Cafe/GraphicPack/GraphicPack.h"
|
#include "Cafe/GraphicPack/GraphicPack.h"
|
||||||
#include "Cafe/TitleList/GameInfo.h"
|
#include "Cafe/TitleList/GameInfo.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <shellapi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include "util/helpers/SystemException.h"
|
#include "util/helpers/SystemException.h"
|
||||||
#include "gui/DownloadGraphicPacksWindow.h"
|
#include "gui/DownloadGraphicPacksWindow.h"
|
||||||
@ -1951,11 +1947,7 @@ public:
|
|||||||
"/*****************************************************************************/\r\n"
|
"/*****************************************************************************/\r\n"
|
||||||
);
|
);
|
||||||
delete fs;
|
delete fs;
|
||||||
#ifdef _WIN32
|
wxLaunchDefaultBrowser(fmt::format("file:{}", _utf8Wrapper(tempPath)));
|
||||||
ShellExecute(0, 0, tempPath.generic_wstring().c_str(), 0, 0, SW_SHOW);
|
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
});
|
});
|
||||||
lineSizer->Add(noticeLink, 0);
|
lineSizer->Add(noticeLink, 0);
|
||||||
lineSizer->Add(new wxStaticText(parent, -1, ")"), 0);
|
lineSizer->Add(new wxStaticText(parent, -1, ")"), 0);
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
#include "gui/TitleManager.h"
|
#include "gui/TitleManager.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <shellapi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gui/helpers/wxCustomEvents.h"
|
#include "gui/helpers/wxCustomEvents.h"
|
||||||
#include "gui/helpers/wxCustomData.h"
|
#include "gui/helpers/wxCustomData.h"
|
||||||
#include "Cafe/TitleList/GameInfo.h"
|
#include "Cafe/TitleList/GameInfo.h"
|
||||||
@ -483,11 +479,7 @@ void TitleManager::OnSaveOpenDirectory(wxCommandEvent& event)
|
|||||||
if (!fs::exists(target) || !fs::is_directory(target))
|
if (!fs::exists(target) || !fs::is_directory(target))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef _WIN32
|
wxLaunchDefaultBrowser(fmt::format("file:{}", _utf8Wrapper(target)));
|
||||||
ShellExecuteW(GetHWND(), L"open", target.c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TitleManager::OnSaveDelete(wxCommandEvent& event)
|
void TitleManager::OnSaveDelete(wxCommandEvent& event)
|
||||||
|
@ -4,9 +4,6 @@
|
|||||||
#include "util/helpers/helpers.h"
|
#include "util/helpers/helpers.h"
|
||||||
#include "gui/GameProfileWindow.h"
|
#include "gui/GameProfileWindow.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <shellapi.h>
|
|
||||||
#endif
|
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
|
|
||||||
#include <wx/wupdlock.h>
|
#include <wx/wupdlock.h>
|
||||||
@ -473,6 +470,7 @@ void wxGameList::OnContextMenu(wxContextMenuEvent& event)
|
|||||||
menu.Append(kContextMenuStart, _("&Start"));
|
menu.Append(kContextMenuStart, _("&Start"));
|
||||||
|
|
||||||
bool isFavorite = false;
|
bool isFavorite = false;
|
||||||
|
std::error_code ec;
|
||||||
|
|
||||||
menu.AppendSeparator();
|
menu.AppendSeparator();
|
||||||
menu.AppendCheckItem(kContextMenuFavorite, _("&Favorite"))->Check(isFavorite);
|
menu.AppendCheckItem(kContextMenuFavorite, _("&Favorite"))->Check(isFavorite);
|
||||||
@ -481,7 +479,7 @@ void wxGameList::OnContextMenu(wxContextMenuEvent& event)
|
|||||||
menu.AppendSeparator();
|
menu.AppendSeparator();
|
||||||
menu.Append(kWikiPage, _("&Wiki page"));
|
menu.Append(kWikiPage, _("&Wiki page"));
|
||||||
menu.Append(kContextMenuGameFolder, _("&Game directory"));
|
menu.Append(kContextMenuGameFolder, _("&Game directory"));
|
||||||
menu.Append(kContextMenuSaveFolder, _("&Save directory"))->Enable(true);
|
menu.Append(kContextMenuSaveFolder, _("&Save directory"))->Enable(fs::is_directory(gameInfo.GetSaveFolder(), ec));
|
||||||
menu.Append(kContextMenuUpdateFolder, _("&Update directory"))->Enable(gameInfo.HasUpdate());
|
menu.Append(kContextMenuUpdateFolder, _("&Update directory"))->Enable(gameInfo.HasUpdate());
|
||||||
menu.Append(kContextMenuDLCFolder, _("&DLC directory"))->Enable(gameInfo.HasAOC());
|
menu.Append(kContextMenuDLCFolder, _("&DLC directory"))->Enable(gameInfo.HasAOC());
|
||||||
|
|
||||||
@ -552,13 +550,9 @@ void wxGameList::OnContextMenuSelected(wxCommandEvent& event)
|
|||||||
}
|
}
|
||||||
case kContextMenuGameFolder:
|
case kContextMenuGameFolder:
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
|
||||||
fs::path path(gameInfo.GetBase().GetPath());
|
fs::path path(gameInfo.GetBase().GetPath());
|
||||||
_stripPathFilename(path);
|
_stripPathFilename(path);
|
||||||
ShellExecuteW(GetHWND(), L"open", path.c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
wxLaunchDefaultBrowser(fmt::format("file:{}", _utf8Wrapper(path)));
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kWikiPage:
|
case kWikiPage:
|
||||||
@ -572,44 +566,28 @@ void wxGameList::OnContextMenuSelected(wxCommandEvent& event)
|
|||||||
wxASSERT(!tokens.empty());
|
wxASSERT(!tokens.empty());
|
||||||
const std::string company_code = gameInfo.GetBase().GetMetaInfo()->GetCompanyCode();
|
const std::string company_code = gameInfo.GetBase().GetMetaInfo()->GetCompanyCode();
|
||||||
wxASSERT(company_code.size() >= 2);
|
wxASSERT(company_code.size() >= 2);
|
||||||
#ifdef _WIN32
|
wxLaunchDefaultBrowser(fmt::format("https://wiki.cemu.info/wiki/{}{}", *tokens.rbegin(), company_code.substr(company_code.size() - 2).c_str()));
|
||||||
ShellExecuteA(GetHWND(), "open", fmt::format("https://wiki.cemu.info/wiki/{}{}", *tokens.rbegin(), company_code.substr(company_code.size() - 2)).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case kContextMenuSaveFolder:
|
case kContextMenuSaveFolder:
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
wxLaunchDefaultBrowser(fmt::format("file:{}", _utf8Wrapper(gameInfo.GetSaveFolder())));
|
||||||
ShellExecuteW(GetHWND(), L"open", gameInfo.GetSaveFolder().c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kContextMenuUpdateFolder:
|
case kContextMenuUpdateFolder:
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
|
||||||
fs::path path(gameInfo.GetUpdate().GetPath());
|
fs::path path(gameInfo.GetUpdate().GetPath());
|
||||||
_stripPathFilename(path);
|
_stripPathFilename(path);
|
||||||
ShellExecuteW(GetHWND(), L"open", path.c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
wxLaunchDefaultBrowser(fmt::format("file:{}", _utf8Wrapper(path)));
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kContextMenuDLCFolder:
|
case kContextMenuDLCFolder:
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
|
||||||
fs::path path(gameInfo.GetAOC().front().GetPath());
|
fs::path path(gameInfo.GetAOC().front().GetPath());
|
||||||
_stripPathFilename(path);
|
_stripPathFilename(path);
|
||||||
ShellExecuteW(GetHWND(), L"open", path.c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
wxLaunchDefaultBrowser(fmt::format("file:{}", _utf8Wrapper(path)));
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kContextMenuEditGraphicPacks:
|
case kContextMenuEditGraphicPacks:
|
||||||
|
@ -20,9 +20,6 @@
|
|||||||
#include "../wxHelper.h"
|
#include "../wxHelper.h"
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#ifdef _WIN32
|
|
||||||
#include <shellapi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "config/ActiveSettings.h"
|
#include "config/ActiveSettings.h"
|
||||||
#include "gui/ChecksumTool.h"
|
#include "gui/ChecksumTool.h"
|
||||||
@ -853,14 +850,10 @@ void wxTitleManagerList::OnContextMenuSelected(wxCommandEvent& event)
|
|||||||
switch (event.GetId())
|
switch (event.GetId())
|
||||||
{
|
{
|
||||||
case kContextMenuOpenDirectory:
|
case kContextMenuOpenDirectory:
|
||||||
{
|
{
|
||||||
const auto path = fs::is_directory(entry->path) ? entry->path : entry->path.parent_path();
|
const auto path = fs::is_directory(entry->path) ? entry->path : entry->path.parent_path();
|
||||||
#ifdef _WIN32
|
wxLaunchDefaultBrowser(fmt::format("file:{}", _utf8Wrapper(path)));
|
||||||
ShellExecuteW(GetHWND(), L"open", path.generic_wstring().c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
}
|
||||||
#else
|
|
||||||
assert_dbg();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case kContextMenuDelete:
|
case kContextMenuDelete:
|
||||||
m_context_worker = std::async(std::launch::async, &wxTitleManagerList::DeleteEntry, this, selection, entry.value());
|
m_context_worker = std::async(std::launch::async, &wxTitleManagerList::DeleteEntry, this, selection, entry.value());
|
||||||
|
Loading…
Reference in New Issue
Block a user