From 7b5c0e91e6df2728312ddd4da0ebe805f7ab0096 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 15 Apr 2023 21:06:37 +0300 Subject: [PATCH] Added GUI custom data path mode --- od-win32/resources/resource.h | 5 ++- od-win32/resources/winuae.rc | 73 ++++++++++++++++++----------------- od-win32/win32.cpp | 20 ++++++++-- od-win32/win32.h | 4 +- od-win32/win32gui.cpp | 34 ++++++++++++++-- 5 files changed, 90 insertions(+), 46 deletions(-) diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index 6ac534c6..b661fb75 100644 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -1049,6 +1049,7 @@ #define IDC_EJECT0Q 1685 #define IDC_PATHS_NVRAML 1685 #define IDC_DF1WPQ 1686 +#define IDC_PATHS_CUSTOMDATA 1686 #define IDC_EJECT1Q 1687 #define IDC_DF1TEXTQ 1688 #define IDC_INFO0Q 1689 @@ -1081,7 +1082,6 @@ #define IDC_CS_RTC 1710 #define IDC_FILTERKEEPAUTOSCALEASPECT 1710 #define IDC_CS_CIAA_TOD1 1711 -#define IDC_SOUND_VOLCNT 1711 #define IDC_FILTERENABLE 1711 #define IDC_CS_CIAA_TOD2 1712 #define IDC_CS_EXT 1712 @@ -1326,6 +1326,7 @@ #define IDC_SCSIROMFILEPCMCIA 1865 #define IDC_KEYBOARD_SWAPHACK 1865 #define IDC_SCSIROM24BITDMA 1866 +#define IDC_CUSTOMDATAPATH 1866 #define ID__FLOPPYDRIVES 40004 #define ID_FLOPPYDRIVES_DF0 40005 #define ID_ST_CONFIGURATION 40010 @@ -1377,7 +1378,7 @@ #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 407 #define _APS_NEXT_COMMAND_VALUE 40050 -#define _APS_NEXT_CONTROL_VALUE 1866 +#define _APS_NEXT_CONTROL_VALUE 1867 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index d91ca324..d9018d9d 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -1073,38 +1073,38 @@ IDD_PATHS DIALOGEX 0, 0, 396, 316 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - LTEXT "System ROMs:",IDC_PATHS_ROML,3,2,138,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_ROM,3,13,377,15,ES_AUTOHSCROLL + LTEXT "System ROMs:",IDC_PATHS_ROML,3,16,74,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_ROM,89,13,290,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_PATHS_ROMS,384,13,11,15 - CONTROL "Scan subfolders",IDC_PATHS_RECURSIVEROMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,1,197,11 - LTEXT "Configuration files:",IDC_PATHS_CONFIGL,3,32,134,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_CONFIG,3,44,377,15,ES_AUTOHSCROLL + CONTROL "Scan subfolders",IDC_PATHS_RECURSIVEROMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,91,1,197,11 + LTEXT "Configuration files:",IDC_PATHS_CONFIGL,89,47,134,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_CONFIG,88,44,291,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_PATHS_CONFIGS,384,43,11,15 - CONTROL "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,31,99,11 - LTEXT "Screenshots:",IDC_PATHS_SCREENSHOTL,3,91,143,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_SCREENSHOT,3,102,377,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_SCREENSHOTS,384,101,11,15 - LTEXT "State files:",IDC_PATHS_STATEFILEL,3,120,129,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_SAVESTATE,3,131,377,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_SAVESTATES,384,130,11,15 - LTEXT "Videos:",IDC_PATHS_AVIOUTPUTL,3,149,130,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_AVIOUTPUT,3,160,377,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_AVIOUTPUTS,384,159,11,15 - LTEXT "Saveimages:",IDC_PATHS_SAVEIMAGEL,3,178,129,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_SAVEIMAGE,3,189,377,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_SAVEIMAGES,384,189,11,15 + CONTROL "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,91,31,99,11 + LTEXT "Screenshots:",IDC_PATHS_SCREENSHOTL,3,86,78,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_SCREENSHOT,89,82,290,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_SCREENSHOTS,384,82,11,15 + LTEXT "State files:",IDC_PATHS_STATEFILEL,3,103,75,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_SAVESTATE,89,101,290,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_SAVESTATES,384,101,11,15 + LTEXT "Videos:",IDC_PATHS_AVIOUTPUTL,3,123,75,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_AVIOUTPUT,89,120,290,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_AVIOUTPUTS,384,120,11,15 + LTEXT "Saveimages:",IDC_PATHS_SAVEIMAGEL,3,154,78,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_SAVEIMAGE,89,151,290,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_SAVEIMAGES,384,152,11,15 CONTROL "Use original image's path",IDC_PATHS_SAVEIMAGEORIGINALPATH, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,177,197,11 - LTEXT "Rips:",IDC_PATHS_RIPSL,3,207,131,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_RIP,3,219,377,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_RIPS,383,218,11,15 - PUSHBUTTON "Reset to defaults",IDC_PATHS_DEFAULT,2,238,92,14 - PUSHBUTTON "Rescan ROMs",IDC_ROM_RESCAN,2,255,92,14 - COMBOBOX IDC_PATHS_DEFAULTTYPE,99,239,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Clear disk history",IDC_RESETDISKHISTORY,99,255,92,14 - CONTROL "Use relative paths",IDC_PATHS_RELATIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,199,257,94,11 - PUSHBUTTON "Clear registry",IDC_RESETREGISTRY,302,238,92,14 - CONTROL "Portable mode",IDC_REGISTRYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,303,257,82,11 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,91,139,197,11 + LTEXT "Rips:",IDC_PATHS_RIPSL,3,172,77,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_RIP,89,169,290,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_RIPS,384,169,11,15 + PUSHBUTTON "Set Path",IDC_PATHS_DEFAULT,2,204,83,14 + PUSHBUTTON "Rescan ROMs",IDC_ROM_RESCAN,2,240,83,14 + COMBOBOX IDC_PATHS_DEFAULTTYPE,89,205,164,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Clear disk history",IDC_RESETDISKHISTORY,89,240,83,14 + CONTROL "Use relative paths",IDC_PATHS_RELATIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,191,242,94,11 + PUSHBUTTON "Clear registry",IDC_RESETREGISTRY,296,204,83,14 + CONTROL "Portable mode",IDC_REGISTRYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,295,242,82,11 GROUPBOX "Debug logging",IDC_STATIC,1,271,393,45 COMBOBOX IDC_LOGSELECT,7,282,137,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP CONTROL "Enable full logging",IDC_LOGENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,283,93,12 @@ -1112,10 +1112,13 @@ BEGIN PUSHBUTTON "Save All [] Create zip file that includes both logs and config file.",IDC_LOGSAVE,337,283,51,14 PUSHBUTTON "Open [] Open selected file.",IDC_LOGOPEN,337,298,51,14 EDITTEXT IDC_LOGPATH,7,299,324,13,ES_READONLY - CONTROL "Cache Boxart files",IDC_PATHS_ARTCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,31,125,11 - EDITTEXT IDC_PATHS_NVRAM,3,73,377,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_NVRAMS,384,73,11,15 - LTEXT "NVRAM files:",IDC_PATHS_NVRAML,3,62,134,8,SS_CENTERIMAGE + CONTROL "Cache Boxart files",IDC_PATHS_ARTCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,247,31,125,11 + EDITTEXT IDC_PATHS_NVRAM,89,63,290,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_NVRAMS,384,63,11,15 + LTEXT "NVRAM files:",IDC_PATHS_NVRAML,3,66,77,8,SS_CENTERIMAGE + EDITTEXT IDC_CUSTOMDATAPATH,89,222,290,13,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_CUSTOMDATA,384,221,11,15 + LTEXT "Data path:",IDC_STATIC,5,224,34,8 END IDD_QUICKSTART DIALOGEX 0, 0, 396, 316 @@ -1297,8 +1300,8 @@ STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAP CAPTION "Scanning ROM image files..." FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - DEFPUSHBUTTON "OK",IDOK,147,51,58,14,NOT WS_VISIBLE - PUSHBUTTON "Cancel",IDCANCEL,214,51,58,14 + DEFPUSHBUTTON "OK",IDOK,113,51,58,14,NOT WS_VISIBLE + PUSHBUTTON "Cancel",IDCANCEL,180,51,58,14 CTEXT "",IDC_INFOBOX_TEXT1,4,7,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP CTEXT "",IDC_INFOBOX_TEXT2,4,21,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP CTEXT "",IDC_INFOBOX_TEXT3,4,35,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP diff --git a/od-win32/win32.cpp b/od-win32/win32.cpp index ab094cc8..ce7d7dd6 100644 --- a/od-win32/win32.cpp +++ b/od-win32/win32.cpp @@ -210,6 +210,7 @@ TCHAR start_path_exe[MAX_DPATH]; TCHAR start_path_plugins[MAX_DPATH]; TCHAR start_path_new1[MAX_DPATH]; /* AF2005 */ TCHAR start_path_new2[MAX_DPATH]; /* AMIGAFOREVERDATA */ +TCHAR start_path_custom[MAX_DPATH]; TCHAR bootlogpath[MAX_DPATH]; TCHAR logpath[MAX_DPATH]; bool winuaelog_temporary_enable; @@ -6069,8 +6070,11 @@ void setpathmode (pathtype pt) if (pt == PATH_TYPE_NEWAF) _tcscpy (pathmode, _T("AmigaForever")); if (pt == PATH_TYPE_AMIGAFOREVERDATA) - _tcscpy (pathmode, _T("AMIGAFOREVERDATA")); - regsetstr (NULL, _T("PathMode"), pathmode); + _tcscpy(pathmode, _T("AMIGAFOREVERDATA")); + if (pt == PATH_TYPE_CUSTOM) + _tcscpy(pathmode, _T("WinUAE_Custom")); + regsetstr(NULL, _T("PathMode"), pathmode); + regsetstr(NULL, _T("PathCustom"), start_path_custom); } static void getstartpaths (void) @@ -6090,6 +6094,8 @@ static void getstartpaths (void) int size = sizeof (prevpath) / sizeof (TCHAR); if (!regquerystr (key, _T("PathMode"), prevpath, &size)) prevpath[0] = 0; + if (!regquerystr(key, _T("PathCustom"), start_path_custom, &size)) + start_path_custom[0] = 0; regclosetree (key); } if (!_tcscmp (prevpath, _T("WinUAE"))) @@ -6098,8 +6104,16 @@ static void getstartpaths (void) path_type = PATH_TYPE_NEWWINUAE; if (!_tcscmp (prevpath, _T("AF2005")) || !_tcscmp (prevpath, _T("AmigaForever"))) path_type = PATH_TYPE_NEWAF; - if (!_tcscmp (prevpath, _T("AMIGAFOREVERDATA"))) + if (!_tcscmp(prevpath, _T("AMIGAFOREVERDATA"))) path_type = PATH_TYPE_AMIGAFOREVERDATA; + if (!_tcscmp(prevpath, _T("WinUAE_Custom"))) { + path_type = PATH_TYPE_CUSTOM; + if (start_path_custom[0]) { + _tcscpy(start_path_data, start_path_custom); + } else { + path_type = PATH_TYPE_NEWWINUAE; + } + } _tcscpy(start_path_exe, executable_path); if((posn = _tcsrchr (start_path_exe, '\\'))) diff --git a/od-win32/win32.h b/od-win32/win32.h index 2c255d57..7cebecce 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -101,11 +101,11 @@ extern HINSTANCE hInst; extern HMODULE userdll; extern HMODULE kerneldll; extern int af_path_2005; -extern TCHAR start_path_new1[MAX_DPATH], start_path_new2[MAX_DPATH]; +extern TCHAR start_path_new1[MAX_DPATH], start_path_new2[MAX_DPATH], start_path_custom[MAX_DPATH]; extern TCHAR bootlogpath[MAX_DPATH]; extern TCHAR logpath[MAX_DPATH]; extern bool winuaelog_temporary_enable; -enum pathtype { PATH_TYPE_DEFAULT, PATH_TYPE_WINUAE, PATH_TYPE_NEWWINUAE, PATH_TYPE_NEWAF, PATH_TYPE_AMIGAFOREVERDATA, PATH_TYPE_END }; +enum pathtype { PATH_TYPE_DEFAULT, PATH_TYPE_WINUAE, PATH_TYPE_NEWWINUAE, PATH_TYPE_NEWAF, PATH_TYPE_AMIGAFOREVERDATA, PATH_TYPE_CUSTOM, PATH_TYPE_END }; void setpathmode (pathtype pt); extern int sleep_millis (int ms); diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index 4cf8dcde..b75a68f2 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -136,6 +136,7 @@ int gui_active, gui_left; static struct newresource *panelresource; int dialog_inhibit; static HMODULE hHtmlHelp; +pathtype path_type; void HtmlHelp(const TCHAR *panel) { @@ -6636,6 +6637,15 @@ static void values_to_pathsdialog (HWND hDlg) wsetpath(hDlg, _T("SaveimagePath"), IDC_PATHS_SAVEIMAGE, _T("SaveImages")); wsetpath(hDlg, _T("VideoPath"), IDC_PATHS_AVIOUTPUT, _T("Videos")); wsetpath(hDlg, _T("RipperPath"), IDC_PATHS_RIP, _T(".\\")); + + if (path_type == PATH_TYPE_CUSTOM) { + SetDlgItemText(hDlg, IDC_CUSTOMDATAPATH, start_path_custom); + ew(hDlg, IDC_PATHS_CUSTOMDATA, TRUE); + } else { + SetDlgItemText(hDlg, IDC_CUSTOMDATAPATH, start_path_data); + ew(hDlg, IDC_PATHS_CUSTOMDATA, FALSE); + } + ew(hDlg, IDC_CUSTOMDATAPATH, FALSE); } static const TCHAR *pathnames[] = { @@ -6851,7 +6861,6 @@ static void savelog (HWND hDlg, int all) #endif } -pathtype path_type; static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { const GUID pathsguid = { 0x5674338c, 0x7a0b, 0x4565, { 0xbf, 0x75, 0x62, 0x8c, 0x80, 0x4a, 0xef, 0xf7 } }; @@ -6913,6 +6922,10 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM if (path_type == PATH_TYPE_WINUAE || path_type == PATH_TYPE_DEFAULT) selpath = numtypes; ptypes[numtypes++] = PATH_TYPE_WINUAE; + xSendDlgItemMessage(hDlg, IDC_PATHS_DEFAULTTYPE, CB_ADDSTRING, 0, (LPARAM)_T("Custom")); + if (path_type == PATH_TYPE_CUSTOM) + selpath = numtypes; + ptypes[numtypes++] = PATH_TYPE_CUSTOM; xSendDlgItemMessage (hDlg, IDC_PATHS_DEFAULTTYPE, CB_SETCURSEL, selpath, 0); EnableWindow (GetDlgItem (hDlg, IDC_PATHS_DEFAULTTYPE), numtypes > 0 ? TRUE : FALSE); SetWindowText (GetDlgItem (hDlg, IDC_LOGPATH), bootlogpath); @@ -6924,6 +6937,7 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM xSendDlgItemMessage (hDlg, IDC_LOGSELECT, CB_SETCURSEL, 0, 0); CheckDlgButton (hDlg, IDC_LOGENABLE, winuaelog_temporary_enable || (full_property_sheet == 0 && currprefs.win32_logfile)); ew (hDlg, IDC_LOGENABLE, winuaelog_temporary_enable == false && full_property_sheet); + ew(hDlg, IDC_CUSTOMDATAPATH, selpath == PATH_TYPE_CUSTOM); extern int consoleopen; if (consoleopen || !full_property_sheet) { CheckDlgButton (hDlg, IDC_LOGENABLE2, consoleopen ? TRUE : FALSE); @@ -7018,7 +7032,6 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM if (DirectorySelection (hDlg, &pathsguid, tmp)) { set_path (_T("NVRAMPath"), tmp); values_to_pathsdialog (hDlg); - FreeConfigStore (); } break; case IDC_PATHS_NVRAM: @@ -7080,6 +7093,15 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM GetWindowText (GetDlgItem (hDlg, IDC_PATHS_RIP), tmp, sizeof (tmp) / sizeof (TCHAR)); set_path (_T("RipperPath"), tmp); break; + case IDC_PATHS_CUSTOMDATA: + _tcscpy(tmp, start_path_custom); + if (DirectorySelection(hDlg, &pathsguid, tmp)) { + fullpath(tmp, sizeof(tmp) / sizeof(TCHAR), false); + fixtrailing(tmp); + _tcscpy(start_path_custom, tmp); + values_to_pathsdialog(hDlg); + } + break; case IDC_PATHS_DEFAULT: val = xSendDlgItemMessage (hDlg, IDC_PATHS_DEFAULTTYPE, CB_GETCURSEL, 0, 0L); if (val != CB_ERR && val >= 0 && val < numtypes) { @@ -7098,6 +7120,12 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM } else if (val == PATH_TYPE_AMIGAFOREVERDATA && start_path_new2[0]) { path_type = PATH_TYPE_AMIGAFOREVERDATA; _tcscpy (start_path_data, start_path_new1); + } else if (val == PATH_TYPE_CUSTOM) { + path_type = PATH_TYPE_CUSTOM; + if (!start_path_custom[0]) { + _tcscpy(start_path_custom, start_path_exe); + } + _tcscpy(start_path_data, start_path_custom); } SetCurrentDirectory (start_path_data); setpathmode (path_type); @@ -12303,8 +12331,6 @@ static void init_kickstart (HWND hDlg) if (!regexiststree(NULL, _T("DetectedROMs"))) scan_roms (NULL, rp_isactive () ? 0 : 1); - - } static void kickstartfilebuttons (HWND hDlg, WPARAM wParam, TCHAR *path) -- 2.47.3