diff --git a/src/burner/burner.h b/src/burner/burner.h index e292a73b9..18b0199aa 100644 --- a/src/burner/burner.h +++ b/src/burner/burner.h @@ -174,3 +174,4 @@ extern TCHAR szAppPreviewsPath[MAX_PATH]; extern TCHAR szAppTitlesPath[MAX_PATH]; extern TCHAR szAppCheatsPath[MAX_PATH]; extern TCHAR szAppIpsPath[MAX_PATH]; +extern TCHAR szAppIconsPath[MAX_PATH]; diff --git a/src/burner/platform/win32/app.rc b/src/burner/platform/win32/app.rc index c4813c2b3..005014011 100644 --- a/src/burner/platform/win32/app.rc +++ b/src/burner/platform/win32/app.rc @@ -495,6 +495,8 @@ BEGIN PUSHBUTTON "Browse...",IDC_SUPPORTDIR_BR7,177,30,50,14 EDITTEXT IDC_SUPPORTDIR_EDIT8,14,31,154,12,ES_AUTOHSCROLL PUSHBUTTON "Browse...",IDC_SUPPORTDIR_BR8,177,30,50,14 + EDITTEXT IDC_SUPPORTDIR_EDIT9,14,31,154,12,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_SUPPORTDIR_BR9,177,30,50,14 END IDD_PALETTEVIEWER DIALOGEX 0, 0, 320, 240 @@ -912,6 +914,17 @@ BEGIN MENUITEM "Select gamelist language...", MENU_LANGUAGE_GL_SELECT MENUITEM "Export gamelist translation template...", MENU_LANGUAGE_GL_EXPORT MENUITEM "Reset gamelist default language", MENU_LANGUAGE_GL_RESET + END + MENUITEM SEPARATOR + POPUP "Icons" + BEGIN + MENUITEM "Enable driver icons display", MENU_ENABLEICONS + POPUP "Icon size" + BEGIN + MENUITEM "16 x 16 pixels", MENU_ICONS_SIZE_16 + MENUITEM "24 x 24 pixels", MENU_ICONS_SIZE_24 + MENUITEM "32 x 32 pixels", MENU_ICONS_SIZE_32 + END END MENUITEM SEPARATOR MENUITEM "Save snapshot\tF12", MENU_SAVESNAP diff --git a/src/burner/platform/win32/burner_win32.h b/src/burner/platform/win32/burner_win32.h index fd79c8866..10dd8639e 100644 --- a/src/burner/platform/win32/burner_win32.h +++ b/src/burner/platform/win32/burner_win32.h @@ -292,6 +292,14 @@ extern HBITMAP hPrevBmp; extern int nDialogSelect; void CreateToolTipForRect(HWND hwndParent, PTSTR pszText); int SelMVSDialog(); +void LoadDrvIcons(); +void UnloadDrvIcons(); +#define ICON_16x16 0 +#define ICON_24x24 1 +#define ICON_32x32 2 +extern bool bEnableIcons; +extern bool bIconsLoaded; +extern int nIconsSize, nIconsSizeXY, nIconsYDiff; // neocdsel.cpp extern int NeoCDList_Init(); diff --git a/src/burner/platform/win32/cona.cpp b/src/burner/platform/win32/cona.cpp index 4ee4a0772..0bd7174b7 100644 --- a/src/burner/platform/win32/cona.cpp +++ b/src/burner/platform/win32/cona.cpp @@ -203,6 +203,7 @@ int ConfigAppLoad() STR(szAppHiscorePath); STR(szAppSamplesPath); STR(szAppIpsPath); + STR(szAppIconsPath); STR(szNeoCDCoverDir); VAR(bNoChangeNumLock); @@ -211,6 +212,9 @@ int ConfigAppLoad() VAR(nIpsSelectedLanguage); + VAR(bEnableIcons); + VAR(nIconsSize); + STR(szPrevGames[0]); STR(szPrevGames[1]); STR(szPrevGames[2]); @@ -521,6 +525,7 @@ int ConfigAppSave() STR(szAppHiscorePath); STR(szAppSamplesPath); STR(szAppIpsPath); + STR(szAppIconsPath); STR(szNeoCDCoverDir); _ftprintf(h, _T("\n// The cartridges to use for emulation of an MVS system\n")); @@ -547,6 +552,12 @@ int ConfigAppSave() _ftprintf(h, _T("\n// The language index to use for the IPS Patch Manager dialog.\n")); VAR(nIpsSelectedLanguage); + _ftprintf(h, _T("\n// If non-zero, display drivers icons.\n")); + VAR(bEnableIcons); + + _ftprintf(h, _T("\n// Specify icons display size, 0 = 16x16 , 1 = 24x24, 2 = 32x32.\n")); + VAR(nIconsSize); + _ftprintf(h, _T("\n// Previous games list.\n")); STR(szPrevGames[0]); STR(szPrevGames[1]); diff --git a/src/burner/platform/win32/main.cpp b/src/burner/platform/win32/main.cpp index ff5e047d4..5ee720e64 100644 --- a/src/burner/platform/win32/main.cpp +++ b/src/burner/platform/win32/main.cpp @@ -547,12 +547,24 @@ static int AppInit() #endif bNumlockStatus = SetNumLock(false); + + if(bEnableIcons && !bIconsLoaded) { + // load driver icons + LoadDrvIcons(); + bIconsLoaded = 1; + } return 0; } static int AppExit() { + if(bIconsLoaded) { + // unload driver icons + UnloadDrvIcons(); + bIconsLoaded = 0; + } + SetNumLock(bNumlockStatus); DrvExit(); // Make sure any game driver is exitted diff --git a/src/burner/platform/win32/menu.cpp b/src/burner/platform/win32/menu.cpp index 73dc9b44b..28429cf66 100644 --- a/src/burner/platform/win32/menu.cpp +++ b/src/burner/platform/win32/menu.cpp @@ -1004,6 +1004,15 @@ void MenuUpdate() CheckMenuItem(hMenu, MENU_ASSEMBLYCORE, MF_UNCHECKED); EnableMenuItem(hMenu, MENU_ASSEMBLYCORE, MF_GRAYED | MF_BYCOMMAND); #endif + + var = MENU_ICONS_SIZE_16; + switch (nIconsSize) { + case ICON_16x16: var = MENU_ICONS_SIZE_16; break; + case ICON_24x24: var = MENU_ICONS_SIZE_24; break; + case ICON_32x32: var = MENU_ICONS_SIZE_32; break; + } + CheckMenuRadioItem(hMenu, MENU_ICONS_SIZE_16, MENU_ICONS_SIZE_32, var, MF_BYCOMMAND); + CheckMenuItem(hMenu, MENU_ENABLEICONS, bEnableIcons ? MF_CHECKED : MF_UNCHECKED); // Previous games list for (int i = 0; i < SHOW_PREV_GAMES; i++) { diff --git a/src/burner/platform/win32/neocdsel.cpp b/src/burner/platform/win32/neocdsel.cpp index 6f3ebe60b..fd21427b9 100644 --- a/src/burner/platform/win32/neocdsel.cpp +++ b/src/burner/platform/win32/neocdsel.cpp @@ -1226,7 +1226,7 @@ static INT_PTR CALLBACK NeoCDList_WndProc(HWND hDlg, UINT Msg, WPARAM wParam, LP NeoCDList_Clean(); - SupportDirCreateTab(IDC_SUPPORTDIR_EDIT7, hNeoCDWnd); + SupportDirCreateTab(IDC_SUPPORTDIR_EDIT8, hNeoCDWnd); hProcessThread = (HANDLE)_beginthreadex(NULL, 0, NeoCDList_DoProc, NULL, 0, &ProcessThreadID); SetFocus(hListView); break; diff --git a/src/burner/platform/win32/resource.h b/src/burner/platform/win32/resource.h index 9027bff66..1cb5f3d88 100644 --- a/src/burner/platform/win32/resource.h +++ b/src/burner/platform/win32/resource.h @@ -201,6 +201,7 @@ #define IDC_SUPPORTDIR_EDIT6 20155 #define IDC_SUPPORTDIR_EDIT7 20156 #define IDC_SUPPORTDIR_EDIT8 20157 +#define IDC_SUPPORTDIR_EDIT9 20158 #define IDC_SUPPORTDIR_BR1 20170 #define IDC_SUPPORTDIR_BR2 20171 @@ -210,6 +211,7 @@ #define IDC_SUPPORTDIR_BR6 20175 #define IDC_SUPPORTDIR_BR7 20176 #define IDC_SUPPORTDIR_BR8 20177 +#define IDC_SUPPORTDIR_BR9 20178 #define IDC_DRVCOUNT 20200 #define IDC_TREE2 20201 @@ -524,6 +526,10 @@ #define MENU_LANGUAGE_GL_SELECT 10673 #define MENU_LANGUAGE_GL_EXPORT 10674 #define MENU_LANGUAGE_GL_RESET 10675 +#define MENU_ENABLEICONS 10676 +#define MENU_ICONS_SIZE_16 10677 +#define MENU_ICONS_SIZE_24 10678 +#define MENU_ICONS_SIZE_32 10679 #define MENU_RES_ARCADE_VERTICAL 10700 #define MENU_RES_1_VERTICAL 10701 #define MENU_RES_2_VERTICAL 10702 diff --git a/src/burner/platform/win32/resource_string.h b/src/burner/platform/win32/resource_string.h index 0925e8225..837fc92af 100644 --- a/src/burner/platform/win32/resource_string.h +++ b/src/burner/platform/win32/resource_string.h @@ -104,12 +104,13 @@ #define IDS_SPATH_PREVIEW (IDS_STRING + 450) #define IDS_SPATH_TITLES (IDS_STRING + 452) -#define IDS_SPATH_CHEATS (IDS_STRING + 454) -#define IDS_SPATH_HISCORE (IDS_STRING + 456) -#define IDS_SPATH_SAMPLES (IDS_STRING + 458) -#define IDS_SPATH_IPS (IDS_STRING + 460) -#define IDS_SPATH_NGCD_ISOS (IDS_STRING + 462) -#define IDS_SPATH_NGCD_COVERS (IDS_STRING + 464) +#define IDS_SPATH_ICONS (IDS_STRING + 454) +#define IDS_SPATH_CHEATS (IDS_STRING + 456) +#define IDS_SPATH_HISCORE (IDS_STRING + 458) +#define IDS_SPATH_SAMPLES (IDS_STRING + 460) +#define IDS_SPATH_IPS (IDS_STRING + 462) +#define IDS_SPATH_NGCD_ISOS (IDS_STRING + 464) +#define IDS_SPATH_NGCD_COVERS (IDS_STRING + 466) #define IDS_ROMPATH_1 (IDS_STRING + 480) #define IDS_ROMPATH_2 (IDS_STRING + 482) diff --git a/src/burner/platform/win32/scrn.cpp b/src/burner/platform/win32/scrn.cpp index f7c2a7bc4..cdf1bf154 100644 --- a/src/burner/platform/win32/scrn.cpp +++ b/src/burner/platform/win32/scrn.cpp @@ -1781,6 +1781,75 @@ static void OnCommand(HWND /*hDlg*/, int id, HWND /*hwndCtl*/, UINT codeNotify) szGamelistLocalisationTemplate[0] = _T('\0'); nGamelistLocalisationActive = false; break; + + case MENU_ENABLEICONS: { + bEnableIcons = !bEnableIcons; + if(!bEnableIcons && bIconsLoaded) { + // unload icons + UnloadDrvIcons(); + bIconsLoaded = 0; + } + if(bEnableIcons && !bIconsLoaded) { + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } + break; + } + + case MENU_ICONS_SIZE_16: { + nIconsSize = ICON_16x16; + if(bEnableIcons && bIconsLoaded) { + // unload icons + UnloadDrvIcons(); + bIconsLoaded = 0; + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } + if(bEnableIcons && !bIconsLoaded) { + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } + break; + } + + case MENU_ICONS_SIZE_24: { + nIconsSize = ICON_24x24; + if(bEnableIcons && bIconsLoaded) { + // unload icons + UnloadDrvIcons(); + bIconsLoaded = 0; + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } + if(bEnableIcons && !bIconsLoaded) { + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } + break; + } + + case MENU_ICONS_SIZE_32: { + nIconsSize = ICON_32x32; + if(bEnableIcons && bIconsLoaded) { + // unload icons + UnloadDrvIcons(); + bIconsLoaded = 0; + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } + if(bEnableIcons && !bIconsLoaded) { + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } + break; + } case MENU_PRIORITY_REALTIME: nAppThreadPriority = THREAD_PRIORITY_TIME_CRITICAL; diff --git a/src/burner/platform/win32/sel.cpp b/src/burner/platform/win32/sel.cpp index 06e8138e4..eceadd91e 100644 --- a/src/burner/platform/win32/sel.cpp +++ b/src/burner/platform/win32/sel.cpp @@ -32,6 +32,14 @@ static char TreeBuilding = 0; // if 1, ignore TVN_SELCHANGED messages static int bImageOrientation; static int UpdatePreview(bool bReset, TCHAR *szPath, int HorCtrl, int VerCrtl); +int nIconsSize = ICON_16x16; +int nIconsSizeXY = 16; +bool bEnableIcons = 0; +bool bIconsLoaded = 0; +int nIconsXDiff; +int nIconsYDiff; +static HICON hDrvIcon[9999]; + static int RomInfoDialog(); // Filter TreeView @@ -929,6 +937,52 @@ static void CreateFilters() SendMessage(hFilterList , TVM_EXPAND,TVE_EXPAND, (LPARAM)hHardware); } +void LoadDrvIcons() +{ + if(nIconsSize == ICON_16x16) { + nIconsSizeXY = 16; + nIconsYDiff = 4; + } + if(nIconsSize == ICON_24x24) { + nIconsSizeXY = 24; + nIconsYDiff = 8; + } + if(nIconsSize == ICON_32x32) { + nIconsSizeXY = 32; + nIconsYDiff = 12; + } + + unsigned int nOldDrvSel = nBurnDrvActive; + + for(unsigned int nDrvIndex = 0; nDrvIndex < nBurnDrvCount; nDrvIndex++) + { + nBurnDrvActive = nDrvIndex; + TCHAR szIcon[MAX_PATH]; + + _stprintf(szIcon, _T("%s%s.ico"), szAppIconsPath, BurnDrvGetText(DRV_NAME)); + hDrvIcon[nDrvIndex] = (HICON)LoadImage(hAppInst, szIcon, IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_LOADFROMFILE); + + if(!hDrvIcon[nDrvIndex] && BurnDrvGetText(DRV_PARENT)) { + _stprintf(szIcon, _T("%s%s.ico"), szAppIconsPath, BurnDrvGetText(DRV_PARENT)); + hDrvIcon[nDrvIndex] = (HICON)LoadImage(hAppInst, szIcon, IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_LOADFROMFILE); + } + } + + nBurnDrvActive = nOldDrvSel; +} + +void UnloadDrvIcons() { + + nIconsSizeXY = 16; + nIconsYDiff = 4; + + for(unsigned int nDrvIndex = 0; nDrvIndex < nBurnDrvCount; nDrvIndex++) + { + DestroyIcon(hDrvIcon[nDrvIndex]); + hDrvIcon[nDrvIndex] = NULL; + } +} + #define UM_CHECKSTATECHANGE (WM_USER + 100) #define UM_CLOSE (WM_USER + 101) @@ -957,11 +1011,11 @@ static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP hExpand = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_TV_PLUS), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); hCollapse = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_TV_MINUS), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); - hNotWorking = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_TV_NOTWORKING), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); - hNotFoundEss = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_TV_NOTFOUND_ESS), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); - hNotFoundNonEss = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_TV_NOTFOUND_NON), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); + hNotWorking = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_TV_NOTWORKING), IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_DEFAULTCOLOR); + hNotFoundEss = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_TV_NOTFOUND_ESS), IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_DEFAULTCOLOR); + hNotFoundNonEss = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_TV_NOTFOUND_NON), IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_DEFAULTCOLOR); - hDrvIconMiss = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_APP), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); + hDrvIconMiss = (HICON)LoadImage(hAppInst, MAKEINTRESOURCE(IDI_APP), IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_DEFAULTCOLOR); TCHAR szOldTitle[1024] = _T(""), szNewTitle[1024] = _T(""); GetWindowText(hSelDlg, szOldTitle, 1024); @@ -998,11 +1052,15 @@ static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP RomsDirCreate(hSelDlg); } + // Icons size related ----------------------------------------- + SHORT cyItem = nIconsSizeXY + 4; // height (in pixels) of each item on the TreeView list + TreeView_SetItemHeight(hSelList, cyItem); + SetFocus(hSelList); RebuildEverything(); - TreeView_SetItemHeight(hSelList, 20); +// TreeView_SetItemHeight(hSelList, 20); if (nDialogSelect > -1) { for (unsigned int i = 0; i < nTmpDrvCount; i++) { @@ -1494,10 +1552,10 @@ static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP // Draw plus and minus buttons if (((NODEINFO*)TvItem.lParam)->bIsParent) { if (TvItem.state & TVIS_EXPANDED) { - DrawIconEx(lplvcd->nmcd.hdc, rect.left + 4, rect.top + 0, hCollapse, 16, 16, 0, NULL, DI_NORMAL); + DrawIconEx(lplvcd->nmcd.hdc, rect.left + 4, rect.top + nIconsYDiff, hCollapse, 16, 16, 0, NULL, DI_NORMAL); } else { if (TvItem.cChildren) { - DrawIconEx(lplvcd->nmcd.hdc, rect.left + 4, rect.top + 0, hExpand, 16, 16, 0, NULL, DI_NORMAL); + DrawIconEx(lplvcd->nmcd.hdc, rect.left + 4, rect.top + nIconsYDiff, hExpand, 16, 16, 0, NULL, DI_NORMAL); } } } @@ -1526,20 +1584,32 @@ static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP { // Draw icons if needed if (!CheckWorkingStatus(((NODEINFO*)TvItem.lParam)->nBurnDrvNo)) { - DrawIconEx(lplvcd->nmcd.hdc, rect.left, rect.top, hNotWorking, 16, 16, 0, NULL, DI_NORMAL); - rect.left += 16 + 4; + DrawIconEx(lplvcd->nmcd.hdc, rect.left, rect.top, hNotWorking, nIconsSizeXY, nIconsSizeXY, 0, NULL, DI_NORMAL); + rect.left += nIconsSizeXY + 4; } else { if (!(gameAv[((NODEINFO*)TvItem.lParam)->nBurnDrvNo])) { - DrawIconEx(lplvcd->nmcd.hdc, rect.left, rect.top, hNotFoundEss, 16, 16, 0, NULL, DI_NORMAL); - rect.left += 16 + 4; + DrawIconEx(lplvcd->nmcd.hdc, rect.left, rect.top, hNotFoundEss, nIconsSizeXY, nIconsSizeXY, 0, NULL, DI_NORMAL); + rect.left += nIconsSizeXY + 4; } else { if (!(nLoadMenuShowX & AVAILONLY) && !(gameAv[((NODEINFO*)TvItem.lParam)->nBurnDrvNo] & 2)) { - DrawIconEx(lplvcd->nmcd.hdc, rect.left, rect.top, hNotFoundNonEss, 16, 16, 0, NULL, DI_NORMAL); - rect.left += 16 + 4; + DrawIconEx(lplvcd->nmcd.hdc, rect.left, rect.top, hNotFoundNonEss, nIconsSizeXY, nIconsSizeXY, 0, NULL, DI_NORMAL); + rect.left += nIconsSizeXY + 4; } } } } + + // Driver Icon drawing code... + if(bEnableIcons && bIconsLoaded) { + if(hDrvIcon[nBurnDrvActive]) { + DrawIconEx(lplvcd->nmcd.hdc, rect.left, rect.top, hDrvIcon[nBurnDrvActive], nIconsSizeXY, nIconsSizeXY, 0, NULL, DI_NORMAL); + } + + if(!hDrvIcon[nBurnDrvActive]) { + DrawIconEx(lplvcd->nmcd.hdc, rect.left, rect.top, hDrvIconMiss, nIconsSizeXY, nIconsSizeXY, 0, NULL, DI_NORMAL); + } + rect.left += nIconsSizeXY + 4; + } _tcsncpy(szText, MangleGamename(BurnDrvGetText(nGetTextFlags | DRV_FULLNAME), false), 1024); szText[1023] = _T('\0'); diff --git a/src/burner/platform/win32/string.rc b/src/burner/platform/win32/string.rc index 58a747fed..56216fba7 100644 --- a/src/burner/platform/win32/string.rc +++ b/src/burner/platform/win32/string.rc @@ -104,6 +104,7 @@ BEGIN IDS_SPATH_PREVIEW "Previews" IDS_SPATH_TITLES "Titles" + IDS_SPATH_ICONS "Icons" IDS_SPATH_CHEATS "Cheats" IDS_SPATH_HISCORE "High Scores" IDS_SPATH_SAMPLES "Samples" diff --git a/src/burner/platform/win32/support_paths.cpp b/src/burner/platform/win32/support_paths.cpp index cce2a6ccf..c9618b60b 100644 --- a/src/burner/platform/win32/support_paths.cpp +++ b/src/burner/platform/win32/support_paths.cpp @@ -11,6 +11,25 @@ TCHAR szAppCheatsPath[MAX_PATH] = _T("support/cheats/"); TCHAR szAppHiscorePath[MAX_PATH] = _T("support/hiscores/"); TCHAR szAppSamplesPath[MAX_PATH] = _T("support/samples/"); TCHAR szAppIpsPath[MAX_PATH] = _T("support/ips/"); +TCHAR szAppIconsPath[MAX_PATH] = _T("support/icons/"); + +static TCHAR szCheckIconsPath[MAX_PATH]; + +static void IconsDirPathChanged() { + if(bEnableIcons && bIconsLoaded) { + // unload icons + UnloadDrvIcons(); + bIconsLoaded = 0; + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } + if(bEnableIcons && !bIconsLoaded) { + // load icons + LoadDrvIcons(); + bIconsLoaded = 1; + } +} static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { @@ -20,12 +39,13 @@ static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP case WM_INITDIALOG: { SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT1, szAppPreviewsPath); SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT2, szAppTitlesPath); - SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT3, szAppCheatsPath); - SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT4, szAppHiscorePath); - SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT5, szAppSamplesPath); - SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT6, szAppIpsPath); - SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT7, szNeoCDGamesDir); - SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT8, szNeoCDCoverDir); + SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT3, szAppIconsPath); + SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT4, szAppCheatsPath); + SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT5, szAppHiscorePath); + SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT6, szAppSamplesPath); + SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT7, szAppIpsPath); + SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT8, szNeoCDGamesDir); + SetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT9, szNeoCDCoverDir); // Setup the tabs hTabControl = GetDlgItem(hDlg, IDC_SPATH_TAB); @@ -33,9 +53,9 @@ static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP TC_ITEM tcItem; tcItem.mask = TCIF_TEXT; - UINT idsString[8] = { IDS_SPATH_PREVIEW, IDS_SPATH_TITLES, IDS_SPATH_CHEATS, IDS_SPATH_HISCORE, IDS_SPATH_SAMPLES, IDS_SPATH_IPS, IDS_SPATH_NGCD_ISOS, IDS_SPATH_NGCD_COVERS }; + UINT idsString[9] = { IDS_SPATH_PREVIEW, IDS_SPATH_TITLES, IDS_SPATH_ICONS, IDS_SPATH_CHEATS, IDS_SPATH_HISCORE, IDS_SPATH_SAMPLES, IDS_SPATH_IPS, IDS_SPATH_NGCD_ISOS, IDS_SPATH_NGCD_COVERS }; - for(int nIndex = 0; nIndex < 8; nIndex++) { + for(int nIndex = 0; nIndex < 9; nIndex++) { tcItem.pszText = FBALoadStringEx(hAppInst, idsString[nIndex], true); TabCtrl_InsertItem(hTabControl, nIndex, &tcItem); } @@ -43,7 +63,7 @@ static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP int TabPage = TabCtrl_GetCurSel(hTabControl); // hide all controls excluding the selected controls - for(int x = 0; x < 8; x++) { + for(int x = 0; x < 9; x++) { if(x != TabPage) { ShowWindow(GetDlgItem(hDlg, IDC_SUPPORTDIR_BR1 + x), SW_HIDE); // browse buttons ShowWindow(GetDlgItem(hDlg, IDC_SUPPORTDIR_EDIT1 + x), SW_HIDE); // edit controls @@ -60,7 +80,7 @@ static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP if (nInitTabSelect) { SendMessage(hTabControl, TCM_SETCURSEL, nInitTabSelect, 0); // hide all controls excluding the selected controls - for(int x = 0; x < 8; x++) { + for(int x = 0; x < 9; x++) { if(x != nInitTabSelect) { ShowWindow(GetDlgItem(hDlg, IDC_SUPPORTDIR_BR1 + x), SW_HIDE); // browse buttons ShowWindow(GetDlgItem(hDlg, IDC_SUPPORTDIR_EDIT1 + x), SW_HIDE); // edit controls @@ -83,7 +103,7 @@ static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP int TabPage = TabCtrl_GetCurSel(hTabControl); // hide all controls excluding the selected controls - for(int x = 0; x < 8; x++) { + for(int x = 0; x < 9; x++) { if(x != TabPage) { ShowWindow(GetDlgItem(hDlg, IDC_SUPPORTDIR_BR1 + x), SW_HIDE); // browse buttons ShowWindow(GetDlgItem(hDlg, IDC_SUPPORTDIR_EDIT1 + x), SW_HIDE); // edit controls @@ -110,17 +130,18 @@ static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP if (LOWORD(wParam) == IDOK) { GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT1, szAppPreviewsPath, sizeof(szAppPreviewsPath)); GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT2, szAppTitlesPath, sizeof(szAppTitlesPath)); - GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT3, szAppCheatsPath, sizeof(szAppCheatsPath)); - GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT4, szAppHiscorePath, sizeof(szAppHiscorePath)); - GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT5, szAppSamplesPath, sizeof(szAppSamplesPath)); - GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT6, szAppIpsPath, sizeof(szAppIpsPath)); - GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT7, szNeoCDGamesDir, sizeof(szNeoCDGamesDir)); - GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT8, szNeoCDCoverDir, sizeof(szNeoCDCoverDir)); + GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT3, szAppIconsPath, sizeof(szAppIconsPath)); + GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT4, szAppCheatsPath, sizeof(szAppCheatsPath)); + GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT5, szAppHiscorePath, sizeof(szAppHiscorePath)); + GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT6, szAppSamplesPath, sizeof(szAppSamplesPath)); + GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT7, szAppIpsPath, sizeof(szAppIpsPath)); + GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT8, szNeoCDGamesDir, sizeof(szNeoCDGamesDir)); + GetDlgItemText(hDlg, IDC_SUPPORTDIR_EDIT9, szNeoCDCoverDir, sizeof(szNeoCDCoverDir)); SendMessage(hDlg, WM_CLOSE, 0, 0); break; } else { - if (LOWORD(wParam) >= IDC_SUPPORTDIR_BR1 && LOWORD(wParam) <= IDC_SUPPORTDIR_BR8) { + if (LOWORD(wParam) >= IDC_SUPPORTDIR_BR1 && LOWORD(wParam) <= IDC_SUPPORTDIR_BR9) { var = IDC_SUPPORTDIR_EDIT1 + LOWORD(wParam) - IDC_SUPPORTDIR_BR1; } else { if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDCANCEL) { @@ -160,6 +181,10 @@ static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP case WM_CLOSE: { EndDialog(hDlg, 0); + // If Icons directory path has been changed do the proper action + if(_tcscmp(szCheckIconsPath, szAppIconsPath)) { + IconsDirPathChanged(); + } break; } } @@ -171,6 +196,8 @@ int SupportDirCreate(HWND hParentWND) { hParent = hParentWND; + _stprintf(szCheckIconsPath, szAppIconsPath); + return FBADialogBox(hAppInst, MAKEINTRESOURCE(IDD_SUPPORTDIR), hParentWND, (DLGPROC)DefInpProc); } @@ -180,5 +207,7 @@ int SupportDirCreateTab(int nTab, HWND hParentWND) hParent = hParentWND; + _stprintf(szCheckIconsPath, szAppIconsPath); + return FBADialogBox(hAppInst, MAKEINTRESOURCE(IDD_SUPPORTDIR), hParentWND, (DLGPROC)DefInpProc); }