diff options
author | chai <chaifix@163.com> | 2020-02-11 11:29:07 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-02-11 11:29:07 +0800 |
commit | 160e1299ef3d95f8e8c48706d7f61dd3dc6c6b60 (patch) | |
tree | abe5ae5242d9cc6caf6edf103e662c44e978fca0 /src/jin/main.cpp | |
parent | e095043485d1d298571af6d9eca7f0db9009ea7a (diff) |
Diffstat (limited to 'src/jin/main.cpp')
-rw-r--r-- | src/jin/main.cpp | 110 |
1 files changed, 55 insertions, 55 deletions
diff --git a/src/jin/main.cpp b/src/jin/main.cpp index 6bcfaec..abcefb6 100644 --- a/src/jin/main.cpp +++ b/src/jin/main.cpp @@ -2,9 +2,9 @@ #include "libjin/jin.h" #ifdef _WIN32 - #include <Windows.h> - #include <shlobj.h> - #include <wchar.h> + #include <Windows.h> + #include <shlobj.h> + #include <wchar.h> #endif #define EXECUTABLE_DIR "./" @@ -15,76 +15,76 @@ using namespace JinEngine::Filesystem; static void load(const char* cwd) { - jin_log_info("Currrent working directory is %s", cwd); - // Main thread lua state. - lua_State* L = luax_newstate(); - luax_openlibs(L); - JinEngine::Lua::open(L); - JinEngine::Lua::boot(L, cwd); - luax_close(L); + jin_log_info("Currrent working directory is %s", cwd); + // Main thread lua state. + lua_State* L = luax_newstate(); + luax_openlibs(L); + JinEngine::Lua::open(L); + JinEngine::Lua::boot(L, cwd); + luax_close(L); } #ifdef _WIN32 // WChar to string. std::string wstrtostr(const std::wstring &wstr) { - std::string strTo; - char *szTo = new char[wstr.length() + 1]; - szTo[wstr.size()] = '\0'; - WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, szTo, (int)wstr.length(), NULL, NULL); - strTo = szTo; - delete[] szTo; - return strTo; + std::string strTo; + char *szTo = new char[wstr.length() + 1]; + szTo[wstr.size()] = '\0'; + WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, szTo, (int)wstr.length(), NULL, NULL); + strTo = szTo; + delete[] szTo; + return strTo; } #endif bool BrowseFolder(string& cwd) { #ifdef _WIN32 - IFileDialog* pfd = NULL; - DWORD dwFlags; - IShellItem* pItem = NULL; - HRESULT hr = CoInitialize(NULL); - if (FAILED(hr)) return false; - hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, - IID_IFileOpenDialog, reinterpret_cast<void**>(&pfd)); - if (FAILED(hr)) return false; - pfd->SetTitle(DIALOG_TITLE); - hr = pfd->GetOptions(&dwFlags); - if (FAILED(hr)) return false; - hr = pfd->SetOptions(dwFlags | FOS_PICKFOLDERS); - if (FAILED(hr)) return false; - hr = pfd->Show(NULL); - if (hr == HRESULT_FROM_WIN32(ERROR_CANCELLED)) - return false; - hr = pfd->GetResult(&pItem); - if (FAILED(hr)) return false; - LPWSTR filePath; - hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &filePath); - if (FAILED(hr)) return false; - cwd = wstrtostr(filePath); - CoTaskMemFree(filePath); - pfd->Release(); - pItem->Release(); - CoUninitialize(); - return true; + IFileDialog* pfd = NULL; + DWORD dwFlags; + IShellItem* pItem = NULL; + HRESULT hr = CoInitialize(NULL); + if (FAILED(hr)) return false; + hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, + IID_IFileOpenDialog, reinterpret_cast<void**>(&pfd)); + if (FAILED(hr)) return false; + pfd->SetTitle(DIALOG_TITLE); + hr = pfd->GetOptions(&dwFlags); + if (FAILED(hr)) return false; + hr = pfd->SetOptions(dwFlags | FOS_PICKFOLDERS); + if (FAILED(hr)) return false; + hr = pfd->Show(NULL); + if (hr == HRESULT_FROM_WIN32(ERROR_CANCELLED)) + return false; + hr = pfd->GetResult(&pItem); + if (FAILED(hr)) return false; + LPWSTR filePath; + hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &filePath); + if (FAILED(hr)) return false; + cwd = wstrtostr(filePath); + CoTaskMemFree(filePath); + pfd->Release(); + pItem->Release(); + CoUninitialize(); + return true; #endif } int main(int argc, char* args[]) { - string cwd = EXECUTABLE_DIR; + string cwd = EXECUTABLE_DIR; #ifdef _WIN32 - if (argc > 1) - cwd = args[1]; + if (argc > 1) + cwd = args[1]; #endif - else - { - if (!BrowseFolder(cwd)) - return 0; - } - if (!cwd.empty()) - load(cwd.c_str()); + else + { + if (!BrowseFolder(cwd)) + return 0; + } + if (!cwd.empty()) + load(cwd.c_str()); - return 0; + return 0; }
\ No newline at end of file |