bool MusikPrefsDialog::SavePrefs() { wxTreeItemId root = tcPreferencesTree->GetRootItem(); if(root.IsOk()) return SavePrefs(root); return true; }
void CGameDialog::DoGameDialog(){ // show the UI DoModal(); // we save the prefs file SavePrefs(); }
/*----------------------------------------------------------------------------------------------------------------------*/ void SaveAsS(GtkWidget *W,gpointer Unused) { GtkWidget *Label,*But,*Win; char Str[MAX_FNAME_LENGTH+20]; if (strlen(FileX->Path)+strlen(FileX->TargetFile)+1>MAX_FNAME_LENGTH) { Attention(0,"ERROR: MAX_FNAME_LENGTH exceeded"); return; } sprintf(Setup.FName,"%s/%s",FileX->Path,FileX->TargetFile); strcpy(SetupDir,FileX->Path); SavePrefs(); //Store path g_free(FileX); if (access(Setup.FName,0)==0) { Win=gtk_dialog_new(); gtk_grab_add(Win); gtk_signal_connect_object(GTK_OBJECT(Win),"destroy",GTK_SIGNAL_FUNC(gtk_widget_destroy),GTK_OBJECT(Win)); gtk_window_set_title(GTK_WINDOW(Win),"Overwrite?"); gtk_container_border_width(GTK_CONTAINER(Win),5); sprintf(Str,"Overwrite %s?",Setup.FName); Label=gtk_label_new(Str); gtk_misc_set_padding(GTK_MISC(Label),10,10); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(Win)->vbox),Label,TRUE,TRUE,0); But=gtk_button_new_with_label("Yes"); gtk_signal_connect(GTK_OBJECT(But),"clicked",GTK_SIGNAL_FUNC(YesOverwrite),Win); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(Win)->action_area),But,TRUE,TRUE,0); But=gtk_button_new_with_label("No"); gtk_signal_connect_object(GTK_OBJECT(But),"clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),GTK_OBJECT(Win)); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(Win)->action_area),But,TRUE,TRUE,0); gtk_widget_show_all(Win); } else Save(0); }
/* Save preferences, close forms, close app database */ static void StopApplication(void) { SavePrefs(); EQDrain(); FrmSaveAllForms(); FrmCloseAllForms(); }
static int Filter_OK(GGadget *g, GEvent *e) { struct filter_d *d; struct matrix_data *md; int rows,i,cnt; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { if ( user_font_filters!=NULL ) { for ( i=0; user_font_filters[i].name!=NULL; ++i ) { free(user_font_filters[i].name); free(user_font_filters[i].filter); } free(user_font_filters); user_font_filters = NULL; } d = GDrawGetUserData(GGadgetGetWindow(g)); md = GMatrixEditGet(d->gme,&rows); for ( i=cnt=0; i<rows; ++i ) if ( !md[2*i].frozen ) ++cnt; if ( cnt!=0 ) { user_font_filters = malloc((cnt+1)*sizeof(struct openfilefilters)); for ( i=cnt=0; i<rows; ++i ) if ( !md[2*i].frozen ) { user_font_filters[cnt].name = copy(md[2*i].u.md_str); user_font_filters[cnt].filter = copy(md[2*i+1].u.md_str); ++cnt; } user_font_filters[cnt].name = user_font_filters[cnt].filter = NULL; } SavePrefs(true); d->done = true; } return( true ); }
void CPrefsDlg::SetGamePrefs() { if (strstr(m_strWhatGame, "Quake3") != NULL) { m_bHiColorTextures = TRUE; m_bWideToolbar = TRUE; m_strPAKFile = "PK3 files are loaded from the baseq3 path"; m_bInternalBSP = FALSE; if (GetSafeHwnd()) { GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(FALSE); GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(FALSE); } } else { m_bHiColorTextures = FALSE; m_bWideToolbar = FALSE; m_strPAKFile = PAKFILE_DEF; if (GetSafeHwnd()) { GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(TRUE); GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(TRUE); GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(TRUE); } } SavePrefs(); }
void ConfigureControllers () { int quit = 0; int ret = 0; int oldmenu = menu; menu = 0; // disable unavailable controller options if in GC mode #ifndef HW_RVL ctlrmenu[0][0] = 0; ctlrmenu[1][0] = 0; ctlrmenu[2][0] = 0; #endif while (quit == 0) { /*** Controller Config Menu ***/ ret = RunMenu (ctlrmenu, ctlrmenucount, (char*)"Configure Controllers"); switch (ret) { case 0: /*** Configure Nunchuk ***/ ConfigureButtons (CTRLR_NUNCHUK); break; case 1: /*** Configure Classic ***/ ConfigureButtons (CTRLR_CLASSIC); break; case 2: /*** Configure Wiimote ***/ ConfigureButtons (CTRLR_WIIMOTE); break; case 3: /*** Configure GC Pad ***/ ConfigureButtons (CTRLR_GCPAD); break; case 4: /*** Save Preferences Now ***/ SavePrefs(GCSettings.SaveMethod, NOTSILENT); break; case -1: /*** Button B ***/ case 5: /*** Return ***/ quit = 1; break; } } menu = oldmenu; }
static int NOUI_SetPrefs(char *name,Val *val1, Val *val2) { int i,j; for ( i=0; prefs_list[i]!=NULL; ++i ) for ( j=0; prefs_list[i][j].name!=NULL; ++j ) { if ( strcmp(prefs_list[i][j].name,name)==0 ) { struct prefs_list *pf = &prefs_list[i][j]; if ( pf->type == pr_bool || pf->type == pr_int || pf->type == pr_unicode ) { if ( (val1->type!=v_int && val1->type!=v_unicode) || val2!=NULL ) return( -1 ); *((int *) (pf->val)) = val1->u.ival; } else if ( pf->type == pr_real ) { if ( val1->type==v_real && val2==NULL ) *((float *) (pf->val)) = val1->u.fval; else if ( val1->type!=v_int || (val2!=NULL && val2->type!=v_int )) return( -1 ); else *((float *) (pf->val)) = (val2==NULL ? val1->u.ival : val1->u.ival / (double) val2->u.ival); } else if ( pf->type == pr_string || pf->type == pr_file ) { if ( val1->type!=v_str || val2!=NULL ) return( -1 ); if ( pf->set ) { pf->set( val1->u.sval ); } else { free( *((char **) (pf->val))); *((char **) (pf->val)) = copy( val1->u.sval ); } } else if ( pf->type == pr_encoding ) { if ( val2!=NULL ) return( -1 ); else if ( val1->type==v_str && pf->val == &default_encoding) { Encoding *enc = FindOrMakeEncoding(val1->u.sval); if ( enc==NULL ) return( -1 ); *((Encoding **) (pf->val)) = enc; } else return( -1 ); } else if ( pf->type == pr_namelist ) { if ( val2!=NULL ) return( -1 ); else if ( val1->type==v_str ) { NameList *nl = NameListByName(val1->u.sval); if ( strcmp(val1->u.sval,"NULL")==0 && pf->val != &namelist_for_new_fonts ) nl = NULL; else if ( nl==NULL ) return( -1 ); *((NameList **) (pf->val)) = nl; } else return( -1 ); } else return( false ); SavePrefs(true); return( true ); } } return( false ); }
void MusikPrefsDialog::Close( bool bCancel ) { if ( !bCancel ) if(!SavePrefs()) return; g_MusikFrame->Enable( TRUE ); this->Destroy(); }
/*----------------------------------------------------------------------------------------------------------------------*/ void ReadS(GtkWidget *W,gpointer Unused) { gchar ErrMessg[200]; if (strlen(FileX->Path)+strlen(FileX->TargetFile)+1>MAX_FNAME_LENGTH) { Attention(0,"ERROR: MAX_FNAME_LENGTH exceeded"); return; } sprintf(Setup.FName,"%s/%s",FileX->Path,FileX->TargetFile); strcpy(SetupDir,FileX->Path); SavePrefs(); //Store path g_free(FileX); if (Read(ErrMessg,0)) //Kept all the real work in this function which can be called from a thread outside gtk_main() { Attention(0,ErrMessg); return; } }
void CPrefsDlg::OnOK() { m_nMoveSpeed = m_wndCamSpeed.GetPos(); m_nAngleSpeed = (float)m_nMoveSpeed * 0.50; this->m_nTextureQuality = m_wndTexturequality.GetPos(); SavePrefs(); if (g_pParentWnd) g_pParentWnd->SetGridStatus(); Sys_UpdateWindows(W_ALL); CDialog::OnOK(); }
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(); } } }
ULONG InitPrefs(STRPTR filename, BOOL use, BOOL save) { D(bug("[serial prefs] InitPrefs\n")); mempool = CreatePool(MEMF_PUBLIC | MEMF_CLEAR, 2048, 2048); if (!mempool) { ShowMsg("Out of memory!"); return 0; } if (!LoadPrefs(filename)) { if (!DefaultPrefs()) { CleanupPrefs(); ShowMsg("Panic! Cannot setup default prefs!"); return 0; } } restore_prefs = serialprefs; if (use || save) { SavePrefs((CONST STRPTR) CONFIGNAME_ENV); } if (save) { SavePrefs((CONST STRPTR) CONFIGNAME_ENVARC); } if (use || save) CleanupPrefs(); return 1; }
void LoadPrefs(void) { // Read preferences from settings file FILE *f = fopen(PREFS_FILE_NAME, "r"); if (f != NULL) { // Prefs file found, load settings LoadPrefsFromStream(f); fclose(f); } else { // No prefs file, save defaults SavePrefs(); } }
INT_PTR WinConsole::PrefsDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: LoadPrefs(); SendDlgItemMessage(hwndDlg, IDC_PREF_AUTOSTART, BM_SETCHECK, m_autostart, 0); SendDlgItemMessage(hwndDlg, IDC_PREF_TRAY, BM_SETCHECK, m_showTrayIcon, 0); SendDlgItemMessage(hwndDlg, IDC_PREF_CONSOLE, BM_SETCHECK, m_showConsole, 0); SendDlgItemMessage(hwndDlg, IDC_PREF_WEBUI, BM_SETCHECK, m_showWebUI, 0); SendDlgItemMessage(hwndDlg, IDC_PREF_TRAYPAUSE, BM_SETCHECK, !m_doubleClick, 0); SendDlgItemMessage(hwndDlg, IDC_PREF_TRAYWEBUI, BM_SETCHECK, m_doubleClick, 0); return FALSE; case WM_CLOSE: EndDialog(hwndDlg, 0); return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK) { m_autostart = SendDlgItemMessage(hwndDlg, IDC_PREF_AUTOSTART, BM_GETCHECK, 0, 0) == BST_CHECKED; m_showTrayIcon = SendDlgItemMessage(hwndDlg, IDC_PREF_TRAY, BM_GETCHECK, 0, 0) == BST_CHECKED; m_showConsole = SendDlgItemMessage(hwndDlg, IDC_PREF_CONSOLE, BM_GETCHECK, 0, 0) == BST_CHECKED; m_showWebUI = SendDlgItemMessage(hwndDlg, IDC_PREF_WEBUI, BM_GETCHECK, 0, 0) == BST_CHECKED; m_doubleClick = SendDlgItemMessage(hwndDlg, IDC_PREF_TRAYWEBUI, BM_GETCHECK, 0, 0) == BST_CHECKED; SavePrefs(); if (!m_running) { ApplyPrefs(); } EndDialog(hwndDlg, 0); } else if (LOWORD(wParam) == IDCANCEL) { EndDialog(hwndDlg, 0); } return TRUE; default: return FALSE; } }
static int FtPpem_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { FtSizeData *fsd = GDrawGetUserData(GGadgetGetWindow(g)); int _dpi, _depth; real ptsize, ptsizex; int err = 0; CharView *cv = fsd->cv; ptsize = GetReal8(fsd->gw,CID_PointSize,_("Pointsize Y"),&err); if ( GGadgetIsChecked(GWidgetGetControl(fsd->gw,CID_SameAs)) ) ptsizex = ptsize; else ptsizex = GetReal8(fsd->gw,CID_PointSizeX,_("Pointsize X"),&err); _dpi = GetInt8(fsd->gw,CID_DPI,_("DPI"),&err); _depth = GGadgetIsChecked(GWidgetGetControl(fsd->gw,CID_BW)) ? 1 : 8; if ( err ) return(true); last_fpgm = GGadgetIsChecked(GWidgetGetControl(fsd->gw,CID_Debugfpgm)); cv->ft_pointsizey = ptsize; cv->ft_dpi = _dpi; cv->ft_depth = _depth; cv->ft_pointsizex = ptsizex; cv->ft_ppemy = rint(cv->ft_pointsizey*cv->ft_dpi/72.0); cv->ft_ppemx = rint(cv->ft_pointsizex*cv->ft_dpi/72.0); gridfit_dpi = _dpi; gridfit_pointsizey = ptsize; gridfit_depth = _depth; gridfit_pointsizex = ptsizex; gridfit_x_sameas_y = GGadgetIsChecked(GWidgetGetControl(fsd->gw,CID_SameAs)); SavePrefs(true); SplinePointListsFree(cv->b.gridfit); cv->b.gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; if ( fsd->debug ) CVDebugReInit(cv,true,last_fpgm); else { cv->show_ft_results = true; CVGridFitChar(cv); } CVLayersSet(cv); fsd->done = true; SCRefreshTitles(cv->b.sc); } return( true ); }
void LoadPrefs(void) { // Construct prefs path find_directory(B_USER_SETTINGS_DIRECTORY, &prefs_path, true); prefs_path.Append(PREFS_FILE_NAME); // Read preferences from settings file FILE *f = fopen(prefs_path.Path(), "r"); if (f != NULL) { // Prefs file found, load settings LoadPrefsFromStream(f); fclose(f); } else { // No prefs file, save defaults SavePrefs(); } }
void PreferencesMenu () { int ret = 0; int quit = 0; int oldmenu = menu; menu = 0; while (quit == 0) { ret = RunMenu (prefmenu, prefmenuCount, (char*)"Preferences"); switch (ret) { case 0: ConfigureControllers (); break; case 1: VideoOptions (); break; case 2: FileOptions (); break; case 3: DefaultSettings (); WaitPrompt((char *)"Preferences Reset"); break; case -1: /*** Button B ***/ case 4: SavePrefs(GCSettings.SaveMethod, SILENT); quit = 1; break; } } menu = oldmenu; }
static int GFD_FilterSelected(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_listselected ) { struct gfc_data *d = GDrawGetUserData(GGadgetGetWindow(g)); GTextInfo *ti = GGadgetGetListItemSelected(g); if ( ti->userdata==NULL ) /* They selected a line. Dull */; else if ( ti->userdata == (void *) -1 ) { FilterDlg(); GGadgetSetList(g,StandardFilters(),true); } else { unichar_t *temp = utf82u_copy(ti->userdata); GFileChooserSetFilterText(d->gfc,temp); free(temp); temp = GFileChooserGetDir(d->gfc); GFileChooserSetDir(d->gfc,temp); free(temp); default_font_filter_index = GGadgetGetFirstListSelectedItem(g); SavePrefs(true); } } return( true ); }
void AppStop(void) { // Close all the open forms. FrmCloseAllForms(); WinEraseWindow(); WinPalette(winPaletteSetToDefault, 0, 256, NULL); // Close and move Game list database GamCloseDatabase(false); // Write the saved preferences / saved-state information. This data // will saved during a HotSync backup. SavePrefs(); // stop all AppStopCheckNotify(); if (!OPTIONS_TST(kOptDeviceARM)) AppStopMathLib(); AppStopHRMode(); if (!bLaunched) MemPtrFree(gVars); }
bool MusikPrefsDialog::SavePrefs(const wxTreeItemId & root) { if(tcPreferencesTree->ItemHasChildren(root)) { wxTreeItemIdValue cookie; wxTreeItemId child = tcPreferencesTree->GetFirstChild(root,cookie); while(child.IsOk()) { if(SavePrefs(child) == false) return false; child = tcPreferencesTree->GetNextChild(root,cookie); } } else { // root is in fact a leaf PrefTreeItemData *itemdata = (PrefTreeItemData *)tcPreferencesTree->GetItemData(root); if(itemdata) return itemdata->Panel()->SavePrefs(); } return true; }
void CPrefsDlg::SetGamePrefs() { m_bHiColorTextures = TRUE; m_bWideToolbar = TRUE; SavePrefs(); }
void MusikPrefsDialog::OnClickApply ( wxCommandEvent& WXUNUSED(event) ) { SavePrefs(); }
void PreferencesMenu () { int ret = 0; int quit = 0; int oldmenu = menu; menu = 0; while (quit == 0) { // some load/save methods are not implemented - here's where we skip them // they need to be skipped in the order they were enumerated in vba.h // no USB ports on GameCube #ifdef HW_DOL if(GCSettings.LoadMethod == METHOD_USB) GCSettings.LoadMethod++; if(GCSettings.SaveMethod == METHOD_USB) GCSettings.SaveMethod++; #endif // saving to DVD is impossible if(GCSettings.SaveMethod == METHOD_DVD) GCSettings.SaveMethod++; // disable DVD in GC mode (not implemented) #ifdef HW_DOL if(GCSettings.LoadMethod == METHOD_DVD) GCSettings.LoadMethod++; #endif // disable SMB in GC mode (stalls out) #ifdef HW_DOL if(GCSettings.LoadMethod == METHOD_SMB) GCSettings.LoadMethod++; if(GCSettings.SaveMethod == METHOD_SMB) GCSettings.SaveMethod++; #endif // disable MC saving in Wii mode - does not work for some reason! #ifdef HW_RVL if(GCSettings.SaveMethod == METHOD_MC_SLOTA) GCSettings.SaveMethod++; if(GCSettings.SaveMethod == METHOD_MC_SLOTB) GCSettings.SaveMethod++; prefmenu[6][0] = 0; #else sprintf (prefmenu[6], "Verify MC Saves %s", GCSettings.VerifySaves == true ? " ON" : "OFF"); #endif // correct load/save methods out of bounds if(GCSettings.LoadMethod > 4) GCSettings.LoadMethod = 0; if(GCSettings.SaveMethod > 6) GCSettings.SaveMethod = 0; if (GCSettings.LoadMethod == METHOD_AUTO) sprintf (prefmenu[0],"Load Method AUTO"); else if (GCSettings.LoadMethod == METHOD_SD) sprintf (prefmenu[0],"Load Method SD"); else if (GCSettings.LoadMethod == METHOD_USB) sprintf (prefmenu[0],"Load Method USB"); else if (GCSettings.LoadMethod == METHOD_DVD) sprintf (prefmenu[0],"Load Method DVD"); else if (GCSettings.LoadMethod == METHOD_SMB) sprintf (prefmenu[0],"Load Method Network"); sprintf (prefmenu[1], "Load Folder %s", GCSettings.LoadFolder); if (GCSettings.SaveMethod == METHOD_AUTO) sprintf (prefmenu[2],"Save Method AUTO"); else if (GCSettings.SaveMethod == METHOD_SD) sprintf (prefmenu[2],"Save Method SD"); else if (GCSettings.SaveMethod == METHOD_USB) sprintf (prefmenu[2],"Save Method USB"); else if (GCSettings.SaveMethod == METHOD_SMB) sprintf (prefmenu[2],"Save Method Network"); else if (GCSettings.SaveMethod == METHOD_MC_SLOTA) sprintf (prefmenu[2],"Save Method MC Slot A"); else if (GCSettings.SaveMethod == METHOD_MC_SLOTB) sprintf (prefmenu[2],"Save Method MC Slot B"); sprintf (prefmenu[3], "Save Folder %s", GCSettings.SaveFolder); // disable changing load/save directories for now prefmenu[1][0] = '\0'; prefmenu[3][0] = '\0'; if (GCSettings.AutoLoad == 0) sprintf (prefmenu[4],"Auto Load OFF"); else if (GCSettings.AutoLoad == 1) sprintf (prefmenu[4],"Auto Load SRAM"); else if (GCSettings.AutoLoad == 2) sprintf (prefmenu[4],"Auto Load SNAPSHOT"); if (GCSettings.AutoSave == 0) sprintf (prefmenu[5],"Auto Save OFF"); else if (GCSettings.AutoSave == 1) sprintf (prefmenu[5],"Auto Save SRAM"); else if (GCSettings.AutoSave == 2) sprintf (prefmenu[5],"Auto Save SNAPSHOT"); else if (GCSettings.AutoSave == 3) sprintf (prefmenu[5],"Auto Save BOTH"); sprintf (prefmenu[7], "Enable Zooming %s", GCSettings.Zoom == true ? " ON" : "OFF"); // original mode not implemented if(GCSettings.render == 0) GCSettings.render++; if (GCSettings.render == 0) sprintf (prefmenu[8], "Video Rendering Original"); if (GCSettings.render == 1) sprintf (prefmenu[8], "Video Rendering Filtered"); if (GCSettings.render == 2) sprintf (prefmenu[8], "Video Rendering Unfiltered"); sprintf (prefmenu[9], "Video Scaling %s", GCSettings.widescreen == true ? "16:9 Correction" : "Default"); ret = RunMenu (prefmenu, prefmenuCount, (char*)"Preferences", 16); switch (ret) { case 0: GCSettings.LoadMethod ++; break; case 1: break; case 2: GCSettings.SaveMethod ++; break; case 3: break; case 4: GCSettings.AutoLoad ++; if (GCSettings.AutoLoad > 2) GCSettings.AutoLoad = 0; break; case 5: GCSettings.AutoSave ++; if (GCSettings.AutoSave > 3) GCSettings.AutoSave = 0; break; case 6: GCSettings.VerifySaves ^= 1; break; case 7: GCSettings.Zoom ^= 1; break; case 8: GCSettings.render++; if (GCSettings.render > 2) GCSettings.render = 0; // reset zoom zoom_reset (); break; case 9: GCSettings.widescreen ^= 1; break; case 10: DefaultSettings (); WaitPrompt((char *)"Preferences Reset"); break; case 11: case -1: /*** Button B ***/ SavePrefs(GCSettings.SaveMethod, SILENT); quit = 1; break; } } menu = oldmenu; }
int main(int argc, char *argv[]) { #ifdef HW_DOL ipl_set_config(6); // disable Qoob modchip #endif #ifdef WII_DVD DI_Init(); // first #endif int selectedMenu = -1; InitDeviceThread(); InitGCVideo (); ResetVideo_Menu (); // change to menu video mode // Controllers PAD_Init(); #ifdef HW_RVL WPAD_Init(); // read wiimote accelerometer and IR data WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); WPAD_SetVRes(WPAD_CHAN_ALL,640,480); // Wii Power/Reset buttons WPAD_SetPowerButtonCallback((WPADShutdownCallback)ShutdownCB); SYS_SetPowerCallback(ShutdownCB); SYS_SetResetCallback(ResetCB); #endif // Initialise FreeType if (FT_Init ()) { printf ("Cannot initialise font subsystem!\n"); while (1); } InitialiseAudio(); // Initialize libFAT for SD and USB MountAllFAT(); // Initialize DVD subsystem (GameCube only) #ifdef HW_DOL DVD_Init (); #endif // allocate memory to store rom nesrom = (unsigned char *)malloc(1024*1024*3); // 3 MB should be plenty /*** Minimal Emulation Loop ***/ if ( !FCEUI_Initialize() ) { WaitPrompt("Unable to initialize FCE Ultra\n"); ExitToLoader(); } FCEUI_SetGameGenie(0); // 0 - OFF, 1 - ON memset(FDSBIOS, 0, sizeof(FDSBIOS)); // clear FDS BIOS memory cleanSFMDATA(); // clear state data // Set defaults DefaultSettings(); // store path app was loaded from sprintf(appPath, "fceugx"); if(argc > 0 && argv[0] != NULL) CreateAppPath(argv[0]); // Load preferences if(!LoadPrefs()) { WaitPrompt("Preferences reset - check settings!"); selectedMenu = 1; // change to preferences menu } FCEUI_SetSoundQuality(1); // 0 - low, 1 - high, 2 - high (alt.) FCEUI_SetVidSystem(GCSettings.timing); // causes a small 'pop' in the audio while (1) // main loop { #ifdef HW_RVL if(ShutdownRequested) ShutdownWii(); #endif // go back to checking if devices were inserted/removed // since we're entering the menu LWP_ResumeThread (devicethread); MainMenu(selectedMenu); selectedMenu = 2; // return to game menu from now on // stop checking if devices were removed/inserted // since we're starting emulation again LWP_SuspendThread (devicethread); ResetVideo_Emu(); setFrameTimer(); // set frametimer method before emulation SetPalette(); static int fskipc=0; while(1) // emulation loop { uint8 *gfx; int32 *sound; int32 ssize; #ifdef FRAMESKIP fskipc=(fskipc+1)%(frameskip+1); #endif FCEUI_Emulate(&gfx, &sound, &ssize, fskipc); if(!fskipc) { xbsave = gfx; FCEUD_Update(gfx, sound, ssize); } if(ResetRequested) { PowerNES(); // reset game ResetRequested = 0; } if(ConfigRequested) { ResetVideo_Menu(); if (GCSettings.AutoSave == 1) { SaveRAM(GCSettings.SaveMethod, SILENT); } else if (GCSettings.AutoSave == 2) { SaveState(GCSettings.SaveMethod, SILENT); } else if(GCSettings.AutoSave == 3) { SaveRAM(GCSettings.SaveMethod, SILENT); SaveState(GCSettings.SaveMethod, SILENT); } // save zoom level SavePrefs(SILENT); ConfigRequested = 0; break; // leave emulation loop } } } }
Boolean StartScummVM() { Char **argvP; UInt8 lightspeed, argc = 0; UInt32 stackSize; Boolean toLauncher, direct, isARM; UInt8 engine; Char num[6]; UInt16 index = GamGetSelected(); argvP = ArgsInit(); direct = false; // start command line (exec name) ArgsAdd(&argvP[argc], "-", NULL, &argc); // no game selected if (index == dmMaxRecordIndex) { ListPtr listP; UInt16 whichButton; // init form FormPtr frmP = FrmInitForm(EngineForm); listP = (ListType *)FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, EngineListList)); itemsText = (Char **)MemPtrNew(ENGINE_COUNT * sizeof(Char *)); for (int i = 0; i < ENGINE_COUNT; i++) itemsText[i] = (Char *)engines[i].nameP; LstSetListChoices (listP, itemsText, ENGINE_COUNT); LstSetSelection(listP, 0); whichButton = FrmDoDialog(frmP); engine = LstGetSelection(listP); FrmDeleteForm(frmP); MemPtrFree(itemsText); itemsText = NULL; if (whichButton == EngineCancelButton) { if (bDirectMode) { // and force exit if nothing selected EventType event; event.eType = keyDownEvent; event.data.keyDown.chr = vchrLaunch; event.data.keyDown.modifiers = commandKeyMask; EvtAddUniqueEventToQueue(&event, 0, true); } // free args ArgsFree(argvP); return false; } // default values if (bDirectMode) gPrefs->card.volRefNum = parseCards(); // always use the first removable card available (?) gVars->filter = true; gVars->palmVolume = 50; gVars->fmQuality = FM_QUALITY_INI; direct = true; // somthing selected } else { Char pathP[256]; MemHandle recordH; GameInfoType *gameInfoP; recordH = DmQueryRecord(gameDB,index); gameInfoP = (GameInfoType *)MemHandleLock(recordH); engine = gameInfoP->engine; // build path StrCopy(pathP,"/Palm/Programs/ScummVM/Games/"); if (gameInfoP->pathP[0] == '/') StrCopy(pathP, gameInfoP->pathP); else if (!(gameInfoP->pathP[0] == '.' && StrLen(gameInfoP->pathP) == 1)) StrCat(pathP, gameInfoP->pathP); // path ArgsAdd(&argvP[argc], "-p", pathP, &argc); // language if (gameInfoP->language > 0) { const Char *lang = "zh\0cz\0gb\0en\0fr\0de\0hb\0it\0jp\0kr\0pl\0pt\0ru\0es\0se\0"; ArgsAdd(&argvP[argc], "-q", (lang + (gameInfoP->language - 1) * 3), &argc); } // fullscreen ? if (gameInfoP->fullscreen) ArgsAdd(&argvP[argc], "-f", NULL, &argc); // aspect-ratio ? ArgsAdd(&argvP[argc], (gameInfoP->aspectRatio ? "--aspect-ratio" : "--no-aspect-ratio"), NULL, &argc); // gfx mode gVars->filter = gameInfoP->filter; switch (gameInfoP->renderMode) { case 1: ArgsAdd(&argvP[argc], "--render-mode=", "amiga", &argc); break; case 2: ArgsAdd(&argvP[argc], "--render-mode=", "cga", &argc); break; case 3: ArgsAdd(&argvP[argc], "--render-mode=", "ega", &argc); break; case 4: ArgsAdd(&argvP[argc], "--render-mode=", "hercAmber", &argc); break; case 5: ArgsAdd(&argvP[argc], "--render-mode=", "hercGreen", &argc); break; } switch (gameInfoP->gfxMode) { case 1: ArgsAdd(&argvP[argc], "-g", "wide", &argc); break; default: ArgsAdd(&argvP[argc], "-g", "1x", &argc); break; } // load state if (gameInfoP->autoLoad) { StrIToA(num, gameInfoP->loadSlot); ArgsAdd(&argvP[argc], "-x", num, &argc); } // boot script parameter if (gameInfoP->bootParam) { StrIToA(num, gameInfoP->bootValue); ArgsAdd(&argvP[argc], "-b", num, &argc); } // not a PC version if (gameInfoP->setPlatform) { static const char *platform[] = { "3do", "acorn", "amiga", "atari", "c64", "pc", "fmtowns", "linux", "mac", "nes", "segacd", "windows" }; ArgsAdd(&argvP[argc], "--platform=", platform[gameInfoP->platform], &argc); } // subtitles if (gameInfoP->subtitles) ArgsAdd(&argvP[argc], "-n", NULL, &argc); // multi midi ? if (gameInfoP->musicInfo.sound.multiMidi) ArgsAdd(&argvP[argc], "--multi-midi", NULL, &argc); if (engine == ENGINE_SCUMM) { // music tempo StrIToA(num, gameInfoP->musicInfo.sound.tempo); ArgsAdd(&argvP[argc], "--tempo=", num, &argc); } // talk speed if (gameInfoP->talkSpeed) { StrIToA(num, gameInfoP->talkValue); ArgsAdd(&argvP[argc], "--talkspeed=", num, &argc); } // music driver if (gameInfoP->musicInfo.sound.music) { static char *drv[] = { "auto", "null", "adlib", "towns", "pcjr", "native", "pcspk" }; if (StrCompare(drv[gameInfoP->musicInfo.sound.drvMusic], "native") == 0) { if (OPTIONS_TST(kOptDeviceZodiac)) ArgsAdd(&argvP[argc], "-e", "zodiac", &argc); // Tapwave Zodiac else if (OPTIONS_TST(kOptSonyPa1LibAPI)) ArgsAdd(&argvP[argc], "-e", "ypa1", &argc); // Pa1Lib devices else ArgsAdd(&argvP[argc], "-e", "auto", &argc); // no driver, switch to auto } else { ArgsAdd(&argvP[argc], "-e", drv[gameInfoP->musicInfo.sound.drvMusic], &argc); } // output rate UInt32 rates[] = {4000, 8000, 11025, 22050, 44100}; StrIToA(num, rates[gameInfoP->musicInfo.sound.rate]); ArgsAdd(&argvP[argc], "--output-rate=", num, &argc); // FM quality gVars->fmQuality = gameInfoP->fmQuality; } else { ArgsAdd(&argvP[argc], "-e", "null", &argc); } // volume control StrIToA(num, gameInfoP->musicInfo.volume.sfx); ArgsAdd(&argvP[argc], "-s", num, &argc); StrIToA(num, gameInfoP->musicInfo.volume.music); ArgsAdd(&argvP[argc], "-m", num, &argc); StrIToA(num, gameInfoP->musicInfo.volume.speech); ArgsAdd(&argvP[argc], "-r", num, &argc); // game name ArgsAdd(&argvP[argc], gameInfoP->gameP, NULL, &argc); // others globals data gVars->CD.enable = gameInfoP->musicInfo.sound.CD; gVars->CD.driver = gameInfoP->musicInfo.sound.drvCD; gVars->CD.format = gameInfoP->musicInfo.sound.frtCD; gVars->CD.volume = gameInfoP->musicInfo.volume.audiocd; gVars->CD.defaultTrackLength = gameInfoP->musicInfo.sound.defaultTrackLength; gVars->CD.firstTrack = gameInfoP->musicInfo.sound.firstTrack; gVars->palmVolume = gameInfoP->musicInfo.sound.music ? gameInfoP->musicInfo.volume.palm : 0; MemHandleUnlock(recordH); } // end no game / game selected // common command line options // debug level if (gPrefs->debug) { StrIToA(num, gPrefs->debugLevel); ArgsAdd(&argvP[argc], "-d", num, &argc); } if (engine == ENGINE_QUEEN || engine == ENGINE_SKY) { // alternative intro ? if (gPrefs->altIntro) ArgsAdd(&argvP[argc], "--alt-intro", NULL, &argc); } if (engine == ENGINE_SCUMM) { // demo mode ? if (gPrefs->demoMode) ArgsAdd(&argvP[argc], "--demo-mode", NULL, &argc); } // copy protection ? if (gPrefs->copyProtection) ArgsAdd(&argvP[argc], "--copy-protection", NULL, &argc); // exceed max args ? if (argc > MAX_ARG) FrmCustomAlert(FrmErrorAlert, "Too many parameters.",0,0); // set some common options stackSize = (gPrefs->setStack ? STACK_LARGER : STACK_DEFAULT); lightspeed= (gPrefs->lightspeed.enable ? gPrefs->lightspeed.mode : 255); toLauncher= (gPrefs->exitLauncher); // gVars values // (gVars->HRrefNum defined in checkHRmode on Clié) gVars->VFS.volRefNum = gPrefs->card.volRefNum; gVars->vibrator = gPrefs->vibrator; gVars->stdPalette = gPrefs->stdPalette; gVars->VFS.cacheSize = (gPrefs->card.useCache ? gPrefs->card.cacheSize : 0); gVars->indicator.showLED= gPrefs->card.showLED; gVars->stylusClick = gPrefs->stylusClick; gVars->autoSave = (gPrefs->autoSave ? gPrefs->autoSavePeriod : -1); gVars->advancedMode = gPrefs->advancedMode; gVars->arrowKeys = gPrefs->arrowKeys; // user params HWR_RSTALL(); if (gPrefs->goLCD) HWR_SET(INIT_GOLCD); else OPTIONS_RST(kOptGoLcdAPI); if (!gPrefs->autoOff) HWR_SET(INIT_AUTOOFF); if (gVars->vibrator) HWR_SET(INIT_VIBRATOR); /* ???? if ( musicDriver == 1 || musicDriver == 3 || musicDriver == 4 || musicDriver == sysInvalidRefNum) { HWR_SET(INIT_PA1LIB); } */ if (ModImport(gVars->VFS.volRefNum, engine, &isARM) != errNone) { if (bDirectMode) { // and force exit if nothing selected EventType event; event.eType = keyDownEvent; event.data.keyDown.chr = vchrLaunch; event.data.keyDown.modifiers = commandKeyMask; EvtAddUniqueEventToQueue(&event, 0, true); } ArgsFree(argvP); return false; } // reset mode if screen rotation occured (DIA only) if (!direct && OPTIONS_TST(kOptCollapsible)) { UInt8 mode = PalmScreenSize(0,0, &(gVars->screenFullWidth), &(gVars->screenFullHeight)); OPTIONS_RST(kOptModeLandscape); OPTIONS_SET((mode == PALM_LANDSCAPE) ? kOptModeLandscape : kOptNone); } // free and save globals pref memory GamCloseDatabase(false); FrmCloseAllForms(); SavePrefs(); { UInt16 cardNo; UInt32 dbID; LaunchParamType *cmdPBP = (LaunchParamType *)MemPtrNew(sizeof(LaunchParamType)); MemPtrSetOwner(cmdPBP, 0); MemPtrSetOwner(gVars, 0); ArgsSetOwner(argvP, 0); cardNo = 0; dbID = DmFindDatabase(0, "ScummVM-Engine"); if (isARM) FtrSet(appFileCreator, ftrStack , (stackSize * 4)); else ModSetStack(stackSize, cardNo, dbID); cmdPBP->args.argc = argc; cmdPBP->args.argv = argvP; cmdPBP->gVars = gVars; cmdPBP->lightspeed = lightspeed; cmdPBP->exitLauncher = toLauncher; SysUIAppSwitch(cardNo, dbID, sysAppLaunchCmdNormalLaunch, cmdPBP); bLaunched = true; } return false; }
void PreferencesMenu () { int ret = 0; int quit = 0; int oldmenu = menu; menu = 0; while (quit == 0) { // some load/save methods are not implemented - here's where we skip them // they need to be skipped in the order they were enumerated in snes9xGX.h // no USB ports on GameCube #ifndef HW_RVL if(GCSettings.LoadMethod == METHOD_USB) GCSettings.LoadMethod++; if(GCSettings.SaveMethod == METHOD_USB) GCSettings.SaveMethod++; #endif // check if DVD access in Wii mode is disabled #ifndef WII_DVD if(GCSettings.LoadMethod == METHOD_DVD) GCSettings.LoadMethod++; #endif // saving to DVD is impossible if(GCSettings.SaveMethod == METHOD_DVD) GCSettings.SaveMethod++; // disable SMB in GC mode (stalls out) #ifndef HW_RVL if(GCSettings.LoadMethod == METHOD_SMB) GCSettings.LoadMethod++; if(GCSettings.SaveMethod == METHOD_SMB) GCSettings.SaveMethod++; #endif // disable MC saving in Wii mode - does not work for some reason! #ifdef HW_RVL if(GCSettings.SaveMethod == METHOD_MC_SLOTA) GCSettings.SaveMethod++; if(GCSettings.SaveMethod == METHOD_MC_SLOTB) GCSettings.SaveMethod++; #endif // correct load/save methods out of bounds if(GCSettings.LoadMethod > 4) GCSettings.LoadMethod = 0; if(GCSettings.SaveMethod > 6) GCSettings.SaveMethod = 0; if (GCSettings.LoadMethod == METHOD_AUTO) sprintf (prefmenu[0],"Load Method AUTO"); else if (GCSettings.LoadMethod == METHOD_SD) sprintf (prefmenu[0],"Load Method SD"); else if (GCSettings.LoadMethod == METHOD_USB) sprintf (prefmenu[0],"Load Method USB"); else if (GCSettings.LoadMethod == METHOD_DVD) sprintf (prefmenu[0],"Load Method DVD"); else if (GCSettings.LoadMethod == METHOD_SMB) sprintf (prefmenu[0],"Load Method Network"); sprintf (prefmenu[1], "Load Folder %s", GCSettings.LoadFolder); if (GCSettings.SaveMethod == METHOD_AUTO) sprintf (prefmenu[2],"Save Method AUTO"); else if (GCSettings.SaveMethod == METHOD_SD) sprintf (prefmenu[2],"Save Method SD"); else if (GCSettings.SaveMethod == METHOD_USB) sprintf (prefmenu[2],"Save Method USB"); else if (GCSettings.SaveMethod == METHOD_SMB) sprintf (prefmenu[2],"Save Method Network"); else if (GCSettings.SaveMethod == METHOD_MC_SLOTA) sprintf (prefmenu[2],"Save Method MC Slot A"); else if (GCSettings.SaveMethod == METHOD_MC_SLOTB) sprintf (prefmenu[2],"Save Method MC Slot B"); sprintf (prefmenu[3], "Save Folder %s", GCSettings.SaveFolder); // disable changing load/save directories for now prefmenu[1][0] = '\0'; prefmenu[3][0] = '\0'; // don't allow original render mode if progressive video mode detected if (GCSettings.render==0 && progressive) GCSettings.render++; if (GCSettings.AutoLoad == 0) sprintf (prefmenu[4],"Auto Load OFF"); else if (GCSettings.AutoLoad == 1) sprintf (prefmenu[4],"Auto Load SRAM"); else if (GCSettings.AutoLoad == 2) sprintf (prefmenu[4],"Auto Load SNAPSHOT"); if (GCSettings.AutoSave == 0) sprintf (prefmenu[5],"Auto Save OFF"); else if (GCSettings.AutoSave == 1) sprintf (prefmenu[5],"Auto Save SRAM"); else if (GCSettings.AutoSave == 2) sprintf (prefmenu[5],"Auto Save SNAPSHOT"); else if (GCSettings.AutoSave == 3) sprintf (prefmenu[5],"Auto Save BOTH"); sprintf (prefmenu[6], "Verify MC Saves %s", GCSettings.VerifySaves == true ? " ON" : "OFF"); sprintf (prefmenu[7], "Reverse Stereo %s", Settings.ReverseStereo == true ? " ON" : "OFF"); sprintf (prefmenu[8], "Interpolated Sound %s", Settings.InterpolatedSound == true ? " ON" : "OFF"); sprintf (prefmenu[9], "Transparency %s", Settings.Transparency == true ? " ON" : "OFF"); sprintf (prefmenu[10], "Display Frame Rate %s", Settings.DisplayFrameRate == true ? " ON" : "OFF"); sprintf (prefmenu[11], "Enable Zooming %s", GCSettings.NGCZoom == true ? " ON" : "OFF"); if ( GCSettings.render == 0 ) sprintf (prefmenu[12], "Video Rendering Original"); if ( GCSettings.render == 1 ) sprintf (prefmenu[12], "Video Rendering Filtered"); if ( GCSettings.render == 2 ) sprintf (prefmenu[12], "Video Rendering Unfiltered"); sprintf (prefmenu[13], "Video Scaling %s", GCSettings.widescreen == true ? "16:9 Correction" : "Default"); ret = RunMenu (prefmenu, prefmenuCount, (char*)"Preferences", 16); switch (ret) { case 0: GCSettings.LoadMethod ++; break; case 1: break; case 2: GCSettings.SaveMethod ++; break; case 3: break; case 4: GCSettings.AutoLoad ++; if (GCSettings.AutoLoad > 2) GCSettings.AutoLoad = 0; break; case 5: GCSettings.AutoSave ++; if (GCSettings.AutoSave > 3) GCSettings.AutoSave = 0; break; case 6: GCSettings.VerifySaves ^= 1; break; case 7: Settings.ReverseStereo ^= 1; break; case 8: Settings.InterpolatedSound ^= 1; break; case 9: Settings.Transparency ^= 1; break; case 10: Settings.DisplayFrameRate ^= 1; break; case 11: GCSettings.NGCZoom ^= 1; break; case 12: GCSettings.render++; if (GCSettings.render > 2 ) GCSettings.render = 0; break; case 13: GCSettings.widescreen ^= 1; break; case 14: SavePrefs(GCSettings.SaveMethod, NOTSILENT); break; case -1: /*** Button B ***/ case 15: quit = 1; break; } } menu = oldmenu; }
CMusikPrefs::~CMusikPrefs() { SavePrefs(); delete config; }
void ConfigureControllers () { int quit = 0; int ret = 0; int oldmenu = menu; menu = 0; // disable unavailable controller options if in GC mode #ifndef HW_RVL ctlrmenu[4][0] = '\0'; ctlrmenu[5][0] = '\0'; ctlrmenu[6][0] = '\0'; #endif while (quit == 0) { sprintf (ctlrmenu[0], "MultiTap %s", Settings.MultiPlayer5Master == true ? " ON" : "OFF"); if (GCSettings.Superscope > 0) sprintf (ctlrmenu[1], "Superscope: Pad %d", GCSettings.Superscope); else sprintf (ctlrmenu[1], "Superscope OFF"); if (GCSettings.Mouse > 0) sprintf (ctlrmenu[2], "Mice: %d", GCSettings.Mouse); else sprintf (ctlrmenu[2], "Mice: OFF"); if (GCSettings.Justifier > 0) sprintf (ctlrmenu[3], "Justifiers: %d", GCSettings.Justifier); else sprintf (ctlrmenu[3], "Justifiers: OFF"); /*** Controller Config Menu ***/ ret = RunMenu (ctlrmenu, ctlrmenucount, (char*)"Configure Controllers"); switch (ret) { case 0: Settings.MultiPlayer5Master ^= 1; break; case 1: GCSettings.Superscope ++; if (GCSettings.Superscope > 4) GCSettings.Superscope = 0; break; case 2: GCSettings.Mouse ++; if (GCSettings.Mouse > 2) GCSettings.Mouse = 0; break; case 3: GCSettings.Justifier ++; if (GCSettings.Justifier > 2) GCSettings.Justifier = 0; break; case 4: /*** Configure Nunchuk ***/ ConfigureButtons (CTRLR_NUNCHUK); break; case 5: /*** Configure Classic ***/ ConfigureButtons (CTRLR_CLASSIC); break; case 6: /*** Configure Wiimote ***/ ConfigureButtons (CTRLR_WIIMOTE); break; case 7: /*** Configure GC Pad ***/ ConfigureButtons (CTRLR_GCPAD); break; case 8: /*** Save Preferences Now ***/ SavePrefs(GCSettings.SaveMethod, NOTSILENT); break; case -1: /*** Button B ***/ case 9: /*** Return ***/ quit = 1; break; } } menu = oldmenu; }
int CALLBACK PrefProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch(msg) { case WM_INITDIALOG: { TCITEM tci1; TCITEM tci2; TCITEM tci3; TCITEM tci4; tci1.mask = TCIF_TEXT; tci1.pszText = _T("Settings"); tci1.cchTextMax = strlen("Settings"); SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_INSERTITEM, 0, (LPARAM)&tci1); tci2.mask = TCIF_TEXT; tci2.pszText = _T("Alerts"); tci2.cchTextMax = strlen("Alerts"); SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_INSERTITEM, 1, (LPARAM)&tci2); tci3.mask = TCIF_TEXT; tci3.pszText = _T("Events"); tci3.cchTextMax = strlen("Events"); SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_INSERTITEM, 2, (LPARAM)&tci3); tci4.mask = TCIF_TEXT; tci4.pszText = _T("About"); tci4.cchTextMax = strlen("About"); SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_INSERTITEM, 3, (LPARAM)&tci4); /***********************************************************************************/ /***********************************************************************************/ /***********************************************************************************/ g_hPrefTabSettings = CreateDialog((HINSTANCE)g_hInstance, MAKEINTRESOURCE(IDD_SETTINGS), hWnd, (DLGPROC)SettingsProc); SetDialog(g_hPrefTabSettings, IDD_SETTINGS); g_hPrefTabAlerts = CreateDialog((HINSTANCE)g_hInstance, MAKEINTRESOURCE(IDD_ALERTS), hWnd, (DLGPROC)AlertsProc); SetDialog(g_hPrefTabAlerts, IDD_ALERTS); g_hPrefTabEvents = CreateDialog((HINSTANCE)g_hInstance, MAKEINTRESOURCE(IDD_EVENTS), hWnd, (DLGPROC)EventsProc); SetDialog(g_hPrefTabEvents, IDD_EVENTS); g_hPrefTabAbout = CreateDialog((HINSTANCE)g_hInstance, MAKEINTRESOURCE(IDD_ABOUT), hWnd, (DLGPROC)AboutProc); } break; case WM_SHOWWINDOW: { if(wparam) { SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_SETCURSEL, 0, 0); ShowWindow(g_hPrefTabSettings, SW_SHOW); ShowWindow(g_hPrefTabAlerts, SW_HIDE); ShowWindow(g_hPrefTabEvents, SW_HIDE); ShowWindow(g_hPrefTabAbout, SW_HIDE); } } break; case WM_NOTIFY: { NMHDR *pData = (NMHDR *)lparam; switch(pData->code) { case TCN_SELCHANGE: { switch(SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_GETCURSEL, 0, 0)) { case 0: { ShowWindow(g_hPrefTabSettings, SW_SHOW); ShowWindow(g_hPrefTabAlerts, SW_HIDE); ShowWindow(g_hPrefTabEvents, SW_HIDE); ShowWindow(g_hPrefTabAbout, SW_HIDE); } break; case 1: { ShowWindow(g_hPrefTabSettings, SW_HIDE); ShowWindow(g_hPrefTabAlerts, SW_SHOW); ShowWindow(g_hPrefTabEvents, SW_HIDE); ShowWindow(g_hPrefTabAbout, SW_HIDE); } break; case 2: { ShowWindow(g_hPrefTabSettings, SW_HIDE); ShowWindow(g_hPrefTabAlerts, SW_HIDE); ShowWindow(g_hPrefTabEvents, SW_SHOW); ShowWindow(g_hPrefTabAbout, SW_HIDE); } break; case 3: { ShowWindow(g_hPrefTabSettings, SW_HIDE); ShowWindow(g_hPrefTabAlerts, SW_HIDE); ShowWindow(g_hPrefTabEvents, SW_HIDE); ShowWindow(g_hPrefTabAbout, SW_SHOW); } break; } } break; } } break; case WM_CLOSE: { ShowWindow(g_hPrefTabEvents, SW_HIDE); ShowWindow(g_hPrefTabSettings, SW_HIDE); ShowWindow(g_hPrefTabAlerts, SW_HIDE); ShowWindow(g_hPrefTabAbout, SW_HIDE); ShowWindow(hWnd, SW_HIDE); return TRUE; } break; case WM_COMMAND: { switch(wparam) { case IDC_PREF_OK: { CheckPrefs(g_hPrefTabEvents, IDD_EVENTS); CheckPrefs(g_hPrefTabSettings, IDD_SETTINGS); CheckPrefs(g_hPrefTabAlerts, IDD_ALERTS); SavePrefs(0); ShowWindow(g_hPrefTabEvents, SW_HIDE); ShowWindow(g_hPrefTabSettings, SW_HIDE); ShowWindow(g_hPrefTabAlerts, SW_HIDE); ShowWindow(g_hPrefTabAbout, SW_HIDE); ShowWindow(hWnd, SW_HIDE); return TRUE; } break; case IDC_PREF_CANCEL: { ShowWindow(g_hPrefTabEvents, SW_HIDE); ShowWindow(g_hPrefTabSettings, SW_HIDE); ShowWindow(g_hPrefTabAlerts, SW_HIDE); ShowWindow(g_hPrefTabAbout, SW_HIDE); ShowWindow(hWnd, SW_HIDE); return TRUE; } break; case IDC_PREF_APPLY: { CheckPrefs(g_hPrefTabEvents, IDD_EVENTS); CheckPrefs(g_hPrefTabSettings, IDD_SETTINGS); CheckPrefs(g_hPrefTabAlerts, IDD_ALERTS); SavePrefs(0); return FALSE; } break; } } break; case WM_DESTROY: { SendMessage(g_hPrefTabEvents, WM_CLOSE, 0, 0); SendMessage(g_hPrefTabSettings, WM_CLOSE, 0, 0); SendMessage(g_hPrefTabAbout, WM_CLOSE, 0, 0); SendMessage(g_hPrefTabAlerts, WM_CLOSE, 0, 0); } break; } return FALSE; }