mirror of https://github.com/bochs-emu/Bochs
- add MemoryConfigDialog that sets the ROM BIOS and VGA BIOS options,
and also the optional rom settings. I think it all works except that the Browse buttons aren't hooked up yet. - modified Files: gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc gui/wxmain.h
This commit is contained in:
parent
746f09b427
commit
6009e14996
|
@ -1,5 +1,5 @@
|
|||
/////////////////////////////////////////////////////////////////
|
||||
// $Id: wxdialog.cc,v 1.17 2002-09-02 17:03:07 bdenney Exp $
|
||||
// $Id: wxdialog.cc,v 1.18 2002-09-02 20:13:43 bdenney Exp $
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// misc/wxdialog.cc
|
||||
|
@ -36,9 +36,6 @@ enum {
|
|||
ID_MY_LAST_ID
|
||||
};
|
||||
|
||||
void ChangeStaticText (wxSizer *sizer, wxStaticText *win, wxString newtext);
|
||||
bool CreateImage (int harddisk, int sectors, const char *filename);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// LogMsgAskDialog implementation
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
@ -262,7 +259,7 @@ void FloppyConfigDialog::Init()
|
|||
// add contents of diskImageSizer
|
||||
diskImageSizer->Add (diskImageRadioBtn);
|
||||
diskImageSizer->Add (filename, 1, wxGROW);
|
||||
wxButton *btn = new wxButton (this, ID_Browse, "<--Browse");
|
||||
wxButton *btn = new wxButton (this, ID_Browse, BTNLABEL_BROWSE);
|
||||
diskImageSizer->Add (btn, 0, wxALL, 5);
|
||||
radioSizer->Add (diskImageSizer);
|
||||
|
||||
|
@ -440,7 +437,7 @@ HDConfigDialog::HDConfigDialog(
|
|||
filename = new wxTextCtrl (this, ID_FilenameText);
|
||||
filename->SetSize (300, filename->GetSize ().GetHeight ());
|
||||
hsizer[0]->Add (filename, 1);
|
||||
wxButton *btn = new wxButton (this, ID_Browse, "<--Browse");
|
||||
wxButton *btn = new wxButton (this, ID_Browse, BTNLABEL_BROWSE);
|
||||
hsizer[0]->Add (btn);
|
||||
// contents of hsizer[1]
|
||||
for (int i=0; i<3; i++) {
|
||||
|
@ -655,7 +652,7 @@ CdromConfigDialog::CdromConfigDialog(
|
|||
filename = new wxTextCtrl (this, ID_FilenameText);
|
||||
filename->SetSize (300, filename->GetSize ().GetHeight ());
|
||||
fileSizer->Add (filename, 1, wxLEFT, 5);
|
||||
wxButton *btn = new wxButton (this, ID_Browse, "<--Browse");
|
||||
wxButton *btn = new wxButton (this, ID_Browse, BTNLABEL_BROWSE);
|
||||
fileSizer->Add (btn, 0, wxALL, 5);
|
||||
// create buttonSizer & contents but don't add yet
|
||||
btn = new wxButton (this, wxHELP, BTNLABEL_HELP);
|
||||
|
@ -909,18 +906,12 @@ int NetConfigDialog::GetIO () {
|
|||
strncpy (buf, string, sizeof(buf));
|
||||
int n = strtol (string, NULL, 0);
|
||||
if (n<0 || n>0xffff) {
|
||||
wxMessageBox("I/O address out of range. Try 0x200-0x400.", "Bad I/O address", wxOK | wxICON_ERROR );
|
||||
wxMessageBox("I/O address out of range. Try 0 - 0xffff.", "Bad I/O address", wxOK | wxICON_ERROR );
|
||||
return -1;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
void NetConfigDialog::SetIO (int addr) {
|
||||
wxString text;
|
||||
text.Printf ("0x%03x", addr);
|
||||
io->SetValue (text);
|
||||
}
|
||||
|
||||
void NetConfigDialog::SetMac (unsigned char addr[6]) {
|
||||
wxString text;
|
||||
text.Printf ("%02x:%02x:%02x:%02x:%02x:%02x", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
|
||||
|
@ -1163,6 +1154,191 @@ void LogOptionsDialog::ShowHelp ()
|
|||
wxMessageBox(MSG_NO_HELP, MSG_NO_HELP_CAPTION, wxOK | wxICON_ERROR );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// ConfigMemoryDialog implementation
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Structure:
|
||||
// mainSizer:
|
||||
// box1 = static box "Standard Options"
|
||||
// box1sizer:
|
||||
// box1gridSizer, 3 columns:
|
||||
// "memsize"
|
||||
// megs = textfield
|
||||
// spacer
|
||||
// "biosimg"
|
||||
// biosImage = textfield
|
||||
// browse button
|
||||
// "biosaddr"
|
||||
// biosAddr = textfield
|
||||
// spacer
|
||||
// "vgabiosimg"
|
||||
// vgabios = textfield
|
||||
// browse button
|
||||
// "vgabiosaddr"
|
||||
// "0xc0000"
|
||||
// box2 = static box "Optional ROM images"
|
||||
// box2sizer:
|
||||
// box2gridSizer, 3 columns:
|
||||
// "opt rom 1"
|
||||
// romImage[0] = textfield
|
||||
// browse button
|
||||
// "opt rom 2"
|
||||
// romImage[1] = textfield
|
||||
// browse button
|
||||
// "opt rom 3"
|
||||
// romImage[2] = textfield
|
||||
// browse button
|
||||
// "opt rom 4"
|
||||
// romImage[3] = textfield
|
||||
// browse button
|
||||
// buttonSizer:
|
||||
// help
|
||||
// cancel
|
||||
// ok
|
||||
//
|
||||
|
||||
// all events go to OnEvent method
|
||||
BEGIN_EVENT_TABLE(ConfigMemoryDialog, wxDialog)
|
||||
EVT_BUTTON(-1, ConfigMemoryDialog::OnEvent)
|
||||
EVT_CHECKBOX(-1, ConfigMemoryDialog::OnEvent)
|
||||
EVT_TEXT(-1, ConfigMemoryDialog::OnEvent)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
ConfigMemoryDialog::ConfigMemoryDialog(
|
||||
wxWindow* parent,
|
||||
wxWindowID id)
|
||||
: wxDialog (parent, id, "", wxDefaultPosition, wxDefaultSize,
|
||||
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||
{
|
||||
static char *box1_label[] = CONFIG_MEMORY_BOX1_LABELS;
|
||||
static char *box2_label[] = CONFIG_MEMORY_BOX2_LABELS;
|
||||
int n_browse = 0;
|
||||
int insideStaticBoxMargin = 15;
|
||||
SetTitle (CONFIG_MEMORY_TITLE);
|
||||
mainSizer = new wxBoxSizer (wxVERTICAL);
|
||||
wxStaticBox *box1 = new wxStaticBox (this, -1, CONFIG_MEMORY_BOX1_TITLE);
|
||||
box1sizer = new wxStaticBoxSizer (box1, wxVERTICAL);
|
||||
mainSizer->Add (box1sizer, 0, wxALL|wxGROW, 10);
|
||||
wxStaticBox *box2 = new wxStaticBox (this, -1, CONFIG_MEMORY_BOX2_TITLE);
|
||||
box2sizer = new wxStaticBoxSizer (box2, wxVERTICAL);
|
||||
mainSizer->Add (box2sizer, 0, wxALL|wxGROW, 10);
|
||||
buttonSizer = new wxBoxSizer (wxHORIZONTAL);
|
||||
mainSizer->Add (buttonSizer, 0, wxALIGN_RIGHT);
|
||||
|
||||
// box1 contents
|
||||
wxSize textCtrlSize (300, -1); // width=300, height=default
|
||||
box1gridSizer = new wxFlexGridSizer (3);
|
||||
box1sizer->Add (box1gridSizer, 0, wxALL, insideStaticBoxMargin);
|
||||
#define add(x) box1gridSizer->Add (x, 0, wxALL, 2)
|
||||
#define addrt(x) box1gridSizer->Add (x, 0, wxALL|wxALIGN_RIGHT, 2)
|
||||
#define newlabel(x) new wxStaticText (this, -1, x)
|
||||
#define spacer() box1gridSizer->Add (1, 1);
|
||||
#define newbrowse() (browseBtn[n_browse++] = new wxButton (this, ID_Browse, BTNLABEL_BROWSE))
|
||||
#define newlongtext() (new wxTextCtrl (this, -1, "", wxDefaultPosition, textCtrlSize))
|
||||
addrt (newlabel (box1_label[0]));
|
||||
add (megs = new wxSpinCtrl (this, -1));
|
||||
spacer();
|
||||
addrt (newlabel (box1_label[1]));
|
||||
add (biosImage = newlongtext ());
|
||||
add (newbrowse ());
|
||||
addrt (newlabel (box1_label[2]));
|
||||
add (biosAddr = new wxTextCtrl (this, -1));
|
||||
spacer();
|
||||
addrt (newlabel (box1_label[3]));
|
||||
add (vgabiosImage = newlongtext ());
|
||||
add (newbrowse ());
|
||||
addrt (newlabel (box1_label[4]));
|
||||
add (newlabel (box1_label[5]));
|
||||
#undef add(x)
|
||||
#undef addrt(x)
|
||||
#undef newlabel(x)
|
||||
#undef spacer()
|
||||
biosImage->SetSizeHints (300, biosImage->GetSize().GetHeight ());
|
||||
vgabiosImage->SetSizeHints (300, biosImage->GetSize().GetHeight ());
|
||||
|
||||
// box2 contents
|
||||
box2gridSizer = new wxFlexGridSizer (3);
|
||||
box2sizer->Add (box2gridSizer, 0, wxALL, insideStaticBoxMargin);
|
||||
#define add(x) box2gridSizer->Add (x, 0, wxALL, 2)
|
||||
#define addrt(x) box2gridSizer->Add (x, 0, wxALL|wxALIGN_RIGHT, 2)
|
||||
#define newlabel(x) new wxStaticText (this, -1, x)
|
||||
#define spacer() box2gridSizer->Add (1, 1);
|
||||
for (int i=0; i<CONFIG_MEMORY_N_ROMS; i++) {
|
||||
addrt (newlabel (box2_label[2*i]));
|
||||
add (rom[i] = newlongtext ());
|
||||
rom[i]->SetSizeHints (300, rom[i]->GetSize().GetHeight ());
|
||||
add (newbrowse ());
|
||||
addrt (newlabel (box2_label[2*i + 1]));
|
||||
add (romAddr[i] = new wxTextCtrl (this, -1));
|
||||
spacer();
|
||||
}
|
||||
#undef add(x)
|
||||
#undef addrt(x)
|
||||
#undef newlabel(x)
|
||||
#undef spacer()
|
||||
#undef newbrowse()
|
||||
#undef newlongtext()
|
||||
|
||||
// buttonSizer contents
|
||||
wxButton *btn;
|
||||
btn = new wxButton (this, wxHELP, BTNLABEL_HELP);
|
||||
buttonSizer->Add (btn, 0, wxALL, 5);
|
||||
// use wxID_CANCEL because pressing ESC produces this same code
|
||||
btn = new wxButton (this, wxID_CANCEL, BTNLABEL_CANCEL);
|
||||
buttonSizer->Add (btn, 0, wxALL, 5);
|
||||
btn = new wxButton (this, wxOK, BTNLABEL_OK);
|
||||
buttonSizer->Add (btn, 0, wxALL, 5);
|
||||
}
|
||||
|
||||
void ConfigMemoryDialog::Init()
|
||||
{
|
||||
// lay it out!
|
||||
SetAutoLayout(TRUE);
|
||||
SetSizer(mainSizer);
|
||||
mainSizer->Fit (this);
|
||||
wxSize size = mainSizer->GetMinSize ();
|
||||
printf ("minsize is %d,%d\n", size.GetWidth(), size.GetHeight ());
|
||||
int margin = 5;
|
||||
SetSizeHints (size.GetWidth () + margin, size.GetHeight () + margin);
|
||||
Center ();
|
||||
}
|
||||
|
||||
void ConfigMemoryDialog::OnEvent(wxCommandEvent& event)
|
||||
{
|
||||
int id = event.GetId ();
|
||||
printf ("you pressed button id=%d\n", id);
|
||||
switch (id) {
|
||||
case wxOK:
|
||||
{
|
||||
// test validity of the integer fields
|
||||
bool valid;
|
||||
GetTextCtrlInt (biosAddr, "0x%x", true, &valid);
|
||||
if (!valid) return;
|
||||
for (int rom=0; rom<CONFIG_MEMORY_N_ROMS; rom++) {
|
||||
GetTextCtrlInt (romAddr[rom], "0x%x", true, &valid);
|
||||
if (!valid) return;
|
||||
}
|
||||
}
|
||||
EndModal (wxOK);
|
||||
break;
|
||||
case wxID_CANCEL:
|
||||
EndModal (wxCANCEL);
|
||||
break;
|
||||
case wxHELP:
|
||||
ShowHelp();
|
||||
break;
|
||||
default:
|
||||
event.Skip ();
|
||||
}
|
||||
}
|
||||
|
||||
void ConfigMemoryDialog::ShowHelp ()
|
||||
{
|
||||
wxMessageBox(MSG_NO_HELP, MSG_NO_HELP_CAPTION, wxOK | wxICON_ERROR );
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// utility
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
@ -1215,6 +1391,30 @@ CreateImage (int harddisk, int sectors, const char *filename)
|
|||
return true;
|
||||
}
|
||||
|
||||
void SetTextCtrl (wxTextCtrl *ctrl, const char *format, int val) {
|
||||
wxString tmp;
|
||||
tmp.Printf (format, val);
|
||||
ctrl->SetValue (tmp);
|
||||
}
|
||||
|
||||
int GetTextCtrlInt (wxTextCtrl *ctrl, const char *format, bool complain, bool *valid) {
|
||||
wxString tmp (ctrl->GetValue ());
|
||||
char buf[1024];
|
||||
strncpy (buf, tmp.c_str(), sizeof(buf));
|
||||
int n;
|
||||
if (sscanf (buf, format, &n) == 1) {
|
||||
if (valid) *valid = true;
|
||||
return n;
|
||||
}
|
||||
if (valid) *valid = false;
|
||||
if (complain) {
|
||||
wxMessageBox("Invalid integer!", "Invalid", wxOK | wxICON_ERROR );
|
||||
ctrl->SetFocus ();
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef TEST_DIALOG
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
////////////////////////////////////////////////////////////////////
|
||||
// $Id: wxdialog.h,v 1.17 2002-09-02 17:03:11 bdenney Exp $
|
||||
// $Id: wxdialog.h,v 1.18 2002-09-02 20:13:49 bdenney Exp $
|
||||
////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// wxWindows dialogs for Bochs
|
||||
|
@ -17,6 +17,13 @@
|
|||
#define BTNLABEL_OK "Ok"
|
||||
#define BTNLABEL_CREATE_IMG "Create Image"
|
||||
#define BTNLABEL_ADVANCED "Advanced"
|
||||
#define BTNLABEL_BROWSE "<--Browse"
|
||||
|
||||
// utility function prototype
|
||||
void ChangeStaticText (wxSizer *sizer, wxStaticText *win, wxString newtext);
|
||||
bool CreateImage (int harddisk, int sectors, const char *filename);
|
||||
void SetTextCtrl (wxTextCtrl *text, const char *format, int val);
|
||||
int GetTextCtrlInt (wxTextCtrl *text, const char *format, bool complain=false, bool *valid = NULL);
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// LogMsgAskDialog is a modal dialog box that shows the user a
|
||||
|
@ -373,7 +380,7 @@ public:
|
|||
int ShowModal() { Init(); return wxDialog::ShowModal(); }
|
||||
void SetEnable (bool en) { enable->SetValue (en); EnableChanged (); }
|
||||
bool GetEnable () { return enable->GetValue (); }
|
||||
void SetIO (int addr);
|
||||
void SetIO (int addr) { SetTextCtrl (io, "0x%03x", addr); }
|
||||
int GetIO ();
|
||||
void SetIrq (int addr) { irq->SetValue (addr); }
|
||||
int GetIrq () { return irq->GetValue (); }
|
||||
|
@ -409,40 +416,75 @@ DECLARE_EVENT_TABLE()
|
|||
// | +--- Optional ROM images ---------------------------------------+ |
|
||||
// | | | |
|
||||
// | | Optional ROM image #1: [________________] [Browse] | |
|
||||
// | | address: [______] | |
|
||||
// | | Address: [______] | |
|
||||
// | | | |
|
||||
// | | Optional ROM image #2: [________________] [Browse] | |
|
||||
// | | address: [______] | |
|
||||
// | | Address: [______] | |
|
||||
// | | | |
|
||||
// | | Optional ROM image #3: [________________] [Browse] | |
|
||||
// | | address: [______] | |
|
||||
// | | Address: [______] | |
|
||||
// | | | |
|
||||
// | | Optional ROM image #4: [________________] [Browse] | |
|
||||
// | | address: [______] | |
|
||||
// | | Address: [______] | |
|
||||
// | | | |
|
||||
// | +---------------------------------------------------------------+ |
|
||||
// | [ Help ] [ Cancel ] [ Ok ] |
|
||||
// +-------------------------------------------------------------------+
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// ConfigSoundDialog
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// +--- Configure Sound -------------------------------------------+
|
||||
// | |
|
||||
// | Bochs can emulate a Sound Blaster 16. Would you like |
|
||||
// | to enable it? |
|
||||
// | |
|
||||
// | Enable [X] |
|
||||
// | |
|
||||
// | DMA timer: [_________] |
|
||||
// | |
|
||||
// | Midi mode [ 1 ] Output file [_________________] [Browse] |
|
||||
// | Wave mode [ 1 ] Output file [_________________] [Browse] |
|
||||
// | Log mode [ 1 ] Output file [_________________] [Browse] |
|
||||
// | |
|
||||
// | [ Help ] [ Cancel ] [ Ok ] |
|
||||
// +---------------------------------------------------------------+
|
||||
// To use this dialog:
|
||||
// After constructor, use SetSize(), SetBios(), SetBiosAddr(), SetVgaBios(),
|
||||
// SetRom(), SetRomAddr() to set the initial values. Then call ShowModal()
|
||||
// which will return wxOK or wxCANCEL. Use the Get* equivalent methods
|
||||
// to find out the value from each field.
|
||||
class ConfigMemoryDialog: public wxDialog
|
||||
{
|
||||
private:
|
||||
#define CONFIG_MEMORY_TITLE "Configure Memory"
|
||||
#define CONFIG_MEMORY_BOX1_TITLE "Standard Options"
|
||||
#define CONFIG_MEMORY_BOX2_TITLE "Optional ROM Images"
|
||||
#define CONFIG_MEMORY_BOX1_LABELS { \
|
||||
"Memory size (megabytes):", \
|
||||
"ROM BIOS image:", \
|
||||
"ROM BIOS address:", \
|
||||
"VGA BIOS image:", \
|
||||
"VGA BIOS address:", \
|
||||
"0xC0000" }
|
||||
#define CONFIG_MEMORY_BOX2_LABELS { \
|
||||
"Optional ROM image #1:", "Address:", \
|
||||
"Optional ROM image #2:", "Address:", \
|
||||
"Optional ROM image #3:", "Address:", \
|
||||
"Optional ROM image #4:", "Address:" \
|
||||
}
|
||||
#define CONFIG_MEMORY_N_ROMS 4
|
||||
void Init (); // called automatically by ShowModal()
|
||||
void ShowHelp ();
|
||||
wxBoxSizer *mainSizer, *buttonSizer;
|
||||
wxStaticBoxSizer *box1sizer, *box2sizer;
|
||||
wxFlexGridSizer *box1gridSizer, *box2gridSizer;
|
||||
wxSpinCtrl *megs;
|
||||
wxTextCtrl *biosImage, *biosAddr, *vgabiosImage;
|
||||
wxTextCtrl *rom[CONFIG_MEMORY_N_ROMS], *romAddr[CONFIG_MEMORY_N_ROMS];
|
||||
#define CONFIG_MEMORY_N_BROWSES 6
|
||||
wxButton *browseBtn[CONFIG_MEMORY_N_BROWSES];
|
||||
public:
|
||||
ConfigMemoryDialog(wxWindow* parent, wxWindowID id);
|
||||
void OnEvent (wxCommandEvent& event);
|
||||
int ShowModal() { Init(); return wxDialog::ShowModal(); }
|
||||
void SetSize (int val) { megs->SetValue (val); }
|
||||
void SetBios (wxString filename) { biosImage->SetValue (filename); }
|
||||
void SetVgaBios (wxString filename) { vgabiosImage->SetValue (filename); }
|
||||
void SetRom (int n, wxString filename) { rom[n]->SetValue (filename); }
|
||||
void SetBiosAddr (int addr) { SetTextCtrl (biosAddr, "0x%05x", addr); }
|
||||
void SetRomAddr (int n, int addr) { SetTextCtrl (romAddr[n], "0x%05x", addr); }
|
||||
int GetSize () { return megs->GetValue (); }
|
||||
wxString GetBios () { return biosImage->GetValue (); }
|
||||
wxString GetVgaBios () { return vgabiosImage->GetValue (); }
|
||||
wxString GetRom (int n) { return rom[n]->GetValue (); }
|
||||
int GetBiosAddr () { return GetTextCtrlInt (biosAddr, "0x%x"); }
|
||||
int GetRomAddr (int n) { return GetTextCtrlInt (romAddr[n], "0x%x"); }
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// LogOptionsDialog
|
||||
|
@ -511,6 +553,27 @@ DECLARE_EVENT_TABLE()
|
|||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// ConfigSoundDialog
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// +--- Configure Sound -------------------------------------------+
|
||||
// | |
|
||||
// | Bochs can emulate a Sound Blaster 16. Would you like |
|
||||
// | to enable it? |
|
||||
// | |
|
||||
// | Enable [X] |
|
||||
// | |
|
||||
// | DMA timer: [_________] |
|
||||
// | |
|
||||
// | Midi mode [ 1 ] Output file [_________________] [Browse] |
|
||||
// | Wave mode [ 1 ] Output file [_________________] [Browse] |
|
||||
// | Log mode [ 1 ] Output file [_________________] [Browse] |
|
||||
// | |
|
||||
// | [ Help ] [ Cancel ] [ Ok ] |
|
||||
// +---------------------------------------------------------------+
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
Everything else in here is a comment!
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/////////////////////////////////////////////////////////////////
|
||||
// $Id: wxmain.cc,v 1.23 2002-09-02 17:03:13 bdenney Exp $
|
||||
// $Id: wxmain.cc,v 1.24 2002-09-02 20:13:51 bdenney Exp $
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// wxmain.cc implements the wxWindows frame, toolbar, menus, and dialogs.
|
||||
|
@ -148,6 +148,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||
EVT_MENU(ID_Edit_HD_1, MyFrame::OnOtherEvent)
|
||||
EVT_MENU(ID_Edit_Cdrom, MyFrame::OnOtherEvent)
|
||||
EVT_MENU(ID_Edit_Boot, MyFrame::OnEditBoot)
|
||||
EVT_MENU(ID_Edit_Memory, MyFrame::OnEditMemory)
|
||||
EVT_MENU(ID_Edit_Network, MyFrame::OnEditNet)
|
||||
EVT_MENU(ID_Log_Prefs, MyFrame::OnLogPrefs)
|
||||
// toolbar events
|
||||
|
@ -369,6 +370,53 @@ void MyFrame::OnEditBoot(wxCommandEvent& WXUNUSED(event))
|
|||
bootdevice->set (which);
|
||||
}
|
||||
|
||||
void MyFrame::OnEditMemory(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
ConfigMemoryDialog dlg (this, -1);
|
||||
bx_param_num_c *megs = (bx_param_num_c*) SIM->get_param(BXP_MEM_SIZE);
|
||||
bx_param_string_c *bios = (bx_param_string_c *) SIM->get_param (BXP_ROM_PATH);
|
||||
bx_param_num_c *biosaddr = (bx_param_num_c*) SIM->get_param(BXP_ROM_ADDRESS);
|
||||
bx_param_string_c *vgabios = (bx_param_string_c *) SIM->get_param (BXP_VGA_ROM_PATH);
|
||||
static bx_id optRomPathParams[] = {
|
||||
BXP_OPTROM1_PATH, BXP_OPTROM2_PATH, BXP_OPTROM3_PATH, BXP_OPTROM4_PATH
|
||||
};
|
||||
static bx_id optRomAddrParams[] = {
|
||||
BXP_OPTROM1_ADDRESS, BXP_OPTROM2_ADDRESS, BXP_OPTROM3_ADDRESS, BXP_OPTROM4_ADDRESS
|
||||
};
|
||||
bx_param_string_c *optromPath[CONFIG_MEMORY_N_ROMS];
|
||||
bx_param_num_c *optromAddr[CONFIG_MEMORY_N_ROMS];
|
||||
int rom;
|
||||
for (rom=0; rom<CONFIG_MEMORY_N_ROMS; rom++) {
|
||||
optromPath[rom] = (bx_param_string_c *)
|
||||
SIM->get_param (optRomPathParams[rom]);
|
||||
optromAddr[rom] = (bx_param_num_c *)
|
||||
SIM->get_param (optRomAddrParams[rom]);
|
||||
}
|
||||
dlg.SetSize (megs->get ());
|
||||
dlg.SetBios (wxString (bios->getptr ()));
|
||||
dlg.SetBiosAddr (biosaddr->get ());
|
||||
dlg.SetVgaBios (wxString (vgabios->getptr ()));
|
||||
for (rom=0; rom<CONFIG_MEMORY_N_ROMS; rom++) {
|
||||
dlg.SetRom (rom, wxString (optromPath[rom]->getptr ()));
|
||||
dlg.SetRomAddr (rom, optromAddr[rom]->get ());
|
||||
}
|
||||
int n = dlg.ShowModal ();
|
||||
if (n == wxOK) {
|
||||
char buf[1024];
|
||||
megs->set (dlg.GetSize ());
|
||||
safeWxStrcpy (buf, dlg.GetBios (), sizeof (buf));
|
||||
bios->set (buf);
|
||||
biosaddr->set (dlg.GetBiosAddr ());
|
||||
safeWxStrcpy (buf, dlg.GetVgaBios (), sizeof (buf));
|
||||
vgabios->set (buf);
|
||||
for (rom=0; rom<CONFIG_MEMORY_N_ROMS; rom++) {
|
||||
safeWxStrcpy (buf, dlg.GetRom (rom), sizeof (buf));
|
||||
optromPath[rom]->set (buf);
|
||||
optromAddr[rom]->set (dlg.GetRomAddr (rom));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::OnEditNet(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
NetConfigDialog dlg (this, -1);
|
||||
|
@ -1125,3 +1173,12 @@ SimThread::GetSyncResponse ()
|
|||
return event;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// utility
|
||||
///////////////////////////////////////////////////////////////////
|
||||
void
|
||||
safeWxStrcpy (char *dest, wxString src, int destlen)
|
||||
{
|
||||
wxString tmp (src);
|
||||
strncpy (dest, tmp.c_str (), destlen);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/////////////////////////////////////////////////////////////////
|
||||
// $Id: wxmain.h,v 1.15 2002-09-02 17:03:14 bdenney Exp $
|
||||
// $Id: wxmain.h,v 1.16 2002-09-02 20:13:52 bdenney Exp $
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// This file defines variables and classes that the wxWindows .cc files
|
||||
// share. It should be included only by wx.cc and wxmain.cc.
|
||||
|
@ -95,6 +95,9 @@ enum
|
|||
//#define IFDBG_KEY(x) x
|
||||
|
||||
|
||||
// defined in wxmain.cc
|
||||
void safeWxStrcpy (char *dest, wxString src, int destlen);
|
||||
|
||||
/// the MyPanel methods are defined in wx.cc
|
||||
class MyPanel: public wxPanel
|
||||
{
|
||||
|
@ -133,6 +136,7 @@ public:
|
|||
void OnKillSim(wxCommandEvent& event);
|
||||
void OnSim2CIEvent(wxCommandEvent& event);
|
||||
void OnEditBoot(wxCommandEvent& event);
|
||||
void OnEditMemory(wxCommandEvent& event);
|
||||
void OnEditNet(wxCommandEvent& event);
|
||||
void OnLogPrefs(wxCommandEvent& event);
|
||||
void OnOtherEvent(wxCommandEvent& event);
|
||||
|
|
Loading…
Reference in New Issue