mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[ui] misc. UI improvements
This commit is contained in:
		
							parent
							
								
									dbe6af78d9
								
							
						
					
					
						commit
						032864021c
					
				
					 2 changed files with 50 additions and 32 deletions
				
			
		
							
								
								
									
										66
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										66
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -101,7 +101,7 @@ float fScale = 1.0f; | |||
| int default_fs; | ||||
| HWND hDeviceList, hCapacity, hFileSystem, hClusterSize, hLabel, hDOSType, hNBPasses; | ||||
| HWND hISOProgressDlg = NULL, hISOProgressBar, hISOFileName, hDiskID; | ||||
| BOOL use_own_vesamenu = FALSE, detect_fakes = TRUE; | ||||
| BOOL use_own_vesamenu = FALSE, detect_fakes = TRUE, mbr_selected_by_user = FALSE; | ||||
| int rufus_version[4]; | ||||
| extern char szStatusMessage[256]; | ||||
| 
 | ||||
|  | @ -467,21 +467,30 @@ static void SetFSFromISO(void) | |||
| void SetMBRProps(void) | ||||
| { | ||||
| 	int fs, dt; | ||||
| 	BOOL needs_masquerading = (iso_report.has_bootmgr) || (IS_WINPE(iso_report.winpe) && (!iso_report.uses_minint)); | ||||
| 	BOOL needs_masquerading = (IS_WINPE(iso_report.winpe) && (!iso_report.uses_minint)); | ||||
| 
 | ||||
| 	fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | ||||
| 	dt = (int)ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType)); | ||||
| 
 | ||||
| 	if ((iso_path == NULL) || (dt != DT_ISO) || (fs != FS_NTFS)) { | ||||
| 	if ((!mbr_selected_by_user) && ((iso_path == NULL) || (dt != DT_ISO) || (fs != FS_NTFS))) { | ||||
| 		CheckDlgButton(hMainDialog, IDC_RUFUS_MBR, BST_UNCHECKED); | ||||
| 		IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, 0)); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	CheckDlgButton(hMainDialog, IDC_RUFUS_MBR, needs_masquerading?BST_CHECKED:BST_UNCHECKED); | ||||
| 	CheckDlgButton(hMainDialog, IDC_RUFUS_MBR, (needs_masquerading || mbr_selected_by_user)?BST_CHECKED:BST_UNCHECKED); | ||||
| 	IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, needs_masquerading?1:0)); | ||||
| } | ||||
| 
 | ||||
| void EnableBootOptions(BOOL enable) | ||||
| { | ||||
| 	EnableWindow(hDOS, enable); | ||||
| 	EnableWindow(hDOSType, enable); | ||||
| 	EnableWindow(hSelectISO, enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_RUFUS_MBR), enable); | ||||
| 	EnableWindow(hDiskID, enable); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Populate the UI properties | ||||
|  */ | ||||
|  | @ -500,20 +509,15 @@ static BOOL PopulateProperties(int ComboIndex) | |||
| 	SetWindowTextA(hLabel, ""); | ||||
| 	memset(&SelectedDrive, 0, sizeof(SelectedDrive)); | ||||
| 
 | ||||
| 	EnableWindow(hDOS, FALSE); | ||||
| 	EnableWindow(hDOSType, FALSE); | ||||
| 
 | ||||
| 	if (ComboIndex < 0) { | ||||
| 	if (ComboIndex < 0) | ||||
| 		return TRUE; | ||||
| 	} | ||||
| 
 | ||||
| 	SelectedDrive.DeviceNumber = (DWORD)ComboBox_GetItemData(hDeviceList, ComboIndex); | ||||
| 	if (!GetDriveInfo())	// This also populates FS
 | ||||
