]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Added GUI custom data path mode
authorToni Wilen <twilen@winuae.net>
Sat, 15 Apr 2023 18:06:37 +0000 (21:06 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 15 Apr 2023 18:06:37 +0000 (21:06 +0300)
od-win32/resources/resource.h
od-win32/resources/winuae.rc
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32gui.cpp

index 6ac534c6e00b6ff8531374a52aad4692b4c6be80..b661fb75956b6eee3f26c7b1bf9881bede20123f 100644 (file)
 #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
 #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
 #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
 #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
index d91ca3245a29127b7233ccc2d4b8aad530b71e98..d9018d9d460a086b6c70d789bf6f229183feaf4e 100644 (file)
@@ -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
index ab094cc82fa6eeae318e107ceaaa5eba7ec03c79..ce7d7dd6db16668d36610d9147620fc7c7fe8d0a 100644 (file)
@@ -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, '\\')))
index 2c255d57f658c4736fcee4ba554dab19296a3c74..7cebecce9ea8b88c5d9eb701ab4e476498c9fa7f 100644 (file)
@@ -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);
index 4cf8dcde0f307246a964468431287c0b56b470f8..b75a68f275f010f916a67a2b45615bc567fa70dc 100644 (file)
@@ -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)