From 7d2834b2019b781ab04bb68545acb82231aced7c Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 20 Nov 2020 05:42:47 +0100 Subject: [PATCH] More Settings dialog fixes and improvements. --- src/include/86box/language.h | 7 +- src/include/86box/resource.h | 204 +++++++++--------- src/include/86box/win.h | 3 +- src/win/86Box.rc | 187 ++++++++-------- src/win/icons/storage_controllers.ico | Bin 0 -> 1150 bytes src/win/win_media_menu.c | 2 +- src/win/win_settings.c | 294 ++++++++++++++++---------- 7 files changed, 395 insertions(+), 302 deletions(-) create mode 100644 src/win/icons/storage_controllers.ico diff --git a/src/include/86box/language.h b/src/include/86box/language.h index af7b6a5bc..451811964 100644 --- a/src/include/86box/language.h +++ b/src/include/86box/language.h @@ -44,11 +44,11 @@ #define IDS_2068 2068 // "Sound" #define IDS_2069 2069 // "Network" #define IDS_2070 2070 // "Ports (COM & LPT)" -#define IDS_2071 2071 // "Other peripherals" +#define IDS_2071 2071 // "Storage controllers" #define IDS_2072 2072 // "Hard disks" #define IDS_2073 2073 // "Floppy and CD-ROM drives" #define IDS_2074 2074 // "Other removable devices" -#define IDS_2075 2075 // "CD-ROM images (*.ISO;*.CU.." +#define IDS_2075 2075 // "Other peripherals" #define IDS_2076 2076 // "Surface-based images (*.8.." #define IDS_2077 2077 // "Click to capture mouse" #define IDS_2078 2078 // "Press F12-F8 to release mouse" @@ -113,6 +113,7 @@ #define IDS_2137 2137 // "Reset" #define IDS_2138 2138 // "Don't Reset" #define IDS_2139 2139 // "MO images (*.IM?)\0*.IM?..." +#define IDS_2140 2140 // "CD-ROM images (*.ISO;*.CU.." #define IDS_4096 4096 // "Hard disk (%s)" #define IDS_4097 4097 // "%01i:%01i" @@ -220,7 +221,7 @@ #define IDS_LANG_ENUS IDS_7168 -#define STR_NUM_2048 92 +#define STR_NUM_2048 93 #define STR_NUM_3072 11 #define STR_NUM_4096 39 #define STR_NUM_4352 6 diff --git a/src/include/86box/resource.h b/src/include/86box/resource.h index 25c087fda..5b0cbf0c8 100644 --- a/src/include/86box/resource.h +++ b/src/include/86box/resource.h @@ -35,11 +35,12 @@ #define DLG_CFG_SOUND 114 /* sub-dialog of config */ #define DLG_CFG_NETWORK 115 /* sub-dialog of config */ #define DLG_CFG_PORTS 116 /* sub-dialog of config */ -#define DLG_CFG_PERIPHERALS 117 /* sub-dialog of config */ +#define DLG_CFG_STORAGE 117 /* sub-dialog of config */ #define DLG_CFG_HARD_DISKS 118 /* sub-dialog of config */ #define DLG_CFG_HARD_DISKS_ADD 119 /* sub-dialog of config */ #define DLG_CFG_FLOPPY_AND_CDROM_DRIVES 120 /* sub-dialog of config */ #define DLG_CFG_OTHER_REMOVABLE_DEVICES 121 /* sub-dialog of config */ +#define DLG_CFG_PERIPHERALS 122 /* sub-dialog of config */ /* Static text label IDs. */ #define IDT_1700 1700 /* Language: */ @@ -139,116 +140,117 @@ #define IDC_MEMSPIN 1019 #define IDC_TEXT_MB IDT_1705 -#define IDC_VIDEO 1030 /* video config */ -#define IDC_COMBO_VIDEO 1031 -#define IDC_CHECK_VOODOO 1032 -#define IDC_BUTTON_VOODOO 1033 +#define IDC_VIDEO 1020 /* video config */ +#define IDC_COMBO_VIDEO 1021 +#define IDC_CHECK_VOODOO 1022 +#define IDC_BUTTON_VOODOO 1023 -#define IDC_INPUT 1050 /* input config */ -#define IDC_COMBO_MOUSE 1051 -#define IDC_COMBO_JOYSTICK 1052 -#define IDC_COMBO_JOY 1053 -#define IDC_CONFIGURE_MOUSE 1054 +#define IDC_INPUT 1030 /* input config */ +#define IDC_COMBO_MOUSE 1031 +#define IDC_COMBO_JOYSTICK 1032 +#define IDC_COMBO_JOY 1033 +#define IDC_CONFIGURE_MOUSE 1034 -#define IDC_SOUND 1070 /* sound config */ -#define IDC_COMBO_SOUND 1071 -#define IDC_CHECK_SSI 1072 -#define IDC_CHECK_CMS 1073 -#define IDC_CHECK_GUS 1074 -#define IDC_COMBO_MIDI 1075 -#define IDC_CHECK_MPU401 1076 -#define IDC_CONFIGURE_MPU401 1077 -#define IDC_CHECK_FLOAT 1078 -#define IDC_CONFIGURE_GUS 1079 -#define IDC_COMBO_MIDI_IN 1080 +#define IDC_SOUND 1040 /* sound config */ +#define IDC_COMBO_SOUND 1041 +#define IDC_CHECK_SSI 1042 +#define IDC_CHECK_CMS 1043 +#define IDC_CHECK_GUS 1044 +#define IDC_COMBO_MIDI 1045 +#define IDC_CHECK_MPU401 1046 +#define IDC_CONFIGURE_MPU401 1047 +#define IDC_CHECK_FLOAT 1048 +#define IDC_CONFIGURE_GUS 1049 +#define IDC_COMBO_MIDI_IN 1050 -#define IDC_COMBO_NET_TYPE 1090 /* network config */ -#define IDC_COMBO_PCAP 1091 -#define IDC_COMBO_NET 1092 +#define IDC_COMBO_NET_TYPE 1060 /* network config */ +#define IDC_COMBO_PCAP 1061 +#define IDC_COMBO_NET 1062 -#define IDC_COMBO_LPT1 1110 /* ports config */ -#define IDC_COMBO_LPT2 1111 -#define IDC_COMBO_LPT3 1112 -#define IDC_CHECK_SERIAL1 1113 -#define IDC_CHECK_SERIAL2 1114 -#define IDC_CHECK_SERIAL3 1115 -#define IDC_CHECK_SERIAL4 1116 -#define IDC_CHECK_PARALLEL1 1117 -#define IDC_CHECK_PARALLEL2 1118 -#define IDC_CHECK_PARALLEL3 1119 +#define IDC_COMBO_LPT1 1070 /* ports config */ +#define IDC_COMBO_LPT2 1071 +#define IDC_COMBO_LPT3 1072 +#define IDC_CHECK_SERIAL1 1073 +#define IDC_CHECK_SERIAL2 1074 +#define IDC_CHECK_SERIAL3 1075 +#define IDC_CHECK_SERIAL4 1076 +#define IDC_CHECK_PARALLEL1 1077 +#define IDC_CHECK_PARALLEL2 1078 +#define IDC_CHECK_PARALLEL3 1079 -#define IDC_OTHER_PERIPH 1120 /* other periph config */ -#define IDC_COMBO_SCSI 1121 -#define IDC_CONFIGURE_SCSI 1122 -#define IDC_COMBO_HDC 1123 -#define IDC_CONFIGURE_HDC 1124 -#define IDC_CHECK_IDE_TER 1125 -#define IDC_BUTTON_IDE_TER 1126 -#define IDC_CHECK_IDE_QUA 1127 -#define IDC_BUTTON_IDE_QUA 1128 -#define IDC_CHECK_BUGGER 1129 -#define IDC_CHECK_POSTCARD 1130 -#define IDC_COMBO_ISARTC 1131 -#define IDC_CONFIGURE_ISARTC 1132 -#define IDC_COMBO_FDC 1133 -#define IDC_CONFIGURE_FDC 1134 -#define IDC_GROUP_ISAMEM 1140 -#define IDC_COMBO_ISAMEM_1 1141 -#define IDC_COMBO_ISAMEM_2 1142 -#define IDC_COMBO_ISAMEM_3 1143 -#define IDC_COMBO_ISAMEM_4 1144 -#define IDC_CONFIGURE_ISAMEM_1 1145 -#define IDC_CONFIGURE_ISAMEM_2 1146 -#define IDC_CONFIGURE_ISAMEM_3 1147 -#define IDC_CONFIGURE_ISAMEM_4 1148 +#define IDC_OTHER_PERIPH 1080 /* storage controllers config */ +#define IDC_COMBO_SCSI 1081 +#define IDC_CONFIGURE_SCSI 1082 +#define IDC_COMBO_HDC 1083 +#define IDC_CONFIGURE_HDC 1084 +#define IDC_CHECK_IDE_TER 1085 +#define IDC_BUTTON_IDE_TER 1086 +#define IDC_CHECK_IDE_QUA 1087 +#define IDC_BUTTON_IDE_QUA 1088 -#define IDC_HARD_DISKS 1150 /* hard disks config */ -#define IDC_LIST_HARD_DISKS 1151 -#define IDC_BUTTON_HDD_ADD_NEW 1152 -#define IDC_BUTTON_HDD_ADD 1153 -#define IDC_BUTTON_HDD_REMOVE 1154 -#define IDC_COMBO_HD_BUS 1155 -#define IDC_COMBO_HD_CHANNEL 1156 -#define IDC_COMBO_HD_ID 1157 -#define IDC_COMBO_HD_LUN 1158 -#define IDC_COMBO_HD_CHANNEL_IDE 1159 +#define IDC_HARD_DISKS 1090 /* hard disks config */ +#define IDC_LIST_HARD_DISKS 1091 +#define IDC_BUTTON_HDD_ADD_NEW 1092 +#define IDC_BUTTON_HDD_ADD 1093 +#define IDC_BUTTON_HDD_REMOVE 1094 +#define IDC_COMBO_HD_BUS 1095 +#define IDC_COMBO_HD_CHANNEL 1096 +#define IDC_COMBO_HD_ID 1097 +#define IDC_COMBO_HD_LUN 1098 +#define IDC_COMBO_HD_CHANNEL_IDE 1099 -#define IDC_EDIT_HD_FILE_NAME 1160 /* add hard disk dialog */ -#define IDC_EDIT_HD_SPT 1161 -#define IDC_EDIT_HD_HPC 1162 -#define IDC_EDIT_HD_CYL 1163 -#define IDC_EDIT_HD_SIZE 1164 -#define IDC_COMBO_HD_TYPE 1165 -#define IDC_PBAR_IMG_CREATE 1166 -#define IDC_COMBO_HD_IMG_FORMAT 1167 -#define IDC_COMBO_HD_BLOCK_SIZE 1168 +#define IDC_EDIT_HD_FILE_NAME 1100 /* add hard disk dialog */ +#define IDC_EDIT_HD_SPT 1101 +#define IDC_EDIT_HD_HPC 1102 +#define IDC_EDIT_HD_CYL 1103 +#define IDC_EDIT_HD_SIZE 1104 +#define IDC_COMBO_HD_TYPE 1105 +#define IDC_PBAR_IMG_CREATE 1106 +#define IDC_COMBO_HD_IMG_FORMAT 1107 +#define IDC_COMBO_HD_BLOCK_SIZE 1108 -#define IDC_REMOV_DEVICES 1170 /* floppy and cd-rom drives config */ -#define IDC_LIST_FLOPPY_DRIVES 1171 -#define IDC_COMBO_FD_TYPE 1172 -#define IDC_CHECKTURBO 1173 -#define IDC_CHECKBPB 1174 -#define IDC_LIST_CDROM_DRIVES 1175 -#define IDC_COMBO_CD_BUS 1176 -#define IDC_COMBO_CD_ID 1177 -#define IDC_COMBO_CD_LUN 1178 -#define IDC_COMBO_CD_CHANNEL_IDE 1179 +#define IDC_REMOV_DEVICES 1110 /* floppy and cd-rom drives config */ +#define IDC_LIST_FLOPPY_DRIVES 1111 +#define IDC_COMBO_FD_TYPE 1112 +#define IDC_CHECKTURBO 1113 +#define IDC_CHECKBPB 1114 +#define IDC_LIST_CDROM_DRIVES 1115 +#define IDC_COMBO_CD_BUS 1116 +#define IDC_COMBO_CD_ID 1117 +#define IDC_COMBO_CD_LUN 1118 +#define IDC_COMBO_CD_CHANNEL_IDE 1119 -#define IDC_LIST_ZIP_DRIVES 1180 /* other removable devices config */ -#define IDC_COMBO_ZIP_BUS 1181 -#define IDC_COMBO_ZIP_ID 1182 -#define IDC_COMBO_ZIP_LUN 1183 -#define IDC_COMBO_ZIP_CHANNEL_IDE 1184 -#define IDC_CHECK250 1185 -#define IDC_COMBO_CD_SPEED 1186 -#define IDC_LIST_MO_DRIVES 1187 -#define IDC_COMBO_MO_BUS 1188 -#define IDC_COMBO_MO_ID 1189 -#define IDC_COMBO_MO_LUN 1190 -#define IDC_COMBO_MO_CHANNEL_IDE 1191 -#define IDC_COMBO_MO_TYPE 1192 +#define IDC_LIST_ZIP_DRIVES 1120 /* other removable devices config */ +#define IDC_COMBO_ZIP_BUS 1121 +#define IDC_COMBO_ZIP_ID 1122 +#define IDC_COMBO_ZIP_LUN 1123 +#define IDC_COMBO_ZIP_CHANNEL_IDE 1124 +#define IDC_CHECK250 1125 +#define IDC_COMBO_CD_SPEED 1126 +#define IDC_LIST_MO_DRIVES 1127 +#define IDC_COMBO_MO_BUS 1128 +#define IDC_COMBO_MO_ID 1129 +#define IDC_COMBO_MO_LUN 1130 +#define IDC_COMBO_MO_CHANNEL_IDE 1131 +#define IDC_COMBO_MO_TYPE 1132 -#define IDC_SLIDER_GAIN 1193 /* sound gain dialog */ +#define IDC_CHECK_BUGGER 1140 /* other periph config */ +#define IDC_CHECK_POSTCARD 1141 +#define IDC_COMBO_ISARTC 1142 +#define IDC_CONFIGURE_ISARTC 1143 +#define IDC_COMBO_FDC 1144 +#define IDC_CONFIGURE_FDC 1145 +#define IDC_GROUP_ISAMEM 1146 +#define IDC_COMBO_ISAMEM_1 1147 +#define IDC_COMBO_ISAMEM_2 1148 +#define IDC_COMBO_ISAMEM_3 1149 +#define IDC_COMBO_ISAMEM_4 1150 +#define IDC_CONFIGURE_ISAMEM_1 1151 +#define IDC_CONFIGURE_ISAMEM_2 1152 +#define IDC_CONFIGURE_ISAMEM_3 1153 +#define IDC_CONFIGURE_ISAMEM_4 1154 + +#define IDC_SLIDER_GAIN 1160 /* sound gain dialog */ #define IDC_EDIT_FILE_NAME 1200 /* new floppy image dialog */ #define IDC_COMBO_DISK_SIZE 1201 diff --git a/src/include/86box/win.h b/src/include/86box/win.h index aae82adac..75c250ddb 100644 --- a/src/include/86box/win.h +++ b/src/include/86box/win.h @@ -177,10 +177,11 @@ extern void NewFloppyDialogCreate(HWND hwnd, int id, int part); #define SETTINGS_PAGE_SOUND 3 #define SETTINGS_PAGE_NETWORK 4 #define SETTINGS_PAGE_PORTS 5 -#define SETTINGS_PAGE_PERIPHERALS 6 +#define SETTINGS_PAGE_STORAGE 6 #define SETTINGS_PAGE_HARD_DISKS 7 #define SETTINGS_PAGE_FLOPPY_AND_CDROM_DRIVES 8 #define SETTINGS_PAGE_OTHER_REMOVABLE_DEVICES 9 +#define SETTINGS_PAGE_PERIPHERALS 10 extern void win_settings_open(HWND hwnd); extern void win_settings_open_ex(HWND hwnd, int category); diff --git a/src/win/86Box.rc b/src/win/86Box.rc index ef9951f36..c0bb24bc8 100644 --- a/src/win/86Box.rc +++ b/src/win/86Box.rc @@ -324,7 +324,7 @@ FONT 9, "Segoe UI" BEGIN DEFPUSHBUTTON "OK",IDOK,246,235,50,14 PUSHBUTTON "Cancel",IDCANCEL,307,235,50,14 - CONTROL "List2",IDC_SETTINGSCATLIST,"SysListView32",LVS_LIST | + CONTROL "List2",IDC_SETTINGSCATLIST,"SysListView32",LVS_REPORT | LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP,7,7,100,212 CONTROL "",-1,"Static",SS_BLACKFRAME | SS_SUNKEN,1,226,373,1 /* Leave this commented out until we get into localization. */ @@ -335,45 +335,45 @@ BEGIN #endif END -DLG_CFG_MACHINE DIALOG DISCARDABLE 107, 0, 305, 199 +DLG_CFG_MACHINE DIALOG DISCARDABLE 107, 0, 305, 200 STYLE DS_CONTROL | WS_CHILD FONT 9, "Segoe UI" BEGIN COMBOBOX IDC_COMBO_MACHINE_TYPE,71,7,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Machine type:",IDT_1708,7,8,60,10 + LTEXT "Machine type:",IDT_1708,7,9,60,10 COMBOBOX IDC_COMBO_MACHINE,71,26,138,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Machine:",IDT_1701,7,27,60,10 + LTEXT "Machine:",IDT_1701,7,28,60,10 PUSHBUTTON "Configure",IDC_CONFIGURE_MACHINE,214,26,46,12 - COMBOBOX IDC_COMBO_CPU_TYPE,71,44,110,120,CBS_DROPDOWNLIST | + COMBOBOX IDC_COMBO_CPU_TYPE,71,45,110,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "CPU type:",IDT_1702,7,45,59,10 - COMBOBOX IDC_COMBO_CPU,215,44,45,120,CBS_DROPDOWNLIST | + LTEXT "CPU type:",IDT_1702,7,47,59,10 + COMBOBOX IDC_COMBO_CPU,215,45,45,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Speed:",IDT_1704,189,45,24,10 - COMBOBOX IDC_COMBO_FPU,71,63,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "Speed:",IDT_1704,189,47,24,10 + COMBOBOX IDC_COMBO_FPU,71,64,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "FPU:",IDT_1707,7,63,59,10 - COMBOBOX IDC_COMBO_WS,71,82,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "FPU:",IDT_1707,7,66,59,10 + COMBOBOX IDC_COMBO_WS,71,83,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Wait states:",IDT_1703,7,83,60,10 - EDITTEXT IDC_MEMTEXT,70,101,45,12,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "Wait states:",IDT_1703,7,85,60,10 + EDITTEXT IDC_MEMTEXT,70,102,45,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "",IDC_MEMSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS,113,101, 12,12 - LTEXT "MB",IDT_1705,123,102,10,10 - LTEXT "Memory:",IDT_1706,7,102,30,10 - GROUPBOX "Time synchronization",IDC_TIME_SYNC,7,134,100,56 + LTEXT "MB",IDT_1705,123,104,10,10 + LTEXT "Memory:",IDT_1706,7,104,30,10 + GROUPBOX "Time synchronization",IDC_TIME_SYNC,7,135,100,56 CONTROL "Disabled",IDC_RADIO_TS_DISABLED,"Button", - BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,146,84,10 + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,147,84,10 CONTROL "Enabled (local time)", IDC_RADIO_TS_LOCAL,"Button", - BS_AUTORADIOBUTTON | WS_TABSTOP,14,160,84,10 + BS_AUTORADIOBUTTON | WS_TABSTOP,14,161,84,10 CONTROL "Enabled (UTC)", IDC_RADIO_TS_UTC,"Button", - BS_AUTORADIOBUTTON | WS_TABSTOP,14,174,84,10 + BS_AUTORADIOBUTTON | WS_TABSTOP,14,175,84,10 #ifdef USE_DYNAREC CONTROL "Dynamic Recompiler",IDC_CHECK_DYNAREC,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,119,94,10 + BS_AUTOCHECKBOX | WS_TABSTOP,7,120,94,10 #endif END @@ -381,7 +381,7 @@ DLG_CFG_VIDEO DIALOG DISCARDABLE 107, 0, 267, 45 STYLE DS_CONTROL | WS_CHILD FONT 9, "Segoe UI" BEGIN - LTEXT "Video:",IDT_1707,7,8,48,10 + LTEXT "Video:",IDT_1707,7,9,48,10 COMBOBOX IDC_COMBO_VIDEO,64,7,155,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Configure",IDC_CONFIGURE_VID,222,7,38,12 @@ -394,11 +394,11 @@ DLG_CFG_INPUT DIALOG DISCARDABLE 107, 0, 267, 65 STYLE DS_CONTROL | WS_CHILD FONT 9, "Segoe UI" BEGIN - LTEXT "Mouse :",IDT_1709,7,8,57,10 + LTEXT "Mouse :",IDT_1709,7,9,57,10 COMBOBOX IDC_COMBO_MOUSE,71,7,140,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Configure",IDC_CONFIGURE_MOUSE,214,7,46,12 - LTEXT "Joystick :",IDT_1710,7,26,58,10 + LTEXT "Joystick :",IDT_1710,7,27,58,10 COMBOBOX IDC_COMBO_JOYSTICK,71,25,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Joystick 1...",IDC_JOY1,7,44,50,14 @@ -407,73 +407,73 @@ BEGIN PUSHBUTTON "Joystick 4...",IDC_JOY4,209,44,50,14 END -DLG_CFG_SOUND DIALOG DISCARDABLE 107, 0, 267, 199 +DLG_CFG_SOUND DIALOG DISCARDABLE 107, 0, 267, 201 STYLE DS_CONTROL | WS_CHILD FONT 9, "Segoe UI" BEGIN COMBOBOX IDC_COMBO_SOUND,71,7,140,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Sound card:",IDT_1711,7,8,59,10 + LTEXT "Sound card:",IDT_1711,7,9,59,10 PUSHBUTTON "Configure",IDC_CONFIGURE_SND,214,7,46,12 - COMBOBOX IDC_COMBO_MIDI,71,25,140,120,CBS_DROPDOWNLIST | WS_VSCROLL | + COMBOBOX IDC_COMBO_MIDI,71,26,140,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "MIDI Out Device:",IDT_1712,7,26,59,10 - PUSHBUTTON "Configure",IDC_CONFIGURE_MIDI,214,25,46,12 + LTEXT "MIDI Out Device:",IDT_1712,7,28,59,10 + PUSHBUTTON "Configure",IDC_CONFIGURE_MIDI,214,26,46,12 - COMBOBOX IDC_COMBO_MIDI_IN,71,43,140,120,CBS_DROPDOWNLIST | WS_VSCROLL | + COMBOBOX IDC_COMBO_MIDI_IN,71,45,140,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "MIDI In Device:",IDT_1713,7,44,59,10 - PUSHBUTTON "Configure",IDC_CONFIGURE_MIDI_IN,214,43,46,12 + LTEXT "MIDI In Device:",IDT_1713,7,47,59,10 + PUSHBUTTON "Configure",IDC_CONFIGURE_MIDI_IN,214,45,46,12 CONTROL "Standalone MPU-401",IDC_CHECK_MPU401,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,65,199,10 + BS_AUTOCHECKBOX | WS_TABSTOP,7,66,199,10 PUSHBUTTON "Configure",IDC_CONFIGURE_MPU401,214,64,46,12 CONTROL "Innovation SSI-2001",IDC_CHECK_SSI,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,83,94,10 + BS_AUTOCHECKBOX | WS_TABSTOP,7,84,95,10 CONTROL "CMS / Game Blaster",IDC_CHECK_CMS,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,147,83,94,10 + BS_AUTOCHECKBOX | WS_TABSTOP,147,84,95,10 CONTROL "Gravis Ultrasound",IDC_CHECK_GUS,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,99,94,10 - PUSHBUTTON "Configure",IDC_CONFIGURE_GUS,214,99,46,12 + BS_AUTOCHECKBOX | WS_TABSTOP,7,101,94,10 + PUSHBUTTON "Configure",IDC_CONFIGURE_GUS,214,101,46,12 CONTROL "Use FLOAT32 sound",IDC_CHECK_FLOAT,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,115,94,10 + BS_AUTOCHECKBOX | WS_TABSTOP,7,117,94,10 END -DLG_CFG_NETWORK DIALOG DISCARDABLE 107, 0, 267, 63 +DLG_CFG_NETWORK DIALOG DISCARDABLE 107, 0, 267, 65 STYLE DS_CONTROL | WS_CHILD FONT 9, "Segoe UI" BEGIN - LTEXT "Network type:",IDT_1714,7,8,59,10 + LTEXT "Network type:",IDT_1714,7,9,59,10 COMBOBOX IDC_COMBO_NET_TYPE,71,7,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "PCap device:",IDT_1715,7,26,59,10 - COMBOBOX IDC_COMBO_PCAP,71,25,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "PCap device:",IDT_1715,7,28,59,10 + COMBOBOX IDC_COMBO_PCAP,71,26,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Network adapter:",IDT_1716,7,44,59,10 - COMBOBOX IDC_COMBO_NET,71,43,140,120,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "Network adapter:",IDT_1716,7,47,59,10 + COMBOBOX IDC_COMBO_NET,71,45,140,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure",IDC_CONFIGURE_NET,214,43,46,12 + PUSHBUTTON "Configure",IDC_CONFIGURE_NET,214,44,46,12 END DLG_CFG_PORTS DIALOG DISCARDABLE 107, 0, 267, 135 STYLE DS_CONTROL | WS_CHILD FONT 9, "Segoe UI" BEGIN - LTEXT "LPT1 Device:",IDT_1717,7,8,61,10 + LTEXT "LPT1 Device:",IDT_1717,7,9,61,10 COMBOBOX IDC_COMBO_LPT1,71,7,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "LPT2 Device:",IDT_1718,7,27,61,10 + LTEXT "LPT2 Device:",IDT_1718,7,28,61,10 COMBOBOX IDC_COMBO_LPT2,71,26,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "LPT3 Device:",IDT_1719,7,46,61,10 + LTEXT "LPT3 Device:",IDT_1719,7,47,61,10 COMBOBOX IDC_COMBO_LPT3,71,45,189,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP @@ -494,61 +494,32 @@ BEGIN BS_AUTOCHECKBOX | WS_TABSTOP,7,118,94,10 END -DLG_CFG_PERIPHERALS DIALOG DISCARDABLE 107, 0, 267, 220 +DLG_CFG_STORAGE DIALOG DISCARDABLE 107, 0, 267, 111 STYLE DS_CONTROL | WS_CHILD FONT 9, "Segoe UI" BEGIN - LTEXT "SCSI Controller:",IDT_1717,7,8,48,10 + LTEXT "SCSI Controller:",IDT_1717,7,9,48,10 COMBOBOX IDC_COMBO_SCSI,64,7,155,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Configure",IDC_CONFIGURE_SCSI,222,7,38,12 - LTEXT "HD Controller:",IDT_1718,7,26,48,10 - COMBOBOX IDC_COMBO_HDC,64,25,155,120,CBS_DROPDOWNLIST | + LTEXT "HD Controller:",IDT_1718,7,28,48,10 + COMBOBOX IDC_COMBO_HDC,64,26,155,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure",IDC_CONFIGURE_HDC,222,25,38,12 + PUSHBUTTON "Configure",IDC_CONFIGURE_HDC,222,26,38,12 - LTEXT "FD Controller:",IDT_1768,7,44,48,10 - COMBOBOX IDC_COMBO_FDC,64,43,155,120,CBS_DROPDOWNLIST | + LTEXT "FD Controller:",IDT_1768,7,47,48,10 + COMBOBOX IDC_COMBO_FDC,64,45,155,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure",IDC_CONFIGURE_FDC,222,43,38,12 + PUSHBUTTON "Configure",IDC_CONFIGURE_FDC,222,45,38,12 CONTROL "Tertiary IDE Controller",IDC_CHECK_IDE_TER,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,62,199,10 - PUSHBUTTON "Configure",IDC_BUTTON_IDE_TER,222,61,38,12 + BS_AUTOCHECKBOX | WS_TABSTOP,7,66,199,10 + PUSHBUTTON "Configure",IDC_BUTTON_IDE_TER,222,64,38,12 CONTROL "Quaternary IDE Controller",IDC_CHECK_IDE_QUA,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,80,199,10 - PUSHBUTTON "Configure",IDC_BUTTON_IDE_QUA,222,79,38,12 - - CONTROL "ISABugger device",IDC_CHECK_BUGGER,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,98,94,10 - - CONTROL "POST card",IDC_CHECK_POSTCARD,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,147,98,94,10 - - LTEXT "ISA RTC",IDT_1767,7,117,48,10 - COMBOBOX IDC_COMBO_ISARTC,64,116,155,120, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure",IDC_CONFIGURE_ISARTC,222,116,38,12 - - GROUPBOX "ISA Memory Expansion",IDC_GROUP_ISAMEM,7,136,255,70 - LTEXT "#1:",IDT_1763,12,148,21,10 - COMBOBOX IDC_COMBO_ISAMEM_1,25,147,190,120, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure",IDC_CONFIGURE_ISAMEM_1,217,147,38,12 - LTEXT "#2:",IDT_1764,12,162,21,10 - COMBOBOX IDC_COMBO_ISAMEM_2,25,161,190,120, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure",IDC_CONFIGURE_ISAMEM_2,217,161,38,12 - LTEXT "#3:",IDT_1765,12,176,21,10 - COMBOBOX IDC_COMBO_ISAMEM_3,25,175,190,120, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure",IDC_CONFIGURE_ISAMEM_3,217,175,38,12 - LTEXT "#4:",IDT_1766,12,190,21,10 - COMBOBOX IDC_COMBO_ISAMEM_4,25,189,190,120, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure",IDC_CONFIGURE_ISAMEM_4,217,189,38,12 + BS_AUTOCHECKBOX | WS_TABSTOP,7,85,199,10 + PUSHBUTTON "Configure",IDC_BUTTON_IDE_QUA,222,83,38,12 END DLG_CFG_HARD_DISKS DIALOG DISCARDABLE 107, 0, 267, 154 @@ -691,6 +662,40 @@ BEGIN BS_AUTOCHECKBOX | WS_TABSTOP,218,205,44,10 END +DLG_CFG_PERIPHERALS DIALOG DISCARDABLE 107, 0, 267, 154 +STYLE DS_CONTROL | WS_CHILD +FONT 9, "Segoe UI" +BEGIN + LTEXT "ISA RTC:",IDT_1767,7,9,48,10 + COMBOBOX IDC_COMBO_ISARTC,64,7,155,120, + CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Configure",IDC_CONFIGURE_ISARTC,222,7,38,12 + + GROUPBOX "ISA Memory Expansion",IDC_GROUP_ISAMEM,7,28,253,93 + LTEXT "Card 1:",IDT_1763,16,45,48,10 + COMBOBOX IDC_COMBO_ISAMEM_1,73,43,137,120, + CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Configure",IDC_CONFIGURE_ISAMEM_1,213,43,38,12 + LTEXT "Card 2:",IDT_1764,16,64,48,10 + COMBOBOX IDC_COMBO_ISAMEM_2,73,62,137,120, + CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Configure",IDC_CONFIGURE_ISAMEM_2,213,62,38,12 + LTEXT "Card 3:",IDT_1765,16,83,48,10 + COMBOBOX IDC_COMBO_ISAMEM_3,73,81,137,120, + CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Configure",IDC_CONFIGURE_ISAMEM_3,213,81,38,12 + LTEXT "Card 4:",IDT_1766,16,102,48,10 + COMBOBOX IDC_COMBO_ISAMEM_4,73,100,137,120, + CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Configure",IDC_CONFIGURE_ISAMEM_4,213,100,38,12 + + CONTROL "ISABugger device",IDC_CHECK_BUGGER,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,128,94,10 + + CONTROL "POST card",IDC_CHECK_POSTCARD,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,147,128,94,10 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -753,6 +758,7 @@ END 249 ICON DISCARDABLE "win/icons/cdrom_disabled.ico" 250 ICON DISCARDABLE "win/icons/zip_disabled.ico" 251 ICON DISCARDABLE "win/icons/mo_disabled.ico" +252 ICON DISCARDABLE "win/icons/storage_controllers.ico" #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// @@ -938,11 +944,11 @@ BEGIN IDS_2068 "Sound" IDS_2069 "Network" IDS_2070 "Ports (COM & LPT)" - IDS_2071 "Other peripherals" + IDS_2071 "Storage controllers" IDS_2072 "Hard disks" IDS_2073 "Floppy & CD-ROM drives" IDS_2074 "Other removable devices" - IDS_2075 "CD-ROM images (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0" + IDS_2075 "Other peripherals" IDS_2076 "Surface images (*.86F)\0*.86F\0" IDS_2077 "Click to capture mouse" IDS_2078 "Press F8+F12 to release mouse" @@ -1031,6 +1037,7 @@ BEGIN IDS_2137 "Reset" IDS_2138 "Don't reset" IDS_2139 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0" + IDS_2140 "CD-ROM images (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0" END STRINGTABLE DISCARDABLE diff --git a/src/win/icons/storage_controllers.ico b/src/win/icons/storage_controllers.ico new file mode 100644 index 0000000000000000000000000000000000000000..8fd38558abc274876797b6df284d01f68bb5da73 GIT binary patch literal 1150 zcmbtUOG_JJ6dj>Iz*V7}Qo3lXMQg0sE=nzZfNts{X*XgBjhZSxA|#qbG`>iPN)jJ2 znnaWMq>I#r;#P%3)5Iu32#B*0+Zf!saOdg0pLEeesni+1nc;r-+_~qRJ0nSXbmr$v zbiF5iz9mVwB}sZji$WB+iqlPcMSFi9h4=5=Eh>8OMp69mQ)x+orL5$!v+QYcu)Iw1 zvTG()oRq#)SS)D&E=xeC}wA8F*7qG zdgk{|PEKNCVnV!sbaWJMw;RL5!|3YjLVbNbYHMp5pQF7W{r&w227{npM9+-pTFiZH zYzz*E13f)G=> 1, temp_hdd[i].esdi_channel & 1); break; case HDD_BUS_IDE: - case HDD_BUS_ATAPI: wsprintf(szText, plat_get_string(IDS_4611), temp_hdd[i].ide_channel >> 1, temp_hdd[i].ide_channel & 1); break; + case HDD_BUS_ATAPI: + wsprintf(szText, plat_get_string(IDS_4612), temp_hdd[i].ide_channel >> 1, temp_hdd[i].ide_channel & 1); + break; case HDD_BUS_SCSI: wsprintf(szText, plat_get_string(IDS_4613), temp_hdd[i].scsi_id); break; @@ -2256,9 +2189,11 @@ win_settings_hard_disks_recalc_list(HWND hdlg) wsprintf(szText, plat_get_string(IDS_4610), temp_hdd[i].esdi_channel >> 1, temp_hdd[i].esdi_channel & 1); break; case HDD_BUS_IDE: - case HDD_BUS_ATAPI: wsprintf(szText, plat_get_string(IDS_4611), temp_hdd[i].ide_channel >> 1, temp_hdd[i].ide_channel & 1); break; + case HDD_BUS_ATAPI: + wsprintf(szText, plat_get_string(IDS_4612), temp_hdd[i].ide_channel >> 1, temp_hdd[i].ide_channel & 1); + break; case HDD_BUS_SCSI: wsprintf(szText, plat_get_string(IDS_4613), temp_hdd[i].scsi_id); break; @@ -2322,7 +2257,7 @@ static void win_settings_hard_disks_resize_columns(HWND hdlg) { /* Bus, File, Cylinders, Heads, Sectors, Size */ - int iCol, width[C_COLUMNS_HARD_DISKS] = {130, 130, 41, 25, 25, 41}; + int iCol, width[C_COLUMNS_HARD_DISKS] = {104, 177, 50, 26, 32, 50}; HWND hwndList = GetDlgItem(hdlg, IDC_LIST_HARD_DISKS); for (iCol = 0; iCol < C_COLUMNS_HARD_DISKS; iCol++) @@ -2345,24 +2280,27 @@ win_settings_hard_disks_init_columns(HWND hdlg) switch(iCol) { case 0: /* Bus */ - lvc.cx = 130; + lvc.cx = 104; + lvc.fmt = LVCFMT_LEFT; + break; + case 1: /* File */ + lvc.cx = 177; lvc.fmt = LVCFMT_LEFT; break; case 2: /* Cylinders */ - lvc.cx = 41; + lvc.cx = 50; lvc.fmt = LVCFMT_RIGHT; break; case 3: /* Heads */ - case 4: /* Sectors */ - lvc.cx = 25; + lvc.cx = 26; lvc.fmt = LVCFMT_RIGHT; break; - case 1: /* File */ - lvc.cx = 130; - lvc.fmt = LVCFMT_LEFT; + case 4: /* Sectors */ + lvc.cx = 32; + lvc.fmt = LVCFMT_RIGHT; break; case 5: /* Size (MB) 8 */ - lvc.cx = 41; + lvc.cx = 50; lvc.fmt = LVCFMT_RIGHT; break; } @@ -3762,9 +3700,9 @@ win_settings_floppy_drives_resize_columns(HWND hdlg) { HWND hwndList = GetDlgItem(hdlg, IDC_LIST_FLOPPY_DRIVES); - ListView_SetColumnWidth(hwndList, 0, MulDiv(250, dpi, 96)); - ListView_SetColumnWidth(hwndList, 1, MulDiv(50, dpi, 96)); - ListView_SetColumnWidth(hwndList, 2, MulDiv(75, dpi, 96)); + ListView_SetColumnWidth(hwndList, 0, MulDiv(292, dpi, 96)); + ListView_SetColumnWidth(hwndList, 1, MulDiv(58, dpi, 96)); + ListView_SetColumnWidth(hwndList, 2, MulDiv(89, dpi, 96)); } @@ -3779,7 +3717,7 @@ win_settings_floppy_drives_init_columns(HWND hdlg) lvc.iSubItem = 0; lvc.pszText = plat_get_string(IDS_2092); - lvc.cx = 250; + lvc.cx = 292; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 0, &lvc) == -1) @@ -3788,7 +3726,7 @@ win_settings_floppy_drives_init_columns(HWND hdlg) lvc.iSubItem = 1; lvc.pszText = plat_get_string(IDS_2059); - lvc.cx = 50; + lvc.cx = 58; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 1, &lvc) == -1) @@ -3797,7 +3735,7 @@ win_settings_floppy_drives_init_columns(HWND hdlg) lvc.iSubItem = 2; lvc.pszText = plat_get_string(IDS_2087); - lvc.cx = 75; + lvc.cx = 89; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 2, &lvc) == -1) @@ -3813,8 +3751,8 @@ win_settings_cdrom_drives_resize_columns(HWND hdlg) { HWND hwndList = GetDlgItem(hdlg, IDC_LIST_CDROM_DRIVES); - ListView_SetColumnWidth(hwndList, 0, MulDiv(342, dpi, 96)); - ListView_SetColumnWidth(hwndList, 1, MulDiv(50, dpi, 96)); + ListView_SetColumnWidth(hwndList, 0, MulDiv(292, dpi, 96)); + ListView_SetColumnWidth(hwndList, 1, MulDiv(147, dpi, 96)); } @@ -3829,7 +3767,7 @@ win_settings_cdrom_drives_init_columns(HWND hdlg) lvc.iSubItem = 0; lvc.pszText = plat_get_string(IDS_2081); - lvc.cx = 342; + lvc.cx = 292; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 0, &lvc) == -1) @@ -3838,7 +3776,7 @@ win_settings_cdrom_drives_init_columns(HWND hdlg) lvc.iSubItem = 1; lvc.pszText = plat_get_string(IDS_2053); - lvc.cx = 50; + lvc.cx = 147; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 1, &lvc) == -1) @@ -3854,8 +3792,8 @@ win_settings_mo_drives_resize_columns(HWND hdlg) { HWND hwndList = GetDlgItem(hdlg, IDC_LIST_MO_DRIVES); - ListView_SetColumnWidth(hwndList, 0, MulDiv(120, dpi, 96)); - ListView_SetColumnWidth(hwndList, 1, MulDiv(260, dpi, 96)); + ListView_SetColumnWidth(hwndList, 0, MulDiv(292, dpi, 96)); + ListView_SetColumnWidth(hwndList, 1, MulDiv(147, dpi, 96)); } @@ -3870,7 +3808,7 @@ win_settings_mo_drives_init_columns(HWND hdlg) lvc.iSubItem = 0; lvc.pszText = plat_get_string(IDS_2081); - lvc.cx = 120; + lvc.cx = 292; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 0, &lvc) == -1) @@ -3879,7 +3817,7 @@ win_settings_mo_drives_init_columns(HWND hdlg) lvc.iSubItem = 1; lvc.pszText = plat_get_string(IDS_2092); - lvc.cx = 260; + lvc.cx = 147; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 1, &lvc) == -1) @@ -3895,8 +3833,8 @@ win_settings_zip_drives_resize_columns(HWND hdlg) { HWND hwndList = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); - ListView_SetColumnWidth(hwndList, 0, MulDiv(342, dpi, 96)); - ListView_SetColumnWidth(hwndList, 1, MulDiv(50, dpi, 96)); + ListView_SetColumnWidth(hwndList, 0, MulDiv(292, dpi, 96)); + ListView_SetColumnWidth(hwndList, 1, MulDiv(147, dpi, 96)); } @@ -3911,7 +3849,7 @@ win_settings_zip_drives_init_columns(HWND hdlg) lvc.iSubItem = 0; lvc.pszText = plat_get_string(IDS_2081); - lvc.cx = 342; + lvc.cx = 292; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 0, &lvc) == -1) @@ -3920,7 +3858,7 @@ win_settings_zip_drives_init_columns(HWND hdlg) lvc.iSubItem = 1; lvc.pszText = plat_get_string(IDS_2092); - lvc.cx = 50; + lvc.cx = 147; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 1, &lvc) == -1) @@ -4845,6 +4783,112 @@ win_settings_other_removable_devices_proc(HWND hdlg, UINT message, WPARAM wParam } +#if defined(__amd64__) || defined(__aarch64__) +static LRESULT CALLBACK +#else +static BOOL CALLBACK +#endif +win_settings_peripherals_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + int c, d; + int e; + LPTSTR lptsTemp; + char *stransi; + const device_t *dev; + + switch (message) { + case WM_INITDIALOG: + lptsTemp = (LPTSTR) malloc(512 * sizeof(WCHAR)); + stransi = (char *) malloc(512); + + /* Populate the ISA RTC card dropdown. */ + e = 0; + settings_reset_content(hdlg, IDC_COMBO_ISARTC); + for (d = 0; ; d++) { + generate_device_name(isartc_get_device(d), isartc_get_internal_name(d), 0); + + if (!device_name[0]) + break; + + if (d == 0) { + settings_add_string(hdlg, IDC_COMBO_ISARTC, win_get_string(IDS_2103)); + settings_set_cur_sel(hdlg, IDC_COMBO_ISARTC, 0); + } else + settings_add_string(hdlg, IDC_COMBO_ISARTC, (LPARAM) device_name); + settings_list_to_device[1][e] = d; + if (d == temp_isartc) + settings_set_cur_sel(hdlg, IDC_COMBO_ISARTC, e); + e++; + } + settings_enable_window(hdlg, IDC_CONFIGURE_ISARTC, temp_isartc != 0); + + /* Populate the ISA memory card dropdowns. */ + for (c = 0; c < ISAMEM_MAX; c++) { + settings_reset_content(hdlg, IDC_COMBO_ISAMEM_1 + c); + for (d = 0; ; d++) { + generate_device_name(isamem_get_device(d), (char *) isamem_get_internal_name(d), 0); + + if (!device_name[0]) + break; + + if (d == 0) { + settings_add_string(hdlg, IDC_COMBO_ISAMEM_1 + c, win_get_string(IDS_2103)); + settings_set_cur_sel(hdlg, IDC_COMBO_ISAMEM_1 + c, 0); + } else + settings_add_string(hdlg, IDC_COMBO_ISAMEM_1 + c, (LPARAM) device_name); + } + settings_set_cur_sel(hdlg, IDC_COMBO_ISAMEM_1 + c, temp_isamem[c]); + settings_enable_window(hdlg, IDC_CONFIGURE_ISAMEM_1 + c, temp_isamem[c] != 0); + } + + settings_set_check(hdlg, IDC_CHECK_BUGGER, temp_bugger); + settings_set_check(hdlg, IDC_CHECK_POSTCARD, temp_postcard); + + free(stransi); + free(lptsTemp); + + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDC_CONFIGURE_ISARTC: + temp_isartc = settings_list_to_device[1][settings_get_cur_sel(hdlg, IDC_COMBO_ISARTC)]; + temp_deviceconfig |= deviceconfig_open(hdlg, (void *)isartc_get_device(temp_isartc)); + break; + + case IDC_COMBO_ISARTC: + temp_isartc = settings_list_to_device[1][settings_get_cur_sel(hdlg, IDC_COMBO_ISARTC)]; + settings_enable_window(hdlg, IDC_CONFIGURE_ISARTC, temp_isartc != 0); + break; + + case IDC_COMBO_ISAMEM_1: case IDC_COMBO_ISAMEM_2: + case IDC_COMBO_ISAMEM_3: case IDC_COMBO_ISAMEM_4: + c = LOWORD(wParam) - IDC_COMBO_ISAMEM_1; + temp_isamem[c] = settings_get_cur_sel(hdlg, LOWORD(wParam)); + settings_enable_window(hdlg, IDC_CONFIGURE_ISAMEM_1 + c, temp_isamem[c] != 0); + break; + + case IDC_CONFIGURE_ISAMEM_1: case IDC_CONFIGURE_ISAMEM_2: + case IDC_CONFIGURE_ISAMEM_3: case IDC_CONFIGURE_ISAMEM_4: + c = LOWORD(wParam) - IDC_CONFIGURE_ISAMEM_1; + dev = isamem_get_device(temp_isamem[c]); + temp_deviceconfig |= deviceconfig_inst_open(hdlg, (void *)dev, c + 1); + break; + } + return FALSE; + + case WM_SAVESETTINGS: + temp_isartc = settings_list_to_device[1][settings_get_cur_sel(hdlg, IDC_COMBO_ISARTC)]; + temp_bugger = settings_get_check(hdlg, IDC_CHECK_BUGGER); + temp_postcard = settings_get_check(hdlg, IDC_CHECK_POSTCARD); + + default: + return FALSE; + } + return FALSE; +} + + void win_settings_show_child(HWND hwndParent, DWORD child_id) { if (child_id == displayed_category) @@ -4875,8 +4919,8 @@ void win_settings_show_child(HWND hwndParent, DWORD child_id) case SETTINGS_PAGE_PORTS: hwndChildDialog = CreateDialog(hinstance, (LPCWSTR)DLG_CFG_PORTS, hwndParent, win_settings_ports_proc); break; - case SETTINGS_PAGE_PERIPHERALS: - hwndChildDialog = CreateDialog(hinstance, (LPCWSTR)DLG_CFG_PERIPHERALS, hwndParent, win_settings_peripherals_proc); + case SETTINGS_PAGE_STORAGE: + hwndChildDialog = CreateDialog(hinstance, (LPCWSTR)DLG_CFG_STORAGE, hwndParent, win_settings_storage_proc); break; case SETTINGS_PAGE_HARD_DISKS: hwndChildDialog = CreateDialog(hinstance, (LPCWSTR)DLG_CFG_HARD_DISKS, hwndParent, win_settings_hard_disks_proc); @@ -4887,6 +4931,9 @@ void win_settings_show_child(HWND hwndParent, DWORD child_id) case SETTINGS_PAGE_OTHER_REMOVABLE_DEVICES: hwndChildDialog = CreateDialog(hinstance, (LPCWSTR)DLG_CFG_OTHER_REMOVABLE_DEVICES, hwndParent, win_settings_other_removable_devices_proc); break; + case SETTINGS_PAGE_PERIPHERALS: + hwndChildDialog = CreateDialog(hinstance, (LPCWSTR)DLG_CFG_PERIPHERALS, hwndParent, win_settings_peripherals_proc); + break; default: fatal("Invalid child dialog ID\n"); return; @@ -4905,7 +4952,7 @@ win_settings_main_insert_categories(HWND hwndList) lvI.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE; lvI.stateMask = lvI.iSubItem = lvI.state = 0; - for (i = 0; i < 10; i++) { + for (i = 0; i < 11; i++) { lvI.pszText = plat_get_string(IDS_2065+i); lvI.iItem = i; lvI.iImage = i; @@ -4944,6 +4991,38 @@ win_settings_confirm(HWND hdlg, int button) } +static BOOL +win_settings_categories_init_columns(HWND hdlg) +{ + LVCOLUMN lvc; + int iCol; + HWND hwndList = GetDlgItem(hdlg, IDC_SETTINGSCATLIST); + + lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; + + lvc.iSubItem = 0; + lvc.pszText = plat_get_string(2048); + + lvc.cx = 171; + lvc.fmt = LVCFMT_LEFT; + + if (ListView_InsertColumn(hwndList, iCol, &lvc) == -1) + return FALSE; + + win_settings_hard_disks_resize_columns(hdlg); + return TRUE; +} + + +static void +win_settings_categories_resize_columns(HWND hdlg) +{ + HWND hwndList = GetDlgItem(hdlg, IDC_SETTINGSCATLIST); + + ListView_SetColumnWidth(hwndList, 0, MulDiv(171, dpi, 96)); +} + + #if defined(__amd64__) || defined(__aarch64__) static LRESULT CALLBACK #else @@ -4953,7 +5032,7 @@ win_settings_main_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) { HWND h = NULL; int category, i = 0, j = 0; - const uint8_t cat_icons[12] = { 240, 241, 242, 243, 96, 244, 245, 80, 246, 247, 0 }; + const uint8_t cat_icons[12] = { 240, 241, 242, 243, 96, 244, 252, 80, 246, 247, 245, 0 }; hwndParentDialog = hdlg; @@ -4963,6 +5042,7 @@ win_settings_main_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) win_settings_init(); displayed_category = -1; h = GetDlgItem(hdlg, IDC_SETTINGSCATLIST); + win_settings_categories_init_columns(hdlg); image_list_init(hdlg, IDC_SETTINGSCATLIST, (const uint8_t *) cat_icons); win_settings_main_insert_categories(h); settings_listview_select(hdlg, IDC_SETTINGSCATLIST, first_cat); @@ -4994,8 +5074,10 @@ win_settings_main_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) return TRUE; } break; + case WM_DPICHANGED: dpi = HIWORD(wParam); + win_settings_categories_resize_columns(hdlg); image_list_init(hdlg, IDC_SETTINGSCATLIST, (const uint8_t *) cat_icons); break; default: