rpcsx/rpcs3/Gui/OskDialog.cpp

57 lines
1.7 KiB
C++
Raw Normal View History

#include "stdafx.h"
#include "stdafx_gui.h"
#include "rpcs3.h"
#include "Emu/System.h"
#include "Emu/Memory/Memory.h"
#include "wx/ustring.h"
#include "Emu/Cell/lv2/sys_time.h"
#include "MsgDialog.h"
void MsgDialogFrame::CreateOsk(const std::string& msg, char16_t* osk_text)
{
if (m_dialog) m_dialog->Destroy();
osk_button_ok = nullptr;
osk_text_input = nullptr;
osk_text_return = osk_text;
m_dialog = new wxDialog(nullptr, wxID_ANY, msg, wxDefaultPosition, wxDefaultSize);
wxSizer* osk_dialog_sizer = new wxBoxSizer(wxVERTICAL);
wxSizer* osk_text_sizer = new wxBoxSizer(wxHORIZONTAL);
wxSizer* osk_button_sizer = new wxBoxSizer(wxHORIZONTAL);
osk_text_input = new wxTextCtrl(m_dialog, wxID_OK, wxEmptyString, wxDefaultPosition, wxSize(200, -1));
osk_text_sizer->Add(osk_text_input, 0, wxALL, 4);
if (type.default_cursor == 0)
{
osk_text_input->SetFocus();
}
2017-03-16 10:34:47 +01:00
osk_text_input->Bind(wxEVT_TEXT, [&](wxCommandEvent& event)
{
wxUString wx_osk_string = osk_text_input->GetValue();
std::memcpy(osk_text_return, wx_osk_string.utf16_str(), wx_osk_string.size() * 2);
on_osk_input_entered();
});
osk_button_ok = new wxButton(m_dialog, wxID_OK);
osk_button_sizer->Add(osk_button_ok, 0, wxLEFT | wxRIGHT | wxBOTTOM, 4);
osk_dialog_sizer->Add(osk_text_sizer, 0, wxCENTER);
osk_dialog_sizer->Add(osk_button_sizer, 0, wxCENTER);
m_dialog->SetSizerAndFit(osk_dialog_sizer);
m_dialog->Centre(wxBOTH);
m_dialog->Show();
m_dialog->Enable();
m_dialog->Bind(wxEVT_BUTTON, [&](wxCommandEvent& event)
{
on_close(CELL_MSGDIALOG_BUTTON_OK);
});
m_dialog->Bind(wxEVT_CLOSE_WINDOW, [on_close = on_close](wxCloseEvent& event)
{
on_close(CELL_MSGDIALOG_BUTTON_ESCAPE);
});
}