| 		return FALSE; | ||||
| 	SetFSFromISO(); | ||||
| 	fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | ||||
| 	EnableWindow(hDOS, (fs == FS_FAT16) || (fs == FS_FAT32) || (fs == FS_NTFS)); | ||||
| 	EnableWindow(hDOSType, (fs == FS_FAT16) || (fs == FS_FAT32) || (fs == FS_NTFS)); | ||||
| 	EnableBootOptions((fs == FS_FAT16) || (fs == FS_FAT32) || (fs == FS_NTFS)); | ||||
| 
 | ||||
| 	HumanReadableSize = (double)SelectedDrive.DiskSize; | ||||
| 	for (i=0; i<ARRAYSIZE(suffix); i++) { | ||||
|  | @ -1301,6 +1305,7 @@ void InitDialog(HWND hDlg) | |||
| 	token = strtok(tmp, "v"); | ||||
| 	for (i=0; (i<4) && ((token = strtok(NULL, ".")) != NULL); i++) | ||||
| 		rufus_version[i] = atoi(token); | ||||
| 	uprintf("Rufus version %d.%d.%d.%d\n", rufus_version[0], rufus_version[1], rufus_version[2], rufus_version[3]); | ||||
| 
 | ||||
| 	// Prefer FreeDOS to MS-DOS
 | ||||
| 	selection_default = DT_FREEDOS; | ||||
|  | @ -1322,9 +1327,10 @@ void InitDialog(HWND hDlg) | |||
| 	IGNORE_RETVAL(ComboBox_SetItemData(hDOSType, ComboBox_AddStringU(hDOSType, "MS-DOS"), DT_WINME)); | ||||
| 	IGNORE_RETVAL(ComboBox_SetCurSel(hDOSType, DT_WINME)); | ||||
| 	// Fill up the MBR masqueraded disk IDs ("8 disks should be enough for anybody")
 | ||||
| 	for (i=0x80; i<=0x87; i++) { | ||||
| 		sprintf(tmp, "0x%02x", i); | ||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hDiskID, ComboBox_AddStringU(hDiskID, tmp), i)); | ||||
| 	IGNORE_RETVAL(ComboBox_SetItemData(hDiskID, ComboBox_AddStringU(hDiskID, "0x80 (default)"), 0x80)); | ||||
| 	for (i=1; i<=7; i++) { | ||||
| 		sprintf(tmp, "0x%02x (%d%s disk)", 0x80+i, i+1, (i==1)?"nd":((i==2)?"rd":"th")); | ||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hDiskID, ComboBox_AddStringU(hDiskID, tmp), 0x80+i)); | ||||
| 	} | ||||
| 	IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, 0)); | ||||
| 
 | ||||
|  | @ -1380,8 +1386,8 @@ void InitDialog(HWND hDlg) | |||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_SET_ICON), "Check this box to allow the display of international labels " | ||||
| 		"as well as set a device icon (through autorun.inf)", 10000); | ||||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_RUFUS_MBR), "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID", 10000); | ||||
| 	CreateTooltip(hDiskID, "If not 0x80, masquerade USB drive to a different ID:\n0x81 = masquerade as 2nd disk, 0x82 = 3rd disk, etc.\n" | ||||
| 		"This is mostly used for XP/WinPE 1.0 boot" , 10000); | ||||
| 	CreateTooltip(hDiskID, "Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n" | ||||
| 		"This should only be necessary for XP installation" , 10000); | ||||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_EXTRA_PARTITION), "Create an extra hidden partition and try to align partitions boundaries.\n" | ||||
| 		"This can improve boot detection for older BIOSes", -1); | ||||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_START), "Format the drive. This will DESTROY any data on it", -1); | ||||
|  | @ -1511,15 +1517,23 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 				break; | ||||
| 			fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | ||||
| 			SetClusterSizes(fs); | ||||
| 			if ((fs == FS_EXFAT) || (fs < 0)) { | ||||
| 			if (fs < 0) { | ||||
| 				EnableBootOptions(TRUE); | ||||
| 				SetMBRProps(); | ||||
| 				// Remove the SysLinux option if exists
 | ||||
| 				if (ComboBox_GetItemData(hDOSType, ComboBox_GetCount(hDOSType)-1) == DT_SYSLINUX) { | ||||
| 					IGNORE_RETVAL(ComboBox_DeleteString(hDOSType,  ComboBox_GetCount(hDOSType)-1)); | ||||
| 					IGNORE_RETVAL(ComboBox_SetCurSel(hDOSType, 1)); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			if (fs == FS_EXFAT) { | ||||
| 				if (IsWindowEnabled(hDOS)) { | ||||
| 					// unlikely to be supported by BIOSes => don't bother
 | ||||
| 					IGNORE_RETVAL(ComboBox_SetCurSel(hDOSType, 0)); | ||||
| 					uDOSChecked = IsDlgButtonChecked(hMainDialog, IDC_DOS); | ||||
| 					CheckDlgButton(hDlg, IDC_DOS, BST_UNCHECKED); | ||||
| 					EnableWindow(hDOS, FALSE); | ||||
| 					EnableWindow(hDOSType, FALSE); | ||||
| 					EnableWindow(hSelectISO, FALSE); | ||||
| 					EnableBootOptions(FALSE); | ||||
| 				} | ||||
| 				SetMBRProps(); | ||||
| 				break; | ||||
|  | @ -1597,6 +1611,10 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 				FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_CANT_START_THREAD); | ||||
| 			} | ||||
| 			break; | ||||
| 		case IDC_RUFUS_MBR: | ||||
| 			if ((HIWORD(wParam)) == BN_CLICKED) | ||||
| 				mbr_selected_by_user = IsChecked(IDC_RUFUS_MBR); | ||||
| 			break; | ||||
| 		case IDC_START: | ||||
| 			if (format_thid != NULL) { | ||||
| 				return (INT_PTR)TRUE; | ||||
|  | @ -1760,26 +1778,26 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine | |||
| 			// Alt-S => Disable size limit
 | ||||
| 			if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'S')) { | ||||
| 				iso_size_check = !iso_size_check; | ||||
| 				PrintStatus(0, FALSE, "ISO size check %s", iso_size_check?"enabled":"disabled"); | ||||
| 				PrintStatus(2000, FALSE, "ISO size check %s.", iso_size_check?"enabled":"disabled"); | ||||
| 				continue; | ||||
| 			} | ||||
| 			// Alt-F => toggle detection of fixed disks
 | ||||
| 			if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'F')) { | ||||
| 				enable_fixed_disks = !enable_fixed_disks; | ||||
| 				PrintStatus(0, FALSE, "Fixed disks detection %s", enable_fixed_disks?"enabled":"disabled"); | ||||
| 				PrintStatus(2000, FALSE, "Fixed disks detection %s.", enable_fixed_disks?"enabled":"disabled"); | ||||
| 				GetUSBDevices(0); | ||||
| 				continue; | ||||
| 			} | ||||
| 			// Alt-D => Delete the NoDriveTypeAutorun key on exit (useful if the app crashed)
 | ||||
| 			if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'D')) { | ||||
| 				PrintStatus(0, FALSE, "NoDriveTypeAutorun will be deleted on exit."); | ||||
| 				PrintStatus(2000, FALSE, "NoDriveTypeAutorun will be deleted on exit."); | ||||
| 				existing_key = FALSE; | ||||
| 				continue; | ||||
| 			} | ||||
| 			// Alt K => Toggle fake drive detection during bad blocks check (enabled by default)
 | ||||
