mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[internal] UI redesign, part 8
* This is the kind of stuff AI should be doing, not humans!
This commit is contained in:
		
							parent
							
								
									cba37575f1
								
							
						
					
					
						commit
						65b19bb463
					
				
					 10 changed files with 194 additions and 248 deletions
				
			
		|  | @ -280,11 +280,11 @@ t MSG_084 "This ISO image seems to use an obsolete version of '%s'.\n" | |||
| 	"Note: The new file will be downloaded in the current directory and once a " | ||||
| 	"'%s' exists there, it will be reused automatically." | ||||
| t MSG_085 "Downloading '%s'" | ||||
| t MSG_086 "No image selected" | ||||
| #t MSG_086 "No image selected" | ||||
| # The content between the quotes below (\"Create a bootable disk\") should match | ||||
| # the beginning of the IDC_BOOT text | ||||
| t MSG_087 "Please click on the disc button to select a bootable image, " | ||||
| 	"or uncheck the \"Create a bootable disk using\" checkbox." | ||||
| #t MSG_087 "Please click on the disc button to select a bootable image, " | ||||
| #	"or uncheck the \"Create a bootable disk using\" checkbox." | ||||
| t MSG_088 "Image is too big" | ||||
| t MSG_089 "The image is too big for the selected target." | ||||
| t MSG_090 "Unsupported ISO" | ||||
|  | @ -359,13 +359,10 @@ t MSG_116 "This image uses Grub %s but the application only includes the install | |||
| 	"Note: The file will be downloaded in the current application directory and will be reused " | ||||
| 	"automatically if present. If no match can be found online, then the default version will be used." | ||||
| # Tooltips | ||||
| # Partition Scheme and Target Type | ||||
| t MSG_150 "Usually the safest choice. However, if you have an UEFI computer and want to install " | ||||
| 	"an Operating System in native EFI mode, you should select one of the other options" | ||||
| t MSG_151 "Use this if you want to install an Operating System in native EFI mode, but will need " | ||||
| 	"to access the USB content from Windows XP" | ||||
| t MSG_152 "The preferred option to install an Operating System in native EFI mode, when USB access " | ||||
| 	"is not required from Windows XP" | ||||
| t MSG_150 "Method that will be used to create partitions." | ||||
| t MSG_151 "Type of computer you plan to use this bootable drive with. It is up to YOU to find whether your target is of BIOS or UEFI type.\n" | ||||
| 	"Be mindful that CSM, which can be enabled or disabled on UEFI computers, means 'BIOS emulation', and is not really UEFI." | ||||
| t MSG_152 "Note: 'UEFI-CSM' means BIOS emulation under UEFI, and is not the same as genuine UEFI." | ||||
| t MSG_153 "Test pattern: 0x%02X" | ||||
| t MSG_154 "Test pattern: 0x%02X, 0x%02X" | ||||
| t MSG_155 "Test pattern: 0x%02X, 0x%02X, 0x%02X" | ||||
|  |  | |||
|  | @ -835,8 +835,6 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM | |||
| 		case IDCANCEL: | ||||
| 			reset_localization(IDD_CHECKSUM); | ||||
| 			EndDialog(hDlg, LOWORD(wParam)); | ||||
| 			// Reset focus to our toolbar
 | ||||
| 			PostMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)hStatusToolbar, TRUE); | ||||
| 			return (INT_PTR)TRUE; | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
|  | @ -61,7 +61,7 @@ static int task_number = 0; | |||
| extern const int nb_steps[FS_MAX]; | ||||
| extern uint32_t dur_mins, dur_secs; | ||||
| static int fs_index = 0, wintogo_index = -1; | ||||
| extern BOOL force_large_fat32, enable_ntfs_compression, lock_drive, zero_drive, disable_file_indexing; | ||||
| extern BOOL force_large_fat32, enable_ntfs_compression, lock_drive, zero_drive, disable_file_indexing, write_as_image; | ||||
| uint8_t *grub2_buf = NULL; | ||||
| long grub2_len; | ||||
| static BOOL WritePBR(HANDLE hLogicalDrive); | ||||
|  | @ -1654,8 +1654,6 @@ DWORD WINAPI FormatThread(void* param) | |||
| 	char efi_dst[] = "?:\\efi\\boot\\bootx64.efi"; | ||||
| 	char kolibri_dst[] = "?:\\MTLD_F32"; | ||||
| 	char grub4dos_dst[] = "?:\\grldr"; | ||||
| 	// TODO: Have a boolean to indicate DD writing
 | ||||
| 	BOOL write_as_image = FALSE; | ||||
| 
 | ||||
| 	use_large_fat32 = (fs == FS_FAT32) && ((SelectedDrive.DiskSize > LARGE_FAT32_SIZE) || (force_large_fat32)); | ||||
| 	windows_to_go = (togo_mode) && HAS_WINTOGO(img_report) && (Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) == BST_CHECKED); | ||||
|  |  | |||
|  | @ -390,7 +390,7 @@ char* lmprintf(uint32_t msg_id, ...) | |||
| 	buf[buf_id][0] = 0; | ||||
| 
 | ||||
