From: Toni Wilen Date: Thu, 27 Jul 2017 18:02:31 +0000 (+0300) Subject: GUI updates. X-Git-Tag: 3600~142 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=6d4f7bef736c4a728b39d6a7d96df7a407c92558;p=francis%2Fwinuae.git GUI updates. --- diff --git a/od-win32/hardfile_win32.cpp b/od-win32/hardfile_win32.cpp index 5c37a7a1..4011838b 100644 --- a/od-win32/hardfile_win32.cpp +++ b/od-win32/hardfile_win32.cpp @@ -932,7 +932,6 @@ static INT_PTR CALLBACK StringBoxDialogProc (HWND hDlg, UINT msg, WPARAM wParam, DestroyWindow (hDlg); return TRUE; case WM_INITDIALOG: - geometry_file[0] = 0; ShowWindow(GetDlgItem (hDlg, IDC_SAVEBOOTBLOCK), SW_SHOW); SetWindowText(hDlg, _T("Harddrive information")); return TRUE; @@ -940,7 +939,7 @@ static INT_PTR CALLBACK StringBoxDialogProc (HWND hDlg, UINT msg, WPARAM wParam, switch (LOWORD (wParam)) { case IDC_SAVEBOOTBLOCK: - if (DiskSelection(hDlg, 0, 24, &workprefs, geometry_file)) { + if (DiskSelection(hDlg, 0, 24, &workprefs, geometry_file, NULL)) { ini_save(hdini, geometry_file); } break; @@ -970,7 +969,7 @@ void hd_get_meta(HWND hDlg, int idx, TCHAR *geometryfile) struct ini_data *ini = NULL; geometryfile[0] = 0; - text = xcalloc(TCHAR, 10000); + text = xcalloc(TCHAR, 100000); HANDLE h = CreateFile(udi->device_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); @@ -986,7 +985,7 @@ void hd_get_meta(HWND hDlg, int idx, TCHAR *geometryfile) inq[0] = 0xff; if (udi->BusType == BusTypeAta || udi->BusType == BusTypeSata) { - if (!_tcscmp(udi->vendor_id, _T("ATA "))) { + if (!_tcscmp(udi->vendor_id, _T("ATA"))) { satl = true; } } @@ -1049,6 +1048,31 @@ void hd_get_meta(HWND hDlg, int idx, TCHAR *geometryfile) } doout: + + geometry_file[0] = 0; + if (udi->vendor_id[0]) { + _tcscat(geometry_file, udi->vendor_id); + } + if (udi->product_id[0]) { + if (geometry_file[0] && geometry_file[_tcslen(geometry_file) - 1] != ' ') + _tcscat(geometry_file, _T(" ")); + _tcscat(geometry_file, udi->product_id); + } + if (udi->product_rev[0]) { + if (geometry_file[0] && geometry_file[_tcslen(geometry_file) - 1] != ' ') + _tcscat(geometry_file, _T(" ")); + _tcscat(geometry_file, udi->product_rev); + } + if (udi->product_serial[0]) { + if (geometry_file[0] && geometry_file[_tcslen(geometry_file) - 1] != ' ') + _tcscat(geometry_file, _T(" ")); + _tcscat(geometry_file, udi->product_serial); + } + if (udi->size) + _stprintf(geometry_file + _tcslen(geometry_file), _T(" %llX"), udi->size); + if (geometry_file[0]) + _tcscat(geometry_file, _T(".geo")); + stringboxdialogactive = 1; hdini = ini; HWND hwnd = CustomCreateDialog (IDD_DISKINFO, hDlg, StringBoxDialogProc); @@ -2809,7 +2833,7 @@ int harddrive_to_hdf (HWND hDlg, struct uae_prefs *p, int idx) goto err; size = uae_drives[idx].size; path[0] = 0; - DiskSelection (hDlg, IDC_PATH_NAME, 3, p, 0); + DiskSelection (hDlg, IDC_PATH_NAME, 3, p, NULL, NULL); GetDlgItemText (hDlg, IDC_PATH_NAME, path, MAX_DPATH); if (*path == 0) goto err; diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index a5f879bf..93b7d521 100644 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -405,6 +405,7 @@ #define IDS_WINUAETITLE_PAUSED 412 #define IDS_MOUSE_UNTRAP_MODE 413 #define IDS_TABLET_MODE 414 +#define IDC_HARDDRIVE_ID 415 #define IDS_QS_MODELS 1000 #define IDS_QS_MODEL_A500 1001 #define IDS_QS_MODEL_A500P 1002 @@ -555,6 +556,7 @@ #define IDC_SPEED_x86 1233 #define IDC_44KHZ 1234 #define IDC_48KHZ 1235 +#define IDC_FPU4 1235 #define IDC_SOUNDSIZE 1236 #define IDC_FREQUENCY 1237 #define IDC_SOUND0 1238 @@ -817,7 +819,9 @@ #define IDC_JITENABLE 1584 #define IDC_SOUNDDRIVEVOLUMEX2 1584 #define IDC_DISASSEMBLY 1585 -#define IDC_MMUENABLE 1585 +#define IDC_MMUENABLEOFF 1586 +#define IDC_MMUENABLEEC 1587 +#define IDC_MMUENABLE 1588 #define IDC_COLLISION0 1589 #define IDC_COLLISION1 1590 #define IDC_AUDIOSYNC 1590 @@ -1270,6 +1274,8 @@ #define IDC_RAM_ADDRESS2 1853 #define IDC_GENLOCKFILE 1853 #define IDC_GENLOCKFILESELECT 1854 +#define IDC_PATH_GEOMETRY 1855 +#define IDC_PATH_GEOMETRY_SELECTOR 1856 #define ID__FLOPPYDRIVES 40004 #define ID_FLOPPYDRIVES_DF0 40005 #define ID_ST_CONFIGURATION 40010 @@ -1321,7 +1327,7 @@ #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 407 #define _APS_NEXT_COMMAND_VALUE 40050 -#define _APS_NEXT_CONTROL_VALUE 1855 +#define _APS_NEXT_CONTROL_VALUE 1857 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index d1d5439a..0c6e9983 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -252,31 +252,34 @@ IDD_CPU DIALOGEX 0, 0, 396, 317 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - GROUPBOX "CPU",IDC_STATIC,1,1,129,184,BS_LEFT + GROUPBOX "CPU",IDC_STATIC,1,1,129,152,BS_LEFT CONTROL "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,19,63,10 CONTROL "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,32,63,10 CONTROL "68020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,45,63,10 CONTROL "68030",IDC_CPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,58,63,10 CONTROL "68040",IDC_CPU4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,71,63,10 CONTROL "68060",IDC_CPU5,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,84,63,10 - CONTROL "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,107,119,12 + CONTROL "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,99,119,12 CONTROL "More compatible [] 68000: emulate prefetch. 68020+: emulate prefetch partially. More compatible but slower.",IDC_COMPATIBLE, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,121,118,11 + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,112,118,11 CONTROL "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of the CPU emulation. Requires 68020 or higher CPU.",IDC_JITENABLE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,134,120,11 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,124,120,11 + CONTROL "None",IDC_MMUENABLEOFF,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,166,87,10 + CONTROL "EC [] 68EC030, 68EC040 and 68EC060 Transparent Translation Register emulation. Not compatible with JIT.",IDC_MMUENABLEEC, + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,179,120,11 CONTROL "MMU [] 68030, 68040 and 68060 MMU emulation. Not compatible with JIT.",IDC_MMUENABLE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,147,120,11 + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,193,120,11 CONTROL "Unimplemented CPU emu [] Emulate 68060 unimplemented integer instructions",IDC_CPU_UNIMPLEMENTED, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,160,118,10 - GROUPBOX "FPU",IDC_STATIC,1,188,129,128,BS_LEFT - CONTROL "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,204,87,10 - CONTROL "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,217,87,10 - CONTROL "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,230,87,10 - CONTROL "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,243,93,10 + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,136,118,10 + GROUPBOX "FPU",IDC_STATIC,1,212,129,103,BS_LEFT + CONTROL "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,223,87,10 + CONTROL "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,236,87,10 + CONTROL "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,249,87,10 + CONTROL "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,262,93,10 CONTROL "More compatible [] More compatible but slower FPU emulation.",IDC_COMPATIBLE_FPU, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,259,117,10 + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,276,117,10 CONTROL "Unimplemented FPU emu [] Emulate FPU unimplemented instructions",IDC_FPU_UNIMPLEMENTED, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,272,116,10 + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,289,116,10 GROUPBOX "CPU Emulation Speed",IDC_STATIC,136,1,258,97 CONTROL "Fastest possible",IDC_CS_HOST,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,143,19,195,10 CONTROL "Approximate A500/A1200 or cycle-exact",IDC_CS_68000, @@ -309,7 +312,8 @@ BEGIN CONTROL "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,143,299,72,10 CONTROL "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,221,299,72,10 CONTROL "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,299,299,68,11 - CONTROL "Softfloat FPU emulation",IDC_FPU_SOFTFLOAT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,285,115,10 + CONTROL "Softfloat FPU emulation",IDC_FPU_SOFTFLOAT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,302,115,10 + GROUPBOX "MMU",IDC_STATIC,2,154,129,56,BS_LEFT END IDD_FLOPPY DIALOGEX 0, 0, 396, 261 @@ -617,56 +621,59 @@ BEGIN CONTROL "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,296,64,11 END -IDD_HARDFILE DIALOGEX 0, 0, 397, 279 +IDD_HARDFILE DIALOGEX 0, 0, 397, 290 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES CAPTION "Hardfile Settings" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - GROUPBOX "Settings",IDC_STATIC,2,2,392,183 + GROUPBOX "Settings",IDC_STATIC,2,2,392,196 RTEXT "Path:",IDC_HARDFILE_DIR_TEXT,10,18,37,10 COMBOBOX IDC_PATH_NAME,52,15,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "...",IDC_SELECTOR,380,14,11,15 - RTEXT "FileSys:",IDC_HARDFILE_FILESYS_TEXT,13,38,34,10 - COMBOBOX IDC_PATH_FILESYS,51,35,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "...",IDC_FILESYS_SELECTOR,380,34,11,15 - RTEXT "Device:",IDC_HARDFILE_DEVICE_TEXT,16,58,31,10 - EDITTEXT IDC_HARDFILE_DEVICE,52,55,89,15,ES_AUTOHSCROLL - RTEXT "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,150,57,83,10 - EDITTEXT IDC_HARDFILE_BOOTPRI,238,55,44,15 - CONTROL "Manual geometry",IDC_HDF_PHYSGEOMETRY,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,299,56,87,10 - CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,52,75,67,10 - CONTROL "Do not mount",IDC_HDF_DONOTMOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,52,89,67,10 - CONTROL "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,152,75,78,10 - CONTROL "Global filesystem",IDC_HDF_ADDFSRES,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,152,89,82,10 - RTEXT "Surfaces:",IDC_SURFACES_TEXT,298,76,45,10 - EDITTEXT IDC_HEADS,347,73,40,15,ES_NUMBER - RTEXT "Sectors:",IDC_SECTORS_TEXT,298,95,45,10 - EDITTEXT IDC_SECTORS,347,92,40,15,ES_NUMBER - RTEXT "Reserved:",IDC_RESERVED_TEXT,297,113,46,10 - EDITTEXT IDC_RESERVED,347,111,40,15,ES_NUMBER - RTEXT "Block size:",IDC_BLOCKSIZE_TEXT,299,132,45,10 - EDITTEXT IDC_BLOCKSIZE,347,130,40,15,ES_NUMBER - LTEXT "HD Controller:",IDC_STATIC,10,113,54,10,SS_CENTERIMAGE - PUSHBUTTON "Full drive/RDB mode",IDC_HDF_RDB,83,109,127,14 - COMBOBOX IDC_HDF_FEATURE_LEVEL,214,109,75,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_HDF_CONTROLLER,6,131,152,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_HDF_CONTROLLER_UNIT,163,131,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_HDF_CONTROLLER_TYPE,231,131,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_HDFINFO,5,150,385,12,ES_CENTER | ES_READONLY - EDITTEXT IDC_HDFINFO2,5,166,385,12,ES_CENTER | ES_READONLY - GROUPBOX "New hard disk image file",IDC_STATIC,2,190,392,62 - PUSHBUTTON "Create",IDC_HF_CREATE,58,206,80,14 - COMBOBOX IDC_HF_TYPE,58,230,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_HF_SIZE,154,206,61,15 - LTEXT "MB",IDC_STATIC,220,209,53,10,SS_CENTERIMAGE - EDITTEXT IDC_HF_DOSTYPE,154,229,61,15 - LTEXT "DOS type",IDC_STATIC,222,231,51,10,SS_CENTERIMAGE - CONTROL "Sparse file",IDC_HF_SPARSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,215,87,10 - CONTROL "Dynamic HDF",IDC_HF_DYNAMIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,227,87,10 - PUSHBUTTON "OK",IDOK,147,258,50,14 - PUSHBUTTON "Cancel",IDCANCEL,203,258,50,14 - RTEXT "Cylinders:",IDC_CYLINDERS_TEXT,300,113,43,10,NOT WS_VISIBLE + RTEXT "FileSys:",IDC_HARDFILE_FILESYS_TEXT,13,52,34,10 + COMBOBOX IDC_PATH_FILESYS,51,49,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_FILESYS_SELECTOR,380,48,11,15 + RTEXT "Device:",IDC_HARDFILE_DEVICE_TEXT,16,71,31,10 + EDITTEXT IDC_HARDFILE_DEVICE,52,69,89,15,ES_AUTOHSCROLL + RTEXT "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,150,71,83,10 + EDITTEXT IDC_HARDFILE_BOOTPRI,238,69,44,15 + CONTROL "Manual geometry",IDC_HDF_PHYSGEOMETRY,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,299,70,87,10 + CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,52,89,67,10 + CONTROL "Do not mount",IDC_HDF_DONOTMOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,52,103,67,10 + CONTROL "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,152,89,78,10 + CONTROL "Global filesystem",IDC_HDF_ADDFSRES,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,152,103,82,10 + RTEXT "Surfaces:",IDC_SURFACES_TEXT,298,90,45,10 + EDITTEXT IDC_HEADS,347,87,40,15,ES_NUMBER + RTEXT "Sectors:",IDC_SECTORS_TEXT,298,109,45,10 + EDITTEXT IDC_SECTORS,347,106,40,15,ES_NUMBER + RTEXT "Reserved:",IDC_RESERVED_TEXT,297,128,46,10 + EDITTEXT IDC_RESERVED,347,125,40,15,ES_NUMBER + RTEXT "Block size:",IDC_BLOCKSIZE_TEXT,299,147,45,10 + EDITTEXT IDC_BLOCKSIZE,347,144,40,15,ES_NUMBER + LTEXT "HD Controller:",IDC_STATIC,10,127,54,10,SS_CENTERIMAGE + PUSHBUTTON "Full drive/RDB mode",IDC_HDF_RDB,83,123,127,14 + COMBOBOX IDC_HDF_FEATURE_LEVEL,214,123,75,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_HDF_CONTROLLER,6,145,152,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_HDF_CONTROLLER_UNIT,163,145,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_HDF_CONTROLLER_TYPE,231,145,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_HDFINFO,5,164,385,12,ES_CENTER | ES_READONLY + EDITTEXT IDC_HDFINFO2,5,180,385,12,ES_CENTER | ES_READONLY + GROUPBOX "New hard disk image file",IDC_STATIC,2,203,392,62 + PUSHBUTTON "Create",IDC_HF_CREATE,58,219,80,14 + COMBOBOX IDC_HF_TYPE,58,243,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_HF_SIZE,154,219,61,15 + LTEXT "MB",IDC_STATIC,220,222,53,10,SS_CENTERIMAGE + EDITTEXT IDC_HF_DOSTYPE,154,242,61,15 + LTEXT "DOS type",IDC_STATIC,220,244,51,10,SS_CENTERIMAGE + CONTROL "Sparse file",IDC_HF_SPARSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,228,87,10 + CONTROL "Dynamic HDF",IDC_HF_DYNAMIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,240,87,10 + PUSHBUTTON "OK",IDOK,147,271,50,14 + PUSHBUTTON "Cancel",IDCANCEL,203,271,50,14 + RTEXT "Cylinders:",IDC_CYLINDERS_TEXT,300,128,43,10,NOT WS_VISIBLE + COMBOBOX IDC_PATH_GEOMETRY,52,32,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_PATH_GEOMETRY_SELECTOR,380,31,11,15 + RTEXT "Geometry:",IDC_STATIC,6,34,41,10 END IDD_FILESYS DIALOGEX 15, 25, 396, 111 @@ -920,25 +927,38 @@ BEGIN PUSHBUTTON "Delete",IDC_FILTERPRESETDELETE,325,272,55,14 END -IDD_HARDDRIVE DIALOGEX 0, 0, 397, 136 +IDD_HARDDRIVE DIALOGEX 0, 0, 397, 219 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Harddrive Settings" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - LTEXT "Hard drive:",IDC_STATIC,7,11,80,10 + RTEXT "Hard drive:",IDC_STATIC,7,11,38,10 COMBOBOX IDC_HARDDRIVE,49,9,339,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_HDFINFO,5,29,385,12,ES_CENTER | ES_READONLY - EDITTEXT IDC_HDFINFO2,5,46,385,12,ES_CENTER | ES_READONLY - DEFPUSHBUTTON "Create hard disk image file",IDC_HARDDRIVE_IMAGE,5,67,158,14 - EDITTEXT IDC_PATH_NAME,178,67,41,15,ES_AUTOHSCROLL | NOT WS_VISIBLE - CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,315,71,60,10 - COMBOBOX IDC_HDF_CONTROLLER_UNIT,65,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_HDF_CONTROLLER_TYPE,178,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_HDF_FEATURE_LEVEL,291,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_HDF_CONTROLLER,8,113,218,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Add hard drive",IDOK,236,113,73,14 - PUSHBUTTON "Cancel",IDCANCEL,316,113,73,14 - CONTROL "Lock",IDC_HDF_LOCK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,243,71,61,10 + EDITTEXT IDC_HDFINFO,5,51,385,12,ES_CENTER | ES_READONLY + EDITTEXT IDC_HDFINFO2,5,68,385,12,ES_CENTER | ES_READONLY + DEFPUSHBUTTON "Read Identity",IDC_HARDDRIVE_ID,113,152,111,14,WS_DISABLED + EDITTEXT IDC_PATH_NAME,17,190,41,15,ES_AUTOHSCROLL | NOT WS_VISIBLE + CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,171,90,56,10 + COMBOBOX IDC_HDF_CONTROLLER_UNIT,7,111,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_HDF_CONTROLLER_TYPE,113,111,110,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_HDF_FEATURE_LEVEL,7,152,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_HDF_CONTROLLER,7,132,216,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Add hard drive",IDOK,237,195,73,14,WS_DISABLED + PUSHBUTTON "Cancel",IDCANCEL,316,195,73,14 + CONTROL "Lock",IDC_HDF_LOCK,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,233,90,55,10 + DEFPUSHBUTTON "Create hard disk image file",IDC_HARDDRIVE_IMAGE,5,88,158,14,WS_DISABLED + CONTROL "Manual geometry",IDC_HDF_PHYSGEOMETRY,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,299,90,87,10 + EDITTEXT IDC_HEADS,347,109,40,15,ES_NUMBER | WS_DISABLED + EDITTEXT IDC_SECTORS,347,128,40,15,ES_NUMBER | WS_DISABLED + EDITTEXT IDC_RESERVED,347,147,40,15,ES_NUMBER | WS_DISABLED + EDITTEXT IDC_BLOCKSIZE,347,166,40,15,ES_NUMBER | WS_DISABLED + RTEXT "Surfaces:",IDC_SURFACES_TEXT,298,112,45,10 + RTEXT "Sectors:",IDC_SECTORS_TEXT,298,131,45,10 + RTEXT "Block size:",IDC_BLOCKSIZE_TEXT,299,168,45,10 + RTEXT "Cylinders:",IDC_CYLINDERS_TEXT,300,150,43,10 + COMBOBOX IDC_PATH_GEOMETRY,49,29,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_PATH_GEOMETRY_SELECTOR,377,28,11,15,WS_DISABLED + RTEXT "Geometry:",IDC_STATIC,3,31,41,10 END IDD_MISC2 DIALOGEX 0, 0, 396, 278 @@ -1270,7 +1290,7 @@ CAPTION "Disk image information" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,220,303,50,14 - PUSHBUTTON "Save bootblock",IDC_SAVEBOOTBLOCK,397,303,89,14,NOT WS_VISIBLE + PUSHBUTTON "Save",IDC_SAVEBOOTBLOCK,397,303,89,14,NOT WS_VISIBLE EDITTEXT IDC_DISKINFOBOX,5,4,481,292,ES_MULTILINE | ES_READONLY | WS_VSCROLL END @@ -1320,8 +1340,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,5,0,0 - PRODUCTVERSION 3,5,0,0 + FILEVERSION 3,5,1,0 + PRODUCTVERSION 3,5,1,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -1337,12 +1357,12 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "FileDescription", "WinUAE" - VALUE "FileVersion", "3.5.0.0" + VALUE "FileVersion", "3.5.1.0" VALUE "InternalName", "WinUAE" VALUE "LegalCopyright", "© 1996-2017 under the GNU Public License (GPL)" VALUE "OriginalFilename", "WinUAE.exe" VALUE "ProductName", "WinUAE" - VALUE "ProductVersion", "3.5.0.0" + VALUE "ProductVersion", "3.5.1.0" END END BLOCK "VarFileInfo" @@ -1573,6 +1593,7 @@ BEGIN IDD_HARDDRIVE, DIALOG BEGIN RIGHTMARGIN, 396 + BOTTOMMARGIN, 195 END IDD_MISC2, DIALOG @@ -1889,7 +1910,7 @@ BEGIN "you selected an RTG (Picasso96) display with unsupported color depth." IDS_FLOPPYTYPE35DD "3.5"" DD" IDS_FLOPPYTYPE35HD "3.5"" HD" - IDS_FLOPPYTYPE525SD "5.25"" SD" + IDS_FLOPPYTYPE525SD "5.25"" (40)" IDS_FLOPPYTYPEDISABLED "Disabled" IDS_STMENUNOFLOPPY "No floppy disk inserted" IDS_TREEVIEW_HARDWARE "Hardware" diff --git a/od-win32/win32.cpp b/od-win32/win32.cpp index 0fb4eafa..34d44bea 100644 --- a/od-win32/win32.cpp +++ b/od-win32/win32.cpp @@ -2023,7 +2023,7 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam, if (nm->code == NM_RCLICK) { disk_eject (num); } else if (changed_prefs.floppyslots[num].dfxtype >= 0) { - DiskSelection (hWnd, IDC_DF0 + num, 0, &changed_prefs, 0); + DiskSelection (hWnd, IDC_DF0 + num, 0, &changed_prefs, NULL, NULL); disk_insert (num, changed_prefs.floppyslots[num].df); } } else if (num == 5) { @@ -2505,7 +2505,7 @@ static LRESULT CALLBACK HiddenWindowProc (HWND hWnd, UINT message, WPARAM wParam changed_prefs.cdslots[0].inuse = false; break; case ID_ST_CD0: - DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_CD_SELECT, 17, &changed_prefs, 0); + DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_CD_SELECT, 17, &changed_prefs, NULL, NULL); break; case ID_ST_EJECTALL: @@ -2515,19 +2515,19 @@ static LRESULT CALLBACK HiddenWindowProc (HWND hWnd, UINT message, WPARAM wParam disk_eject (3); break; case ID_ST_DF0: - DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF0, 0, &changed_prefs, 0); + DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF0, 0, &changed_prefs, NULL, NULL); disk_insert (0, changed_prefs.floppyslots[0].df); break; case ID_ST_DF1: - DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF1, 0, &changed_prefs, 0); + DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF1, 0, &changed_prefs, NULL, NULL); disk_insert (1, changed_prefs.floppyslots[0].df); break; case ID_ST_DF2: - DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF2, 0, &changed_prefs, 0); + DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF2, 0, &changed_prefs, NULL, NULL); disk_insert (2, changed_prefs.floppyslots[0].df); break; case ID_ST_DF3: - DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF3, 0, &changed_prefs, 0); + DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF3, 0, &changed_prefs, NULL, NULL); disk_insert (3, changed_prefs.floppyslots[0].df); break; diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index fff9c942..8c80493b 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -2250,12 +2250,12 @@ void gui_display (int shortcut) savestate_state = 0; } } else if (shortcut >= 0 && shortcut < 4) { - DiskSelection (hAmigaWnd, IDC_DF0 + shortcut, 0, &changed_prefs, 0); + DiskSelection (hAmigaWnd, IDC_DF0 + shortcut, 0, &changed_prefs, NULL, NULL); } else if (shortcut == 5) { - if (DiskSelection (hAmigaWnd, IDC_DOSAVESTATE, 9, &changed_prefs, 0)) + if (DiskSelection (hAmigaWnd, IDC_DOSAVESTATE, 9, &changed_prefs, NULL, NULL)) save_state (savestate_fname, _T("Description!")); } else if (shortcut == 4) { - if (DiskSelection (hAmigaWnd, IDC_DOLOADSTATE, 10, &changed_prefs, 0)) + if (DiskSelection (hAmigaWnd, IDC_DOLOADSTATE, 10, &changed_prefs, NULL, NULL)) savestate_state = STATE_DORESTORE; } manual_painting_needed--; /* So that WM_PAINT doesn't need to use custom refreshing */ @@ -2603,7 +2603,7 @@ static void setdpath (const TCHAR *name, const TCHAR *path) // fags = 23 for hdf geometry (load) // fags = 24 for hdf geometry (save) -int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *path_out, int *multi) +int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *infilename, TCHAR *path_out, int *multi) { static int previousfilter[20]; TCHAR filtername[MAX_DPATH] = _T(""); @@ -2715,6 +2715,8 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs break; } } + if (infilename) + _tcscpy(full_path, infilename); szFilter[0] = 0; szFilter[1] = 0; @@ -3118,14 +3120,14 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs } return result; } -int DiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *path_out) +int DiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *file_in, TCHAR *path_out) { - return DiskSelection_2 (hDlg, wParam, flag, prefs, path_out, NULL); + return DiskSelection_2 (hDlg, wParam, flag, prefs, file_in, path_out, NULL); } int MultiDiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *path_out) { int multi = 0; - return DiskSelection_2 (hDlg, wParam, flag, prefs, path_out, &multi); + return DiskSelection_2 (hDlg, wParam, flag, prefs, NULL, path_out, &multi); } static int loopmulti (const TCHAR *s, TCHAR *out) { @@ -3172,7 +3174,7 @@ static BOOL CreateHardFile (HWND hDlg, uae_s64 hfsize, const TCHAR *dostype, TCH dynamic = 1; sparse = 0; } - if (!DiskSelection (hDlg, IDC_PATH_NAME, 3, &workprefs, newpath)) + if (!DiskSelection (hDlg, IDC_PATH_NAME, 3, &workprefs, NULL, newpath)) return FALSE; GetDlgItemText (hDlg, IDC_PATH_NAME, init_path, MAX_DPATH); if (*init_path && hfsize) { @@ -3843,13 +3845,13 @@ static TCHAR *HandleConfiguration (HWND hDlg, int flag, struct ConfigStruct *con switch (flag) { case CONFIG_SAVE_FULL: - ok = DiskSelection(hDlg, IDC_SAVE, 5, &workprefs, newpath); + ok = DiskSelection(hDlg, IDC_SAVE, 5, &workprefs, NULL, newpath); GetDlgItemText (hDlg, IDC_EDITNAME, name, MAX_DPATH); _tcscpy (config_filename, name); break; case CONFIG_LOAD_FULL: - if ((ok = DiskSelection(hDlg, IDC_LOAD, 4, &workprefs, newpath))) { + if ((ok = DiskSelection(hDlg, IDC_LOAD, 4, &workprefs, NULL, newpath))) { EnableWindow(GetDlgItem (hDlg, IDC_VIEWINFO), workprefs.info[0]); GetDlgItemText (hDlg, IDC_EDITNAME, name, MAX_DPATH); _tcscpy (config_filename, name); @@ -5048,7 +5050,7 @@ static INT_PTR CALLBACK InfoSettingsProc (HWND hDlg, UINT msg, WPARAM wParam, LP switch(wParam) { case IDC_SELECTOR: - DiskSelection (hDlg, IDC_PATH_NAME, 8, &workprefs, 0); + DiskSelection (hDlg, IDC_PATH_NAME, 8, &workprefs, NULL, NULL); break; case IDOK: EndDialog (hDlg, 1); @@ -8010,7 +8012,7 @@ static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR { TCHAR path[MAX_DPATH]; path[0] = 0; - DiskSelection(hDlg, IDC_GENLOCKFILESELECT, workprefs.genlock_image == 3 ? 20 : 21, &workprefs, path); + DiskSelection(hDlg, IDC_GENLOCKFILESELECT, workprefs.genlock_image == 3 ? 20 : 21, &workprefs, NULL, path); break; } } @@ -9566,11 +9568,11 @@ static void expansion2filebuttons(HWND hDlg, WPARAM wParam, TCHAR *path) switch (LOWORD(wParam)) { case IDC_SCSIROMCHOOSER: - DiskSelection(hDlg, IDC_SCSIROMFILE, 6, &workprefs, path); + DiskSelection(hDlg, IDC_SCSIROMFILE, 6, &workprefs, NULL, path); values_to_expansion2dlg(hDlg, 1); break; case IDC_CPUBOARDROMCHOOSER: - DiskSelection(hDlg, IDC_CPUBOARDROMFILE, 6, &workprefs, path); + DiskSelection(hDlg, IDC_CPUBOARDROMFILE, 6, &workprefs, NULL, path); values_to_expansion2dlg(hDlg, 2); break; } @@ -10656,23 +10658,23 @@ static void kickstartfilebuttons (HWND hDlg, WPARAM wParam, TCHAR *path) switch (LOWORD(wParam)) { case IDC_KICKCHOOSER: - DiskSelection(hDlg, IDC_ROMFILE, 6, &workprefs, path); + DiskSelection(hDlg, IDC_ROMFILE, 6, &workprefs, NULL, path); values_to_kickstartdlg (hDlg); break; case IDC_ROMCHOOSER2: - DiskSelection(hDlg, IDC_ROMFILE2, 6, &workprefs, path); + DiskSelection(hDlg, IDC_ROMFILE2, 6, &workprefs, NULL, path); values_to_kickstartdlg (hDlg); break; case IDC_FLASHCHOOSER: - DiskSelection(hDlg, IDC_FLASHFILE, 11, &workprefs, path); + DiskSelection(hDlg, IDC_FLASHFILE, 11, &workprefs, NULL, path); values_to_kickstartdlg (hDlg); break; case IDC_RTCCHOOSER: - DiskSelection(hDlg, IDC_RTCFILE, 19, &workprefs, path); + DiskSelection(hDlg, IDC_RTCFILE, 19, &workprefs, NULL, path); values_to_kickstartdlg (hDlg); break; case IDC_CARTCHOOSER: - DiskSelection(hDlg, IDC_CARTFILE, 6, &workprefs, path); + DiskSelection(hDlg, IDC_CARTFILE, 6, &workprefs, NULL, path); values_to_kickstartdlg (hDlg); break; } @@ -11135,7 +11137,7 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) TCHAR path[MAX_DPATH]; _tcscpy (path, s); xfree (s); - if (DiskSelection(hDlg, wParam, 9, &workprefs, path)) + if (DiskSelection(hDlg, wParam, 9, &workprefs, NULL, path)) save_state (savestate_fname, _T("Description!")); } } else if (GetDlgCtrlID((HWND)wParam) == IDC_DOLOADSTATE) { @@ -11144,7 +11146,7 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) TCHAR path[MAX_DPATH]; _tcscpy (path, s); xfree (s); - if (DiskSelection(hDlg, wParam, 10, &workprefs, path)) + if (DiskSelection(hDlg, wParam, 10, &workprefs, NULL, path)) savestate_state = STATE_DORESTORE; } } @@ -11308,14 +11310,14 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) break; case IDC_DOSAVESTATE: workprefs.statefile[0] = 0; - if (DiskSelection(hDlg, wParam, 9, &workprefs, 0)) { + if (DiskSelection(hDlg, wParam, 9, &workprefs, NULL, NULL)) { save_state (savestate_fname, _T("Description!")); _tcscpy (workprefs.statefile, savestate_fname); } setstatefilename (hDlg); break; case IDC_DOLOADSTATE: - if (DiskSelection(hDlg, wParam, 10, &workprefs, 0)) + if (DiskSelection(hDlg, wParam, 10, &workprefs, NULL, NULL)) savestate_state = STATE_DORESTORE; _tcscpy (workprefs.statefile, savestate_fname); setstatefilename (hDlg); @@ -12424,7 +12426,7 @@ static void volumeselectfile (HWND hDlg, int setout) int out = sizeof directory_path / sizeof (TCHAR); regquerystr (NULL, _T("FilesystemFilePath"), directory_path, &out); } - if (DiskSelection (hDlg, 0, 14, &workprefs, directory_path)) { + if (DiskSelection (hDlg, 0, 14, &workprefs, NULL, directory_path)) { TCHAR *s = filesys_createvolname (NULL, directory_path, NULL, _T("Harddrive")); SetDlgItemText (hDlg, IDC_PATH_NAME, directory_path); SetDlgItemText (hDlg, IDC_VOLUME_NAME, s); @@ -12596,6 +12598,8 @@ static void sethardfilegeo(HWND hDlg) setchecked(hDlg, IDC_HDF_PHYSGEOMETRY, TRUE); ew (hDlg, IDC_HDF_PHYSGEOMETRY, FALSE); get_hd_geometry(¤t_hfdlg.ci); + } else { + ew (hDlg, IDC_HDF_PHYSGEOMETRY, TRUE); } } @@ -12861,8 +12865,8 @@ static void sethfdostype (HWND hDlg, int idx) static void updatehdfinfo (HWND hDlg, bool force, bool defaults) { - static uae_u64 bsize; - static uae_u8 id[512]; + uae_u8 id[512] = { 0 }; + uae_u64 bsize; uae_u32 blocks, cyls, i; TCHAR tmp[200], tmp2[200]; TCHAR idtmp[17]; @@ -12954,7 +12958,9 @@ static void updatehdfinfo (HWND hDlg, bool force, bool defaults) blocks, (int)(bsize / current_hfdlg.ci.blocksize), (double)blocks * 1.0 * current_hfdlg.ci.blocksize / (1024.0 * 1024.0), (double)bsize / (1024.0 * 1024.0)); - if (cyls > 65535) { + if (cyls * heads * secs > bsize / current_hfdlg.ci.blocksize) { + _tcscat (tmp2, _T(" [Geometry larger than drive!]")); + } else if (cyls > 65535) { _tcscat (tmp2, _T(" [Too many cyls]")); } } @@ -12968,7 +12974,7 @@ static void updatehdfinfo (HWND hDlg, bool force, bool defaults) static void hardfileselecthdf (HWND hDlg, TCHAR *newpath, bool ask, bool newhd) { if (ask) { - DiskSelection (hDlg, IDC_PATH_NAME, 2, &workprefs, newpath); + DiskSelection (hDlg, IDC_PATH_NAME, 2, &workprefs, NULL, newpath); GetDlgItemText (hDlg, IDC_PATH_NAME, current_hfdlg.ci.rootdir, sizeof current_hfdlg.ci.rootdir / sizeof (TCHAR)); DISK_history_add(current_hfdlg.ci.rootdir, -1, HISTORY_HDF, 1); } @@ -13076,7 +13082,7 @@ static INT_PTR CALLBACK TapeDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara SetDlgItemText(hDlg, IDC_PATH_NAME, current_tapedlg.ci.rootdir); break; case IDC_TAPE_SELECT_FILE: - DiskSelection (hDlg, IDC_PATH_NAME, 18, &workprefs, NULL); + DiskSelection (hDlg, IDC_PATH_NAME, 18, &workprefs, NULL, NULL); GetDlgItemText (hDlg, IDC_PATH_NAME, current_tapedlg.ci.rootdir, sizeof current_tapedlg.ci.rootdir / sizeof (TCHAR)); DISK_history_add(current_tapedlg.ci.rootdir, -1, HISTORY_TAPE, 1); fullpath (current_tapedlg.ci.rootdir, sizeof current_tapedlg.ci.rootdir / sizeof (TCHAR)); @@ -13264,7 +13270,7 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam TCHAR path[MAX_DPATH]; _tcscpy (path, s); xfree (s); - DiskSelection (hDlg, IDC_PATH_FILESYS, 12, &workprefs, path); + DiskSelection (hDlg, IDC_PATH_FILESYS, 12, &workprefs, NULL, path); } } else if (GetDlgCtrlID ((HWND)wParam) == IDC_HF_CREATE) { TCHAR *s = favoritepopup (hDlg); @@ -13281,6 +13287,14 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam if (HIWORD (wParam) == CBN_SELCHANGE || HIWORD (wParam) == CBN_KILLFOCUS) { switch (LOWORD (wParam)) { + case IDC_PATH_GEOMETRY: + getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof current_hfdlg.ci.geometry / sizeof(TCHAR)); + if (HIWORD (wParam) == CBN_KILLFOCUS) { + addhistorymenu(hDlg, current_hfdlg.ci.geometry, IDC_PATH_GEOMETRY, HISTORY_GEO, false); + sethardfile(hDlg); + updatehdfinfo (hDlg, true, false); + } + break; case IDC_PATH_NAME: if (getcomboboxtext(hDlg, IDC_PATH_NAME, tmp, sizeof tmp / sizeof(TCHAR))) { if (_tcscmp (tmp, current_hfdlg.ci.rootdir)) { @@ -13302,7 +13316,8 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam recursive++; if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_KILLFOCUS) { - switch (LOWORD(wParam)) { + switch (LOWORD(wParam)) + { case IDC_HDF_CONTROLLER: posn = gui_get_string_cursor(hdmenutable, hDlg, IDC_HDF_CONTROLLER); if (posn != CB_ERR) { @@ -13345,13 +13360,6 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam } break; } - case IDC_PATH_GEOMETRY: - getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof current_hfdlg.ci.geometry / sizeof(TCHAR)); - if (HIWORD (wParam) == CBN_KILLFOCUS) { - addhistorymenu(hDlg, current_hfdlg.ci.geometry, IDC_PATH_GEOMETRY, HISTORY_GEO, false); - sethardfile(hDlg); - } - break; } switch (LOWORD (wParam)) { @@ -13383,7 +13391,7 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam } break; case IDC_FILESYS_SELECTOR: - DiskSelection (hDlg, IDC_PATH_FILESYS, 12, &workprefs, 0); + DiskSelection (hDlg, IDC_PATH_FILESYS, 12, &workprefs, NULL, NULL); getcomboboxtext(hDlg, IDC_PATH_FILESYS, current_hfdlg.ci.filesys, sizeof current_hfdlg.ci.filesys / sizeof(TCHAR)); DISK_history_add(current_hfdlg.ci.filesys, -1, HISTORY_FS, 1); break; @@ -13428,10 +13436,11 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam sethardfile (hDlg); break; case IDC_PATH_GEOMETRY_SELECTOR: - DiskSelection (hDlg, IDC_PATH_GEOMETRY, 23, &workprefs, 0); - getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof current_hfdlg.ci.geometry / sizeof(TCHAR)); - DISK_history_add(current_hfdlg.ci.geometry, -1, HISTORY_GEO, 1); - sethardfile(hDlg); + if (DiskSelection (hDlg, IDC_PATH_GEOMETRY, 23, &workprefs, NULL, current_hfdlg.ci.geometry)) { + DISK_history_add(current_hfdlg.ci.geometry, -1, HISTORY_GEO, 1); + sethardfile(hDlg); + updatehdfinfo (hDlg, true, false); + } break; case IDC_SECTORS: p = ischecked(hDlg, IDC_HDF_PHYSGEOMETRY) ? ¤t_hfdlg.ci.psecs : ¤t_hfdlg.ci.sectors; @@ -13670,11 +13679,12 @@ static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara } break; case IDC_PATH_GEOMETRY_SELECTOR: - DiskSelection (hDlg, IDC_PATH_GEOMETRY, 23, &workprefs, 0); - getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof current_hfdlg.ci.geometry / sizeof(TCHAR)); - DISK_history_add(current_hfdlg.ci.geometry, -1, HISTORY_GEO, 1); - setharddrive(hDlg); - updatehdfinfo (hDlg, true, false); + if (DiskSelection (hDlg, IDC_PATH_GEOMETRY, 23, &workprefs, NULL, current_hfdlg.ci.geometry)) { + getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof current_hfdlg.ci.geometry / sizeof(TCHAR)); + DISK_history_add(current_hfdlg.ci.geometry, -1, HISTORY_GEO, 1); + setharddrive(hDlg); + updatehdfinfo (hDlg, true, false); + } break; case IDC_SECTORS: p = ¤t_hfdlg.ci.psecs; @@ -13881,7 +13891,7 @@ static int harddiskdlg_button (HWND hDlg, WPARAM wParam) int button = LOWORD (wParam); switch (button) { case IDC_CD_SELECT: - DiskSelection (hDlg, wParam, 17, &workprefs, NULL); + DiskSelection (hDlg, wParam, 17, &workprefs, NULL, NULL); quickstart_cdtype = 1; workprefs.cdslots[0].inuse = true; addcdtype (hDlg, IDC_CD_TYPE); @@ -14320,10 +14330,30 @@ static void addcdtype (HWND hDlg, int id) SendDlgItemMessage (hDlg, id, CB_SETCURSEL, cdtype, 0); } +static int fromdfxtype(int dfx) +{ + if (dfx == 6) + dfx = 3; + else if (dfx >= 3) + dfx++; + dfx++; + return dfx; +} + +static int todfxtype(int val) +{ + val--; + if (val == 3) + val = 6; + else if (val > 3) + val--; + return val; +} + static void addfloppytype (HWND hDlg, int n) { int state, chk; - int nn = workprefs.floppyslots[n].dfxtype + 1; + int nn = fromdfxtype(workprefs.floppyslots[n].dfxtype); int showcd = 0; TCHAR *text; @@ -14405,11 +14435,11 @@ static void addfloppytype (HWND hDlg, int n) CheckDlgButton (hDlg, f_enable, state ? BST_CHECKED : BST_UNCHECKED); TCHAR tmp[10]; tmp[0] = 0; - if (n < 2 || nn - 1 < DRV_PC_ONLY_40) { + if (n < 2 || ((nn - 1 != 5) && (nn - 1 != 6))) { if (!showcd || n != 1) _stprintf(tmp, _T("DF%d:"), n); } else { - int t = nn - 1 == DRV_PC_ONLY_40 ? 40 : 80; + int t = nn - 1 == 5 ? 40 : 80; _stprintf(tmp, _T("%c: (%d)"), n == 2 ? 'A' : 'B', t); } if (tmp[0]) @@ -14433,8 +14463,8 @@ static void getfloppytype (HWND hDlg, int n) int f_type = floppybuttons[n][3]; LRESULT val = SendDlgItemMessage (hDlg, f_type, CB_GETCURSEL, 0, 0L); - if (val != CB_ERR && workprefs.floppyslots[n].dfxtype != val - 1) { - workprefs.floppyslots[n].dfxtype = (int)val - 1; + if (val != CB_ERR && workprefs.floppyslots[n].dfxtype != todfxtype(val)) { + workprefs.floppyslots[n].dfxtype = todfxtype(val); addfloppytype (hDlg, n); } } @@ -14494,7 +14524,7 @@ static int getfloppybox (HWND hDlg, int f_text, TCHAR *out, int maxlen, int type bool gui_ask_disk(int drv, TCHAR *name) { _tcscpy(changed_prefs.floppyslots[drv].df, name); - DiskSelection (hAmigaWnd, IDC_DF0 + drv, 22, &changed_prefs, 0); + DiskSelection (hAmigaWnd, IDC_DF0 + drv, 22, &changed_prefs, NULL, NULL); _tcscpy(name, changed_prefs.floppyslots[drv].df); return true; } @@ -14647,6 +14677,7 @@ static INT_PTR CALLBACK FloppyDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35dd); SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35hd); SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft525sd); + SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)_T("5.25\" (80)")); SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35ddescom); if (i >= 2) { SendDlgItemMessage(hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)_T("PC Bridge (40)")); @@ -14835,11 +14866,11 @@ static INT_PTR CALLBACK FloppyDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA deletesaveimage (hDlg, 3); break; case IDC_CREATE: - DiskSelection (hDlg, wParam, 1, &workprefs, 0); + DiskSelection (hDlg, wParam, 1, &workprefs, NULL, NULL); addfloppyhistory (hDlg); break; case IDC_CREATE_RAW: - DiskSelection (hDlg, wParam, 1, &workprefs, 0); + DiskSelection (hDlg, wParam, 1, &workprefs, NULL, NULL); addfloppyhistory (hDlg); break; } @@ -18869,7 +18900,7 @@ static INT_PTR CALLBACK AVIOutputDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP break; case IDC_STATEREC_SAVE: if (input_record > INPREC_RECORD_NORMAL) { - if (DiskSelection (hDlg, wParam, 16, &workprefs, NULL)) { + if (DiskSelection (hDlg, wParam, 16, &workprefs, NULL, NULL)) { TCHAR tmp[MAX_DPATH]; _tcscpy (tmp, workprefs.inprecfile); _tcscat (tmp, _T(".uss")); @@ -18901,7 +18932,7 @@ static INT_PTR CALLBACK AVIOutputDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP inprec_close (true); } else { inprec_close (true); - if (DiskSelection (hDlg, wParam, 15, &workprefs, NULL)) { + if (DiskSelection (hDlg, wParam, 15, &workprefs, NULL, NULL)) { input_play = INPREC_PLAY_NORMAL; _tcscpy (currprefs.inprecfile, workprefs.inprecfile); set_special (SPCFLAG_MODE_CHANGE); diff --git a/od-win32/win32gui.h b/od-win32/win32gui.h index d0339e9f..ae6f374c 100644 --- a/od-win32/win32gui.h +++ b/od-win32/win32gui.h @@ -10,7 +10,7 @@ #define CONFIG_DELETE 4 void WIN32GUI_LoadUIString (DWORD id, TCHAR *string, DWORD dwStringLen); -extern int DiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *); +extern int DiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *, TCHAR *); void InitializeListView (HWND hDlg); extern void pre_gui_message (const TCHAR*,...); extern void gui_message_id (int id);