ppsspp/Windows/InputBox.cpp

132 lines
3.1 KiB
C++
Raw Normal View History

2017-08-31 15:13:18 +00:00
#include "Common/CommonTypes.h"
#include "Common/CommonWindows.h"
#include "Windows/InputBox.h"
#include "Windows/resource.h"
#include "util/text/utf8.h"
2012-11-01 15:19:01 +00:00
static std::wstring textBoxContents;
static std::wstring out;
static std::wstring windowTitle;
2013-08-17 19:20:24 +00:00
static bool defaultSelected;
2012-11-01 15:19:01 +00:00
static INT_PTR CALLBACK InputBoxFunc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_INITDIALOG:
SetWindowText(GetDlgItem(hDlg, IDC_INPUTBOX), textBoxContents.c_str());
SetWindowText(hDlg, windowTitle.c_str());
2013-08-17 19:20:24 +00:00
if (defaultSelected == false) PostMessage(GetDlgItem(hDlg,IDC_INPUTBOX),EM_SETSEL,-1,-1);
2012-11-01 15:19:01 +00:00
return TRUE;
case WM_COMMAND:
switch (wParam)
{
case IDOK:
{
wchar_t temp[256];
GetWindowText(GetDlgItem(hDlg, IDC_INPUTBOX), temp, 255);
out = temp;
}
EndDialog(hDlg, IDOK);
2012-11-01 15:19:01 +00:00
return TRUE;
case IDCANCEL:
EndDialog(hDlg, IDCANCEL);
2012-11-01 15:19:01 +00:00
return TRUE;
}
default:
return FALSE;
}
}
template <bool hex>
void InputBoxFunc()
{
}
bool InputBox_GetString(HINSTANCE hInst, HWND hParent, const wchar_t *title, const std::string &defaultValue, std::string &outvalue, bool selected)
2012-11-01 15:19:01 +00:00
{
2013-08-17 19:20:24 +00:00
defaultSelected = selected;
if (defaultValue.size() < 255)
textBoxContents = ConvertUTF8ToWString(defaultValue);
2012-11-01 15:19:01 +00:00
else
textBoxContents = L"";
2012-11-01 15:19:01 +00:00
2013-08-17 19:20:24 +00:00
if (title != NULL)
windowTitle = title;
2013-08-17 19:20:24 +00:00
else
windowTitle = L"";
2013-08-17 19:20:24 +00:00
if (IDOK == DialogBox(hInst, (LPCWSTR)IDD_INPUTBOX, hParent, InputBoxFunc)) {
outvalue = ConvertWStringToUTF8(out);
2012-11-01 15:19:01 +00:00
return true;
}
else
return false;
}
bool InputBox_GetString(HINSTANCE hInst, HWND hParent, const wchar_t *title, const std::string &defaultValue, std::string &outvalue)
{
const wchar_t *defaultTitle = L"Input value";
2013-08-17 19:20:24 +00:00
defaultSelected = true;
textBoxContents = ConvertUTF8ToWString(defaultValue);
if (title && wcslen(title) <= 0)
windowTitle = defaultTitle;
else if (title && wcslen(title) < 255)
windowTitle = title;
else
windowTitle = defaultTitle;
if (IDOK == DialogBox(hInst, (LPCWSTR)IDD_INPUTBOX, hParent, InputBoxFunc)) {
outvalue = ConvertWStringToUTF8(out);
return true;
}
else
return false;
}
bool InputBox_GetWString(HINSTANCE hInst, HWND hParent, const wchar_t *title, const std::wstring &defaultValue, std::wstring &outvalue)
{
const wchar_t *defaultTitle = L"Input value";
defaultSelected = true;
textBoxContents = defaultValue;
if (title && wcslen(title) <= 0)
windowTitle = defaultTitle;
else if (title && wcslen(title) < 255)
windowTitle = title;
else
windowTitle = defaultTitle;
if (IDOK == DialogBox(hInst, (LPCWSTR)IDD_INPUTBOX, hParent, InputBoxFunc)) {
outvalue = out;
return true;
}
else
return false;
}
bool InputBox_GetHex(HINSTANCE hInst, HWND hParent, const wchar_t *title, u32 defaultvalue, u32 &outvalue)
2012-11-01 15:19:01 +00:00
{
wchar_t temp[256];
wsprintf(temp,L"%08x",defaultvalue);
textBoxContents = temp;
INT_PTR value = DialogBox(hInst, (LPCWSTR)IDD_INPUTBOX, hParent, InputBoxFunc);
2012-11-01 15:19:01 +00:00
if (value == IDOK)
{
if (swscanf(out.c_str(), L"0x%08x", &outvalue) == 1)
return true;
if (swscanf(out.c_str(), L"%08x", &outvalue) == 1)
return true;
return false;
2012-11-01 15:19:01 +00:00
}
else
{
outvalue = 0;
2012-11-01 15:19:01 +00:00
return false;
}
}