| 	msg_id &= MSG_MASK; | ||||
| 	if ((msg_id > MSG_000) && (msg_id < MSG_MAX)) { | ||||
| 	if ((msg_id >= MSG_000) && (msg_id < MSG_MAX)) { | ||||
| 		format = msg_table[msg_id - MSG_000]; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -518,7 +518,7 @@ void PrintStatusInfo(BOOL info, BOOL debug, unsigned int duration, int msg_id, . | |||
| 	if (!info) | ||||
| 		szStatusMessage = szMessage[MSG_STATUS][(duration > 0)?MSG_LOW_PRI:MSG_HIGH_PRI]; | ||||
| 
 | ||||
| 	if ((msg_id > MSG_000) && (msg_id < MSG_MAX)) | ||||
| 	if ((msg_id >= MSG_000) && (msg_id < MSG_MAX)) | ||||
| 		format = msg_table[msg_id - MSG_000]; | ||||
| 	if (format == NULL) { | ||||
| 		safe_sprintf(msg_hi, MSG_LEN, "MSG_%03d UNTRANSLATED", msg_id - MSG_000); | ||||
|  |  | |||
|  | @ -54,8 +54,6 @@ const loc_control_id control_id[] = { | |||
| 	LOC_CTRL(IDC_EXTENDED_LABEL), | ||||
| 	LOC_CTRL(IDC_RUFUS_MBR), | ||||
| 	LOC_CTRL(IDC_TARGET_SYSTEM), | ||||
| 	LOC_CTRL(IDC_INFO), | ||||
| 	LOC_CTRL(IDC_LANG), | ||||
| 	LOC_CTRL(IDC_DISK_ID), | ||||
| 	LOC_CTRL(IDC_OLD_BIOS_FIXES), | ||||
| 	LOC_CTRL(IDC_LIST_USB_HDD), | ||||
|  | @ -73,12 +71,14 @@ const loc_control_id control_id[] = { | |||
| 	LOC_CTRL(IDC_NOTIFICATION_LINE), | ||||
| 	LOC_CTRL(IDC_ADVANCED_DEVICE_TOOLBAR), | ||||
| 	LOC_CTRL(IDC_ADVANCED_FORMAT_TOOLBAR), | ||||
| 	LOC_CTRL(IDC_ABOUT), | ||||
| 	LOC_CTRL(IDC_LOG), | ||||
| 	LOC_CTRL(IDC_WINDOWS_INSTALL), | ||||
| 	LOC_CTRL(IDC_WINDOWS_TO_GO), | ||||
| 	LOC_CTRL(IDC_CHECKSUM_TOOLBAR), | ||||
| 	LOC_CTRL(IDC_MULTI_TOOLBAR), | ||||
| 	LOC_CTRL(IDC_LANG), | ||||
| 	LOC_CTRL(IDC_ABOUT), | ||||
| 	LOC_CTRL(IDC_SETTINGS), | ||||
| 	LOC_CTRL(IDC_LOG), | ||||
| 	LOC_CTRL(IDC_LOG_EDIT), | ||||
| 	LOC_CTRL(IDC_LOG_SAVE), | ||||
| 	LOC_CTRL(IDC_LOG_CLEAR), | ||||
|  | @ -141,6 +141,7 @@ const loc_control_id control_id[] = { | |||
| 	LOC_CTRL(IDS_FILESYSTEM_TXT), | ||||
| 	LOC_CTRL(IDS_CLUSTERSIZE_TXT), | ||||
| 	LOC_CTRL(IDS_LABEL_TXT), | ||||
| 	LOC_CTRL(IDS_CSM_HELP_TXT), | ||||
| 	LOC_CTRL(IDS_UPDATE_SETTINGS_GRP), | ||||
| 	LOC_CTRL(IDS_UPDATE_FREQUENCY_TXT), | ||||
| 	LOC_CTRL(IDS_INCLUDE_BETAS_TXT), | ||||
|  |  | |||
|  | @ -90,7 +90,6 @@ | |||
| #define IDC_EXTENDED_LABEL              1015 | ||||
| #define IDC_RUFUS_MBR                   1016 | ||||
| #define IDC_TARGET_SYSTEM               1017 | ||||
| #define IDC_INFO                        1018 | ||||
| #define IDC_DISK_ID                     1020 | ||||
| #define IDC_OLD_BIOS_FIXES              1021 | ||||
| #define IDC_LIST_USB_HDD                1022 | ||||
|  | @ -178,6 +177,7 @@ | |||
| #define IDS_FILESYSTEM_TXT              2002 | ||||
| #define IDS_CLUSTERSIZE_TXT             2003 | ||||
| #define IDS_LABEL_TXT                   2004 | ||||
| #define IDS_CSM_HELP_TXT                2005 | ||||
| #define IDS_UPDATE_SETTINGS_GRP         2006 | ||||
| #define IDS_UPDATE_FREQUENCY_TXT        2007 | ||||
| #define IDS_INCLUDE_BETAS_TXT           2008 | ||||
|  |  | |||
							
								
								
									
										372
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										372
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -53,6 +53,7 @@ static int image_option_move_ids[] = { | |||
| 	IDC_PARTITION_TYPE, | ||||
| 	IDS_TARGET_SYSTEM_TXT, | ||||
| 	IDC_TARGET_SYSTEM, | ||||
| 	IDS_CSM_HELP_TXT, | ||||
| 	IDC_ADVANCED_DEVICE_TOOLBAR, | ||||
| 	IDC_LIST_USB_HDD, | ||||
| 	IDC_OLD_BIOS_FIXES, | ||||
|  | @ -72,7 +73,6 @@ static int image_option_move_ids[] = { | |||
| 	IDC_EXTENDED_LABEL, | ||||
| 	IDS_STATUS_TXT, | ||||
| 	IDC_PROGRESS, | ||||
| 	IDC_INFO, | ||||
| 	IDC_ABOUT, | ||||
| 	IDC_LOG, | ||||
| 	IDC_MULTI_TOOLBAR, | ||||
|  | @ -106,7 +106,6 @@ static int advanced_device_move_ids[] = { | |||
| 	IDC_EXTENDED_LABEL, | ||||
| 	IDS_STATUS_TXT, | ||||
| 	IDC_PROGRESS, | ||||
| 	IDC_INFO, | ||||
| 	IDC_ABOUT, | ||||
| 	IDC_LOG, | ||||
| 	IDC_MULTI_TOOLBAR, | ||||
|  | @ -128,7 +127,6 @@ static int advanced_device_toggle_ids[] = { | |||
| static int advanced_format_move_ids[] = { | ||||
| 	IDS_STATUS_TXT, | ||||
| 	IDC_PROGRESS, | ||||
| 	IDC_INFO, | ||||
| 	IDC_ABOUT, | ||||
| 	IDC_LOG, | ||||
| 	IDC_MULTI_TOOLBAR, | ||||
|  | @ -146,6 +144,18 @@ static int advanced_format_toggle_ids[] = { | |||
| 	IDC_EXTENDED_LABEL, | ||||
| }; | ||||
| 
 | ||||
| static int dd_image_toggle_ids[] = { | ||||
| 	IDC_QUICKFORMAT, | ||||
| 	IDC_PARTITION_TYPE, | ||||
| 	IDC_TARGET_SYSTEM, | ||||
| 	IDC_IMAGE_OPTION, | ||||
| 	IDC_FILESYSTEM, | ||||
| 	IDC_CLUSTERSIZE, | ||||
| 	IDC_LABEL, | ||||
| 	IDC_QUICKFORMAT, | ||||
| 	IDC_EXTENDED_LABEL, | ||||
| }; | ||||
| 
 | ||||
| static const char* cmdline_hogger = "rufus.com"; | ||||
| static const char* FileSystemLabel[FS_MAX] = { "FAT", "FAT32", "NTFS", "UDF", "exFAT", "ReFS" }; | ||||
| static const char* ep_reg = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"; | ||||
|  | @ -171,7 +181,6 @@ static UINT_PTR UM_LANGUAGE_MENU_MAX = UM_LANGUAGE_MENU; | |||
| static RECT relaunch_rc = { -65536, -65536, 0, 0}; | ||||
| static UINT uQFChecked = BST_CHECKED, uMBRChecked = BST_UNCHECKED; | ||||
| static HFONT hInfoFont, hLinkFont; | ||||
| static HBRUSH hInfoBrush; | ||||
| static WNDPROC progress_original_proc = NULL; | ||||
| static HANDLE format_thid = NULL, dialog_handle = NULL; | ||||
| static HWND hSelectImage = NULL, hStart = NULL; | ||||
|  | @ -205,12 +214,12 @@ loc_cmd* selected_locale = NULL; | |||
| WORD selected_langid = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); | ||||
| DWORD MainThreadId; | ||||
| HWND hDeviceList, hPartitionScheme, hTargetSystem, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog = NULL; | ||||
| HWND hLogDlg = NULL, hProgress = NULL, hDiskID, hStatusToolbar; | ||||
| HWND hLogDlg = NULL, hProgress = NULL, hDiskID; | ||||
| BOOL use_own_c32[NB_OLD_C32] = {FALSE, FALSE}, mbr_selected_by_user = FALSE, togo_mode = FALSE; | ||||
| BOOL iso_op_in_progress = FALSE, format_op_in_progress = FALSE, right_to_left_mode = FALSE, progress_in_use = FALSE; | ||||
| BOOL iso_op_in_progress = FALSE, format_op_in_progress = FALSE, right_to_left_mode = FALSE, progress_in_use = FALSE, has_uefi_csm; | ||||
| BOOL enable_HDDs = FALSE, force_update = FALSE, enable_ntfs_compression = FALSE, no_confirmation_on_cancel = FALSE, lock_drive = TRUE; | ||||
| BOOL advanced_mode_device, advanced_mode_format, allow_dual_uefi_bios, detect_fakes, enable_vmdk, force_large_fat32, usb_debug, use_fake_units, preserve_timestamps; | ||||
| BOOL zero_drive = FALSE, list_non_usb_removable_drives = FALSE, disable_file_indexing, large_drive = FALSE; | ||||
| BOOL zero_drive = FALSE, list_non_usb_removable_drives = FALSE, disable_file_indexing, large_drive = FALSE, write_as_image = FALSE; | ||||
| int dialog_showing = 0; | ||||
| uint16_t rufus_version[3], embedded_sl_version[2]; | ||||
| char embedded_sl_version_str[2][12] = { "?.??", "?.??" }; | ||||
|  | @ -343,7 +352,9 @@ static void SetBootOptions(void) | |||
| 
 | ||||
| static void SetPartitionSchemeAndTargetSystem(BOOL only_target) | ||||
| { | ||||
| 	//                                   MBR,  GPT,  SFD
 | ||||
| 	BOOL allowed_partition_scheme[3] = { TRUE, TRUE, FALSE }; | ||||
| 	//                                   BIOS, UEFI, DUAL
 | ||||
| 	BOOL allowed_target_system[3]    = { TRUE, TRUE, FALSE }; | ||||
| 	BOOL dual_boot = FALSE; | ||||
| 	// TODO: Windows To Go selected
 | ||||
|  | @ -354,6 +365,9 @@ static void SetPartitionSchemeAndTargetSystem(BOOL only_target) | |||
| 	IGNORE_RETVAL(ComboBox_ResetContent(hTargetSystem)); | ||||
| 
 | ||||
| 	bt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); | ||||
| 	// If no device is selected, don't populate anything
 | ||||
| 	if (ComboBox_GetCurSel(hDeviceList) < 0) | ||||
| 		return; | ||||
| 	switch (bt) { | ||||
| 	case BT_NON_BOOTABLE: | ||||
| 		allowed_partition_scheme[PARTITION_STYLE_SFD] = TRUE; | ||||
|  | @ -410,17 +424,21 @@ static void SetPartitionSchemeAndTargetSystem(BOOL only_target) | |||
| 		pt = (int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)); | ||||
| 	} | ||||
| 
 | ||||
| 	if (allowed_target_system[0] && (pt != PARTITION_STYLE_GPT)) | ||||
| 	has_uefi_csm = FALSE; | ||||
| 	if (allowed_target_system[0] && (pt != PARTITION_STYLE_GPT)) { | ||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hTargetSystem, | ||||
| 			ComboBox_AddStringU(hTargetSystem, lmprintf(MSG_031)), TT_BIOS)); | ||||
| 		has_uefi_csm = TRUE; | ||||
| 	} | ||||
| 	if (allowed_target_system[1] && !((pt == PARTITION_STYLE_MBR) && IS_BIOS_BOOTABLE(img_report) && IS_EFI_BOOTABLE(img_report)) ) | ||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hTargetSystem, | ||||
| 			ComboBox_AddStringU(hTargetSystem, lmprintf(MSG_032)), TT_UEFI)); | ||||
| 	if (allowed_target_system[2] && (pt != PARTITION_STYLE_GPT)) | ||||
| 	if (allowed_target_system[2] && ((pt != PARTITION_STYLE_GPT) || (bt == BT_NON_BOOTABLE))) | ||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hTargetSystem, | ||||
| 			ComboBox_AddStringU(hTargetSystem, lmprintf(MSG_033)), TT_BIOS)); | ||||
| 	IGNORE_RETVAL(ComboBox_SetCurSel(hTargetSystem, 0)); | ||||
| 	tt = (int)ComboBox_GetItemData(hTargetSystem, ComboBox_GetCurSel(hTargetSystem)); | ||||
| 	ShowWindow(GetDlgItem(hMainDialog, IDS_CSM_HELP_TXT), has_uefi_csm ? SW_SHOW : SW_HIDE); | ||||
| } | ||||
| 
 | ||||
| // Populate the Allocation unit size field
 | ||||
|  | @ -612,7 +630,6 @@ static BOOL SetFileSystemAndClusterSize(char* fs_type) | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: get fs_type from 
 | ||||
| 	// re-select existing FS if it's one we know
 | ||||
| 	SelectedDrive.FSType = FS_UNKNOWN; | ||||
| 	if (safe_strlen(fs_type) != 0) { | ||||
|  | @ -637,51 +654,9 @@ static BOOL SetFileSystemAndClusterSize(char* fs_type) | |||
| 		SetComboEntry(hFileSystem, default_fs); | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO
 | ||||
| 	// At least one filesystem is go => enable formatting
 | ||||
| 	// EnableWindow(hStart, TRUE);
 | ||||
| 
 | ||||
| 	return SetClusterSizes((int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem))); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // This call sets the options for "Partition Scheme" and "Target System"
 | ||||
| // according to whether we will be running in UEFI/CSM mode or standard UEFI
 | ||||
| // Return value is -1 if the image is pure EFI (non BIOS bootable), 0 otherwise.
 | ||||
| //static int SetMBRForUEFI(void)
 | ||||
| //{
 | ||||
| //	static BOOL pure_efi = FALSE;
 | ||||
| //	BOOL useCSM = FALSE;
 | ||||
| //
 | ||||
| //	if (ComboBox_GetCurSel(hDeviceList) < 0)
 | ||||
| //		return 0;
 | ||||
| //
 | ||||
| //	if (image_path != NULL) {
 | ||||
| //		if ( !IS_EFI_BOOTABLE(img_report) || (HAS_BOOTMGR(img_report) && (!allow_dual_uefi_bios) &&
 | ||||
| //			 (Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) != BST_CHECKED)) )
 | ||||
| //			useCSM = TRUE;
 | ||||
| //	}
 | ||||
| //
 | ||||
| //	if ((image_path != NULL) && IS_EFI_BOOTABLE(img_report) && !IS_BIOS_BOOTABLE(img_report)) {
 | ||||
| //		pure_efi = TRUE;
 | ||||
| //		// Pure EFI -> no need to add the BIOS option
 | ||||
| //		return -1;
 | ||||
| //	}
 | ||||
| //
 | ||||
| //	pure_efi = FALSE;
 | ||||
| //	IGNORE_RETVAL(ComboBox_SetItemData(hTargetSystem, ComboBox_InsertStringU(hTargetSystem, 0,
 | ||||
| //		"BIOS (or UEFI-CSM)"), TT_BIOS));
 | ||||
| //	IGNORE_RETVAL(ComboBox_SetItemData(hTargetSystem, ComboBox_InsertStringU(hTargetSystem, 1,
 | ||||
| //		"UEFI (non CSM)"), TT_UEFI));
 | ||||
| //	IGNORE_RETVAL(ComboBox_SetItemData(hTargetSystem, ComboBox_InsertStringU(hTargetSystem, 2,
 | ||||
| //		"BIOS or UEFI"), TT_UEFI));
 | ||||
| //	//	IGNORE_RETVAL(ComboBox_SetItemData(hTargetSystem, ComboBox_InsertStringU(hTargetSystem, 0,
 | ||||
| ////		useCSM?"BIOS or UEFI-CSM":"BIOS (or CSM emulation"), TT_BIOS));
 | ||||
| //	if (replace)
 | ||||
| //		IGNORE_RETVAL(ComboBox_SetCurSel(hTargetSystem, max(ComboBox_GetCurSel(hTargetSystem), 0)));
 | ||||
| //	return 0;
 | ||||
| //}
 | ||||
| 
 | ||||
| static void SetFSFromISO(void) | ||||
| { | ||||
| 	int i, fs_tmp, selected_fs = FS_UNKNOWN; | ||||
|  | @ -752,16 +727,28 @@ static void SetToGo(void) | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void EnableAdvancedBootOptions(BOOL enable, BOOL remove_checkboxes) | ||||
| // This handles the enabling/disabling of the "Add fixes for old BIOSes" and "Use Rufus MBR" controls
 | ||||
| static void EnableMBRBootOptions(BOOL enable, BOOL remove_checkboxes) | ||||
| { | ||||
| 	BOOL actual_enable_mbr = ((tt==TT_UEFI)||(selection_default>=BT_IMAGE)||(bt == BT_NON_BOOTABLE))?FALSE:enable; | ||||
| 	BOOL actual_enable_fix = ((tt==TT_UEFI)||(selection_default==BT_IMAGE)||(bt == BT_NON_BOOTABLE))?FALSE:enable; | ||||
| 	BOOL actual_enable_mbr = (bt > BT_IMAGE) ? FALSE: enable; | ||||
| 	BOOL actual_enable_fix = enable; | ||||
| 	static UINT uXPartChecked = BST_UNCHECKED; | ||||
| 
 | ||||
| 	if ((selection_default == BT_IMAGE) && IS_BIOS_BOOTABLE(img_report) && !HAS_WINPE(img_report) && !HAS_BOOTMGR(img_report)) { | ||||
| 	if ((pt != PARTITION_STYLE_MBR) || (tt != TT_BIOS) || ((bt == BT_IMAGE) && !IS_BIOS_BOOTABLE(img_report))) { | ||||
| 		// These options cannot apply if we aren't using MBR+BIOS, or are using an image that isn't BIOS bootable
 | ||||
| 		actual_enable_mbr = FALSE; | ||||
| 		actual_enable_fix = FALSE; | ||||
| 	} else { | ||||
| 		// If we are using an image, the Rufus MBR only applies if it's for Windows
 | ||||
| 		if ((bt == BT_IMAGE) && !HAS_WINPE(img_report) && !HAS_BOOTMGR(img_report)) { | ||||
| 			actual_enable_mbr = FALSE; | ||||
| 			mbr_selected_by_user = FALSE; | ||||
| 		} | ||||
| 		if (bt == BT_NON_BOOTABLE) { | ||||
| 			actual_enable_fix = FALSE; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (remove_checkboxes) { | ||||
| 		// Store/Restore the checkbox states
 | ||||
| 		if (IsWindowEnabled(GetDlgItem(hMainDialog, IDC_RUFUS_MBR)) && !actual_enable_mbr) { | ||||
|  | @ -782,49 +769,29 @@ static void EnableAdvancedBootOptions(BOOL enable, BOOL remove_checkboxes) | |||
| 
 | ||||
| static void EnableBootOptions(BOOL enable, BOOL remove_checkboxes) | ||||
| { | ||||
| 	BOOL actual_enable = ((!IS_FAT(fs)) && (fs != FS_NTFS) && (selection_default == BT_IMAGE) && (img_report.is_bootable_img))?FALSE:enable; | ||||
| 	BOOL actual_enable_bb, actual_enable = enable; | ||||
| 
 | ||||
| 	EnableWindow(hBootType, actual_enable); | ||||
| 	EnableWindow(hSelectImage, actual_enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL), actual_enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO), actual_enable); | ||||
| 	EnableAdvancedBootOptions(actual_enable, remove_checkboxes); | ||||
| 	// If no device is selected, don't enable anything
 | ||||
| 	if (ComboBox_GetCurSel(hDeviceList) < 0) | ||||
| 		actual_enable = FALSE; | ||||
| 	// If boot selection is set to image, but no image is currently selected, don't enable anything
 | ||||
| 	if ((bt == BT_IMAGE) && (image_path == NULL)) | ||||
| 		actual_enable = FALSE; | ||||
| 	actual_enable_bb = actual_enable; | ||||
| 	// If we are dealing with a pure DD image, remove all options except Bad Blocks check
 | ||||
| 	if ((bt == BT_IMAGE) && (img_report.is_bootable_img) && (!img_report.is_iso)) | ||||
| 		actual_enable = FALSE; | ||||
| 
 | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION), actual_enable); | ||||
| 	EnableMBRBootOptions(actual_enable, remove_checkboxes); | ||||
| 
 | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_LABEL), actual_enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), actual_enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_BADBLOCKS), actual_enable_bb); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_NBPASSES), actual_enable_bb); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_EXTENDED_LABEL), actual_enable); | ||||
| } | ||||
| 
 | ||||
| // TODO: Set target type tooltips
 | ||||
| static void SetPartitionSchemeTooltip(void) | ||||
| { | ||||
| 	if (tt == TT_BIOS) { | ||||
| 		if (pt != PARTITION_STYLE_SFD) | ||||
| 			CreateTooltip(hPartitionScheme, lmprintf(MSG_150), 15000); | ||||
| 		else | ||||
| 			DestroyTooltip(hPartitionScheme); | ||||
| 	} else { | ||||
| 		if (pt == PARTITION_STYLE_MBR) | ||||
| 			CreateTooltip(hPartitionScheme, lmprintf(MSG_151), 15000); | ||||
| 		else if (pt == PARTITION_STYLE_GPT) | ||||
| 			CreateTooltip(hPartitionScheme, lmprintf(MSG_152), 15000); | ||||
| 		else | ||||
| 			DestroyTooltip(hPartitionScheme); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| //static void SetTargetSystem(void)
 | ||||
| //{
 | ||||
| //	int ts = SetMBRForUEFI(TRUE);	// Will be set to -1 for pure UEFI, 0 otherwise
 | ||||
| //	if ((prefer_gpt && IS_EFI_BOOTABLE(img_report)) || SelectedDrive.PartitionType == PARTITION_STYLE_GPT) {
 | ||||
| //		ts += 2;	// GPT/UEFI
 | ||||
| //	} else if (SelectedDrive.has_protective_mbr || SelectedDrive.has_mbr_uefi_marker ||
 | ||||
| //		(IS_EFI_BOOTABLE(img_report) && !IS_BIOS_BOOTABLE(img_report)) ) {
 | ||||
| //		ts += 1;	// MBR/UEFI
 | ||||
| //	} else {
 | ||||
| //		ts += 0;	// MBR/BIOS|UEFI
 | ||||
| //	}
 | ||||
| //	IGNORE_RETVAL(ComboBox_SetCurSel(hPartitionScheme, ts));
 | ||||
| //	// Can't call SetPartitionSchemeTooltip() directly, as we may be on a different thread
 | ||||
| //	SendMessage(hMainDialog, UM_SET_PARTITION_SCHEME_TOOLTIP, 0, 0);
 | ||||
| //}
 | ||||
| 
 | ||||
| static void SetProposedLabel(int ComboIndex) | ||||
| { | ||||
| 	const char no_label[] = STR_NO_LABEL, empty[] = ""; | ||||
|  | @ -860,6 +827,53 @@ static void SetProposedLabel(int ComboIndex) | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Toggle available controls when dealing with a pure DD image
 | ||||
| static void ToggleImage(BOOL enable) | ||||
| { | ||||
| 	int i; | ||||
| 	for (i = 0; i < ARRAYSIZE(dd_image_toggle_ids); i++) | ||||
| 		EnableWindow(GetDlgItem(hMainDialog, dd_image_toggle_ids[i]), enable); | ||||
| } | ||||
| 
 | ||||
| // Toggle controls according to operation
 | ||||
| static void EnableControls(BOOL bEnable) | ||||
| { | ||||
| 	// The following only get disabled on format/checksum and otherwise remain enabled,
 | ||||
| 	// even if no device or image are selected
 | ||||
| 	EnableWindow(hDeviceList, bEnable); | ||||
| 	EnableWindow(hBootType, bEnable); | ||||
| 	EnableWindow(hSelectImage, bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_LIST_USB_HDD), bEnable); | ||||
| 	EnableWindow(hAdvancedDeviceToolbar, bEnable); | ||||
| 	EnableWindow(hAdvancedFormatToolbar, bEnable); | ||||
| 	SendMessage(hMultiToolbar, TB_ENABLEBUTTON, (WPARAM)IDC_LANG, (LPARAM)bEnable); | ||||
| 	SendMessage(hMultiToolbar, TB_ENABLEBUTTON, (WPARAM)IDC_ABOUT, (LPARAM)bEnable); | ||||
| 	SendMessage(hMultiToolbar, TB_ENABLEBUTTON, (WPARAM)IDC_SETTINGS, (LPARAM)bEnable); | ||||
| 
 | ||||
| 	// Checksum button is enabled if an image has been selected
 | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_HASH), bEnable && (image_path != NULL)); | ||||
| 
 | ||||
| 	// Toggle CLOSE/CANCEL
 | ||||
| 	SetDlgItemTextU(hMainDialog, IDCANCEL, lmprintf(bEnable ? MSG_006 : MSG_007)); | ||||
| 
 | ||||
| 	// Only enable the following controls if a device is active
 | ||||
| 	bEnable = (ComboBox_GetCurSel(hDeviceList) < 0) ? FALSE : bEnable; | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_SAVE), bEnable); | ||||
| 
 | ||||
| 	// Enable or disable the Start button and the other boot options
 | ||||
| 	bEnable = ((bt == BT_IMAGE) && (image_path == NULL)) ? FALSE : bEnable; | ||||
| 	EnableWindow(hStart, bEnable); | ||||
| 	EnableBootOptions(bEnable, FALSE); | ||||
| 
 | ||||
| 	// Finally, only enable the half-size dropdowns if we aren't dealing with a pure DD image
 | ||||
| 	bEnable = ((bt == BT_IMAGE) && (image_path != NULL) && (!img_report.is_iso)) ? FALSE : bEnable; | ||||
| 	EnableWindow(hPartitionScheme, bEnable); | ||||
| 	EnableWindow(hTargetSystem, bEnable); | ||||
| 	EnableWindow(hFileSystem, bEnable); | ||||
| 	EnableWindow(hClusterSize, bEnable); | ||||
| } | ||||
| 
 | ||||
| // Populate the UI main dropdown properties.
 | ||||
| // This should be called on device or boot type change.
 | ||||
| static BOOL PopulateProperties(int device_index) | ||||
|  | @ -884,7 +898,7 @@ static BOOL PopulateProperties(int device_index) | |||
| 		return FALSE; | ||||
| 	} | ||||
| 
 | ||||
| 	EnableBootOptions(TRUE, TRUE); | ||||
| 	EnableControls(TRUE); | ||||
| 
 | ||||
| 	// Set a proposed label according to the size (eg: "256MB", "8GB")
 | ||||
| 	static_sprintf(SelectedDrive.proposed_label, | ||||
|  | @ -899,8 +913,6 @@ static BOOL PopulateProperties(int device_index) | |||
| 		free(device_tooltip); | ||||
| 	} | ||||
| 
 | ||||
| 	EnableWindow(hStart, (bt != BT_IMAGE) || (image_path != NULL)); | ||||
| 
 | ||||
| out: | ||||
| 	SetProposedLabel(device_index); | ||||
| 	return TRUE; | ||||
|  | @ -976,7 +988,7 @@ static void InitProgress(BOOL bOnlyFormat) | |||
| 		last_end = slot_end[i+1]; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Is there's no analog, adjust our discrete ends to fill the whole bar */ | ||||
| 	// If there's no analog, adjust our discrete ends to fill the whole bar
 | ||||
| 	if (slots_analog == 0.0f) { | ||||
| 		for (i=0; i<OP_MAX; i++) { | ||||
| 			slot_end[i+1] *= 100.0f / slots_discrete; | ||||
|  | @ -1028,37 +1040,6 @@ void UpdateProgress(int op, float percent) | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Toggle controls according to operation
 | ||||
| static void EnableControls(BOOL bEnable) | ||||
| { | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_DEVICE), bEnable); | ||||
| 	EnableWindow(hStart, (ComboBox_GetCurSel(hDeviceList)<0)?FALSE:bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_ABOUT), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_BADBLOCKS), bEnable); | ||||
| 	EnableBootOptions(bEnable, FALSE); | ||||
| 	EnableWindow(hSelectImage, bEnable); | ||||
| 	EnableWindow(hNBPasses, bEnable); | ||||
| 	EnableWindow(hAdvancedDeviceToolbar, bEnable); | ||||
| 	EnableWindow(hAdvancedFormatToolbar, bEnable); | ||||
| 	SendMessage(hMultiToolbar, TB_ENABLEBUTTON, (WPARAM)IDC_LANG, (LPARAM)bEnable); | ||||
| 	SendMessage(hMultiToolbar, TB_ENABLEBUTTON, (WPARAM)IDC_ABOUT, (LPARAM)bEnable); | ||||
| 	SendMessage(hMultiToolbar, TB_ENABLEBUTTON, (WPARAM)IDC_SETTINGS, (LPARAM)bEnable); | ||||
| 	EnableWindow(hStatusToolbar, bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_LIST_USB_HDD), bEnable); | ||||
| 	SetDlgItemTextU(hMainDialog, IDCANCEL, lmprintf(bEnable?MSG_006:MSG_007)); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_PARTITION_TYPE), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_TARGET_SYSTEM), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_HASH), bEnable && (image_path != NULL)); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_FILESYSTEM), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_CLUSTERSIZE), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_LABEL), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_EXTENDED_LABEL), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL), bEnable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO), bEnable); | ||||
| } | ||||
| 
 | ||||
| // Callback for the log window
 | ||||
| BOOL CALLBACK LogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | ||||
| { | ||||
|  | @ -1346,20 +1327,6 @@ static void ToggleAdvancedFormatOptions(BOOL enable) | |||
| 	InvalidateRect(hMainDialog, NULL, TRUE); | ||||
| } | ||||
| 
 | ||||
| // Toggle available controls when dealing with a pure DD image
 | ||||
| static void ToggleImage(BOOL enable) | ||||
| { | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_PARTITION_TYPE), enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_TARGET_SYSTEM), enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION), enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_FILESYSTEM), enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_CLUSTERSIZE), enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_LABEL), enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), enable); | ||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_EXTENDED_LABEL), enable); | ||||
| } | ||||
| 
 | ||||
| // Toggle the Image Option dropdown (Windows To Go or Casper settings)
 | ||||
| static void ToggleImageOption(void) | ||||
| { | ||||
|  | @ -1463,9 +1430,7 @@ DWORD WINAPI ISOScanThread(LPVOID param) | |||
| 		// Failed to scan image
 | ||||
| 		SendMessage(hMainDialog, UM_PROGRESS_EXIT, 0, 0); | ||||
| 		safe_free(image_path); | ||||
| 		SetBootOptions(); | ||||
| 		EnableControls(TRUE); | ||||
| 		EnableWindow(hStatusToolbar, FALSE); | ||||
| 		SetMBRProps(); | ||||
| 		PopulateProperties(ComboBox_GetCurSel(hDeviceList)); | ||||
| 		PrintInfoDebug(0, MSG_203); | ||||
|  | @ -1488,17 +1453,16 @@ DWORD WINAPI ISOScanThread(LPVOID param) | |||
| 		} | ||||
| 		selection_default = BT_IMAGE; | ||||
| 	} | ||||
| 	// Only enable AFTER we have determined the image type
 | ||||
| 	EnableControls(TRUE); | ||||
| 	if (!IS_DD_BOOTABLE(img_report) && !IS_BIOS_BOOTABLE(img_report) && !IS_EFI_BOOTABLE(img_report)) { | ||||
| 		// No boot method that we support
 | ||||
| 		PrintInfo(0, MSG_081); | ||||
| 		safe_free(image_path); | ||||
| 		EnableWindow(hStatusToolbar, FALSE); | ||||
| 		MessageBoxExU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK | MB_ICONINFORMATION | MB_IS_RTL, selected_langid); | ||||
| 		PrintStatus(0, MSG_086); | ||||
| 		EnableControls(TRUE); | ||||
| 		SetMBRProps(); | ||||
| 	} else { | ||||
| 		EnableControls(TRUE); | ||||
| 		// Set Target and FS accordingly
 | ||||
| 		if (img_report.is_iso) { | ||||
| 			IGNORE_RETVAL(ComboBox_SetCurSel(hBootType, image_index)); | ||||
|  | @ -1524,7 +1488,6 @@ DWORD WINAPI ISOScanThread(LPVOID param) | |||
| 		// Lose the focus from Close and set it back to Start
 | ||||
| 		SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)hStart, TRUE); | ||||
| 	} | ||||
| 	ToggleHash(); | ||||
| 
 | ||||
| 	// Need to invalidate as we may have changed the UI and may get artifacts if we don't
 | ||||
| 	// Oh and we need to invoke BOTH RedrawWindow() and InvalidateRect() because UI refresh
 | ||||
|  | @ -1554,9 +1517,10 @@ static BOOL BootCheck(void) | |||
| 	syslinux_ldlinux_len[0] = 0; syslinux_ldlinux_len[1] = 0; | ||||
| 	safe_free(grub2_buf); | ||||
| 	if (bt == BT_IMAGE) { | ||||
| 		// We should never be there
 | ||||
| 		if (image_path == NULL) { | ||||
| 			// Please click on the disc button to select a bootable ISO
 | ||||
| 			MessageBoxExU(hMainDialog, lmprintf(MSG_087), lmprintf(MSG_086), MB_OK|MB_ICONERROR|MB_IS_RTL, selected_langid); | ||||
| 			uprintf("Spock gone crazy error in %s:%d", __FILE__, __LINE__); | ||||
| 			MessageBoxExU(hMainDialog, "image_path is NULL. Please report this error to the author of this application", "Logic error", MB_OK|MB_ICONERROR|MB_IS_RTL, selected_langid); | ||||
| 			return FALSE; | ||||
| 		} | ||||
| 		if ((size_check) && (img_report.projected_size > (uint64_t)SelectedDrive.DiskSize)) { | ||||
|  | @ -1564,12 +1528,10 @@ static BOOL BootCheck(void) | |||
| 			MessageBoxExU(hMainDialog, lmprintf(MSG_089), lmprintf(MSG_088), MB_OK|MB_ICONERROR|MB_IS_RTL, selected_langid); | ||||
| 			return FALSE; | ||||
| 		} | ||||
| 		//if (bt == BT_IMG) {
 | ||||
| 		//	if (!IS_DD_BOOTABLE(img_report))
 | ||||
| 		//	// The selected image doesn't match the boot option selected.
 | ||||
| 		//		MessageBoxExU(hMainDialog, lmprintf(MSG_188), lmprintf(MSG_187), MB_OK|MB_ICONERROR|MB_IS_RTL, selected_langid);
 | ||||
| 		//	return IS_DD_BOOTABLE(img_report);
 | ||||
| 		//}
 | ||||
| 		if (IS_DD_BOOTABLE(img_report) && !img_report.is_iso) { | ||||
| 			// Pure DD images are fine at this stage
 | ||||
| 			return TRUE; | ||||
| 		} | ||||
| 		if ((togo_mode) && (Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) == BST_CHECKED)) { | ||||
| 			if (fs != FS_NTFS) { | ||||
| 				// Windows To Go only works for NTFS
 | ||||
|  | @ -1950,23 +1912,19 @@ static void CreateAdditionalControls(HWND hDlg) | |||
| 	} | ||||
| 
 | ||||
| 	// Fetch the up and down expand icons for the advanced options toolbar
 | ||||
| 	if (nWindowsVersion < WINDOWS_8) { | ||||
| 		hDll = GetLibraryHandle("Shell32"); | ||||
| 		hIconDown = (HICON)LoadImage(hDll, MAKEINTRESOURCE(16750), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED); | ||||
| 		hDownImageList = ImageList_Create(i16, i16, ILC_COLOR32, 1, 0); | ||||
| 		ImageList_AddIcon(hDownImageList, hIconDown); | ||||
| 		hIconUp = (HICON)LoadImage(hDll, MAKEINTRESOURCE(16749), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED); | ||||
| 		hUpImageList = ImageList_Create(i16, i16, ILC_COLOR32, 1, 0); | ||||
| 		ImageList_AddIcon(hUpImageList, hIconUp); | ||||
| 	} else { | ||||
| 	hDll = GetLibraryHandle("ComDlg32"); | ||||
| 	hIconDown = (HICON)LoadImage(hDll, MAKEINTRESOURCE(577), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED); | ||||
| 		hDownImageList = ImageList_Create(i16, i16, ILC_COLOR32, 1, 0); | ||||
| 		ImageList_AddIcon(hDownImageList, hIconDown); | ||||
| 	hIconUp = (HICON)LoadImage(hDll, MAKEINTRESOURCE(578), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED); | ||||
| 	// Fallback to using Shell32 if we can't locate the icons we want in ComDlg32
 | ||||
| 	hDll = GetLibraryHandle("Shell32"); | ||||
| 	if (hIconUp == NULL) | ||||
| 		hIconUp = (HICON)LoadImage(hDll, MAKEINTRESOURCE(16749), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED); | ||||
| 	if (hIconDown == NULL) | ||||
| 		hIconDown = (HICON)LoadImage(hDll, MAKEINTRESOURCE(16750), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR | LR_SHARED); | ||||
| 	hUpImageList = ImageList_Create(i16, i16, ILC_COLOR32, 1, 0); | ||||
| 	hDownImageList = ImageList_Create(i16, i16, ILC_COLOR32, 1, 0); | ||||
| 	ImageList_AddIcon(hUpImageList, hIconUp); | ||||
| 	} | ||||
| 	ImageList_AddIcon(hDownImageList, hIconDown); | ||||
| 
 | ||||
| 	// Create the advanced options toolbars
 | ||||
| 	memset(wtbtext, 0, sizeof(wtbtext)); | ||||
|  | @ -2432,14 +2390,9 @@ static void InitDialog(HWND hDlg) | |||
| 	GetHalfDropwdownWidth(hDlg); | ||||
| 	GetFullWidth(hDlg); | ||||
| 
 | ||||
| 	// TODO: Don't think this is used
 | ||||
| 	// Create the font and brush for the Info edit box
 | ||||
| 	// Create the font and brush for the progress messages
 | ||||
| 	hInfoFont = CreateFontA(lfHeight, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, | ||||
| 		0, 0, PROOF_QUALITY, 0, "Segoe UI"); | ||||
| //	hInfoFont = CreateFontA(48, 0, 0, 0, FW_SEMIBOLD, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
 | ||||
| //		0, 0, PROOF_QUALITY, 0, "Segoe UI");
 | ||||
| 	SendDlgItemMessageA(hDlg, IDC_INFO, WM_SETFONT, (WPARAM)hInfoFont, TRUE); | ||||
| 	hInfoBrush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); | ||||
| 
 | ||||
| 	// Create the title bar icon
 | ||||
| 	SetTitleBarIcon(hDlg); | ||||
|  | @ -2504,9 +2457,7 @@ static void InitDialog(HWND hDlg) | |||
| 
 | ||||
| 	// Fill up the boot options dropdown
 | ||||
| 	SetBootOptions(); | ||||
| 	SetComboEntry(hBootType, selection_default); | ||||
| 
 | ||||
| 	//	SetOptionsAccordingToBootEntry();
 | ||||
| 	// Fill up the MBR masqueraded disk IDs ("8 disks should be enough for anybody")
 | ||||
| 	IGNORE_RETVAL(ComboBox_SetItemData(hDiskID, ComboBox_AddStringU(hDiskID, lmprintf(MSG_030, LEFT_TO_RIGHT_EMBEDDING "0x80" POP_DIRECTIONAL_FORMATTING)), 0x80)); | ||||
| 	for (i=1; i<=7; i++) { | ||||
|  | @ -2548,6 +2499,9 @@ static void InitDialog(HWND hDlg) | |||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_LIST_USB_HDD), lmprintf(MSG_170), -1); | ||||
| 	CreateTooltip(hStart, lmprintf(MSG_171), -1); | ||||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_ABOUT), lmprintf(MSG_172), -1); | ||||
| 	CreateTooltip(hPartitionScheme, lmprintf(MSG_150), -1); | ||||
| 	CreateTooltip(hTargetSystem, lmprintf(MSG_151), 30000); | ||||
| 	CreateTooltip(GetDlgItem(hDlg, IDS_CSM_HELP_TXT), lmprintf(MSG_152), 30000); | ||||
| //	CreateTooltip(GetDlgItem(hDlg, IDC_WINDOWS_INSTALL), lmprintf(MSG_199), -1);
 | ||||
| //	CreateTooltip(GetDlgItem(hDlg, IDC_WINDOWS_TO_GO), lmprintf(MSG_200), -1);
 | ||||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_HASH), lmprintf(MSG_272), -1); | ||||
|  | @ -2558,7 +2512,6 @@ static void InitDialog(HWND hDlg) | |||
| 	if (!advanced_mode_format) | ||||
| 		ToggleAdvancedFormatOptions(FALSE); | ||||
| 	ToggleImageOption(); | ||||
| 	ToggleHash(); | ||||
| 
 | ||||
| 	// Process commandline parameters
 | ||||
| 	if (iso_provided) { | ||||
|  | @ -2800,10 +2753,6 @@ out: | |||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| #ifdef RUFUS_TEST | ||||
| 	extern int SelectionDyn(char* title, char* message, char** szChoice, int nChoices); | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * Main dialog callback | ||||
|  */ | ||||
|  | @ -2816,6 +2765,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 	static LPITEMIDLIST pidlDesktop = NULL; | ||||
| 	static SHChangeNotifyEntry NotifyEntry; | ||||
| 	static DWORD_PTR thread_affinity[4]; | ||||
| 	static HFONT hyperlink_font = NULL; | ||||
| 	DRAWITEMSTRUCT* pDI; | ||||
| 	LPTOOLTIPTEXT lpttt; | ||||
| 	HDROP droppedFileInfo; | ||||
|  | @ -2944,6 +2894,9 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 			WriteSettingBool(SETTING_ADVANCED_MODE_DEVICE, advanced_mode_device); | ||||
| 			ToggleAdvancedDeviceOptions(advanced_mode_device); | ||||
| 			SetBootOptions(); | ||||
| 			bt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); | ||||
| 			EnableControls(TRUE); | ||||
| 			SetFileSystemAndClusterSize(NULL); | ||||
| 			SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE << 16) | IDC_FILESYSTEM, | ||||
| 				ComboBox_GetCurSel(hFileSystem)); | ||||
| 			break; | ||||
|  | @ -2980,6 +2933,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 			if (HIWORD(wParam) != CBN_SELCHANGE) | ||||
| 				break; | ||||
| 			tt = (int)ComboBox_GetItemData(hTargetSystem, ComboBox_GetCurSel(hTargetSystem)); | ||||
| 			ShowWindow(GetDlgItem(hMainDialog, IDS_CSM_HELP_TXT), ((tt == TT_BIOS) && (has_uefi_csm)) ? SW_SHOW : SW_HIDE); | ||||
| 			SetFileSystemAndClusterSize(NULL); | ||||
| 			break; | ||||
| 		case IDC_PARTITION_TYPE: | ||||
|  | @ -2987,18 +2941,13 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 				break; | ||||
| 			pt = (int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)); | ||||
| 			SetPartitionSchemeAndTargetSystem(TRUE); | ||||
| 			SetPartitionSchemeTooltip(); | ||||
| 			SetFileSystemAndClusterSize(NULL); | ||||
| 			EnableMBRBootOptions(TRUE, FALSE); | ||||
| 			break; | ||||
| 		case IDC_FILESYSTEM: | ||||
| 			if (HIWORD(wParam) != CBN_SELCHANGE) | ||||
| 				break; | ||||
| 			fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | ||||
| 			if (image_path != NULL && !img_report.is_iso) { | ||||
| 				ToggleImage(FALSE); | ||||
| 				EnableAdvancedBootOptions(FALSE, TRUE); | ||||
| 				break; | ||||
| 			} | ||||
| 			SetClusterSizes(fs); | ||||
| 			// Disable/restore the quick format control depending on large FAT32 or ReFS
 | ||||
| 			if ( ((fs == FS_FAT32) && ((SelectedDrive.DiskSize > LARGE_FAT32_SIZE) || (force_large_fat32))) || (fs == FS_REFS) ) { | ||||
|  | @ -3024,7 +2973,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			EnableAdvancedBootOptions(TRUE, TRUE); | ||||
| 			EnableMBRBootOptions(TRUE, FALSE); | ||||
| 			SetMBRProps(); | ||||
| 			break; | ||||
| 		case IDC_BOOT_TYPE: | ||||
|  | @ -3034,12 +2983,11 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 			// TODO: do we really need both bt and selection_default?
 | ||||
| 			selection_default = bt; | ||||
| 			SetPartitionSchemeAndTargetSystem(FALSE); | ||||
| 			EnableAdvancedBootOptions(TRUE, TRUE); | ||||
| 			SetFileSystemAndClusterSize(NULL); | ||||
| 			// TODO: SetToGo() would be better invoked from ShowImageSettings()
 | ||||
| 			SetToGo(); | ||||
| 			ToggleHash(); | ||||
| 			SetProposedLabel(ComboBox_GetCurSel(hDeviceList)); | ||||
| 			PopulateProperties(ComboBox_GetCurSel(hDeviceList)); | ||||
| 			EnableControls(TRUE); | ||||
| 			// TODO: Might wanna do this in PopulateProperties
 | ||||
| 			tt = (int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)); | ||||
| 			pt = (int)ComboBox_GetItemData(hTargetSystem, ComboBox_GetCurSel(hTargetSystem)); | ||||
|  | @ -3053,7 +3001,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 				// If declared globaly, lmprintf(MSG_036) would be called on each message...
 | ||||
| 				EXT_DECL(img_ext, NULL, __VA_GROUP__("*.iso;*.img;*.vhd;*.gz;*.bzip2;*.bz2;*.xz;*.lzma;*.Z;*.zip"), | ||||
| 					__VA_GROUP__(lmprintf(MSG_036))); | ||||
| 				EnableWindow(hStatusToolbar, FALSE); | ||||
| 				image_path = FileDialog(FALSE, NULL, &img_ext, 0); | ||||
| 				if (image_path == NULL) { | ||||
| 					if (old_image_path != NULL) { | ||||
|  | @ -3103,6 +3050,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 			tt = (int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)); | ||||
| 			pt = (int)ComboBox_GetItemData(hTargetSystem, ComboBox_GetCurSel(hTargetSystem)); | ||||
| 			fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | ||||
| 			write_as_image = FALSE; | ||||
| 			// Disable all controls except Cancel
 | ||||
| 			EnableControls(FALSE); | ||||
| 			FormatStatus = 0; | ||||
|  | @ -3136,21 +3084,20 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 						} | ||||
| 					} | ||||
| 
 | ||||
| 					if ((bt == BT_IMAGE) && IS_DD_BOOTABLE(img_report)) { | ||||
| 						if (img_report.is_iso) { | ||||
| 							// Ask users how they want to write ISOHybrid images
 | ||||
| 					if ((bt != BT_NON_BOOTABLE) && (img_report.is_bootable_img) && | ||||
| 						(ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)) == BT_IMAGE)) { | ||||
| 						// TODO: We need to restore these MSGs
 | ||||
| 							char* iso_image = lmprintf(MSG_036); | ||||
| 							char* dd_image = lmprintf(MSG_095); | ||||
| 							char* choices[2] = { lmprintf(MSG_276, iso_image), lmprintf(MSG_277, dd_image) }; | ||||
| 							i = SelectionDialog(lmprintf(MSG_274), lmprintf(MSG_275, iso_image, dd_image, iso_image, dd_image), | ||||
| 								choices, 2); | ||||
| 						if (i < 0) {	// Cancel
 | ||||
| 							if (i < 0)	// Cancel
 | ||||
| 								goto aborted_start; | ||||
| 						} else if (i == 2) { | ||||
| 							// TODO: set ISO vs DD mode here
 | ||||
| //							selection_default = BT_IMG;
 | ||||
| //							SetComboEntry(hBootType, selection_default);
 | ||||
| 							else if (i == 2) | ||||
| 								write_as_image = TRUE; | ||||
| 						} else { | ||||
| 							write_as_image = TRUE; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
|  | @ -3268,8 +3215,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 					queued_hotplug_event = FALSE; | ||||
| 					GetDevices((DWORD)ComboBox_GetItemData(hDeviceList, ComboBox_GetCurSel(hDeviceList))); | ||||
| 					user_changed_label = FALSE; | ||||
| 				} | ||||
| 				else { | ||||
| 					EnableControls(TRUE); | ||||
| 				} else { | ||||
| 					queued_hotplug_event = TRUE; | ||||
| 				} | ||||
| 				return (INT_PTR)TRUE; | ||||
|  | @ -3299,7 +3246,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 		hLogDlg = MyCreateDialog(hMainInstance, IDD_LOG, hDlg, (DLGPROC)LogProc); | ||||
| 		InitDialog(hDlg); | ||||
| 		GetDevices(0); | ||||
| 		PopulateProperties(ComboBox_GetCurSel(hDeviceList)); | ||||
| 		EnableControls(TRUE); | ||||
| 		CheckForUpdates(FALSE); | ||||
| 		// Register MEDIA_INSERTED/MEDIA_REMOVED notifications for card readers
 | ||||
| 		if (SUCCEEDED(SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, &pidlDesktop))) { | ||||
|  | @ -3356,6 +3303,15 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 		EndPaint(hDlg, &ps); | ||||
| 		break; | ||||
| 
 | ||||
| 	case WM_CTLCOLORSTATIC: | ||||
| 		if ((HWND)lParam != GetDlgItem(hDlg, IDS_CSM_HELP_TXT)) | ||||
| 			return FALSE; | ||||
| 		SetBkMode((HDC)wParam, TRANSPARENT); | ||||
| 		CreateStaticFont((HDC)wParam, &hyperlink_font, FALSE); | ||||
| 		SelectObject((HDC)wParam, hyperlink_font); | ||||
| 		SetTextColor((HDC)wParam, RGB(0, 0, 125));	// DARK_BLUE
 | ||||
| 		return (INT_PTR)CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); | ||||
| 
 | ||||
| 	case WM_NOTIFY: | ||||
| 		switch (((LPNMHDR)lParam)->code) { | ||||
| 		case TTN_GETDISPINFO: | ||||
|  | @ -3504,10 +3460,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 		format_op_in_progress = FALSE; | ||||
| 		return (INT_PTR)TRUE; | ||||
| 
 | ||||
| 	// Ensures that SetPartitionSchemeTooltip() can be called from the original thread
 | ||||
| 	case UM_SET_PARTITION_SCHEME_TOOLTIP: | ||||
| 		SetPartitionSchemeTooltip(); | ||||
| 		break; | ||||
| 	} | ||||
| 	return (INT_PTR)FALSE; | ||||
| } | ||||
|  |  | |||
|  | @ -152,7 +152,6 @@ enum user_message_type { | |||
| 	UM_PROGRESS_INIT, | ||||
| 	UM_PROGRESS_EXIT, | ||||
| 	UM_NO_UPDATE, | ||||
| 	UM_SET_PARTITION_SCHEME_TOOLTIP, | ||||
| 	// Start of the WM IDs for the language menu items
 | ||||
| 	UM_LANGUAGE_MENU = WM_APP + 0x100 | ||||
| }; | ||||
|  | @ -383,7 +382,7 @@ enum WindowsVersion { | |||
| extern HINSTANCE hMainInstance; | ||||
| extern HWND hMainDialog, hLogDlg, hStatus, hDeviceList, hCapacity; | ||||
| extern HWND hPartitionScheme, hTargetSystem, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog; | ||||
| extern HWND hInfo, hProgress, hDiskID, hStatusToolbar; | ||||
| extern HWND hInfo, hProgress, hDiskID; | ||||
| extern float fScale; | ||||
| extern char szFolderPath[MAX_PATH], app_dir[MAX_PATH], temp_dir[MAX_PATH], system_dir[MAX_PATH], sysnative_dir[MAX_PATH]; | ||||
| extern char* image_path; | ||||
|  |  | |||
|  | @ -50,6 +50,7 @@ BEGIN | |||
|     COMBOBOX        IDC_PARTITION_TYPE,8,97,96,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     LTEXT           "Target system",IDS_TARGET_SYSTEM_TXT,128,88,96,8 | ||||
|     COMBOBOX        IDC_TARGET_SYSTEM,128,97,96,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     LTEXT           "?",IDS_CSM_HELP_TXT,226,98,6,15,SS_NOTIFY | NOT WS_VISIBLE | ||||
|     CONTROL         "Show advanced drive properties",IDC_ADVANCED_DRIVE_PROPERTIES, | ||||
|                     "Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,8,110,216,10 | ||||
|     CONTROL         "List USB Hard Drives",IDC_LIST_USB_HDD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,120,216,10 | ||||
|  |  | |||
|  | @ -1399,11 +1399,11 @@ INT_PTR CALLBACK NewVersionCallback(HWND hDlg, UINT message, WPARAM wParam, LPAR | |||
| 	char cmdline[] = APPLICATION_NAME " -w 150"; | ||||
| 	static char* filepath = NULL; | ||||
| 	static int download_status = 0; | ||||
| 	static HFONT hyperlink_font = NULL; | ||||
| 	LONG i; | ||||
| 	HWND hNotes; | ||||
| 	STARTUPINFOA si; | ||||
| 	PROCESS_INFORMATION pi; | ||||
| 	HFONT hyperlink_font = NULL; | ||||
| 	EXT_DECL(dl_ext, NULL, __VA_GROUP__("*.exe"), __VA_GROUP__(lmprintf(MSG_037))); | ||||
| 
 | ||||
| 	switch (message) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue