int CConnectionSettingsAdvanced::DoModal(CConnectionSettings *pConnSettings) { int nRetVal; ASSERT(pConnSettings); if(pConnSettings == NULL) return IDCANCEL; m_pConnSettings = pConnSettings; SetAppTitle(m_pConnSettings->GetName()); SetAppFileName(m_pConnSettings->GetAppFileName()); SetTimeOut(m_pConnSettings->GetTimeOut()); SetFirstCheck(m_pConnSettings->GetFirstCheck()); m_bUsesDialup = m_pConnSettings->WatchForDialup(); m_bRestoreAutodial = m_pConnSettings->RestoreAutodial(); nRetVal = CDialog::DoModal(); if(nRetVal == IDOK) { m_pConnSettings->SetTimeOut(GetTimeOut()); m_pConnSettings->SetFirstCheck(GetFirstCheck()); m_pConnSettings->SetName(GetAppTitle()); m_pConnSettings->SetAppFileName(GetAppFileName()); m_pConnSettings->SetWatchForDialup(m_bUsesDialup); m_pConnSettings->SetRestoreAutodial(m_bRestoreAutodial); m_pConnSettings->SaveSettings(); } return nRetVal; }
void OnNewProject(ConstructorApp& app, bool on_startup) { bool is_pal = Prefs().isPAL; Gtk::Dialog new_prj_dlg(_("New Project"), app.win, true, true); new_prj_dlg.set_name("NewProject"); new_prj_dlg.set_resizable(false); Gtk::VBox& dlg_box = *new_prj_dlg.get_vbox(); PackStart(dlg_box, NewManaged<Gtk::Image>(DataDirPath("cap400.png"))); Gtk::VBox& vbox = Add(PackStart(dlg_box, NewPaddingAlg(10, 40, 20, 20)), NewManaged<Gtk::VBox>()); PackStart(vbox, NewManaged<Gtk::Label>(_("Please select a Television standard for your project:"), 0.0, 0.5, true)); { Gtk::VBox& vbox2 = Add(PackStart(vbox, NewPaddingAlg(10, 10, 0, 0)), NewManaged<Gtk::VBox>()); Gtk::RadioButtonGroup grp; PackStart(vbox2, TVSelectionButton(is_pal, true, grp)); PackStart(vbox2, TVSelectionButton(is_pal, false, grp)); } Gtk::CheckButton r_btn(_("Remember my choice")); if( on_startup ) { // :TRICKY: в отличие от GtkAssistant, action_area в диалоге - // GtkButtonBox, который все свои виджеты делает одинаковыми, // не смотря на опции shrink, fill, padding (т.е. GtkButtonBox // заведомо хуже GtkBox в плане гибкости) //PackStart(*new_prj_dlg.get_action_area(), r_btn); PackStart(vbox, r_btn); new_prj_dlg.add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK); } else AddCancelOKButtons(new_prj_dlg); dlg_box.show_all(); if( Gtk::RESPONSE_OK == new_prj_dlg.run() ) { NewProject(); AData().SetPalTvSystem(is_pal); SetAppTitle(); if( on_startup && r_btn.get_active() ) { Prefs().isPAL = is_pal; // :TRICKY: если будут запросы обратно в false вернуть, то // добавим "очищающую" кнопку PackCompositeWdgButton() в диалог настроек Prefs().remMyTVChoice = true; SavePrefs(); } } }
void LoadApp(const std::string& fname) { LoadProjectInteractive(ConvertPathToUtf8(fname)); AStores& as = GetAStores(); ADatabase& db = AData(); PublishMediaStore(as.mdStore); PublishMenuStore(as.mnStore, db.GetMN()); UpdateDVDSize(); db.SetOut(true); SetAppTitle(); }
static void SaveProject() { ASSERT( AData().IsProjectSet() ); AStores& as = GetAStores(); RefPtr<MenuStore> mn_store = as.mnStore; SaveProjectData(mn_store, as.mdStore); // очистка после сохранения AData().SetOut(true); for( MenuStore::iterator itr = mn_store->children().begin(), end = mn_store->children().end(); itr != end; ++itr ) ClearMenuSavedData(GetMenu(mn_store, itr)); SetAppTitle(); }