| 			if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'K')) { | ||||
| 				detect_fakes = !detect_fakes; | ||||
| 				PrintStatus(0, FALSE, "Fake drive detection %s", detect_fakes?"enabled":"disabled"); | ||||
| 				PrintStatus(2000, FALSE, "Fake drive detection %s.", detect_fakes?"enabled":"disabled"); | ||||
| 				continue; | ||||
| 			} | ||||
| 			TranslateMessage(&msg); | ||||
|  |  | |||
							
								
								
									
										16
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -30,7 +30,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL | |||
| IDD_DIALOG DIALOGEX 12, 12, 206, 316 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_APPWINDOW | ||||
| CAPTION "Rufus v1.2.0.175" | ||||
| CAPTION "Rufus v1.2.0.176" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     DEFPUSHBUTTON   "Start",IDC_START,94,278,50,14 | ||||
|  | @ -57,10 +57,10 @@ BEGIN | |||
|     COMBOBOX        IDC_DOSTYPE,119,183,49,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     PUSHBUTTON      "...",IDC_SELECT_ISO,171,182,22,14,BS_ICON | ||||
|     PUSHBUTTON      "Test",IDC_TEST,62,278,20,14,NOT WS_VISIBLE | ||||
|     CONTROL         "Use Rufus MBR with Drive ID:",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,13,222,106,10 | ||||
|     CONTROL         "Use Rufus MBR with BIOS ID:",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,13,222,106,10 | ||||
|     PUSHBUTTON      "",IDC_ADVANCED,63,148,14,10,BS_TOP | BS_FLAT | ||||
|     GROUPBOX        "Advanced Options",IDC_ADVANCED_GROUP,7,210,192,42,NOT WS_VISIBLE | ||||
|     COMBOBOX        IDC_DISK_ID,119,220,32,30,CBS_DROPDOWNLIST | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ||||
|     COMBOBOX        IDC_DISK_ID,119,220,73,30,CBS_DROPDOWNLIST | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ||||
|     CONTROL         "Add fixes for old BIOSes (extra partition, align, etc.)",IDC_EXTRA_PARTITION, | ||||
|                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,184,10 | ||||
| END | ||||
|  | @ -76,7 +76,7 @@ BEGIN | |||
|     DEFPUSHBUTTON   "OK",IDOK,231,175,50,14,WS_GROUP | ||||
|     CONTROL         "<a href=""http://rufus.akeo.ie"">http://rufus.akeo.ie</a>",IDC_ABOUT_RUFUS_URL, | ||||
|                     "SysLink",WS_TABSTOP,46,47,114,9 | ||||
|     LTEXT           "Version 1.2.0 (Build 175)",IDC_STATIC,46,19,78,8 | ||||
|     LTEXT           "Version 1.2.0 (Build 176)",IDC_STATIC,46,19,78,8 | ||||
|     PUSHBUTTON      "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP | ||||
|     EDITTEXT        IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL | ||||
|     LTEXT           "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8 | ||||
|  | @ -221,8 +221,8 @@ END | |||
| // | ||||
| 
 | ||||
| VS_VERSION_INFO VERSIONINFO | ||||
|  FILEVERSION 1,2,0,175 | ||||
|  PRODUCTVERSION 1,2,0,175 | ||||
|  FILEVERSION 1,2,0,176 | ||||
|  PRODUCTVERSION 1,2,0,176 | ||||
|  FILEFLAGSMASK 0x3fL | ||||
| #ifdef _DEBUG | ||||
|  FILEFLAGS 0x1L | ||||
|  | @ -239,13 +239,13 @@ BEGIN | |||
|         BEGIN | ||||
|             VALUE "CompanyName", "akeo.ie" | ||||
|             VALUE "FileDescription", "Rufus" | ||||
|             VALUE "FileVersion", "1.2.0.175" | ||||
|             VALUE "FileVersion", "1.2.0.176" | ||||
|             VALUE "InternalName", "Rufus" | ||||
|             VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)" | ||||
|             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" | ||||
|             VALUE "OriginalFilename", "rufus.exe" | ||||
|             VALUE "ProductName", "Rufus" | ||||
|             VALUE "ProductVersion", "1.2.0.175" | ||||
|             VALUE "ProductVersion", "1.2.0.176" | ||||
|         END | ||||
|     END | ||||
|     BLOCK "VarFileInfo" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue