convert the last of the menus in text_editor to the new api
[Rockbox.git] / rbutil / install_dialogs.cpp
blobb7607fa4d94738ca6dbc6eec7bfadf6191348949
2 #include "install_dialogs.h"
3 #include "wizard.xpm"
7 ////////////////////////////////////////////////
8 //// Bootloader Installation
9 /////////////////////////////////////////////////
11 IMPLEMENT_CLASS( bootloaderInstallDlg, wxDialog )
13 BEGIN_EVENT_TABLE( bootloaderInstallDlg, wxDialog )
15 END_EVENT_TABLE()
17 bootloaderInstallDlg::bootloaderInstallDlg( )
19 Init();
22 bootloaderInstallDlg::bootloaderInstallDlg( wxWindow* parent,
23 wxWindowID id, const wxString& caption,
24 const wxPoint& pos, const wxSize& size, long style )
26 Init();
27 Create(parent, id, caption, pos, size, style);
30 void bootloaderInstallDlg::CreateControls()
32 // A top-level sizer
33 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
34 this->SetSizer(topSizer);
36 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
37 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
39 // bitmap
40 wxBitmap sidebmp(wizard_xpm);
41 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
42 sideimage->SetBitmap(sidebmp);
43 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
45 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
46 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
48 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
49 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
51 m_firmwarepos = new FirmwarePositionCtrl(this,ID_FIRMWARE);
52 wxBoxSizer3->Add(m_firmwarepos, 0, wxALIGN_LEFT|wxALL, 5);
54 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
55 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
59 //init the local variables
60 void bootloaderInstallDlg::Init()
65 // create the window
66 bool bootloaderInstallDlg::Create( wxWindow* parent,
67 wxWindowID id, const wxString& caption,
68 const wxPoint& pos, const wxSize& size, long style )
71 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
72 return false;
73 CreateControls();
74 GetSizer()->Fit(this);
75 GetSizer()->SetSizeHints(this);
76 Centre();
77 return true;
82 // tranver data from the controls
83 bool bootloaderInstallDlg::TransferDataFromWindow()
86 if( m_devicepos->IsShown())
88 gv->curdestdir = m_devicepos->getDevicePos();
89 if(!wxDirExists(gv->curdestdir))
91 WARN_DIALOG(wxT("The Devicepostion is not valid"),
92 wxT("Select a Deviceposition"));
93 gv->curdestdir = wxT("");
94 return false;
98 if(m_firmwarepos->IsShown())
100 gv->curfirmware = m_firmwarepos->getFirmwarePos();
101 if(!wxFileExists(gv->curfirmware))
103 WARN_DIALOG(wxT("The Firmware position is not valid"),
104 wxT("Select a original Firmware"));
105 gv->curfirmware = wxT("");
106 return false;
110 return true;
114 // tranver data to the controls
115 bool bootloaderInstallDlg::TransferDataToWindow()
117 if(gv->curplat == wxT(""))
119 WARN_DIALOG(wxT("You have not selected a audio device"),
120 wxT("Select a Device"));
121 return false;
123 int index = gv->plat_id.Index(gv->curplat);
125 if(!gv->plat_needsbootloader[index])
127 WARN_DIALOG(wxT("This Device doesnt need a Bootloader"),
128 wxT("Bootloader"));
129 return false;
132 if(gv->plat_bootloadermethod[index] != wxT("ipodpatcher") && gv->plat_bootloadermethod[index] != wxT("sansapatcher"))
134 m_devicepos->Show(true);
135 }else
137 m_devicepos->Show(false);
139 if(gv->plat_bootloadermethod[index] == wxT("fwpatcher"))
141 m_firmwarepos->Show(true);
142 }else
144 m_firmwarepos->Show(false);
147 m_devicepos->setDefault();
148 m_firmwarepos->setDefault();
149 return true;
153 ////////////////////////////////////////////////
154 //// Font Installation
155 /////////////////////////////////////////////////
158 IMPLEMENT_CLASS( fontInstallDlg, wxDialog )
160 BEGIN_EVENT_TABLE( fontInstallDlg, wxDialog )
162 END_EVENT_TABLE()
164 fontInstallDlg::fontInstallDlg( )
166 Init();
169 fontInstallDlg::fontInstallDlg( wxWindow* parent,
170 wxWindowID id, const wxString& caption,
171 const wxPoint& pos, const wxSize& size, long style )
173 Init();
174 Create(parent, id, caption, pos, size, style);
177 void fontInstallDlg::CreateControls()
179 // A top-level sizer
180 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
181 this->SetSizer(topSizer);
183 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
184 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
186 // bitmap
187 wxBitmap sidebmp(wizard_xpm);
189 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
190 sideimage->SetBitmap(sidebmp);
191 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
193 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
194 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
196 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
197 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
200 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
201 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
203 // controls at the bottom
204 wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL);
205 topSizer->Add(wxBoxSizer7, 0, wxGROW | wxALL, 5);
209 //init the local variables
210 void fontInstallDlg::Init()
215 // create the window
216 bool fontInstallDlg::Create( wxWindow* parent,
217 wxWindowID id, const wxString& caption,
218 const wxPoint& pos, const wxSize& size, long style )
221 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
222 return false;
223 CreateControls();
224 GetSizer()->Fit(this);
225 GetSizer()->SetSizeHints(this);
226 Centre();
227 return true;
231 // tranver data from the controls
232 bool fontInstallDlg::TransferDataFromWindow()
234 gv->curdestdir = m_devicepos->getDevicePos();
235 if(!wxDirExists(gv->curdestdir))
237 WARN_DIALOG(wxT("The Devicepostion is not valid"),
238 wxT("Select a Deviceposition"));
239 gv->curdestdir = wxT("");
240 return false;
243 return true;
246 // tranver data to the controls
247 bool fontInstallDlg::TransferDataToWindow()
249 m_devicepos->setDefault();
250 return true;
253 ////////////////////////////////////////////////
254 //// Rockbox DeInstallation
255 /////////////////////////////////////////////////
257 IMPLEMENT_CLASS( rockboxDeInstallDlg, wxDialog )
259 BEGIN_EVENT_TABLE( rockboxDeInstallDlg, wxDialog )
261 END_EVENT_TABLE()
263 rockboxDeInstallDlg::rockboxDeInstallDlg( )
265 Init();
268 rockboxDeInstallDlg::rockboxDeInstallDlg( wxWindow* parent,
269 wxWindowID id, const wxString& caption,
270 const wxPoint& pos, const wxSize& size, long style )
272 Init();
273 Create(parent, id, caption, pos, size, style);
276 void rockboxDeInstallDlg::CreateControls()
278 // A top-level sizer
279 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
280 this->SetSizer(topSizer);
282 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
283 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
285 // bitmap
286 wxBitmap sidebmp(wizard_xpm);
288 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
289 sideimage->SetBitmap(sidebmp);
290 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
292 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
293 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
295 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
296 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
298 // Full deinstallation ?
299 wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY,
300 wxT("Rockbox Utility normally uninstalls Rockbox using an uninstall\n"
301 "file created during installation. This means that when Rockbox is\n"
302 "uninstalled all your configuration files are preserved. However,\n"
303 "you can also perform a full uninstall, which will completely\n"
304 "remove all traces of Rockbox from your system, and can be used\n"
305 "even if Rockbox was previously installed manually."));
306 wxBoxSizer3->Add(WxStaticText1,0,wxGROW | wxALL,5);
308 wxCheckBox* FullCheckBox = new wxCheckBox(this, ID_FULL_CHCKBX,
309 wxT("Perform a full uninstall"));
310 wxBoxSizer3->Add(FullCheckBox, 0, wxALL, 5);
312 // controls at the bottom
313 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
314 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
318 //init the local variables
319 void rockboxDeInstallDlg::Init()
324 // create the window
325 bool rockboxDeInstallDlg::Create( wxWindow* parent,
326 wxWindowID id, const wxString& caption,
327 const wxPoint& pos, const wxSize& size, long style )
329 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
330 return false;
331 CreateControls();
332 GetSizer()->Fit(this);
333 GetSizer()->SetSizeHints(this);
334 Centre();
335 return true;
339 // tranver data from the controls
340 bool rockboxDeInstallDlg::TransferDataFromWindow()
343 gv->curdestdir = m_devicepos->getDevicePos();
344 if(!wxDirExists(gv->curdestdir))
346 WARN_DIALOG(wxT("The Devicepostion is not valid"),
347 wxT("Select a Deviceposition"));
348 gv->curdestdir = wxT("");
349 return false;
352 wxCheckBox* fullchkbx = (wxCheckBox*) FindWindow(ID_FULL_CHCKBX);
353 gv->curisfull = fullchkbx->IsChecked();
355 return true;
358 // tranver data to the controls
359 bool rockboxDeInstallDlg::TransferDataToWindow()
361 m_devicepos->setDefault();
362 return true;
365 ////////////////////////////////////////////////
366 //// Themes Installation
367 /////////////////////////////////////////////////
369 IMPLEMENT_CLASS( themesInstallDlg, wxDialog )
371 BEGIN_EVENT_TABLE( themesInstallDlg, wxDialog )
373 END_EVENT_TABLE()
375 themesInstallDlg::themesInstallDlg( )
380 themesInstallDlg::themesInstallDlg( wxWindow* parent,
381 wxWindowID id, const wxString& caption,
382 const wxPoint& pos, const wxSize& size, long style )
384 Create(parent, id, caption, pos, size, style);
387 void themesInstallDlg::CreateControls()
389 // A top-level sizer
390 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
391 this->SetSizer(topSizer);
393 wxBoxSizer* topHoriSizer = new wxBoxSizer(wxHORIZONTAL);
394 topSizer->Add(topHoriSizer, 0, wxALIGN_LEFT|wxALL, 5);
396 // bitmap
397 wxBitmap sidebmp(wizard_xpm);
399 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
400 sideimage->SetBitmap(sidebmp);
401 topHoriSizer->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
403 wxBoxSizer* mainVertiSizer = new wxBoxSizer(wxVERTICAL);
404 topHoriSizer->Add(mainVertiSizer, 0, wxGROW|wxALL, 5);
406 wxBoxSizer* wxBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
407 mainVertiSizer->Add(wxBoxSizer4, 0, wxGROW|wxALL, 0);
409 wxBoxSizer* wxBoxSizer5 = new wxBoxSizer(wxVERTICAL);
410 wxBoxSizer4->Add(wxBoxSizer5, 0, wxGROW|wxALL, 0);
412 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
413 wxBoxSizer5->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
415 m_theme = new ThemeCtrl(this,ID_THEME);
416 wxBoxSizer5->Add(m_theme, 0, wxALIGN_LEFT|wxALL, 5);
418 // controls at the bottom
419 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
420 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
426 // create the window
427 bool themesInstallDlg::Create( wxWindow* parent,
428 wxWindowID id, const wxString& caption,
429 const wxPoint& pos, const wxSize& size, long style )
432 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
433 return false;
434 CreateControls();
435 GetSizer()->Fit(this);
436 GetSizer()->SetSizeHints(this);
437 Centre();
438 return true;
442 // tranver data from the controls
443 bool themesInstallDlg::TransferDataFromWindow()
446 gv->curdestdir = m_devicepos->getDevicePos();
447 if(!wxDirExists(gv->curdestdir))
449 WARN_DIALOG(wxT("The Devicepostion is not valid"),
450 wxT("Select a Deviceposition"));
451 gv->curdestdir = wxT("");
452 return false;
455 gv->themesToInstall.Clear();
456 gv->themesToInstall = m_theme->getThemesToInstall();
458 if(gv->themesToInstall.GetCount() == 0)
460 WARN_DIALOG(wxT("You have not selected a Theme to Install"), wxT("Select a Theme"));
461 return false;
464 return true;
467 // tranver data to the controls
468 bool themesInstallDlg::TransferDataToWindow()
470 if(gv->curplat == wxT(""))
472 WARN_DIALOG(wxT("You have not selected a audio device"),
473 wxT("Select a Device"));
474 return false;
477 m_devicepos->setDefault();
478 m_theme->setDevice(gv->curplat);
479 return true;
481 ////////////////////////////////////////////////
482 //// Rockbox Installation
483 /////////////////////////////////////////////////
485 IMPLEMENT_CLASS( rockboxInstallDlg, wxDialog )
487 BEGIN_EVENT_TABLE( rockboxInstallDlg, wxDialog )
488 EVT_RADIOBOX(ID_BUILD_BOX, rockboxInstallDlg::OnBuildBox)
489 END_EVENT_TABLE()
491 rockboxInstallDlg::rockboxInstallDlg( )
495 rockboxInstallDlg::rockboxInstallDlg( wxWindow* parent,
496 wxWindowID id, const wxString& caption,
497 const wxPoint& pos, const wxSize& size, long style )
499 Create(parent, id, caption, pos, size, style);
502 void rockboxInstallDlg::CreateControls()
504 // A top-level sizer
505 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
506 this->SetSizer(topSizer);
508 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
509 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
511 // bitmap
512 wxBitmap sidebmp(wizard_xpm);
514 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
515 sideimage->SetBitmap(sidebmp);
516 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
518 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
519 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
521 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
522 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
524 // Build information
525 wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY,
526 wxT("Please select the Rockbox version you would like "
527 "to install on your audio\ndevice:"));
528 wxBoxSizer3->Add(WxStaticText1,0,wxGROW | wxALL,5);
530 wxArrayString array;
531 array.Add(wxT("Rockbox stable version (") + gv->last_release + wxT(")"));
532 array.Add(wxT("Archived Build"));
533 array.Add(wxT("Current Build "));
535 wxRadioBox* BuildRadioBox = new wxRadioBox(this, ID_BUILD_BOX, wxT("Version"),
536 wxDefaultPosition, wxDefaultSize, array, 0, wxRA_SPECIFY_ROWS);
537 wxBoxSizer3->Add(BuildRadioBox, 0, wxGROW | wxALL, 5);
539 wxStaticBox* WxStaticBox1 = new wxStaticBox(this, wxID_ANY, wxT("Details:"));
540 wxStaticBoxSizer* WxStaticBoxSizer2 = new wxStaticBoxSizer(WxStaticBox1,
541 wxVERTICAL);
542 wxStaticText* DetailText = new wxStaticText(this, ID_DETAIL_TXT, wxT(""));
543 wxBoxSizer3->Add(WxStaticBoxSizer2, 1, wxGROW | wxALL, 5);
544 WxStaticBoxSizer2->Add(DetailText, 1, wxGROW | wxALL, 5);
546 wxStaticText* WxStaticText2 = new wxStaticText(this, wxID_ANY,
547 wxT("Rockbox Utility stores copies of Rockbox it has downloaded on the\n"
548 "local hard disk to save network traffic. If your local copy is\n"
549 "no longer working, tick this box to download a fresh copy.") );
550 wxBoxSizer3->Add(WxStaticText2, 0 , wxALL, 5);
552 wxCheckBox* NoCacheCheckBox = new wxCheckBox(this, ID_NOCACHE_CHCKBX,
553 wxT("Don't use locally cached copies of Rockbox") );
554 wxBoxSizer3->Add(NoCacheCheckBox, 0, wxALL, 5);
555 // controls at the bottom
556 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
557 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
561 // create the window
562 bool rockboxInstallDlg::Create( wxWindow* parent,
563 wxWindowID id, const wxString& caption,
564 const wxPoint& pos, const wxSize& size, long style )
567 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
568 return false;
569 CreateControls();
570 GetSizer()->Fit(this);
571 GetSizer()->SetSizeHints(this);
572 Centre();
573 return true;
576 void rockboxInstallDlg::OnBuildBox(wxCommandEvent& event)
578 wxString str;
579 wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
580 wxCheckBox* NoCacheCheckBox = (wxCheckBox*) FindWindow(ID_NOCACHE_CHCKBX);
581 wxStaticText* DetailText = (wxStaticText*)FindWindow(ID_DETAIL_TXT);
583 switch(BuildRadioBox->GetSelection() )
585 case BUILD_RELEASE:
586 str = _("This is the last released version of Rockbox, and is the\n"
587 "recommended version to install.");
588 NoCacheCheckBox->Enable();
589 break;
590 case BUILD_DAILY:
591 str = _("These are automatically built each day from the current\n"
592 "development source code. This generally has more features\n"
593 "than the last release but may be much less stable. Features\n"
594 "may change regularly.");
595 NoCacheCheckBox->Enable();
596 break;
597 case BUILD_BLEEDING:
598 str = _("This is the absolute up to the minute Rockbox built after\n"
599 "the last change was made.\n\n"
600 "Note: This option will always download a fresh copy from the\n"
601 "web server.\n");
602 NoCacheCheckBox->Enable(false);
603 break;
604 default:
605 break;
608 DetailText->SetLabel(str);
610 this->GetSizer()->Layout();
611 this->GetSizer()->Fit(this);
612 this->GetSizer()->SetSizeHints(this);
613 Refresh();
617 // tranver data from the controls
618 bool rockboxInstallDlg::TransferDataFromWindow()
620 wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
621 wxCheckBox* NoCacheCheckBox = (wxCheckBox*) FindWindow(ID_NOCACHE_CHCKBX);
623 gv->curdestdir = m_devicepos->getDevicePos();
624 if(!wxDirExists(gv->curdestdir))
626 WARN_DIALOG(wxT("The Devicepostion is not valid"),
627 wxT("Select a Deviceposition"));
628 gv->curdestdir = wxT("");
629 return false;
632 gv->curbuild = BuildRadioBox->GetSelection();
633 gv->nocache = (gv->curbuild == BUILD_BLEEDING) ? true :
634 NoCacheCheckBox->IsChecked();
636 return true;
639 // tranver data to the controls
640 bool rockboxInstallDlg::TransferDataToWindow()
642 m_devicepos->setDefault();
644 if(gv->curplat == wxT(""))
646 WARN_DIALOG(wxT("You have not selected a audio device"),
647 wxT("Select a Device"));
648 return false;
651 wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
653 int index =gv->plat_id.Index(gv->curplat);
655 wxCommandEvent updateradiobox(wxEVT_COMMAND_RADIOBOX_SELECTED,
656 ID_BUILD_BOX);
658 if (gv->plat_released[index] )
660 BuildRadioBox->Enable(BUILD_RELEASE, true);
661 BuildRadioBox->SetSelection(BUILD_RELEASE);
662 } else {
663 BuildRadioBox->Enable(BUILD_RELEASE, false);
664 BuildRadioBox->SetSelection(BUILD_BLEEDING);
667 wxPostEvent(this, updateradiobox);
668 return true;