示例#1
0
void CMainGui::ShowRomBrowser(void)
{
    if (g_Settings->LoadDword(RomBrowser_Enabled))
    {
        ShowRomList();
        HighLightLastRom();
    }
}
示例#2
0
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;
}