1
1
Fork 0
mirror of https://github.com/pbatard/rufus.git synced 2024-08-14 23:57:05 +00:00

UI redesign, part 10

* "It's when you start to see the light at the end of the tunnel..."
This commit is contained in:
Pete Batard 2018-03-06 00:05:28 +00:00
parent 091aa93cf6
commit b0529e1eb0
11 changed files with 440 additions and 1434 deletions

View file

@ -16,9 +16,44 @@ translation, but always use the English section of rufus.loc as your base.
For instance, MSG_114, that was introduced in v1.0.8 is MORE than one line!
o Version 1.0.23 (2018.??.??)
- Changed MSG_280 "Image selection" -> "Disk or ISO image"
- Changed MSG_281 "(Please select an image)" -> "%s (Please select)"
MSG_281 + MSG_280 are used to create the message that appears in the boot selection dropdown when an image has not been selected.
- All positioning ('m', 's') has now been removed as well as some controls, for the 3.0 UI redesign
- Removed: MSG_086, MSG_087, MSG_163
- *NEW* IDS_DRIVE_PROPERTIES_TXT "Drive Properties"
- *NEW* IDS_BOOT_TYPE_TXT "Boot selection"
- *NEW* IDC_SELECT "SELECT"
- *NEW* IDS_IMAGE_OPTION_TXT "Image Option"
- *UPDATED* IDS_PARTITION_TYPE_TXT Partition scheme and target system type -> "Partition scheme"
- *NEW* IDS_TARGET_SYSTEM_TXT "Target system"
- *NEW* IDS_STATUS_TXT "Status"
- *REPLACED* MSG_031 -> "BIOS (or UEFI-CSM)"
- *REPLACED* MSG_032 -> "UEFI (non CSM)"
- *REPLACED* MSG_033 -> "BIOS or UEFI"
- *REMOVED* MSG_086
- *REMOVED* MSG_087
- *RENAMED* IDC_WINDOWS_INSTALL -> MSG_117
- *RENAMED* IDC_WINDOWS_TO_GO -> MSG_118
- *NEW* MSG_119 "advanced drive properties"
- *NEW* MSG_120 "advanced format options"
- *NEW* MSG_121 "Show %s"
- *NEW* MSG_122 "Hide %s"
MSG_119/120 + MSG_121/122 are used to create the advanced options clickable toolbars
- *REPLACED* MSG_150 -> "Method that will be used to create partitions."
- *REPLACED* 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."
- *REPLACED* MSG_152 -> "Note: 'UEFI-CSM' means BIOS emulation under UEFI, and is not the same as genuine UEFI."ement UEFI."
- *REPLACED* MSG_280 "Image selection" -> "Disk or ISO image"
- *REPLACED* MSG_281 "(Please select an image)" -> "%s (Please select)"
MSG_281 + MSG_280 are used to create the message that appears in the boot selection dropdown when an image has not been selected.
- *NEW* MSG_299 "Timestamp validation error"
- *NEW* MSG_300 "Rufus could not validate that the timestamp of the downloaded update is more recent than the one for the "
"current executable.\n\nIn order to prevent potential attack scenarios, the update process has been aborted and "
"the download will be deleted. Please check the log for more details."
- *NEW* MSG_301 "Show application settings"
- *NEW* MSG_302 "Show information about this application"
- *NEW* MSG_303 "Show the log"
- *NEW* MSG_314 "Create a disk image of the selected device"
- *UPDATED* On IDD_LOG, IDC_LOG_CLEAR, IDC_LOG_SAVE and IDCANCEL were updated to remove the redundant mention of "Log" in the buttons
for the languages who did that. *PLEASE* verify that the modification looks correct in your language.
o Version 1.0.22 (2017.07.17)
- *NEW* MSG_295 "Warning: Unofficial version"

File diff suppressed because it is too large Load diff

View file

@ -1656,7 +1656,8 @@ DWORD WINAPI FormatThread(void* param)
char grub4dos_dst[] = "?:\\grldr";
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);
windows_to_go = display_togo_option && (bt == BT_IMAGE) && HAS_WINTOGO(img_report) &&
(ComboBox_GetCurSel(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION)) == 1);
large_drive = (SelectedDrive.DiskSize > (1*TB));
if (large_drive)
uprintf("Notice: Large drive detected (may produce short writes)");

View file

@ -71,8 +71,6 @@ 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_WINDOWS_INSTALL),
LOC_CTRL(IDC_WINDOWS_TO_GO),
LOC_CTRL(IDC_CHECKSUM_TOOLBAR),
LOC_CTRL(IDC_MULTI_TOOLBAR),
LOC_CTRL(IDC_LANG),

View file

@ -437,6 +437,19 @@ static __inline int ComboBox_GetLBTextU(HWND hCtrl, int index, char* lpString)
return size;
}
static __inline DWORD CharUpperBuffU(char* lpString, DWORD len)
{
DWORD ret;
wchar_t *wlpString = calloc(len, sizeof(wchar_t));
if (wlpString == NULL)
return 0;
utf8_to_wchar_no_alloc(lpString, wlpString, len);
ret = CharUpperBuffW(wlpString, len);
wchar_to_utf8_no_alloc(wlpString, lpString, len);
free(wlpString);
return ret;
}
static __inline HANDLE CreateFileU(const char* lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)

View file

@ -107,8 +107,6 @@
#define IDC_NOTIFICATION_LINE 1042
#define IDC_ADVANCED_DEVICE_TOOLBAR 1043
#define IDC_ADVANCED_FORMAT_TOOLBAR 1044
#define IDC_WINDOWS_INSTALL 1047
#define IDC_WINDOWS_TO_GO 1048
#define IDC_CHECKSUM_TOOLBAR 1049
#define IDC_MULTI_TOOLBAR 1050
#define IDC_LANG 1051

View file

@ -69,7 +69,7 @@ static int64_t last_iso_blocking_status;
static int selection_default, row_height, advanced_device_section_height, advanced_format_section_height, image_index;
static int device_vpos, format_vpos, status_vpos;
static int bw, hw, fw; // Main button width, half dropdown width, full dropdown width
static int cb_width, dd_width, sw, mw, bsw, hbw, sbw, ssw;
static int sw, mw, bsw, hbw, sbw, ssw;
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;
@ -81,6 +81,7 @@ static HICON hIconSave, hIconDown, hIconUp, hIconLang, hIconAbout, hIconSettings
static char szTimer[12] = "00:00:00";
static wchar_t wtbtext[2][128];
static unsigned int timer;
static char uppercase_select[64], uppercase_start[64], uppercase_close[64], uppercase_cancel[64];
extern BOOL enable_iso, enable_joliet, enable_rockridge, enable_ntfs_compression;
extern uint8_t* grub2_buf;
@ -102,13 +103,14 @@ char szFolderPath[MAX_PATH], app_dir[MAX_PATH], system_dir[MAX_PATH], temp_dir[M
char *image_path = NULL, *short_image_path;
float fScale = 1.0f;
int default_fs, fs, bt, pt, tt;
int cbw, ddw; // (empty) check box width, (empty) drop down width
uint32_t dur_mins, dur_secs;
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;
BOOL use_own_c32[NB_OLD_C32] = {FALSE, FALSE}, mbr_selected_by_user = FALSE, togo_mode = FALSE;
BOOL use_own_c32[NB_OLD_C32] = {FALSE, FALSE}, mbr_selected_by_user = FALSE, display_togo_option = 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;
@ -252,15 +254,15 @@ static void SetPartitionSchemeAndTargetSystem(BOOL only_target)
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
BOOL is_windows_to_go_selected = FALSE;
BOOL is_windows_to_go_selected;
if (!only_target)
IGNORE_RETVAL(ComboBox_ResetContent(hPartitionScheme));
IGNORE_RETVAL(ComboBox_ResetContent(hTargetSystem));
bt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
is_windows_to_go_selected = (bt == BT_IMAGE) && (image_path != NULL) && HAS_WINTOGO(img_report) &&
(ComboBox_GetCurSel(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION)) == 1);
// If no device is selected, don't populate anything
if (ComboBox_GetCurSel(hDeviceList) < 0)
return;
@ -557,8 +559,8 @@ static void SetFSFromISO(void)
{
int i, fs_tmp, selected_fs = FS_UNKNOWN;
uint32_t fs_mask = 0;
BOOL windows_to_go = (togo_mode) && HAS_WINTOGO(img_report) &&
(Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) == BST_CHECKED);
BOOL windows_to_go = display_togo_option && (bt == BT_IMAGE) && HAS_WINTOGO(img_report) &&
(ComboBox_GetCurSel(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION)) == 1);
if (image_path == NULL)
return;
@ -604,7 +606,7 @@ static void SetMBRProps(void)
BOOL needs_masquerading = HAS_WINPE(img_report) && (!img_report.uses_minint);
if ((!mbr_selected_by_user) && ((image_path == NULL) || (bt != BT_IMAGE) || (fs != FS_NTFS) || HAS_GRUB(img_report) ||
((togo_mode) && (Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) == BST_CHECKED)) )) {
((display_togo_option) && (ComboBox_GetCurSel(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION)) == 1)) )) {
CheckDlgButton(hMainDialog, IDC_RUFUS_MBR, BST_UNCHECKED);
IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, 0));
return;
@ -618,7 +620,7 @@ static void SetMBRProps(void)
static void SetToGo(void)
{
if (((bt != BT_IMAGE) && (togo_mode)) || ((bt == BT_IMAGE) && (HAS_WINTOGO(img_report)) && (!togo_mode))) {
if (((bt != BT_IMAGE) && (display_togo_option)) || ((bt == BT_IMAGE) && (HAS_WINTOGO(img_report)) && (!display_togo_option))) {
ToggleImageOption();
}
}
@ -750,7 +752,7 @@ static void EnableControls(BOOL bEnable)
EnableWindow(GetDlgItem(hMainDialog, IDC_HASH), bEnable && (bt == BT_IMAGE) && (image_path != NULL));
// Toggle CLOSE/CANCEL
SetDlgItemTextU(hMainDialog, IDCANCEL, lmprintf(bEnable ? MSG_006 : MSG_007));
SetDlgItemTextU(hMainDialog, IDCANCEL, bEnable ? uppercase_close : uppercase_cancel);
// Only enable the following controls if a device is active
bEnable = (ComboBox_GetCurSel(hDeviceList) < 0) ? FALSE : bEnable;
@ -1097,7 +1099,7 @@ static void DisplayISOProps(void)
// We don't support ToGo on Windows 7 or earlier, for lack of native ISO mounting capabilities
if (nWindowsVersion >= WINDOWS_8)
if ( ((!togo_mode) && (HAS_WINTOGO(img_report))) || ((togo_mode) && (!HAS_WINTOGO(img_report))) )
if ( ((!display_togo_option) && (HAS_WINTOGO(img_report))) || ((display_togo_option) && (!HAS_WINTOGO(img_report))) )
ToggleImageOption();
}
@ -1154,7 +1156,7 @@ static void ToggleAdvancedDeviceOptions(BOOL enable)
status_vpos += shift;
// Toggle the Hide/Show toolbar text
utf8_to_wchar_no_alloc(lmprintf((enable) ? MSG_311 : MSG_310, lmprintf(MSG_308)), wtbtext[0], ARRAYSIZE(wtbtext[0]));
utf8_to_wchar_no_alloc(lmprintf((enable) ? MSG_122 : MSG_121, lmprintf(MSG_119)), wtbtext[0], ARRAYSIZE(wtbtext[0]));
button_info.cbSize = sizeof(button_info);
button_info.dwMask = TBIF_TEXT;
button_info.pszText = wtbtext[0];
@ -1197,7 +1199,7 @@ static void ToggleAdvancedFormatOptions(BOOL enable)
status_vpos += shift;
// Toggle the Hide/Show toolbar text
utf8_to_wchar_no_alloc(lmprintf((enable) ? MSG_311 : MSG_310, lmprintf(MSG_309)), wtbtext[1], ARRAYSIZE(wtbtext[0]));
utf8_to_wchar_no_alloc(lmprintf((enable) ? MSG_122 : MSG_121, lmprintf(MSG_120)), wtbtext[1], ARRAYSIZE(wtbtext[0]));
button_info.cbSize = sizeof(button_info);
button_info.dwMask = TBIF_TEXT;
button_info.pszText = wtbtext[1];
@ -1231,16 +1233,16 @@ static void ToggleImageOption(void)
// Windows To Go mode is only available for Windows 8 or later due to the lack
// of an ISO mounting API on previous versions.
// But we still need to be able to hide the Windows To Go option on startup.
if ((nWindowsVersion < WINDOWS_8) && (!togo_mode))
if ((nWindowsVersion < WINDOWS_8) && (!display_togo_option))
return;
togo_mode = !togo_mode;
if (togo_mode) {
display_togo_option = !display_togo_option;
if (display_togo_option) {
hCtrl = GetDlgItem(hMainDialog, IDC_IMAGE_OPTION);
// Populate the dropdown
IGNORE_RETVAL(ComboBox_ResetContent(hCtrl));
IGNORE_RETVAL(ComboBox_SetItemData(hCtrl, ComboBox_AddStringU(hCtrl, lmprintf(MSG_301)), FALSE));
IGNORE_RETVAL(ComboBox_SetItemData(hCtrl, ComboBox_AddStringU(hCtrl, lmprintf(MSG_302)), TRUE));
IGNORE_RETVAL(ComboBox_SetItemData(hCtrl, ComboBox_AddStringU(hCtrl, lmprintf(MSG_117)), FALSE));
IGNORE_RETVAL(ComboBox_SetItemData(hCtrl, ComboBox_AddStringU(hCtrl, lmprintf(MSG_118)), TRUE));
IGNORE_RETVAL(ComboBox_SetCurSel(hCtrl, 0));
} else
shift = -shift;
@ -1256,7 +1258,7 @@ static void ToggleImageOption(void)
// Hide or show the boot options
for (i = 0; i < ARRAYSIZE(image_option_toggle_ids); i++)
ShowWindow(GetDlgItem(hMainDialog, image_option_toggle_ids[i]), togo_mode ? SW_SHOW : SW_HIDE);
ShowWindow(GetDlgItem(hMainDialog, image_option_toggle_ids[i]), display_togo_option ? SW_SHOW : SW_HIDE);
// If you don't force a redraw here, all kind of bad UI artifacts happen...
InvalidateRect(hMainDialog, NULL, TRUE);
@ -1422,7 +1424,7 @@ static BOOL BootCheck(void)
// Pure DD images are fine at this stage
return TRUE;
}
if ((togo_mode) && (Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) == BST_CHECKED)) {
if ((display_togo_option) && (ComboBox_GetCurSel(GetDlgItem(hMainDialog, IDC_IMAGE_OPTION)) == 1)) {
if (fs != FS_NTFS) {
// Windows To Go only works for NTFS
MessageBoxExU(hMainDialog, lmprintf(MSG_097, "Windows To Go"), lmprintf(MSG_092), MB_OK|MB_ICONERROR|MB_IS_RTL, selected_langid);
@ -1818,7 +1820,7 @@ static void CreateAdditionalControls(HWND hDlg)
// Create the advanced options toolbars
memset(wtbtext, 0, sizeof(wtbtext));
utf8_to_wchar_no_alloc(lmprintf((advanced_mode_device) ? MSG_311 : MSG_310, lmprintf(MSG_308)), wtbtext[0], ARRAYSIZE(wtbtext[0]));
utf8_to_wchar_no_alloc(lmprintf((advanced_mode_device) ? MSG_122 : MSG_121, lmprintf(MSG_119)), wtbtext[0], ARRAYSIZE(wtbtext[0]));
hAdvancedDeviceToolbar = CreateWindowExW(0, TOOLBARCLASSNAME, NULL,
WS_CHILD | WS_TABSTOP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CCS_NOPARENTALIGN |
CCS_NODIVIDER | TBSTYLE_FLAT | TBSTYLE_LIST | TBSTYLE_TRANSPARENT | TBSTYLE_TOOLTIPS | TBSTYLE_AUTOSIZE,
@ -1838,7 +1840,7 @@ static void CreateAdditionalControls(HWND hDlg)
SendMessage(hAdvancedDeviceToolbar, TB_GETIDEALSIZE, (WPARAM)FALSE, (LPARAM)&sz);
SetWindowPos(hAdvancedDeviceToolbar, HWND_TOP, rc.left + toolbar_fudge, rc.top, sz.cx, rc.bottom - rc.top, 0);
utf8_to_wchar_no_alloc(lmprintf((advanced_mode_format) ? MSG_311 : MSG_310, lmprintf(MSG_309)), wtbtext[1], ARRAYSIZE(wtbtext[1]));
utf8_to_wchar_no_alloc(lmprintf((advanced_mode_format) ? MSG_122 : MSG_121, lmprintf(MSG_120)), wtbtext[1], ARRAYSIZE(wtbtext[1]));
hAdvancedFormatToolbar = CreateWindowExW(0, TOOLBARCLASSNAME, NULL,
WS_CHILD | WS_TABSTOP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CCS_NOPARENTALIGN |
CCS_NODIVIDER | TBSTYLE_FLAT | TBSTYLE_LIST | TBSTYLE_TRANSPARENT | TBSTYLE_TOOLTIPS | TBSTYLE_AUTOSIZE,
@ -1944,8 +1946,8 @@ static void GetBasicControlsWidth(HWND hDlg)
}
// Checkbox and (blank) dropdown widths
cb_width = MulDiv(checkbox_internal_spacing, bu.cx, 4);
dd_width = MulDiv(dropdown_internal_spacing, bu.cx, 4);
cbw = MulDiv(checkbox_internal_spacing, bu.cx, 4);
ddw = MulDiv(dropdown_internal_spacing, bu.cx, 4);
// Spacing width between half-length dropdowns (sep) as well as left margin
GetWindowRect(GetDlgItem(hDlg, IDC_TARGET_SYSTEM), &rc);
@ -1980,13 +1982,11 @@ static void GetMainButtonsWidth(HWND hDlg)
GetWindowRect(GetDlgItem(hDlg, main_button_ids[0]), &rc);
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
bw = rc.right - rc.left;
uprintf("initial bw = %d", bw);
for (i = 0; i < ARRAYSIZE(main_button_ids); i++)
bw = max(GetTextWidth(hDlg, main_button_ids[i]) + cb_width, bw);
bw = max(bw, GetTextWidth(hDlg, main_button_ids[i]) + cbw);
// The 'CLOSE' button is also be used to display 'CANCEL' => measure that too
bw = max(bw, GetTextSize(GetDlgItem(hDlg, IDCANCEL), lmprintf(MSG_007)).cx + cb_width);
uprintf("adjusted bw = %d", bw);
bw = max(bw, GetTextSize(GetDlgItem(hDlg, IDCANCEL), lmprintf(MSG_007)).cx + cbw);
}
// The following goes over the data that gets populated into the half-width dropdowns
@ -1999,11 +1999,9 @@ static void GetHalfDropwdownWidth(HWND hDlg)
char tmp[256];
// Initialize half width to the UI's default size
// TODO: verify that this works if we just resized from a language with larger width?
GetWindowRect(GetDlgItem(hDlg, IDC_PARTITION_TYPE), &rc);
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
uprintf("initial hw = %d", rc.right - rc.left);
hw = rc.right - rc.left - dd_width;
hw = rc.right - rc.left - ddw;
// "Super Floppy Disk" is the longuest entry in the Partition Scheme dropdown
hw = max(hw, GetTextSize(GetDlgItem(hDlg, IDC_PARTITION_TYPE), (char*)sfd_name).cx);
@ -2033,8 +2031,7 @@ uprintf("initial hw = %d", rc.right - rc.left);
hw = max(hw, GetTextWidth(hDlg, IDC_BADBLOCKS) - sw);
// Add the width of a blank dropdown
hw += dd_width;
uprintf("adjusted hw = %d, 2*bw + ssw = %d", hw, 2 * bw + ssw);
hw += ddw;
}
/*
@ -2057,38 +2054,33 @@ uprintf("adjusted hw = %d, 2*bw + ssw = %d", hw, 2 * bw + ssw);
static void GetFullWidth(HWND hDlg)
{
RECT rc;
int i, control[] = { IDC_LIST_USB_HDD, IDC_OLD_BIOS_FIXES, IDC_QUICKFORMAT, IDC_EXTENDED_LABEL };
int i;
// Compute the minimum size needed for the Boot Selection dropdown
GetWindowRect(GetDlgItem(hDlg, IDC_BOOT_TYPE), &rc);
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
uprintf("initial bsw = %d", rc.right - rc.left);
bsw = max(rc.right - rc.left, GetTextSize(hBootType, lmprintf(MSG_281, lmprintf(MSG_280))).cx + dd_width);
uprintf("updated bsw = %d", bsw);
uprintf("ssw = %d, sbw = %d", ssw, sbw);
bsw = max(rc.right - rc.left, GetTextSize(hBootType, lmprintf(MSG_279)).cx + ddw);
bsw = max(bsw, GetTextSize(hBootType, lmprintf(MSG_281, lmprintf(MSG_280))).cx + ddw);
// Initialize full width to the UI's default size
GetWindowRect(GetDlgItem(hDlg, IDC_IMAGE_OPTION), &rc);
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
uprintf("initial fw = %d", rc.right - rc.left);
fw = rc.right - rc.left - dd_width;
fw = rc.right - rc.left - ddw;
// Go through the Image Options for Windows To Go
fw = max(fw, GetTextSize(GetDlgItem(hDlg, IDC_IMAGE_OPTION), lmprintf(MSG_301)).cx);
fw = max(fw, GetTextSize(GetDlgItem(hDlg, IDC_IMAGE_OPTION), lmprintf(MSG_302)).cx);
fw = max(fw, GetTextSize(GetDlgItem(hDlg, IDC_IMAGE_OPTION), lmprintf(MSG_117)).cx);
fw = max(fw, GetTextSize(GetDlgItem(hDlg, IDC_IMAGE_OPTION), lmprintf(MSG_118)).cx);
// Now deal with full length checkbox lines
for (i=0; i<ARRAYSIZE(control); i++)
fw = max(fw, GetTextWidth(hDlg, control[i]));
for (i=0; i<ARRAYSIZE(full_width_checkboxes); i++)
fw = max(fw, GetTextWidth(hDlg, full_width_checkboxes[i]));
// All of the above is for text only, so we need to add dd space
fw += dd_width;
fw += ddw;
// Our min also needs to be longer than 2 half length dropdowns + spacer
fw = max(fw, 2 * hw + sw);
uprintf("adjusted fw = %d", fw);
uprintf("bsw + 2*ssw + hbw + bw = %d", bsw + 2*ssw + hbw + bw);
// Now that we have our minimum full width, adjust the button width if needed
// Adjust according to min full width
@ -2096,9 +2088,6 @@ uprintf("bsw + 2*ssw + hbw + bw = %d", bsw + 2*ssw + hbw + bw);
// Adjust according to min boot selection width
bw = max(bw, (bsw + hbw - sw) / 3);
uprintf("fw = %d, 4bw + 2ssw + sw = %d", fw, 4 * bw + 2 * ssw + sw);
uprintf("bsw + 2ssw + hbw + bw = %d", bsw + 2 * ssw + hbw + bw);
// Adjust according to min half width
bw = max(bw, (hw / 2) - ssw);
@ -2148,7 +2137,6 @@ static void PositionControls(HWND hDlg)
// Start by resizing the whole dialog
GetWindowRect(hDlg, &rc);
uprintf("initial dialog width = %d (mw = %d)", rc.right - rc.left, mw);
// Don't ask me why we need 3 times the margin width here instead of 2...
// TODO: If that doesn't work, just pick additonal space from initial fw and reuse that
SetWindowPos(hDlg, NULL, -1, -1, 3*mw + fw, rc.bottom - rc.top, SWP_NOMOVE | SWP_NOZORDER);
@ -2243,6 +2231,13 @@ static void PositionControls(HWND hDlg)
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
SetWindowPos(hCtrl, HWND_TOP, mw + fw - sbw, rc.top, sbw, rc.bottom - rc.top, 0);
// Reposition the CSM help tip
hCtrl = GetDlgItem(hDlg, IDS_CSM_HELP_TXT);
GetWindowRect(hCtrl, &rc);
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
// TODO: measure space and avoid button fudging
SetWindowPos(hCtrl, HWND_TOP, mw + fw + 5 * button_fudge / 2, rc.top, sbw, rc.bottom - rc.top, 0);
if (advanced_mode_device) {
// Still need to adjust the width of the device selection dropdown
GetWindowRect(hDeviceList, &rc);
@ -2340,6 +2335,22 @@ static void InitDialog(HWND hDlg)
hDiskID = GetDlgItem(hDlg, IDC_DISK_ID);
hStart = GetDlgItem(hDlg, IDC_START);
// Convert the main button labels to uppercase
GetWindowTextU(hStart, uppercase_start, sizeof(uppercase_start));
CharUpperBuffU(uppercase_start, sizeof(uppercase_start));
SetWindowTextU(hStart, uppercase_start);
GetWindowTextU(GetDlgItem(hDlg, IDCANCEL), uppercase_close, sizeof(uppercase_close));
CharUpperBuffU(uppercase_close, sizeof(uppercase_close));
// Hardcoded exception for German
if (strcmp("SCHLIEßEN", uppercase_close) == 0)
strcpy(uppercase_close, "SCHLIESSEN");
SetWindowTextU(GetDlgItem(hDlg, IDCANCEL), uppercase_close);
GetWindowTextU(GetDlgItem(hDlg, IDC_SELECT), uppercase_select, sizeof(uppercase_select));
CharUpperBuffU(uppercase_select, sizeof(uppercase_select));
SetWindowTextU(GetDlgItem(hDlg, IDC_SELECT), uppercase_select);
strcpy(uppercase_cancel, lmprintf(MSG_007));
CharUpperBuffU(uppercase_cancel, sizeof(uppercase_cancel));
GetBasicControlsWidth(hDlg);
GetMainButtonsWidth(hDlg);
GetHalfDropwdownWidth(hDlg);
@ -2458,7 +2469,7 @@ static void InitDialog(HWND hDlg)
CreateTooltip(hTargetSystem, lmprintf(MSG_151), 30000);
CreateTooltip(GetDlgItem(hDlg, IDS_CSM_HELP_TXT), lmprintf(MSG_152), 30000);
CreateTooltip(GetDlgItem(hDlg, IDC_HASH), lmprintf(MSG_272), -1);
CreateTooltip(GetDlgItem(hDlg, IDC_SAVE), lmprintf(MSG_312), -1);
CreateTooltip(GetDlgItem(hDlg, IDC_SAVE), lmprintf(MSG_304), -1);
if (!advanced_mode_device) // Hide as needed, since we display the advanced controls by default
ToggleAdvancedDeviceOptions(FALSE);
@ -2973,15 +2984,6 @@ 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_WINDOWS_INSTALL:
case IDC_WINDOWS_TO_GO:
if ( (Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL)) == BST_CHECKED) ||
(Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) == BST_CHECKED) ) {
// SetFSFromISO();
// SetMBRProps();
// SetMBRForUEFI(TRUE);
}
break;
case IDC_RUFUS_MBR:
if ((HIWORD(wParam)) == BN_CLICKED)
mbr_selected_by_user = IsChecked(IDC_RUFUS_MBR);
@ -3099,7 +3101,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
// Show the language menu such that it doesn't overlap the button
SendMessage(hMultiToolbar, TB_GETRECT, (WPARAM)IDC_ABOUT, (LPARAM)&rc);
MapWindowPoints(hDlg, NULL, (POINT*)&rc, 2);
rc.left += cb_width / 2;
rc.left += cbw / 2;
ShowLanguageMenu(rc);
break;
case IDC_SETTINGS:
@ -3197,7 +3199,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
safe_release_dc(hDlg, hDC);
apply_localization(IDD_DIALOG, hDlg);
SetUpdateCheck();
togo_mode = TRUE; // We display the ToGo controls by default and need to hide them
display_togo_option = TRUE; // We display the ToGo controls by default and need to hide them
first_log_display = TRUE;
log_displayed = FALSE;
hLogDlg = MyCreateDialog(hMainInstance, IDD_LOG, hDlg, (DLGPROC)LogProc);
@ -3275,11 +3277,11 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
lpttt = (LPTOOLTIPTEXT)lParam;
switch (lpttt->hdr.idFrom) {
case IDC_ABOUT:
utf8_to_wchar_no_alloc(lmprintf(MSG_306), wtooltip, ARRAYSIZE(wtooltip));
utf8_to_wchar_no_alloc(lmprintf(MSG_302), wtooltip, ARRAYSIZE(wtooltip));
lpttt->lpszText = wtooltip;
break;
case IDC_SETTINGS:
utf8_to_wchar_no_alloc(lmprintf(MSG_305), wtooltip, ARRAYSIZE(wtooltip));
utf8_to_wchar_no_alloc(lmprintf(MSG_301), wtooltip, ARRAYSIZE(wtooltip));
lpttt->lpszText = wtooltip;
break;
case IDC_LANG:
@ -3287,7 +3289,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
lpttt->lpszText = wtooltip;
break;
case IDC_LOG:
utf8_to_wchar_no_alloc(lmprintf(MSG_307), wtooltip, ARRAYSIZE(wtooltip));
utf8_to_wchar_no_alloc(lmprintf(MSG_303), wtooltip, ARRAYSIZE(wtooltip));
lpttt->lpszText = wtooltip;
break;
}

View file

@ -391,7 +391,7 @@ extern BOOL PromptOnError;
extern unsigned long syslinux_ldlinux_len[2];
extern const int nb_steps[FS_MAX];
extern BOOL use_own_c32[NB_OLD_C32], detect_fakes, iso_op_in_progress, format_op_in_progress, right_to_left_mode;
extern BOOL allow_dual_uefi_bios, togo_mode, large_drive, usb_debug;
extern BOOL allow_dual_uefi_bios, display_togo_option, large_drive, usb_debug;
extern RUFUS_IMG_REPORT img_report;
extern int64_t iso_blocking_status;
extern uint16_t rufus_version[3], embedded_sl_version[2];

View file

@ -86,10 +86,10 @@ CAPTION "About Rufus"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
BEGIN
ICON IDI_ICON,IDC_ABOUT_ICON,11,8,20,20
CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",0x884,45,7,268,107
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",WS_VSCROLL | WS_TABSTOP | 0x804,46,115,267,91,WS_EX_STATICEDGE
PUSHBUTTON "License",IDC_ABOUT_LICENSE,46,215,50,14,WS_GROUP
DEFPUSHBUTTON "OK",IDOK,251,215,50,14,WS_GROUP
CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY,45,7,268,107
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_TABSTOP,46,115,267,91,WS_EX_STATICEDGE
PUSHBUTTON "License",IDC_ABOUT_LICENSE,46,216,50,12,WS_GROUP
DEFPUSHBUTTON "OK",IDOK,253,216,50,12,WS_GROUP
END
IDD_CHECKSUM DIALOGEX 0, 0, 301, 70
@ -103,27 +103,27 @@ BEGIN
EDITTEXT IDC_SHA1,40,25,197,12,ES_LOWERCASE | ES_AUTOHSCROLL | ES_READONLY
LTEXT "SHA256:",IDC_STATIC,9,42,27,8
EDITTEXT IDC_SHA256,40,41,197,22,ES_MULTILINE | ES_LOWERCASE | ES_READONLY
DEFPUSHBUTTON "OK",IDOK,243,49,50,14,WS_GROUP
DEFPUSHBUTTON "OK",IDOK,243,49,50,12,WS_GROUP
END
IDD_LICENSE DIALOGEX 0, 0, 335, 205
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
IDD_LICENSE DIALOGEX 0, 0, 335, 213
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Rufus License"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
BEGIN
DEFPUSHBUTTON "Close",IDCANCEL,278,187,50,14
DEFPUSHBUTTON "Close",IDCANCEL,278,192,50,12
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_LOG DIALOGEX 0, 0, 366, 326
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Log"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
BEGIN
EDITTEXT IDC_LOG_EDIT,0,0,366,296,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_CLIENTEDGE
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,304,50,14
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,304,50,14
DEFPUSHBUTTON "Close Log",IDCANCEL,308,304,50,14
PUSHBUTTON "Clear",IDC_LOG_CLEAR,192,305,50,12
PUSHBUTTON "Save",IDC_LOG_SAVE,249,305,50,12
DEFPUSHBUTTON "Close",IDCANCEL,306,305,50,12
END
IDD_NOTIFICATION DIALOGEX 0, 0, 263, 63
@ -149,8 +149,8 @@ BEGIN
LTEXT "",IDC_STATIC,0,0,312,46
ICON IDI_ICON,IDC_SELECTION_ICON,6,6,20,20,0,WS_EX_TRANSPARENT
LTEXT "Message",IDC_SELECTION_TEXT,35,5,269,8
DEFPUSHBUTTON "OK",IDOK,196,52,50,14
PUSHBUTTON "Cancel",IDCANCEL,254,52,50,14
DEFPUSHBUTTON "OK",IDOK,196,53,50,12
PUSHBUTTON "Cancel",IDCANCEL,254,53,50,12
CONTROL "Choice 1",IDC_SELECTION_CHOICE1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,35,18,269,10,WS_EX_TRANSPARENT
CONTROL "Choice 2",IDC_SELECTION_CHOICE2,"Button",BS_AUTORADIOBUTTON,35,31,269,10,WS_EX_TRANSPARENT
CONTROL "Choice 3",IDC_SELECTION_CHOICE3,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,35,44,269,10,WS_EX_TRANSPARENT
@ -178,7 +178,7 @@ BEGIN
LTEXT "",IDC_STATIC,0,0,312,31
ICON IDI_ICON,IDC_LIST_ICON,6,6,20,20,0,WS_EX_TRANSPARENT
LTEXT "Message",IDC_LIST_TEXT,35,5,269,8
PUSHBUTTON "OK",IDOK,254,39,50,14
PUSHBUTTON "OK",IDOK,254,40,50,12
LTEXT "List 1",IDC_LIST_ITEM1,35,17,269,10,SS_PATHELLIPSIS
LTEXT "List 2",IDC_LIST_ITEM2,35,28,269,10,SS_PATHELLIPSIS | NOT WS_VISIBLE
LTEXT "List 3",IDC_LIST_ITEM3,35,39,269,10,SS_PATHELLIPSIS | NOT WS_VISIBLE

View file

@ -59,6 +59,7 @@ static HWINEVENTHOOK fp_weh = NULL;
static char *fp_title_str = "Microsoft Windows", *fp_button_str = "Format disk";
extern loc_cmd* selected_locale;
extern int cbw, ddw;
/*
* https://blogs.msdn.microsoft.com/oldnewthing/20040802-00/?p=38283/
@ -510,10 +511,10 @@ INT_PTR CALLBACK AboutCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP
const int edit_id[2] = {IDC_ABOUT_BLURB, IDC_ABOUT_COPYRIGHTS};
char about_blurb[2048];
const char* edit_text[2] = {about_blurb, additional_copyrights};
HWND hEdit[2];
HWND hEdit[2], hCtrl;
TEXTRANGEW tr;
ENLINK* enl;
RECT rect;
RECT rc;
REQRESIZE* rsz;
wchar_t wUrl[256];
static BOOL resized_already = TRUE;
@ -525,6 +526,12 @@ INT_PTR CALLBACK AboutCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP
apply_localization(IDD_ABOUTBOX, hDlg);
SetTitleBarIcon(hDlg);
CenterDialog(hDlg);
// Resize the 'License' button
hCtrl = GetDlgItem(hDlg, IDC_ABOUT_LICENSE);
GetWindowRect(hCtrl, &rc);
MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2);
SetWindowPos(hCtrl, NULL, rc.left, rc.top,
max(rc.right - rc.left, GetTextSize(hCtrl, NULL).cx + cbw), rc.bottom - rc.top, SWP_NOZORDER);
static_sprintf(about_blurb, about_blurb_format, lmprintf(MSG_174|MSG_RTF),
lmprintf(MSG_175|MSG_RTF, rufus_version[0], rufus_version[1], rufus_version[2]),
right_to_left_mode?"Akeo \\\\ Pete Batard 2011-2018 © Copyright":"Copyright © 2011-2018 Pete Batard / Akeo",
@ -550,8 +557,8 @@ INT_PTR CALLBACK AboutCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP
case EN_REQUESTRESIZE:
if (!resized_already) {
resized_already = TRUE;
GetWindowRect(GetDlgItem(hDlg, edit_id[0]), &rect);
dy = rect.bottom - rect.top;
GetWindowRect(GetDlgItem(hDlg, edit_id[0]), &rc);
dy = rc.bottom - rc.top;
rsz = (REQRESIZE *)lParam;
dy -= rsz->rc.bottom - rsz->rc.top;
ResizeMoveCtrl(hDlg, GetDlgItem(hDlg, edit_id[0]), 0, 0, 0, -dy, 1.0f);

View file

@ -152,6 +152,13 @@ static int full_width_controls[] = {
IDC_PROGRESS,
};
static int full_width_checkboxes[] = {
IDC_LIST_USB_HDD,
IDC_OLD_BIOS_FIXES,
IDC_QUICKFORMAT,
IDC_EXTENDED_LABEL,
};
static int half_width_ids[] = {
IDC_BADBLOCKS,
IDC_RUFUS_MBR,