#include "install_dialogs.h" #include "wizard.xpm" //////////////////////////////////////////////// //// Bootloader Installation ///////////////////////////////////////////////// IMPLEMENT_CLASS( bootloaderInstallDlg, wxDialog ) BEGIN_EVENT_TABLE( bootloaderInstallDlg, wxDialog ) END_EVENT_TABLE() bootloaderInstallDlg::bootloaderInstallDlg( ) { Init(); } bootloaderInstallDlg::bootloaderInstallDlg( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { Init(); Create(parent, id, caption, pos, size, style); } void bootloaderInstallDlg::CreateControls() { // A top-level sizer wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL); this->SetSizer(topSizer); wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5); // bitmap wxBitmap sidebmp(wizard_xpm); ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY); sideimage->SetBitmap(sidebmp); wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5); wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL); wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5); m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS); wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5); m_firmwarepos = new FirmwarePositionCtrl(this,ID_FIRMWARE); wxBoxSizer3->Add(m_firmwarepos, 0, wxALIGN_LEFT|wxALL, 5); OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY); topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); } //init the local variables void bootloaderInstallDlg::Init() { } // create the window bool bootloaderInstallDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { if (!wxDialog::Create( parent, id, caption, pos, size, style )) return false; CreateControls(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); return true; } // tranver data from the controls bool bootloaderInstallDlg::TransferDataFromWindow() { if( m_devicepos->IsShown()) { gv->curdestdir = m_devicepos->getDevicePos(); if(!wxDirExists(gv->curdestdir)) { WARN_DIALOG(wxT("The Devicepostion is not valid"), wxT("Select a Deviceposition")); gv->curdestdir = wxT(""); return false; } } if(m_firmwarepos->IsShown()) { gv->curfirmware = m_firmwarepos->getFirmwarePos(); if(!wxFileExists(gv->curfirmware)) { WARN_DIALOG(wxT("The Firmware position is not valid"), wxT("Select a original Firmware")); gv->curfirmware = wxT(""); return false; } } return true; } // tranver data to the controls bool bootloaderInstallDlg::TransferDataToWindow() { if(gv->curplat == wxT("")) { WARN_DIALOG(wxT("You have not selected a audio device"), wxT("Select a Device")); return false; } int index = gv->plat_id.Index(gv->curplat); if(!gv->plat_needsbootloader[index]) { WARN_DIALOG(wxT("This Device doesnt need a Bootloader"), wxT("Bootloader")); return false; } if(gv->plat_bootloadermethod[index] != wxT("ipodpatcher") && gv->plat_bootloadermethod[index] != wxT("sansapatcher")) { m_devicepos->Show(true); }else { m_devicepos->Show(false); } if(gv->plat_bootloadermethod[index] == wxT("fwpatcher")) { m_firmwarepos->Show(true); }else { m_firmwarepos->Show(false); } m_devicepos->setDefault(); m_firmwarepos->setDefault(); return true; } //////////////////////////////////////////////// //// Talk file creation ///////////////////////////////////////////////// IMPLEMENT_CLASS( talkInstallDlg, wxDialog ) BEGIN_EVENT_TABLE( talkInstallDlg, wxDialog ) EVT_BUTTON(ID_BROWSE_ENC_BTN, talkInstallDlg::OnBrowseEncBtn) EVT_BUTTON(ID_BROWSE_TTS_BTN, talkInstallDlg::OnBrowseTtsBtn) END_EVENT_TABLE() talkInstallDlg::talkInstallDlg(TalkFileCreator* talkcreator ) { m_talkCreator = talkcreator; Init(); } talkInstallDlg::talkInstallDlg(TalkFileCreator* talkcreator, wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { m_talkCreator = talkcreator; Init(); Create(parent, id, caption, pos, size, style); } void talkInstallDlg::CreateControls() { // A top-level sizer wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL); this->SetSizer(topSizer); wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5); // bitmap wxBitmap sidebmp(wizard_xpm); ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY); sideimage->SetBitmap(sidebmp); wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5); wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL); wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5); // Device position m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS); wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5); // Encoder wxStaticBox* WxStaticBoxSizer2_StaticBoxObj = new wxStaticBox(this, wxID_ANY, wxT("Encoder")); wxStaticBoxSizer* WxStaticBoxSizer2 = new wxStaticBoxSizer(WxStaticBoxSizer2_StaticBoxObj,wxVERTICAL); wxBoxSizer3->Add(WxStaticBoxSizer2,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); m_Enc = new wxComboBox(this,ID_ENC_CBX,wxT("lame"), wxDefaultPosition,wxDefaultSize,m_talkCreator->getSupportedEnc(),wxCB_READONLY); m_Enc->SetToolTip(wxT("Select your Encoder.")); m_Enc->SetHelpText(wxT("Select your Encoder.")); WxStaticBoxSizer2->Add(m_Enc,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); wxStaticText* enc_desc = new wxStaticText( this, wxID_STATIC, wxT("Select the Encoder executable"), wxDefaultPosition, wxDefaultSize, 0 ); WxStaticBoxSizer2->Add(enc_desc, 0, wxALIGN_LEFT|wxALL, 5); wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL); WxStaticBoxSizer2->Add(horizontalSizer, 0, wxGROW|wxALL, 5); m_EncExe = new wxTextCtrl(this,wxID_ANY,gv->pathToEnc); m_EncExe->SetToolTip(wxT("Type the folder where your Encoder exe is")); m_EncExe->SetHelpText(wxT("Type the folder where your Encoder exe is")); horizontalSizer->Add(m_EncExe,0,wxGROW | wxALL,5); m_browseEncBtn = new wxButton(this, ID_BROWSE_ENC_BTN, wxT("Browse"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxT("BrowseEncBtn")); m_browseEncBtn->SetToolTip(wxT("Browse for your Encoder Exe")); m_browseEncBtn->SetHelpText(wxT("Browse for your Encoder exe")); horizontalSizer->Add(m_browseEncBtn,0,wxGROW | wxALL,5); wxStaticText* enc_desc_opt = new wxStaticText( this, wxID_STATIC, wxT("Encoder Options"), wxDefaultPosition, wxDefaultSize, 0 ); WxStaticBoxSizer2->Add(enc_desc_opt, 0, wxALIGN_LEFT|wxALL, 5); m_EncOpts = new wxTextCtrl(this,wxID_ANY,m_talkCreator->getEncOpts(wxT("lame"))); m_EncOpts->SetToolTip(wxT("Encoder Options")); m_EncOpts->SetHelpText(wxT("Encoder Options")); WxStaticBoxSizer2->Add(m_EncOpts, 0, wxALIGN_LEFT|wxALL, 5); // TTS wxStaticBox* WxStaticBoxSizer3_StaticBoxObj = new wxStaticBox(this, wxID_ANY, wxT("Text to Speach")); wxStaticBoxSizer* WxStaticBoxSizer3 = new wxStaticBoxSizer(WxStaticBoxSizer3_StaticBoxObj,wxVERTICAL); wxBoxSizer3->Add(WxStaticBoxSizer3,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); m_Tts = new wxComboBox(this,ID_TTS_CBX,wxT("espeak"), wxDefaultPosition,wxDefaultSize,m_talkCreator->getSupportedTTS(),wxCB_READONLY); m_Tts->SetToolTip(wxT("Select your TTS.")); m_Tts->SetHelpText(wxT("Select your TTS.")); WxStaticBoxSizer3->Add(m_Tts,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); wxStaticText* tts_desc = new wxStaticText( this, wxID_STATIC, wxT("Select the TTS executable"), wxDefaultPosition, wxDefaultSize, 0 ); WxStaticBoxSizer3->Add(tts_desc, 0, wxALIGN_LEFT|wxALL, 5); wxBoxSizer* horizontalSizer2 = new wxBoxSizer(wxHORIZONTAL); WxStaticBoxSizer3->Add(horizontalSizer2, 0, wxGROW|wxALL, 5); m_TtsExe = new wxTextCtrl(this,wxID_ANY,gv->pathToTts); m_TtsExe->SetToolTip(wxT("Type the folder where your TTS exe is")); m_TtsExe->SetHelpText(wxT("Type the folder where your TTS exe is")); horizontalSizer2->Add(m_TtsExe,0,wxGROW | wxALL,5); m_browseTtsBtn = new wxButton(this, ID_BROWSE_TTS_BTN, wxT("Browse"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxT("BrowseEncBtn")); m_browseTtsBtn->SetToolTip(wxT("Browse for your Encoder Exe")); m_browseTtsBtn->SetHelpText(wxT("Browse for your Encoder exe")); horizontalSizer2->Add(m_browseTtsBtn,0,wxGROW | wxALL,5); wxStaticText* tts_desc_opt = new wxStaticText( this, wxID_STATIC, wxT("TTS Options"), wxDefaultPosition, wxDefaultSize, 0 ); WxStaticBoxSizer3->Add(tts_desc_opt, 0, wxALIGN_LEFT|wxALL, 5); m_TtsOpts = new wxTextCtrl(this,wxID_ANY,m_talkCreator->getTTsOpts(wxT("espeak"))); m_TtsOpts->SetToolTip(wxT("TTS Options")); m_TtsOpts->SetHelpText(wxT("TTS Options")); WxStaticBoxSizer3->Add(m_TtsOpts, 0, wxALIGN_LEFT|wxALL, 5); m_OverwriteWave = new wxCheckBox(this,wxID_ANY,wxT("Overwrite Wav")); m_OverwriteWave->SetToolTip(wxT("Overwrite Wavefiles")); m_OverwriteWave->SetHelpText(wxT("Overwrite Wavefiles")); wxBoxSizer3->Add(m_OverwriteWave,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); m_OverwriteTalk = new wxCheckBox(this,wxID_ANY,wxT("Overwrite Talk")); m_OverwriteTalk->SetToolTip(wxT("Overwrite Talkfiles")); m_OverwriteTalk->SetHelpText(wxT("Overwrite Talkfiles")); wxBoxSizer3->Add(m_OverwriteTalk,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); m_RemoveWave = new wxCheckBox(this,wxID_ANY,wxT("Remove Wav")); m_RemoveWave->SetToolTip(wxT("Remove Wavfiles")); m_RemoveWave->SetHelpText(wxT("Remove Wavfiles")); wxBoxSizer3->Add(m_RemoveWave,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); m_Recursive = new wxCheckBox(this,wxID_ANY,wxT("Recursive")); m_Recursive->SetToolTip(wxT("Recursive")); m_Recursive->SetHelpText(wxT("Recursive")); wxBoxSizer3->Add(m_Recursive,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); m_StripExtensions = new wxCheckBox(this,wxID_ANY,wxT("Strip Extensions")); m_StripExtensions->SetToolTip(wxT("Strip Extensions")); m_StripExtensions->SetHelpText(wxT("Strip Extensions")); wxBoxSizer3->Add(m_StripExtensions,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5); OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY); topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); // controls at the bottom wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL); topSizer->Add(wxBoxSizer7, 0, wxGROW | wxALL, 5); } //init the local variables void talkInstallDlg::Init() { } // create the window bool talkInstallDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { if (!wxDialog::Create( parent, id, caption, pos, size, style )) return false; CreateControls(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); return true; } void talkInstallDlg::OnBrowseEncBtn(wxCommandEvent& event) { const wxString& temp = wxFileSelector( wxT("Please select the location of your encoder"), wxT(""), wxT(""),wxT(""),wxT("*.*"),0, this); if (!temp.empty()) { m_EncExe->SetValue(temp); } } void talkInstallDlg::OnBrowseTtsBtn(wxCommandEvent& event) { const wxString& temp = wxFileSelector( wxT("Please select the location of your TTS engine"), wxT(""), wxT(""),wxT(""),wxT("*.*"),0, this); if (!temp.empty()) { m_TtsExe->SetValue(temp); } } // tranver data from the controls bool talkInstallDlg::TransferDataFromWindow() { gv->curdestdir = m_devicepos->getDevicePos(); if(!wxDirExists(gv->curdestdir)) { WARN_DIALOG(wxT("The Devicepostion is not valid"), wxT("Select a Deviceposition")); gv->curdestdir = wxT(""); return false; } m_talkCreator->setDir(gv->curdestdir); gv->pathToEnc = m_EncExe->GetValue(); if(!wxFileExists(gv->pathToEnc)) { WARN_DIALOG(wxT("The Encoder exe is not valid"), wxT("Select an Encoder")); gv->pathToEnc = wxT(""); return false; } m_talkCreator->setEncexe(gv->pathToEnc); gv->pathToTts = m_TtsExe->GetValue(); if(!wxFileExists(gv->pathToTts)) { WARN_DIALOG(wxT("The TTs exe is not valid"), wxT("Select an TTS engine")); gv->pathToTts = wxT(""); return false; } m_talkCreator->setTTSexe(gv->pathToTts); m_talkCreator->setTTsType(m_Tts->GetValue()); m_talkCreator->setEncType(m_Enc->GetValue()); m_talkCreator->setOverwriteTalk(m_OverwriteWave->IsChecked()); m_talkCreator->setOverwriteWav(m_OverwriteTalk->IsChecked()); m_talkCreator->setRemoveWav(m_RemoveWave->IsChecked()); m_talkCreator->setRecursive(m_Recursive->IsChecked()); m_talkCreator->setStripExtensions(m_StripExtensions->IsChecked()); m_talkCreator->setEncOpts(m_EncOpts->GetValue()); m_talkCreator->setTTsOpts(m_TtsOpts->GetValue()); return true; } // tranver data to the controls bool talkInstallDlg::TransferDataToWindow() { m_devicepos->setDefault(); m_OverwriteWave->SetValue(true); m_OverwriteTalk->SetValue(true); m_RemoveWave->SetValue(true); m_Recursive->SetValue(true); m_StripExtensions->SetValue(false); return true; } //////////////////////////////////////////////// //// Font Installation ///////////////////////////////////////////////// IMPLEMENT_CLASS( fontInstallDlg, wxDialog ) BEGIN_EVENT_TABLE( fontInstallDlg, wxDialog ) END_EVENT_TABLE() fontInstallDlg::fontInstallDlg( ) { Init(); } fontInstallDlg::fontInstallDlg( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { Init(); Create(parent, id, caption, pos, size, style); } void fontInstallDlg::CreateControls() { // A top-level sizer wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL); this->SetSizer(topSizer); wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5); // bitmap wxBitmap sidebmp(wizard_xpm); ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY); sideimage->SetBitmap(sidebmp); wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5); wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL); wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5); m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS); wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5); OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY); topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); // controls at the bottom wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL); topSizer->Add(wxBoxSizer7, 0, wxGROW | wxALL, 5); } //init the local variables void fontInstallDlg::Init() { } // create the window bool fontInstallDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { if (!wxDialog::Create( parent, id, caption, pos, size, style )) return false; CreateControls(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); return true; } // tranver data from the controls bool fontInstallDlg::TransferDataFromWindow() { gv->curdestdir = m_devicepos->getDevicePos(); if(!wxDirExists(gv->curdestdir)) { WARN_DIALOG(wxT("The Devicepostion is not valid"), wxT("Select a Deviceposition")); gv->curdestdir = wxT(""); return false; } return true; } // tranver data to the controls bool fontInstallDlg::TransferDataToWindow() { m_devicepos->setDefault(); return true; } //////////////////////////////////////////////// //// Rockbox DeInstallation ///////////////////////////////////////////////// IMPLEMENT_CLASS( rockboxDeInstallDlg, wxDialog ) BEGIN_EVENT_TABLE( rockboxDeInstallDlg, wxDialog ) END_EVENT_TABLE() rockboxDeInstallDlg::rockboxDeInstallDlg( ) { Init(); } rockboxDeInstallDlg::rockboxDeInstallDlg( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { Init(); Create(parent, id, caption, pos, size, style); } void rockboxDeInstallDlg::CreateControls() { // A top-level sizer wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL); this->SetSizer(topSizer); wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5); // bitmap wxBitmap sidebmp(wizard_xpm); ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY); sideimage->SetBitmap(sidebmp); wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5); wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL); wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5); m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS); wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5); // Full deinstallation ? wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY, wxT("Rockbox Utility normally uninstalls Rockbox using an uninstall\n" "file created during installation. This means that when Rockbox is\n" "uninstalled all your configuration files are preserved. However,\n" "you can also perform a full uninstall, which will completely\n" "remove all traces of Rockbox from your system, and can be used\n" "even if Rockbox was previously installed manually.")); wxBoxSizer3->Add(WxStaticText1,0,wxGROW | wxALL,5); wxCheckBox* FullCheckBox = new wxCheckBox(this, ID_FULL_CHCKBX, wxT("Perform a full uninstall")); wxBoxSizer3->Add(FullCheckBox, 0, wxALL, 5); // controls at the bottom OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY); topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); } //init the local variables void rockboxDeInstallDlg::Init() { } // create the window bool rockboxDeInstallDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { if (!wxDialog::Create( parent, id, caption, pos, size, style )) return false; CreateControls(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); return true; } // tranver data from the controls bool rockboxDeInstallDlg::TransferDataFromWindow() { gv->curdestdir = m_devicepos->getDevicePos(); if(!wxDirExists(gv->curdestdir)) { WARN_DIALOG(wxT("The Devicepostion is not valid"), wxT("Select a Deviceposition")); gv->curdestdir = wxT(""); return false; } wxCheckBox* fullchkbx = (wxCheckBox*) FindWindow(ID_FULL_CHCKBX); gv->curisfull = fullchkbx->IsChecked(); return true; } // tranver data to the controls bool rockboxDeInstallDlg::TransferDataToWindow() { m_devicepos->setDefault(); return true; } //////////////////////////////////////////////// //// Themes Installation ///////////////////////////////////////////////// IMPLEMENT_CLASS( themesInstallDlg, wxDialog ) BEGIN_EVENT_TABLE( themesInstallDlg, wxDialog ) END_EVENT_TABLE() themesInstallDlg::themesInstallDlg( ) { } themesInstallDlg::themesInstallDlg( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { Create(parent, id, caption, pos, size, style); } void themesInstallDlg::CreateControls() { // A top-level sizer wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL); this->SetSizer(topSizer); wxBoxSizer* topHoriSizer = new wxBoxSizer(wxHORIZONTAL); topSizer->Add(topHoriSizer, 0, wxALIGN_LEFT|wxALL, 5); // bitmap wxBitmap sidebmp(wizard_xpm); ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY); sideimage->SetBitmap(sidebmp); topHoriSizer->Add(sideimage,0,wxALIGN_LEFT | wxALL,5); wxBoxSizer* mainVertiSizer = new wxBoxSizer(wxVERTICAL); topHoriSizer->Add(mainVertiSizer, 0, wxGROW|wxALL, 5); wxBoxSizer* wxBoxSizer4 = new wxBoxSizer(wxHORIZONTAL); mainVertiSizer->Add(wxBoxSizer4, 0, wxGROW|wxALL, 0); wxBoxSizer* wxBoxSizer5 = new wxBoxSizer(wxVERTICAL); wxBoxSizer4->Add(wxBoxSizer5, 0, wxGROW|wxALL, 0); m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS); wxBoxSizer5->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5); m_theme = new ThemeCtrl(this,ID_THEME); wxBoxSizer5->Add(m_theme, 0, wxALIGN_LEFT|wxALL, 5); // controls at the bottom OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY); topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); } // create the window bool themesInstallDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { if (!wxDialog::Create( parent, id, caption, pos, size, style )) return false; CreateControls(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); return true; } // tranver data from the controls bool themesInstallDlg::TransferDataFromWindow() { gv->curdestdir = m_devicepos->getDevicePos(); if(!wxDirExists(gv->curdestdir)) { WARN_DIALOG(wxT("The Devicepostion is not valid"), wxT("Select a Deviceposition")); gv->curdestdir = wxT(""); return false; } gv->themesToInstall.Clear(); gv->themesToInstall = m_theme->getThemesToInstall(); if(gv->themesToInstall.GetCount() == 0) { WARN_DIALOG(wxT("You have not selected a Theme to Install"), wxT("Select a Theme")); return false; } return true; } // tranver data to the controls bool themesInstallDlg::TransferDataToWindow() { if(gv->curplat == wxT("")) { WARN_DIALOG(wxT("You have not selected a audio device"), wxT("Select a Device")); return false; } m_devicepos->setDefault(); m_theme->setDevice(gv->curplat); return true; } //////////////////////////////////////////////// //// Rockbox Installation ///////////////////////////////////////////////// IMPLEMENT_CLASS( rockboxInstallDlg, wxDialog ) BEGIN_EVENT_TABLE( rockboxInstallDlg, wxDialog ) EVT_RADIOBOX(ID_BUILD_BOX, rockboxInstallDlg::OnBuildBox) END_EVENT_TABLE() rockboxInstallDlg::rockboxInstallDlg( ) { } rockboxInstallDlg::rockboxInstallDlg( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { Create(parent, id, caption, pos, size, style); } void rockboxInstallDlg::CreateControls() { // A top-level sizer wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL); this->SetSizer(topSizer); wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5); // bitmap wxBitmap sidebmp(wizard_xpm); ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY); sideimage->SetBitmap(sidebmp); wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5); wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL); wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5); m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS); wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5); // Build information wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY, wxT("Please select the Rockbox version you would like " "to install on your audio\ndevice:")); wxBoxSizer3->Add(WxStaticText1,0,wxGROW | wxALL,5); wxArrayString array; array.Add(wxT("Rockbox stable version (") + gv->last_release + wxT(")")); array.Add(wxT("Archived Build")); array.Add(wxT("Current Build ")); wxRadioBox* BuildRadioBox = new wxRadioBox(this, ID_BUILD_BOX, wxT("Version"), wxDefaultPosition, wxDefaultSize, array, 0, wxRA_SPECIFY_ROWS); wxBoxSizer3->Add(BuildRadioBox, 0, wxGROW | wxALL, 5); wxStaticBox* WxStaticBox1 = new wxStaticBox(this, wxID_ANY, wxT("Details:")); wxStaticBoxSizer* WxStaticBoxSizer2 = new wxStaticBoxSizer(WxStaticBox1, wxVERTICAL); wxStaticText* DetailText = new wxStaticText(this, ID_DETAIL_TXT, wxT("")); wxBoxSizer3->Add(WxStaticBoxSizer2, 1, wxGROW | wxALL, 5); WxStaticBoxSizer2->Add(DetailText, 1, wxGROW | wxALL, 5); wxStaticText* WxStaticText2 = new wxStaticText(this, wxID_ANY, wxT("Rockbox Utility stores copies of Rockbox it has downloaded on the\n" "local hard disk to save network traffic. If your local copy is\n" "no longer working, tick this box to download a fresh copy.") ); wxBoxSizer3->Add(WxStaticText2, 0 , wxALL, 5); wxCheckBox* NoCacheCheckBox = new wxCheckBox(this, ID_NOCACHE_CHCKBX, wxT("Don't use locally cached copies of Rockbox") ); wxBoxSizer3->Add(NoCacheCheckBox, 0, wxALL, 5); // controls at the bottom OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY); topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); } // create the window bool rockboxInstallDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { if (!wxDialog::Create( parent, id, caption, pos, size, style )) return false; CreateControls(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); return true; } void rockboxInstallDlg::OnBuildBox(wxCommandEvent& event) { wxString str; wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX); wxCheckBox* NoCacheCheckBox = (wxCheckBox*) FindWindow(ID_NOCACHE_CHCKBX); wxStaticText* DetailText = (wxStaticText*)FindWindow(ID_DETAIL_TXT); switch(BuildRadioBox->GetSelection() ) { case BUILD_RELEASE: str = _("This is the last released version of Rockbox, and is the\n" "recommended version to install."); NoCacheCheckBox->Enable(); break; case BUILD_DAILY: str = _("These are automatically built each day from the current\n" "development source code. This generally has more features\n" "than the last release but may be much less stable. Features\n" "may change regularly."); NoCacheCheckBox->Enable(); break; case BUILD_BLEEDING: str = _("This is the absolute up to the minute Rockbox built after\n" "the last change was made.\n\n" "Note: This option will always download a fresh copy from the\n" "web server.\n"); NoCacheCheckBox->Enable(false); break; default: break; } DetailText->SetLabel(str); this->GetSizer()->Layout(); this->GetSizer()->Fit(this); this->GetSizer()->SetSizeHints(this); Refresh(); } // tranver data from the controls bool rockboxInstallDlg::TransferDataFromWindow() { wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX); wxCheckBox* NoCacheCheckBox = (wxCheckBox*) FindWindow(ID_NOCACHE_CHCKBX); gv->curdestdir = m_devicepos->getDevicePos(); if(!wxDirExists(gv->curdestdir)) { WARN_DIALOG(wxT("The Devicepostion is not valid"), wxT("Select a Deviceposition")); gv->curdestdir = wxT(""); return false; } gv->curbuild = BuildRadioBox->GetSelection(); gv->nocache = (gv->curbuild == BUILD_BLEEDING) ? true : NoCacheCheckBox->IsChecked(); return true; } // tranver data to the controls bool rockboxInstallDlg::TransferDataToWindow() { m_devicepos->setDefault(); if(gv->curplat == wxT("")) { WARN_DIALOG(wxT("You have not selected a audio device"), wxT("Select a Device")); return false; } wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX); int index =gv->plat_id.Index(gv->curplat); wxCommandEvent updateradiobox(wxEVT_COMMAND_RADIOBOX_SELECTED, ID_BUILD_BOX); if (gv->plat_released[index] ) { BuildRadioBox->Enable(BUILD_RELEASE, true); BuildRadioBox->SetSelection(BUILD_RELEASE); } else { BuildRadioBox->Enable(BUILD_RELEASE, false); BuildRadioBox->SetSelection(BUILD_BLEEDING); } wxPostEvent(this, updateradiobox); return true; }