void CMainGui::ShowRomBrowser(void) { if (g_Settings->LoadDword(RomBrowser_Enabled)) { ShowRomList(); HighLightLastRom(); } }
BOOL CALLBACK RomBrowserProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: if (RomBrowser) { SendMessage(GetDlgItem(hDlg,IDC_USE_ROMBROWSER),BM_SETCHECK, BST_CHECKED,0); } if (Rercursion) { SendMessage(GetDlgItem(hDlg,IDC_RECURSION),BM_SETCHECK, BST_CHECKED,0); } { int count; for (count = 0; count < NoOfFields; count ++) { RomAddFieldToList(hDlg,GS(RomBrowserFields[count].LangID),RomBrowserFields[count].Pos, count); } } { char String[256]; sprintf(String,"%d",RomsToRemember); SetDlgItemText(hDlg,IDC_REMEMBER,String); sprintf(String,"%d",RomDirsToRemember); SetDlgItemText(hDlg,IDC_REMEMBERDIR,String); SetDlgItemText(hDlg,IDC_ROMSEL_TEXT1,GS(RB_MAX_ROMS)); SetDlgItemText(hDlg,IDC_ROMSEL_TEXT2,GS(RB_ROMS)); SetDlgItemText(hDlg,IDC_ROMSEL_TEXT3,GS(RB_MAX_DIRS)); SetDlgItemText(hDlg,IDC_ROMSEL_TEXT4,GS(RB_DIRS)); SetDlgItemText(hDlg,IDC_USE_ROMBROWSER,GS(RB_USE)); SetDlgItemText(hDlg,IDC_RECURSION,GS(RB_DIR_RECURSION)); SetDlgItemText(hDlg,IDC_ROMSEL_TEXT5,GS(RB_AVALIABLE_FIELDS)); SetDlgItemText(hDlg,IDC_ROMSEL_TEXT6,GS(RB_SHOW_FIELDS)); SetDlgItemText(hDlg,IDC_ADD,GS(RB_ADD)); SetDlgItemText(hDlg,IDC_REMOVE,GS(RB_REMOVE)); SetDlgItemText(hDlg,IDC_UP,GS(RB_UP)); SetDlgItemText(hDlg,IDC_DOWN,GS(RB_DOWN)); } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_ADD: { char String[100]; int index, listCount, Data; index = SendMessage(GetDlgItem(hDlg,IDC_AVALIABLE),LB_GETCURSEL,0,0); if (index < 0) { break; } SendMessage(GetDlgItem(hDlg,IDC_AVALIABLE),LB_GETTEXT,index,(LPARAM)String); Data = SendMessage(GetDlgItem(hDlg,IDC_AVALIABLE),LB_GETITEMDATA,index,0); SendDlgItemMessage(hDlg,IDC_AVALIABLE,LB_DELETESTRING,index,0); listCount = SendDlgItemMessage(hDlg,IDC_AVALIABLE,LB_GETCOUNT,0,0); if (index >= listCount) { index -= 1;} SendDlgItemMessage(hDlg,IDC_AVALIABLE,LB_SETCURSEL,index,0); index = SendDlgItemMessage(hDlg,IDC_USING,LB_ADDSTRING,0,(LPARAM)String); SendDlgItemMessage(hDlg,IDC_USING,LB_SETITEMDATA,index,Data); } break; case IDC_REMOVE: { char String[100]; int index, listCount, Data; index = SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETCURSEL,0,0); if (index < 0) { break; } SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETTEXT,index,(LPARAM)String); Data = SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETITEMDATA,index,0); SendDlgItemMessage(hDlg,IDC_USING,LB_DELETESTRING,index,0); listCount = SendDlgItemMessage(hDlg,IDC_USING,LB_GETCOUNT,0,0); if (index >= listCount) { index -= 1;} SendDlgItemMessage(hDlg,IDC_USING,LB_SETCURSEL,index,0); index = SendDlgItemMessage(hDlg,IDC_AVALIABLE,LB_ADDSTRING,0,(LPARAM)String); SendDlgItemMessage(hDlg,IDC_AVALIABLE,LB_SETITEMDATA,index,Data); } break; case IDC_UP: { char String[100]; int index, Data; index = SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETCURSEL,0,0); if (index <= 0) { break; } SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETTEXT,index,(LPARAM)String); Data = SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETITEMDATA,index,0); SendDlgItemMessage(hDlg,IDC_USING,LB_DELETESTRING,index,0); index = SendDlgItemMessage(hDlg,IDC_USING,LB_INSERTSTRING,index - 1,(LPARAM)String); SendDlgItemMessage(hDlg,IDC_USING,LB_SETCURSEL,index,0); SendDlgItemMessage(hDlg,IDC_USING,LB_SETITEMDATA,index,Data); } break; case IDC_DOWN: { char String[100]; int index,listCount,Data; index = SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETCURSEL,0,0); listCount = SendDlgItemMessage(hDlg,IDC_USING,LB_GETCOUNT,0,0); if ((index + 1) == listCount) { break; } SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETTEXT,index,(LPARAM)String); Data = SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETITEMDATA,index,0); SendDlgItemMessage(hDlg,IDC_USING,LB_DELETESTRING,index,0); index = SendDlgItemMessage(hDlg,IDC_USING,LB_INSERTSTRING,index + 1,(LPARAM)String); SendDlgItemMessage(hDlg,IDC_USING,LB_SETCURSEL,index,0); SendDlgItemMessage(hDlg,IDC_USING,LB_SETITEMDATA,index,Data); } break; } break; case WM_NOTIFY: if (((NMHDR FAR *) lParam)->code == PSN_APPLY) { char String[200], szIndex[10]; int index, listCount, Pos; DWORD Disposition = 0; HKEY hKeyResults = 0; long lResult; RomBrowser = SendMessage(GetDlgItem(hDlg,IDC_USE_ROMBROWSER),BM_GETSTATE, 0,0) == BST_CHECKED?TRUE:FALSE; Rercursion = SendMessage(GetDlgItem(hDlg,IDC_RECURSION),BM_GETSTATE, 0,0) == BST_CHECKED?TRUE:FALSE; sprintf(String,"Software\\N64 Emulation\\%s",AppName); lResult = RegCreateKeyEx( HKEY_CURRENT_USER, String,0,"", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL, &hKeyResults,&Disposition); if (lResult == ERROR_SUCCESS) { RegSetValueEx(hKeyResults,"Use Rom Browser",0,REG_DWORD,(BYTE *)&RomBrowser,sizeof(DWORD)); RegSetValueEx(hKeyResults,"Use Recursion",0,REG_DWORD,(BYTE *)&Rercursion,sizeof(DWORD)); } SaveRomBrowserColoumnInfo(); // Any coloumn width changes get saved listCount = SendDlgItemMessage(hDlg,IDC_USING,LB_GETCOUNT,0,0); for (Pos = 0; Pos < listCount; Pos ++ ){ index = SendMessage(GetDlgItem(hDlg,IDC_USING),LB_GETITEMDATA,Pos,0); SaveRomBrowserColoumnPosition(index,Pos); } listCount = SendDlgItemMessage(hDlg,IDC_AVALIABLE,LB_GETCOUNT,0,0); strcpy(szIndex,"-1"); for (Pos = 0; Pos < listCount; Pos ++ ){ index = SendMessage(GetDlgItem(hDlg,IDC_AVALIABLE),LB_GETITEMDATA,Pos,0); SaveRomBrowserColoumnPosition(index,-1); } LoadRomBrowserColoumnInfo(); ResetRomBrowserColomuns(); if (RomBrowser) { ShowRomList(hMainWindow); } if (!RomBrowser) { HideRomBrowser(); } RemoveRecentList(hMainWindow); RomsToRemember = GetDlgItemInt(hDlg,IDC_REMEMBER,NULL,FALSE); if (RomsToRemember < 0) { RomsToRemember = 0; } if (RomsToRemember > 10) { RomsToRemember = 10; } RegSetValueEx(hKeyResults,"Roms To Remember",0,REG_DWORD,(BYTE *)&RomsToRemember,sizeof(DWORD)); RemoveRecentList(hMainWindow); RomDirsToRemember = GetDlgItemInt(hDlg,IDC_REMEMBERDIR,NULL,FALSE); if (RomDirsToRemember < 0) { RomDirsToRemember = 0; } if (RomDirsToRemember > 10) { RomDirsToRemember = 10; } RegSetValueEx(hKeyResults,"Rom Dirs To Remember",0,REG_DWORD,(BYTE *)&RomDirsToRemember,sizeof(DWORD)); } break; default: return FALSE; } return TRUE; }