From ab93b003857d9975705e10ae8755fa32682db07d Mon Sep 17 00:00:00 2001 From: nakeee Date: Tue, 24 Feb 2009 19:31:32 +0000 Subject: [PATCH] Ported wxutils from soap branch (Should make launch and explore work in Linux and osx as well) please test on windows. Fixed a compile bug and a small bug in the cdutils(thanks lp). git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2420 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/CDUtils.cpp | 3 +- Source/Core/Common/Src/FileUtil.cpp | 31 +------------------- Source/Core/Common/Src/FileUtil.h | 2 -- Source/Core/DebuggerWX/DebuggerWX.vcproj | 8 +++++ Source/Core/DebuggerWX/Src/CodeWindowSJP.cpp | 5 ++-- Source/Core/DolphinWX/Src/FrameTools.cpp | 6 ++-- Source/Core/DolphinWX/Src/GameListCtrl.cpp | 7 +++-- Source/Core/DolphinWX/Src/SConscript | 1 + Source/Core/DolphinWX/Src/WxUtils.cpp | 29 ++++++++++++++++++ Source/Core/DolphinWX/Src/WxUtils.h | 12 ++++++++ 10 files changed, 64 insertions(+), 40 deletions(-) create mode 100644 Source/Core/DolphinWX/Src/WxUtils.cpp create mode 100644 Source/Core/DolphinWX/Src/WxUtils.h diff --git a/Source/Core/Common/Src/CDUtils.cpp b/Source/Core/Common/Src/CDUtils.cpp index 6b5927287e..533a102942 100644 --- a/Source/Core/Common/Src/CDUtils.cpp +++ b/Source/Core/Common/Src/CDUtils.cpp @@ -2,7 +2,6 @@ With minor adjustments */ #include "CDUtils.h" -#include "common.h" /*! Follow symlinks until we have the real device file @@ -413,7 +412,7 @@ bool cdio_is_cdrom(const char *device) { char **devices = cdio_get_devices(); bool res = false; for (int i = 0; devices[i] != NULL; i++) { - if (strncmp(devices[i], device, PATH_MAX)) { + if (strncmp(devices[i], device, PATH_MAX) == 0) { res = true; break; } diff --git a/Source/Core/Common/Src/FileUtil.cpp b/Source/Core/Common/Src/FileUtil.cpp index 0d79954fa2..e849c56a15 100644 --- a/Source/Core/Common/Src/FileUtil.cpp +++ b/Source/Core/Common/Src/FileUtil.cpp @@ -113,36 +113,6 @@ std::string SanitizePath(const char *filename) return copy; } -void Launch(const char *filename) -{ -#ifdef _WIN32 - std::string win_filename = SanitizePath(filename); - SHELLEXECUTEINFO shex = { sizeof(shex) }; - shex.fMask = SEE_MASK_NO_CONSOLE; // | SEE_MASK_ASYNC_OK; - shex.lpVerb = "open"; - shex.lpFile = win_filename.c_str(); - shex.nShow = SW_SHOWNORMAL; - ShellExecuteEx(&shex); -#else - // TODO: Insert GNOME/KDE code here. -#endif -} - -void Explore(const char *path) -{ -#ifdef _WIN32 - std::string win_path = SanitizePath(path); - SHELLEXECUTEINFO shex = { sizeof(shex) }; - shex.fMask = SEE_MASK_NO_CONSOLE; // | SEE_MASK_ASYNC_OK; - shex.lpVerb = "explore"; - shex.lpFile = win_path.c_str(); - shex.nShow = SW_SHOWNORMAL; - ShellExecuteEx(&shex); -#else - // TODO: Insert GNOME/KDE code here. -#endif -} - // Returns true if successful, or path already exists. bool CreateDir(const char *path) { @@ -545,3 +515,4 @@ bool SetCurrentDirectory(const std::string& _rDirectory) } // namespace + diff --git a/Source/Core/Common/Src/FileUtil.h b/Source/Core/Common/Src/FileUtil.h index fd3816eaf4..5befbb7b46 100644 --- a/Source/Core/Common/Src/FileUtil.h +++ b/Source/Core/Common/Src/FileUtil.h @@ -37,8 +37,6 @@ struct FSTEntry std::string SanitizePath(const char *filename); bool Exists(const char *filename); -void Launch(const char *filename); -void Explore(const char *path); bool IsDirectory(const char *filename); bool IsDisk(const char *filename); bool CreateDir(const char *filename); diff --git a/Source/Core/DebuggerWX/DebuggerWX.vcproj b/Source/Core/DebuggerWX/DebuggerWX.vcproj index d5b6f56774..4329f70229 100644 --- a/Source/Core/DebuggerWX/DebuggerWX.vcproj +++ b/Source/Core/DebuggerWX/DebuggerWX.vcproj @@ -457,6 +457,14 @@ RelativePath=".\src\RegisterView.h" > + + + + // wxWidgets +// ugly that this lib included code from the main +#include "../../DolphinWX/Src/WxUtils.h" // ---------------------------------------------------------------------------- // Resources @@ -624,10 +626,10 @@ void CFrame::OnHelp(wxCommandEvent& event) break; } case IDM_HELPWEBSITE: - File::Launch("http://www.dolphin-emu.com/"); + WxUtils::Launch("http://www.dolphin-emu.com/"); break; case IDM_HELPGOOGLECODE: - File::Launch("http://code.google.com/p/dolphin-emu/"); + WxUtils::Launch("http://code.google.com/p/dolphin-emu/"); break; } } diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.cpp b/Source/Core/DolphinWX/Src/GameListCtrl.cpp index 7bdc1552ae..9f3118b396 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.cpp +++ b/Source/Core/DolphinWX/Src/GameListCtrl.cpp @@ -23,13 +23,13 @@ #include #include "FileSearch.h" -#include "FileUtil.h" #include "StringUtil.h" #include "ConfigManager.h" #include "GameListCtrl.h" #include "Blob.h" #include "ISOProperties.h" #include "IniFile.h" +#include "FileUtil.h" #if USE_XPM_BITMAPS #include "../resources/Flag_Europe.xpm" @@ -38,6 +38,9 @@ #include "../resources/Flag_USA.xpm" #endif // USE_XPM_BITMAPS +// ugly that this lib included code from the main +#include "../../DolphinWX/Src/WxUtils.h" + size_t CGameListCtrl::m_currentItem = 0; size_t CGameListCtrl::m_numberItem = 0; std::string CGameListCtrl::m_currentFilename; @@ -636,7 +639,7 @@ void CGameListCtrl::OnOpenContainingFolder(wxCommandEvent& WXUNUSED (event)) return; std::string path; SplitPath(iso->GetFileName(), &path, 0, 0); - File::Explore(path.c_str()); + WxUtils::Explore(path.c_str()); } diff --git a/Source/Core/DolphinWX/Src/SConscript b/Source/Core/DolphinWX/Src/SConscript index 4642214b85..e72ff4143b 100644 --- a/Source/Core/DolphinWX/Src/SConscript +++ b/Source/Core/DolphinWX/Src/SConscript @@ -35,6 +35,7 @@ if wxenv['HAVE_WX']: 'stdafx.cpp', 'FrameWiimote.cpp', 'SDCardWindow.cpp', + 'WxUtils.cpp', ] CPPDEFINES = [ diff --git a/Source/Core/DolphinWX/Src/WxUtils.cpp b/Source/Core/DolphinWX/Src/WxUtils.cpp new file mode 100644 index 0000000000..bdb5dfefba --- /dev/null +++ b/Source/Core/DolphinWX/Src/WxUtils.cpp @@ -0,0 +1,29 @@ +#include "Common.h" +#include +#include +namespace WxUtils { + + // Launch a file according to its mime type + void Launch(const char *filename) + { + if (! ::wxLaunchDefaultBrowser(wxString::FromAscii(filename))) { + // WARN_LOG + } + } + + // Launch an file explorer window on a certain path + void Explore(const char *path) + { + wxString wxPath = wxString::FromAscii(path); + + // Default to file + if (! wxPath.Contains(wxT("://"))) { + wxPath = wxT("file://") + wxPath; + } + + if (! ::wxLaunchDefaultBrowser(wxPath)) { + // WARN_LOG + } + } + +} diff --git a/Source/Core/DolphinWX/Src/WxUtils.h b/Source/Core/DolphinWX/Src/WxUtils.h new file mode 100644 index 0000000000..90d44ba922 --- /dev/null +++ b/Source/Core/DolphinWX/Src/WxUtils.h @@ -0,0 +1,12 @@ +#ifndef WXUTILS_H +#define WXUTILS_H + +namespace WxUtils { + // Launch a file according to its mime type + void Launch(const char *filename); + + // Launch an file explorer window on a certain path + void Explore(const char *path); + +} // NameSpace WxUtils +#endif // WXUTILS