mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-06 06:55:09 +00:00
cellMsgDialog code moved
This commit is contained in:
parent
21e254d05f
commit
56ba26ab24
9 changed files with 263 additions and 158 deletions
163
rpcs3/Gui/MsgDialog.cpp
Normal file
163
rpcs3/Gui/MsgDialog.cpp
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
#include "stdafx_gui.h"
|
||||
#include "Emu/Memory/Memory.h"
|
||||
|
||||
#include "Emu/SysCalls/lv2/sys_time.h"
|
||||
#include "Emu/SysCalls/Modules/cellMsgDialog.h"
|
||||
#include "MsgDialog.h"
|
||||
|
||||
wxDialog* m_dialog = nullptr;
|
||||
wxGauge* m_gauge1 = nullptr;
|
||||
wxGauge* m_gauge2 = nullptr;
|
||||
wxStaticText* m_text1 = nullptr;
|
||||
wxStaticText* m_text2 = nullptr;
|
||||
|
||||
void MsgDialogCreate(u32 type, const char* msg, u64& status)
|
||||
{
|
||||
wxWindow* parent = nullptr; // TODO: align it better
|
||||
|
||||
m_gauge1 = nullptr;
|
||||
m_gauge2 = nullptr;
|
||||
m_text1 = nullptr;
|
||||
m_text2 = nullptr;
|
||||
wxButton* m_button_ok = nullptr;
|
||||
wxButton* m_button_yes = nullptr;
|
||||
wxButton* m_button_no = nullptr;
|
||||
|
||||
m_dialog = new wxDialog(parent, wxID_ANY, type & CELL_MSGDIALOG_TYPE_SE_TYPE ? "" : "Error", wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
m_dialog->SetExtraStyle(m_dialog->GetExtraStyle() | wxWS_EX_TRANSIENT);
|
||||
m_dialog->SetTransparent(127 + (type & CELL_MSGDIALOG_TYPE_BG) * (128 / CELL_MSGDIALOG_TYPE_BG_INVISIBLE));
|
||||
|
||||
wxSizer* sizer1 = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
wxStaticText* m_text = new wxStaticText(m_dialog, wxID_ANY, wxString(msg, wxConvUTF8));
|
||||
sizer1->Add(m_text, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxTOP, 16);
|
||||
|
||||
switch (type & CELL_MSGDIALOG_TYPE_PROGRESSBAR)
|
||||
{
|
||||
case CELL_MSGDIALOG_TYPE_PROGRESSBAR_DOUBLE:
|
||||
m_gauge2 = new wxGauge(m_dialog, wxID_ANY, 100, wxDefaultPosition, wxSize(300, -1), wxGA_HORIZONTAL | wxGA_SMOOTH);
|
||||
m_text2 = new wxStaticText(m_dialog, wxID_ANY, "");
|
||||
m_text2->SetAutoLayout(true);
|
||||
|
||||
case CELL_MSGDIALOG_TYPE_PROGRESSBAR_SINGLE:
|
||||
m_gauge1 = new wxGauge(m_dialog, wxID_ANY, 100, wxDefaultPosition, wxSize(300, -1), wxGA_HORIZONTAL | wxGA_SMOOTH);
|
||||
m_text1 = new wxStaticText(m_dialog, wxID_ANY, "");
|
||||
m_text1->SetAutoLayout(true);
|
||||
|
||||
default: // ???
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_gauge1)
|
||||
{
|
||||
sizer1->Add(m_text1, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxTOP, 8);
|
||||
sizer1->Add(m_gauge1, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, 16);
|
||||
m_gauge1->SetValue(0);
|
||||
}
|
||||
if (m_gauge2)
|
||||
{
|
||||
sizer1->Add(m_text2, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxTOP, 8);
|
||||
sizer1->Add(m_gauge2, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, 16);
|
||||
m_gauge2->SetValue(0);
|
||||
}
|
||||
|
||||
wxBoxSizer* buttons = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
switch (type & CELL_MSGDIALOG_TYPE_BUTTON_TYPE)
|
||||
{
|
||||
case CELL_MSGDIALOG_TYPE_BUTTON_TYPE_NONE:
|
||||
break;
|
||||
|
||||
case CELL_MSGDIALOG_TYPE_BUTTON_TYPE_YESNO:
|
||||
m_button_yes = new wxButton(m_dialog, wxID_YES);
|
||||
buttons->Add(m_button_yes, 0, wxALIGN_CENTER_HORIZONTAL | wxRIGHT, 8);
|
||||
m_button_no = new wxButton(m_dialog, wxID_NO);
|
||||
buttons->Add(m_button_no, 0, wxALIGN_CENTER_HORIZONTAL, 16);
|
||||
if ((type & CELL_MSGDIALOG_TYPE_DEFAULT_CURSOR) == CELL_MSGDIALOG_TYPE_DEFAULT_CURSOR_NO)
|
||||
{
|
||||
m_button_no->SetFocus();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_button_yes->SetFocus();
|
||||
}
|
||||
|
||||
sizer1->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxTOP, 16);
|
||||
break;
|
||||
|
||||
case CELL_MSGDIALOG_TYPE_BUTTON_TYPE_OK:
|
||||
m_button_ok = new wxButton(m_dialog, wxID_OK);
|
||||
buttons->Add(m_button_ok, 0, wxALIGN_CENTER_HORIZONTAL, 16);
|
||||
if ((type & CELL_MSGDIALOG_TYPE_DEFAULT_CURSOR) == CELL_MSGDIALOG_TYPE_DEFAULT_CURSOR_OK)
|
||||
{
|
||||
m_button_ok->SetFocus();
|
||||
}
|
||||
|
||||
sizer1->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxTOP, 16);
|
||||
break;
|
||||
}
|
||||
|
||||
sizer1->AddSpacer(16);
|
||||
|
||||
m_dialog->SetSizerAndFit(sizer1);
|
||||
m_dialog->Centre(wxBOTH);
|
||||
m_dialog->Show();
|
||||
m_dialog->Enable();
|
||||
|
||||
m_dialog->Bind(wxEVT_BUTTON, [&](wxCommandEvent& event)
|
||||
{
|
||||
status = (event.GetId() == wxID_NO) ? CELL_MSGDIALOG_BUTTON_NO : CELL_MSGDIALOG_BUTTON_YES /* OK */;
|
||||
m_dialog->Hide();
|
||||
MsgDialogClose();
|
||||
});
|
||||
|
||||
|
||||
m_dialog->Bind(wxEVT_CLOSE_WINDOW, [&](wxCloseEvent& event)
|
||||
{
|
||||
if (type & CELL_MSGDIALOG_TYPE_DISABLE_CANCEL)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
status = CELL_MSGDIALOG_BUTTON_ESCAPE;
|
||||
m_dialog->Hide();
|
||||
MsgDialogClose();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void MsgDialogDestroy()
|
||||
{
|
||||
delete m_dialog;
|
||||
m_dialog = nullptr;
|
||||
}
|
||||
|
||||
void MsgDialogProgressBarSetMsg(u32 index, const char* msg)
|
||||
{
|
||||
if (m_dialog)
|
||||
{
|
||||
if (index == 0 && m_text1) m_text1->SetLabelText(wxString(msg, wxConvUTF8));
|
||||
if (index == 1 && m_text2) m_text2->SetLabelText(wxString(msg, wxConvUTF8));
|
||||
m_dialog->Layout();
|
||||
m_dialog->Fit();
|
||||
}
|
||||
}
|
||||
|
||||
void MsgDialogProgressBarReset(u32 index)
|
||||
{
|
||||
if (m_dialog)
|
||||
{
|
||||
if (index == 0 && m_gauge1) m_gauge1->SetValue(0);
|
||||
if (index == 1 && m_gauge2) m_gauge2->SetValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
void MsgDialogProgressBarInc(u32 index, u32 delta)
|
||||
{
|
||||
if (m_dialog)
|
||||
{
|
||||
if (index == 0 && m_gauge1) m_gauge1->SetValue(m_gauge1->GetValue() + delta);
|
||||
if (index == 1 && m_gauge2) m_gauge2->SetValue(m_gauge2->GetValue() + delta);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue