namespace-ified ActionReplay, and made ISOProperties use the existing AR code. bonus: encrypted arcodes are saved as unencrypted codes just by closing the isoproperties dialog. also added ARCodeAddEdit, but once again, it only views entries atm. some misc wxw cleanup
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1560 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
1e774a5db2
commit
4a5d9ded94
|
@ -602,10 +602,6 @@
|
|||
RelativePath=".\Src\Plugin.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\PortableSockets.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\SConscript"
|
||||
>
|
||||
|
|
|
@ -22,6 +22,9 @@
|
|||
#include "ARDecrypt.h"
|
||||
#include <algorithm>
|
||||
|
||||
namespace ActionReplay
|
||||
{
|
||||
|
||||
int total;
|
||||
|
||||
// Alphanumeric filter for text<->bin conversion
|
||||
|
@ -509,3 +512,4 @@ void DecryptARCode(std::vector<std::string> vCodes, std::vector<AREntry> &ops)
|
|||
}
|
||||
}
|
||||
}
|
||||
} //namespace ActionReplay
|
||||
|
|
|
@ -28,9 +28,13 @@
|
|||
#include "Common.h"
|
||||
#include "ActionReplay.h"
|
||||
|
||||
namespace ActionReplay
|
||||
{
|
||||
|
||||
extern int total;
|
||||
extern const char *filter;
|
||||
|
||||
void DecryptARCode(std::vector<std::string> vCodes, std::vector<AREntry> &ops);
|
||||
} //namespace
|
||||
|
||||
#endif //_ARDECRYPT_H_
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
// It probably is Turing complete - but what does that matter when AR codes can write
|
||||
// actual PowerPC code...
|
||||
|
||||
// THIS FILE IS GROSS!!!
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
@ -35,8 +37,9 @@
|
|||
#include "ARDecrypt.h"
|
||||
#include "LogManager.h"
|
||||
|
||||
namespace
|
||||
namespace ActionReplay
|
||||
{
|
||||
|
||||
static std::vector<AREntry>::const_iterator iter;
|
||||
static ARCode code;
|
||||
static bool b_RanOnce = false;
|
||||
|
@ -44,7 +47,7 @@ namespace
|
|||
static std::vector<ARCode> activeCodes;
|
||||
static bool logSelf = false;
|
||||
static std::vector<std::string> arLog;
|
||||
} // namespace
|
||||
|
||||
|
||||
void LogInfo(const char *format, ...);
|
||||
// --- Codes ---
|
||||
|
@ -66,11 +69,11 @@ bool NormalCode_Type_5(u8 subtype, u32 addr, u32 data, int *count, bool *skip);
|
|||
bool NormalCode_Type_6(u8 subtype, u32 addr, u32 data, int *count, bool *skip);
|
||||
bool NormalCode_Type_7(u8 subtype, u32 addr, u32 data, int *count, bool *skip);
|
||||
|
||||
void LoadActionReplayCodes(IniFile &ini)
|
||||
void LoadCodes(IniFile &ini, bool forceLoad)
|
||||
{
|
||||
// Parses the Action Replay section of a game ini file.
|
||||
if (!Core::GetStartupParameter().bEnableCheats)
|
||||
return; // If cheats are off, do not load them
|
||||
if (!Core::GetStartupParameter().bEnableCheats && !forceLoad)
|
||||
return;
|
||||
|
||||
std::vector<std::string> lines;
|
||||
std::vector<std::string> encryptedLines;
|
||||
|
@ -158,7 +161,13 @@ void LoadActionReplayCodes(IniFile &ini)
|
|||
arCodes.push_back(currentCode);
|
||||
}
|
||||
|
||||
ActionReplay_UpdateActiveList();
|
||||
UpdateActiveList();
|
||||
}
|
||||
|
||||
void LoadCodes(std::vector<ARCode> &_arCodes, IniFile &ini)
|
||||
{
|
||||
LoadCodes(ini, true);
|
||||
_arCodes = arCodes;
|
||||
}
|
||||
|
||||
void LogInfo(const char *format, ...)
|
||||
|
@ -184,14 +193,14 @@ void LogInfo(const char *format, ...)
|
|||
}
|
||||
}
|
||||
|
||||
void ActionReplayRunAllActive()
|
||||
void RunAllActive()
|
||||
{
|
||||
if (Core::GetStartupParameter().bEnableCheats) {
|
||||
for (std::vector<ARCode>::iterator iter = activeCodes.begin(); iter != activeCodes.end(); ++iter)
|
||||
{
|
||||
if (iter->active)
|
||||
{
|
||||
if (!RunActionReplayCode(*iter))
|
||||
if (!RunCode(*iter))
|
||||
iter->active = false;
|
||||
LogInfo("\n");
|
||||
}
|
||||
|
@ -201,7 +210,7 @@ void ActionReplayRunAllActive()
|
|||
}
|
||||
}
|
||||
|
||||
bool RunActionReplayCode(const ARCode &arcode) {
|
||||
bool RunCode(const ARCode &arcode) {
|
||||
// The mechanism is different than what the real AR uses, so there may be compatibility problems.
|
||||
u8 cmd;
|
||||
u32 addr;
|
||||
|
@ -999,33 +1008,33 @@ bool NormalCode_Type_7(u8 subtype, u32 addr, u32 data, int *count, bool *skip)
|
|||
return true;
|
||||
}
|
||||
|
||||
size_t ActionReplay_GetCodeListSize()
|
||||
size_t GetCodeListSize()
|
||||
{
|
||||
return arCodes.size();
|
||||
}
|
||||
|
||||
ARCode ActionReplay_GetARCode(size_t index)
|
||||
ARCode GetARCode(size_t index)
|
||||
{
|
||||
if (index > arCodes.size())
|
||||
{
|
||||
PanicAlert("ActionReplay_GetARCode: Index is greater than ar code list size %i", index);
|
||||
PanicAlert("GetARCode: Index is greater than ar code list size %i", index);
|
||||
return ARCode();
|
||||
}
|
||||
return arCodes[index];
|
||||
}
|
||||
|
||||
void ActionReplay_SetARCode_IsActive(bool active, size_t index)
|
||||
void SetARCode_IsActive(bool active, size_t index)
|
||||
{
|
||||
if (index > arCodes.size())
|
||||
{
|
||||
PanicAlert("ActionReplay_SetARCode_IsActive: Index is greater than ar code list size %i", index);
|
||||
PanicAlert("SetARCode_IsActive: Index is greater than ar code list size %i", index);
|
||||
return;
|
||||
}
|
||||
arCodes[index].active = active;
|
||||
ActionReplay_UpdateActiveList();
|
||||
UpdateActiveList();
|
||||
}
|
||||
|
||||
void ActionReplay_UpdateActiveList()
|
||||
void UpdateActiveList()
|
||||
{
|
||||
b_RanOnce = false;
|
||||
activeCodes.clear();
|
||||
|
@ -1036,17 +1045,19 @@ void ActionReplay_UpdateActiveList()
|
|||
}
|
||||
}
|
||||
|
||||
void ActionReplay_EnableSelfLogging(bool enable)
|
||||
void EnableSelfLogging(bool enable)
|
||||
{
|
||||
logSelf = enable;
|
||||
}
|
||||
|
||||
const std::vector<std::string> &ActionReplay_GetSelfLog()
|
||||
const std::vector<std::string> &GetSelfLog()
|
||||
{
|
||||
return arLog;
|
||||
}
|
||||
|
||||
bool ActionReplay_IsSelfLogging()
|
||||
bool IsSelfLogging()
|
||||
{
|
||||
return logSelf;
|
||||
}
|
||||
|
||||
} // namespace ActionReplay
|
||||
|
|
|
@ -20,6 +20,9 @@
|
|||
|
||||
#include "IniFile.h"
|
||||
|
||||
namespace ActionReplay
|
||||
{
|
||||
|
||||
struct AREntry {
|
||||
u32 cmd_addr;
|
||||
u32 value;
|
||||
|
@ -31,15 +34,17 @@ struct ARCode {
|
|||
bool active;
|
||||
};
|
||||
|
||||
void ActionReplayRunAllActive();
|
||||
bool RunActionReplayCode(const ARCode &arcode);
|
||||
void LoadActionReplayCodes(IniFile &ini);
|
||||
size_t ActionReplay_GetCodeListSize();
|
||||
ARCode ActionReplay_GetARCode(size_t index);
|
||||
void ActionReplay_SetARCode_IsActive(bool active, size_t index);
|
||||
void ActionReplay_UpdateActiveList();
|
||||
void ActionReplay_EnableSelfLogging(bool enable);
|
||||
const std::vector<std::string> &ActionReplay_GetSelfLog();
|
||||
bool ActionReplay_IsSelfLogging();
|
||||
void RunAllActive();
|
||||
bool RunCode(const ARCode &arcode);
|
||||
void LoadCodes(IniFile &ini, bool forceLoad);
|
||||
void LoadCodes(std::vector<ARCode> &_arCodes, IniFile &ini);
|
||||
size_t GetCodeListSize();
|
||||
ARCode GetARCode(size_t index);
|
||||
void SetARCode_IsActive(bool active, size_t index);
|
||||
void UpdateActiveList();
|
||||
void EnableSelfLogging(bool enable);
|
||||
const std::vector<std::string> &GetSelfLog();
|
||||
bool IsSelfLogging();
|
||||
} // namespace
|
||||
|
||||
#endif //_ACTIONREPLAY_H_
|
||||
|
|
|
@ -136,7 +136,7 @@ void LoadPatches(const char *gameID)
|
|||
std::string filename = std::string(FULL_GAMECONFIG_DIR) + gameID + ".ini";
|
||||
if (ini.Load(filename.c_str())) {
|
||||
LoadPatchSection("OnFrame", onFrame, ini);
|
||||
LoadActionReplayCodes(ini);
|
||||
ActionReplay::LoadCodes(ini, false);
|
||||
LoadSpeedhacks("Speedhacks", speedHacks, ini);
|
||||
}
|
||||
}
|
||||
|
@ -178,6 +178,6 @@ void ApplyFramePatches()
|
|||
|
||||
void ApplyARPatches()
|
||||
{
|
||||
ActionReplayRunAllActive();
|
||||
ActionReplay::RunAllActive();
|
||||
}
|
||||
} // namespace
|
||||
|
|
|
@ -768,6 +768,14 @@
|
|||
RelativePath=".\Src\AboutDolphin.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\ARCodeAddEdit.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\ARCodeAddEdit.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\CheatsWindow.cpp"
|
||||
>
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "ARCodeAddEdit.h"
|
||||
|
||||
extern std::vector<ActionReplay::ARCode> arCodes;
|
||||
|
||||
BEGIN_EVENT_TABLE(CARCodeAddEdit, wxDialog)
|
||||
EVT_CLOSE(CARCodeAddEdit::OnClose)
|
||||
EVT_SPIN(ID_ENTRY_SELECT, CARCodeAddEdit::ChangeEntry)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
CARCodeAddEdit::CARCodeAddEdit(int _selection, wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& position, const wxSize& size, long style)
|
||||
: wxDialog(parent, id, title, position, size, style)
|
||||
{
|
||||
selection = _selection;
|
||||
CreateGUIControls(selection);
|
||||
}
|
||||
|
||||
CARCodeAddEdit::~CARCodeAddEdit()
|
||||
{
|
||||
}
|
||||
|
||||
void CARCodeAddEdit::CreateGUIControls(int _selection)
|
||||
{
|
||||
ActionReplay::ARCode currentCode = arCodes.at(_selection);
|
||||
|
||||
wxBoxSizer* sEditCheat = new wxBoxSizer(wxVERTICAL);
|
||||
wxStaticBoxSizer* sbEntry = new wxStaticBoxSizer(wxVERTICAL, this, _("Code"));
|
||||
wxStaticText* EditCheatNameText = new wxStaticText(this, ID_EDITCHEAT_NAME_TEXT, _("Name:"), wxDefaultPosition, wxDefaultSize);
|
||||
EditCheatName = new wxTextCtrl(this, ID_EDITCHEAT_NAME, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
|
||||
EditCheatName->SetValue(wxString::FromAscii(currentCode.name.c_str()));
|
||||
EntrySelection = new wxSpinButton(this, ID_ENTRY_SELECT, wxDefaultPosition, wxDefaultSize, wxVERTICAL);
|
||||
EntrySelection->SetRange(0, (int)arCodes.size()-1);
|
||||
EntrySelection->SetValue(_selection);
|
||||
EditCheatCode = new wxTextCtrl(this, ID_EDITCHEAT_CODE, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
|
||||
UpdateTextCtrl(currentCode);
|
||||
wxGridBagSizer* sgEntry = new wxGridBagSizer(0, 0);
|
||||
sgEntry->AddGrowableCol(1);
|
||||
sgEntry->AddGrowableRow(1);
|
||||
sgEntry->Add(EditCheatNameText, wxGBPosition(0, 0), wxGBSpan(1, 1), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5);
|
||||
sgEntry->Add(EditCheatName, wxGBPosition(0, 1), wxGBSpan(1, 1), wxEXPAND|wxALL, 5);
|
||||
sgEntry->Add(EntrySelection, wxGBPosition(0, 2), wxGBSpan(2, 1), wxEXPAND|wxALL, 5);
|
||||
sgEntry->Add(EditCheatCode, wxGBPosition(1, 0), wxGBSpan(1, 2), wxEXPAND|wxALL, 5);
|
||||
sbEntry->Add(sgEntry, 1, wxEXPAND);
|
||||
sEditCheat->Add(sbEntry, 1, wxEXPAND|wxALL, 5);
|
||||
wxBoxSizer* sEditCheatButtons = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxButton* bOK = new wxButton(this, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||
wxButton* bCancel = new wxButton(this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||
sEditCheatButtons->Add(0, 0, 1, wxEXPAND, 5);
|
||||
sEditCheatButtons->Add(bOK, 0, wxALL, 5);
|
||||
sEditCheatButtons->Add(bCancel, 0, wxALL, 5);
|
||||
sEditCheat->Add(sEditCheatButtons, 0, wxEXPAND, 5);
|
||||
this->SetSizer(sEditCheat);
|
||||
sEditCheat->Layout();
|
||||
}
|
||||
|
||||
void CARCodeAddEdit::OnClose(wxCloseEvent& WXUNUSED (event))
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
void CARCodeAddEdit::ChangeEntry(wxSpinEvent& event)
|
||||
{
|
||||
ActionReplay::ARCode currentCode = arCodes.at(event.GetPosition());
|
||||
EditCheatName->SetValue(wxString::FromAscii(currentCode.name.c_str()));
|
||||
UpdateTextCtrl(currentCode);
|
||||
}
|
||||
|
||||
void CARCodeAddEdit::UpdateTextCtrl(ActionReplay::ARCode arCode)
|
||||
{
|
||||
EditCheatCode->Clear();
|
||||
|
||||
for (int i = 0; i < arCode.ops.size(); i++)
|
||||
EditCheatCode->AppendText(wxString::Format("%08X %08X\n", arCode.ops.at(i).cmd_addr, arCode.ops.at(i).value));
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef __ARCODE_ADDEDIT_h__
|
||||
#define __ARCODE_ADDEDIT_h__
|
||||
|
||||
#include <wx/wx.h>
|
||||
#include <wx/spinctrl.h>
|
||||
#include "ISOProperties.h"
|
||||
|
||||
class CARCodeAddEdit : public wxDialog
|
||||
{
|
||||
public:
|
||||
CARCodeAddEdit(int _selection, wxWindow* parent,
|
||||
wxWindowID id = 1,
|
||||
const wxString& title = wxT("Edit ActionReplay Code"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~CARCodeAddEdit();
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE();
|
||||
|
||||
wxTextCtrl *EditCheatName;
|
||||
wxSpinButton *EntrySelection;
|
||||
wxTextCtrl *EditCheatCode;
|
||||
|
||||
enum {
|
||||
ID_EDITCHEAT_NAME_TEXT = 4550,
|
||||
ID_EDITCHEAT_NAME,
|
||||
ID_ENTRY_SELECT,
|
||||
ID_EDITCHEAT_CODE
|
||||
};
|
||||
|
||||
void CreateGUIControls(int selection);
|
||||
void OnClose(wxCloseEvent& event);
|
||||
void ChangeEntry(wxSpinEvent& event);
|
||||
void UpdateTextCtrl(ActionReplay::ARCode arCode);
|
||||
|
||||
int selection;
|
||||
|
||||
};
|
||||
#endif // __PATCH_ADDEDIT_h__
|
|
@ -25,13 +25,15 @@
|
|||
#include <wx/mstream.h>
|
||||
#include <wx/statbmp.h>
|
||||
|
||||
#undef ABOUTDOLPHIN_STYLE
|
||||
#define ABOUTDOLPHIN_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
class AboutDolphin : public wxDialog
|
||||
{
|
||||
public:
|
||||
AboutDolphin(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About Dolphin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ABOUTDOLPHIN_STYLE);
|
||||
AboutDolphin(wxWindow *parent,
|
||||
wxWindowID id = 1,
|
||||
const wxString &title = wxT("About Dolphin"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~AboutDolphin();
|
||||
void CloseClick(wxCommandEvent& event);
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#include "ActionReplay.h"
|
||||
#include "Core.h"
|
||||
|
||||
using namespace ActionReplay;
|
||||
|
||||
BEGIN_EVENT_TABLE(wxCheatsWindow, wxWindow)
|
||||
EVT_SIZE( wxCheatsWindow::OnEvent_Window_Resize)
|
||||
EVT_CLOSE( wxCheatsWindow::OnEvent_Window_Close)
|
||||
|
@ -31,7 +33,8 @@ BEGIN_EVENT_TABLE(wxCheatsWindow, wxWindow)
|
|||
EVT_CHECKBOX(ID_CHECKBOX_LOGAR, wxCheatsWindow::OnEvent_CheckBoxEnableLogging_StateChange)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxCheatsWindow::wxCheatsWindow(wxFrame* parent, const wxPoint& pos, const wxSize& size) : wxFrame(parent, wxID_ANY, _T("Action Replay"), pos, size, wxCHEATSWINDOW_STYLE)
|
||||
wxCheatsWindow::wxCheatsWindow(wxFrame* parent, const wxPoint& pos, const wxSize& size) :
|
||||
wxFrame(parent, wxID_ANY, _T("Action Replay"), pos, size, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE)
|
||||
{
|
||||
// Create the GUI controls
|
||||
Init_ChildControls();
|
||||
|
@ -93,7 +96,7 @@ void wxCheatsWindow::Init_ChildControls()
|
|||
|
||||
m_Button_UpdateLog = new wxButton(m_Tab_Log, ID_BUTTON_UPDATELOG, wxT("Update"));
|
||||
m_CheckBox_LogAR = new wxCheckBox(m_Tab_Log, ID_CHECKBOX_LOGAR, wxT("Enable AR Logging"));
|
||||
m_CheckBox_LogAR->SetValue(ActionReplay_IsSelfLogging());
|
||||
m_CheckBox_LogAR->SetValue(IsSelfLogging());
|
||||
m_TextCtrl_Log = new wxTextCtrl(m_Tab_Log, ID_TEXTCTRL_LOG, wxT(""), wxDefaultPosition, wxSize(100, 600), wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP);
|
||||
|
||||
wxBoxSizer *HStrip1 = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
@ -139,10 +142,10 @@ void wxCheatsWindow::OnEvent_Window_Close(wxCloseEvent& WXUNUSED (event))
|
|||
void wxCheatsWindow::Load_ARCodes()
|
||||
{
|
||||
indexList.clear();
|
||||
size_t size = ActionReplay_GetCodeListSize();
|
||||
size_t size = GetCodeListSize();
|
||||
for (size_t i = 0; i < size; i++)
|
||||
{
|
||||
ARCode code = ActionReplay_GetARCode(i);
|
||||
ARCode code = GetARCode(i);
|
||||
ARCodeIndex ind;
|
||||
u32 index = m_CheckListBox_CheatsList->Append(wxString::FromAscii(code.name.c_str()));
|
||||
m_CheckListBox_CheatsList->Check(index, code.active);
|
||||
|
@ -158,7 +161,7 @@ void wxCheatsWindow::OnEvent_CheatsList_ItemSelected(wxCommandEvent& WXUNUSED (e
|
|||
{
|
||||
if ((int)indexList[i].uiIndex == index)
|
||||
{
|
||||
ARCode code = ActionReplay_GetARCode(i);
|
||||
ARCode code = GetARCode(i);
|
||||
m_Label_Codename->SetLabel(wxT("Name: ") + wxString::FromAscii(code.name.c_str()));
|
||||
char text[CHAR_MAX];
|
||||
char* numcodes = text;
|
||||
|
@ -183,7 +186,7 @@ void wxCheatsWindow::OnEvent_CheatsList_ItemToggled(wxCommandEvent& WXUNUSED (ev
|
|||
{
|
||||
if ((int)indexList[i].uiIndex == index)
|
||||
{
|
||||
ActionReplay_SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(index), indexList[i].index);
|
||||
SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(index), indexList[i].index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -191,14 +194,14 @@ void wxCheatsWindow::OnEvent_ButtonUpdateCodes_Press(wxCommandEvent& WXUNUSED (e
|
|||
{
|
||||
for (size_t i = 0; i < indexList.size(); i++)
|
||||
{
|
||||
ActionReplay_SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(indexList[i].uiIndex), indexList[i].index);
|
||||
SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(indexList[i].uiIndex), indexList[i].index);
|
||||
}
|
||||
}
|
||||
|
||||
void wxCheatsWindow::OnEvent_ButtonUpdateLog_Press(wxCommandEvent& WXUNUSED (event))
|
||||
{
|
||||
m_TextCtrl_Log->Clear();
|
||||
const std::vector<std::string> &arLog = ActionReplay_GetSelfLog();
|
||||
const std::vector<std::string> &arLog = GetSelfLog();
|
||||
for (u32 i = 0; i < arLog.size(); i++)
|
||||
{
|
||||
m_TextCtrl_Log->AppendText(wxString::FromAscii(arLog[i].c_str()));
|
||||
|
@ -207,5 +210,5 @@ void wxCheatsWindow::OnEvent_ButtonUpdateLog_Press(wxCommandEvent& WXUNUSED (eve
|
|||
|
||||
void wxCheatsWindow::OnEvent_CheckBoxEnableLogging_StateChange(wxCommandEvent& WXUNUSED (event))
|
||||
{
|
||||
ActionReplay_EnableSelfLogging(m_CheckBox_LogAR->IsChecked());
|
||||
EnableSelfLogging(m_CheckBox_LogAR->IsChecked());
|
||||
}
|
||||
|
|
|
@ -36,9 +36,6 @@
|
|||
#include "Filesystem.h"
|
||||
#include "IniFile.h"
|
||||
|
||||
#undef wxCHEATSWINDOW_STYLE
|
||||
#define wxCHEATSWINDOW_STYLE wxCAPTION | wxSYSTEM_MENU | wxCLOSE_BOX | wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE
|
||||
|
||||
class wxCheatsWindow : public wxFrame
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -22,18 +22,19 @@
|
|||
#include <wx/gbsizer.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/filepicker.h>
|
||||
//#include <wx/listbox.h>
|
||||
#include "Config.h"
|
||||
|
||||
#undef CONFIG_MAIN_STYLE
|
||||
#define CONFIG_MAIN_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
class CConfigMain
|
||||
: public wxDialog
|
||||
{
|
||||
public:
|
||||
|
||||
CConfigMain(wxWindow* parent, wxWindowID id = 1, const wxString& title = wxT("Dolphin Configuration"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = CONFIG_MAIN_STYLE);
|
||||
CConfigMain(wxWindow* parent,
|
||||
wxWindowID id = 1,
|
||||
const wxString& title = wxT("Dolphin Configuration"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~CConfigMain();
|
||||
void CloseClick(wxCommandEvent& event);
|
||||
void OnSelectionChanged(wxCommandEvent& event);
|
||||
|
|
|
@ -22,20 +22,14 @@
|
|||
#include "Filesystem.h"
|
||||
#include "ISOProperties.h"
|
||||
#include "PatchAddEdit.h"
|
||||
#include "ARCodeAddEdit.h"
|
||||
|
||||
|
||||
DiscIO::IVolume *OpenISO = NULL;
|
||||
DiscIO::IFileSystem *pFileSystem = NULL;
|
||||
|
||||
std::vector<PatchEngine::Patch> onFrame;
|
||||
|
||||
struct ARListCode {
|
||||
std::string name;
|
||||
bool enabled;
|
||||
std::vector<std::string> ops;
|
||||
u32 uiIndex;
|
||||
};
|
||||
std::vector<ARListCode> ARCodes;
|
||||
std::vector<ActionReplay::ARCode> arCodes;
|
||||
|
||||
|
||||
BEGIN_EVENT_TABLE(CISOProperties, wxDialog)
|
||||
|
@ -698,86 +692,58 @@ void CISOProperties::PatchButtonClicked(wxCommandEvent& event)
|
|||
|
||||
void CISOProperties::ActionReplayList_Load()
|
||||
{
|
||||
ARCodes.clear();
|
||||
arCodes.clear();
|
||||
Cheats->Clear();
|
||||
std::vector<std::string> lines;
|
||||
ActionReplay::LoadCodes(arCodes, GameIni);
|
||||
|
||||
if (!GameIni.GetLines("ActionReplay", lines))
|
||||
return;
|
||||
|
||||
ARListCode code;
|
||||
|
||||
for (std::vector<std::string>::const_iterator it = lines.begin(); it != lines.end(); ++it)
|
||||
u32 index = 0;
|
||||
for (std::vector<ActionReplay::ARCode>::const_iterator it = arCodes.begin(); it != arCodes.end(); ++it)
|
||||
{
|
||||
std::string line = *it;
|
||||
|
||||
if (line[0] == '+' || line[0] == '$')
|
||||
{
|
||||
// Take care of the previous code
|
||||
if (code.ops.size())
|
||||
{
|
||||
code.uiIndex = Cheats->Append(wxString::FromAscii(code.name.c_str()));
|
||||
ARCodes.push_back(code);
|
||||
Cheats->Check(code.uiIndex, code.enabled);
|
||||
code.ops.clear();
|
||||
}
|
||||
|
||||
// Give name and enabled to current code
|
||||
if(line.size() > 1)
|
||||
{
|
||||
if (line[0] == '+')
|
||||
{
|
||||
code.enabled = true;
|
||||
code.name = line.substr(2, line.size() - 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
code.enabled = false;
|
||||
code.name = line.substr(1, line.size() - 1);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
code.ops.push_back(line);
|
||||
}
|
||||
|
||||
if (code.ops.size())
|
||||
{
|
||||
code.uiIndex = Cheats->Append(wxString::FromAscii(code.name.c_str()));
|
||||
ARCodes.push_back(code);
|
||||
Cheats->Check(code.uiIndex, code.enabled);
|
||||
ActionReplay::ARCode arCode = *it;
|
||||
Cheats->Append(wxString::FromAscii(arCode.name.c_str()));
|
||||
Cheats->Check(index, arCode.active);
|
||||
++index;
|
||||
}
|
||||
}
|
||||
|
||||
void CISOProperties::ActionReplayList_Save()
|
||||
{
|
||||
std::vector<std::string> lines;
|
||||
for (std::vector<ARListCode>::const_iterator iter = ARCodes.begin(); iter != ARCodes.end(); ++iter)
|
||||
u32 index = 0;
|
||||
for (std::vector<ActionReplay::ARCode>::const_iterator iter = arCodes.begin(); iter != arCodes.end(); ++iter)
|
||||
{
|
||||
ARListCode code = *iter;
|
||||
ActionReplay::ARCode code = *iter;
|
||||
|
||||
lines.push_back(Cheats->IsChecked(code.uiIndex) ? "+$" + code.name : "$" + code.name);
|
||||
lines.push_back(Cheats->IsChecked(index) ? "+$" + code.name : "$" + code.name);
|
||||
|
||||
for (std::vector<std::string>::const_iterator iter2 = code.ops.begin(); iter2 != code.ops.end(); ++iter2)
|
||||
for (std::vector<ActionReplay::AREntry>::const_iterator iter2 = code.ops.begin(); iter2 != code.ops.end(); ++iter2)
|
||||
{
|
||||
lines.push_back(*iter2);
|
||||
lines.push_back(wxString::Format("%08X %08X", iter2->cmd_addr, iter2->value).mb_str());
|
||||
}
|
||||
++index;
|
||||
}
|
||||
GameIni.SetLines("ActionReplay", lines);
|
||||
}
|
||||
|
||||
void CISOProperties::ActionReplayButtonClicked(wxCommandEvent& event)
|
||||
{
|
||||
int selection = Cheats->GetSelection();
|
||||
|
||||
switch (event.GetId())
|
||||
{
|
||||
case ID_EDITCHEAT:
|
||||
// dialog
|
||||
{
|
||||
CARCodeAddEdit dlg(selection, this);
|
||||
dlg.ShowModal();
|
||||
}
|
||||
break;
|
||||
case ID_ADDCHEAT:
|
||||
{
|
||||
// dialog
|
||||
}
|
||||
break;
|
||||
case ID_REMOVECHEAT:
|
||||
ARCodes.erase(ARCodes.begin() + Cheats->GetSelection());
|
||||
arCodes.erase(arCodes.begin() + Cheats->GetSelection());
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,15 +32,19 @@
|
|||
#include "Filesystem.h"
|
||||
#include "IniFile.h"
|
||||
#include "PatchEngine.h"
|
||||
|
||||
#undef ISOPROPERTIES_STYLE
|
||||
#define ISOPROPERTIES_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
#include "ActionReplay.h"
|
||||
|
||||
class CISOProperties : public wxDialog
|
||||
{
|
||||
public:
|
||||
|
||||
CISOProperties(const std::string fileName, wxWindow* parent, wxWindowID id = 1, const wxString& title = wxT("Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ISOPROPERTIES_STYLE);
|
||||
CISOProperties(const std::string fileName,
|
||||
wxWindow* parent,
|
||||
wxWindowID id = 1,
|
||||
const wxString& title = wxT("Properties"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~CISOProperties();
|
||||
|
||||
bool bRefreshList;
|
||||
|
|
|
@ -25,7 +25,12 @@
|
|||
class CPatchAddEdit : public wxDialog
|
||||
{
|
||||
public:
|
||||
CPatchAddEdit(int _selection, wxWindow* parent, wxWindowID id = 1, const wxString& title = wxT("Edit Patch"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(300, -1), long style = wxDEFAULT_DIALOG_STYLE);
|
||||
CPatchAddEdit(int _selection, wxWindow* parent,
|
||||
wxWindowID id = 1,
|
||||
const wxString& title = wxT("Edit Patch"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxSize(300, -1),
|
||||
long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~CPatchAddEdit();
|
||||
|
||||
private:
|
||||
|
|
|
@ -18,6 +18,7 @@ libs = [
|
|||
if wxenv['HAVE_WX']:
|
||||
files += [
|
||||
'AboutDolphin.cpp',
|
||||
'ARCodeAddEdit.cpp',
|
||||
'ConfigMain.cpp',
|
||||
'Frame.cpp',
|
||||
'GameListCtrl.cpp',
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#define PAD_ERR_TRANSFER -3
|
||||
|
||||
#define PAD_USE_ORIGIN 0x0080
|
||||
|
||||
#define PAD_BUTTON_LEFT 0x0001
|
||||
#define PAD_BUTTON_RIGHT 0x0002
|
||||
#define PAD_BUTTON_DOWN 0x0004
|
||||
|
@ -38,7 +39,7 @@ typedef struct
|
|||
|
||||
typedef struct
|
||||
{
|
||||
unsigned short button; // Or-ed PAD_BUTTON_* bits
|
||||
unsigned short button; // Or-ed PAD_BUTTON_* and PAD_TRIGGER_* bits
|
||||
unsigned char stickX; // 0 <= stickX <= 255
|
||||
unsigned char stickY; // 0 <= stickY <= 255
|
||||
unsigned char substickX; // 0 <= substickX <= 255
|
||||
|
@ -47,7 +48,7 @@ typedef struct
|
|||
unsigned char triggerRight; // 0 <= triggerRight <= 255
|
||||
unsigned char analogA; // 0 <= analogA <= 255
|
||||
unsigned char analogB; // 0 <= analogB <= 255
|
||||
bool MicButton;
|
||||
bool MicButton; // HAX
|
||||
signed char err; // one of PAD_ERR_* number
|
||||
} SPADStatus;
|
||||
|
||||
|
@ -59,7 +60,7 @@ typedef struct
|
|||
// Function: GetDllInfo
|
||||
// Purpose: This function allows the emulator to gather information
|
||||
// about the DLL by filling in the PluginInfo structure.
|
||||
// input: a pointer to a PLUGIN_INFO structure that needs to be
|
||||
// input: A pointer to a PLUGIN_INFO structure that needs to be
|
||||
// filled by the function. (see def above)
|
||||
// output: none
|
||||
//
|
||||
|
@ -69,7 +70,7 @@ EXPORT void CALL GetDllInfo(PLUGIN_INFO* _pPluginInfo);
|
|||
// Function: DllConfig
|
||||
// Purpose: This function is optional function that is provided
|
||||
// to allow the user to configure the DLL
|
||||
// input: a handle to the window that calls this function
|
||||
// input: A handle to the window that calls this function
|
||||
// output: none
|
||||
//
|
||||
EXPORT void CALL DllConfig(HWND _hParent);
|
||||
|
|
|
@ -32,9 +32,6 @@
|
|||
#ifndef _WIN32
|
||||
#include "../XInputBase.h"
|
||||
#endif
|
||||
#undef CONFIGDIALOG_STYLE
|
||||
#define CONFIGDIALOG_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
|
||||
class ConfigDialog : public wxDialog
|
||||
{
|
||||
|
@ -42,7 +39,7 @@ class ConfigDialog : public wxDialog
|
|||
|
||||
public:
|
||||
ConfigDialog(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Pad Configuration"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = CONFIGDIALOG_STYLE);
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||
|
||||
virtual ~ConfigDialog();
|
||||
|
||||
|
|
|
@ -43,11 +43,6 @@
|
|||
class CPBView;
|
||||
class IniFile;
|
||||
|
||||
// Window settings - I'm not sure what these do. I just copied them gtom elsewhere basically.
|
||||
#undef CDebugger_STYLE
|
||||
|
||||
#define CDebugger_STYLE wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE
|
||||
|
||||
class CDebugger : public wxDialog
|
||||
{
|
||||
private:
|
||||
|
@ -56,7 +51,7 @@ class CDebugger : public wxDialog
|
|||
public:
|
||||
CDebugger(wxWindow *parent, wxWindowID id = 1, const wxString &title = _("Sound Debugger"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = CDebugger_STYLE);
|
||||
long style = wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE);
|
||||
|
||||
virtual ~CDebugger();
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef __CONFIGDIALOG_h__
|
||||
#define __CONFIGDIALOG_h__
|
||||
#ifndef __OGL_CONFIGDIALOG_h__
|
||||
#define __OGL_CONFIGDIALOG_h__
|
||||
|
||||
#include <wx/wx.h>
|
||||
#include <wx/dialog.h>
|
||||
|
@ -32,14 +32,11 @@
|
|||
#include <wx/gbsizer.h>
|
||||
|
||||
|
||||
#undef ConfigDialog_STYLE
|
||||
#define ConfigDialog_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
|
||||
class ConfigDialog : public wxDialog
|
||||
{
|
||||
public:
|
||||
ConfigDialog(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("OpenGL Plugin Configuration"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ConfigDialog_STYLE);
|
||||
ConfigDialog(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("OpenGL Plugin Configuration"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~ConfigDialog();
|
||||
void CloseClick(wxCommandEvent& event);
|
||||
|
||||
|
|
|
@ -31,17 +31,13 @@
|
|||
#include <wx/gbsizer.h>
|
||||
|
||||
|
||||
#undef ConfigDialog_STYLE
|
||||
#define ConfigDialog_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
|
||||
class ConfigDialog : public wxDialog
|
||||
{
|
||||
public:
|
||||
ConfigDialog(wxWindow *parent, wxWindowID id = 1,
|
||||
const wxString &title = wxT("Wii Remote Plugin Configuration"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = ConfigDialog_STYLE);
|
||||
long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~ConfigDialog();
|
||||
void CloseClick(wxCommandEvent& event);
|
||||
|
||||
|
|
|
@ -44,8 +44,6 @@
|
|||
#include <wx/statbox.h>
|
||||
#include <wx/statbmp.h>
|
||||
|
||||
#undef AboutBox_STYLE
|
||||
#define AboutBox_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
class AboutBox : public wxDialog
|
||||
{
|
||||
|
@ -53,7 +51,8 @@ class AboutBox : public wxDialog
|
|||
DECLARE_EVENT_TABLE();
|
||||
|
||||
public:
|
||||
AboutBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About: nJoy Input Plugin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = AboutBox_STYLE);
|
||||
AboutBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About: nJoy Input Plugin"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~AboutBox();
|
||||
void OKClick(wxCommandEvent& event);
|
||||
|
||||
|
|
|
@ -46,8 +46,6 @@
|
|||
#include <wx/panel.h>
|
||||
#include <wx/statbmp.h>
|
||||
|
||||
#undef ConfigBox_STYLE
|
||||
#define ConfigBox_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
class ConfigBox : public wxDialog
|
||||
{
|
||||
|
@ -55,7 +53,8 @@ class ConfigBox : public wxDialog
|
|||
DECLARE_EVENT_TABLE();
|
||||
|
||||
public:
|
||||
ConfigBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Configure: nJoy Input Plugin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ConfigBox_STYLE);
|
||||
ConfigBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Configure: nJoy Input Plugin"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~ConfigBox();
|
||||
|
||||
private:
|
||||
|
|
|
@ -44,8 +44,6 @@
|
|||
#include <wx/statbox.h>
|
||||
#include <wx/statbmp.h>
|
||||
|
||||
#undef AboutBox_STYLE
|
||||
#define AboutBox_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
class AboutBox : public wxDialog
|
||||
{
|
||||
|
@ -53,7 +51,8 @@ class AboutBox : public wxDialog
|
|||
DECLARE_EVENT_TABLE();
|
||||
|
||||
public:
|
||||
AboutBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About: nJoy Input Plugin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = AboutBox_STYLE);
|
||||
AboutBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About: nJoy Input Plugin"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~AboutBox();
|
||||
void OKClick(wxCommandEvent& event);
|
||||
|
||||
|
|
|
@ -46,8 +46,6 @@
|
|||
#include <wx/panel.h>
|
||||
#include <wx/statbmp.h>
|
||||
|
||||
#undef ConfigBox_STYLE
|
||||
#define ConfigBox_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
||||
|
||||
class ConfigBox : public wxDialog
|
||||
{
|
||||
|
@ -55,7 +53,8 @@ class ConfigBox : public wxDialog
|
|||
DECLARE_EVENT_TABLE();
|
||||
|
||||
public:
|
||||
ConfigBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Configure: nJoy Input Plugin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ConfigBox_STYLE);
|
||||
ConfigBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Configure: nJoy Input Plugin"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||
virtual ~ConfigBox();
|
||||
|
||||
private:
|
||||
|
|
Loading…
Reference in New Issue