mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	
							parent
							
								
									ba9cadd2e6
								
							
						
					
					
						commit
						8ae158ba22
					
				
					 11 changed files with 344 additions and 75 deletions
				
			
		|  | @ -430,6 +430,61 @@ t MSG_259 "Force update" | |||
| ############################# TRANSLATOR END COPY ############################## | ||||
| ################################################################################ | ||||
| 
 | ||||
| l "ar-AR" "Arabic (العربية)" 0x0401 | ||||
| a "ra" | ||||
| v 1.0.8 | ||||
| b "en-US" | ||||
| 
 | ||||
| g IDD_DIALOG | ||||
| t IDS_DEVICE_TXT "جهاز" | ||||
| t IDS_PARTITION_TYPE_TXT "نوع مخطط التقسيم وهدف النظام" | ||||
| t IDS_FILESYSTEM_TXT "نظام الملفات" | ||||
| t IDS_CLUSTERSIZE_TXT "حجم الكتلة" | ||||
| t IDS_LABEL_TXT "تسمية وحدة التخزين الجديدة" | ||||
| t IDS_FORMAT_OPTIONS_GRP "خيارات تنسيق       " | ||||
| m IDC_ADVANCED -8,0 | ||||
| t IDC_BADBLOCKS "تحقق الجهاز لكتل سيئة:" | ||||
| t IDC_QUICKFORMAT "تهيئة سريعة" | ||||
| t IDC_BOOT "إنشاء قرص تمهيد باستخدام:" | ||||
| t IDC_SET_ICON "إنشاء التسمية ورمز ملفات موسعة" | ||||
| t IDC_ABOUT "حول ..." | ||||
| t IDC_LOG "ثقيل" | ||||
| t IDCANCEL "قريب" | ||||
| t IDC_START "إقلاع" | ||||
| t IDS_ADVANCED_OPTIONS_GRP "خيارات متقدمة" | ||||
| t IDC_ENABLE_FIXED_DISKS "محركات الأقراص الصلبة USB قائمة" | ||||
| t IDC_EXTRA_PARTITION "إصلاحات BIOS القديمة" | ||||
| t IDC_RUFUS_MBR "استخدام روفوس MBR مع BIOS ID:" | ||||
| 
 | ||||
| # About dialog | ||||
| g IDD_ABOUTBOX | ||||
| t IDD_ABOUTBOX "حول Rufus" | ||||
| t IDC_ABOUT_LICENSE "ترخيص" | ||||
| t IDC_ABOUT_UPDATES "تحديثات" | ||||
| t IDOK "حسنا" | ||||
| 
 | ||||
| t MSG_003 "تحذير: كل البيانات على الجهاز '%s' سيتم تدمير. \n" | ||||
| 	"الاستمرار في هذه العملية، انقر فوق موافق. لإنهاء انقر فوق إلغاء الأمر." | ||||
| t MSG_026 "بايت" | ||||
| t MSG_027 "كيلو بايت" | ||||
| t MSG_028 "ميغابايت" | ||||
| 
 | ||||
| t MSG_030 "%s (الافتراضي)" | ||||
| t MSG_034 "%d يمر" | ||||
| t MSG_035 "%d تمريرات" | ||||
| t MSG_109 "0x%02X (أسطوانة %d)" | ||||
| # The following will appear in the about dialog | ||||
| t MSG_174 "Rufus وموثوق USB تنسيق المساعدة" | ||||
| t MSG_175 "الإصدار %d.%d.%d (Build %d)" | ||||
| t MSG_176 "ترجمة: هارون الرشيد <mailto:pete@akeo.ie>" | ||||
| t MSG_177 "البق تقرير أو طلب تعزيزات في:" | ||||
| t MSG_178 "حقوق الطبع والنشر إضافية:" | ||||
| 
 | ||||
| t MSG_208 "%d جهاز تم العثور عليه" | ||||
| t MSG_209 "%d  الأجهزة الموجودة" | ||||
| t MSG_210 "منجز" | ||||
| t MSG_211 "ألغي" | ||||
| t MSG_212 "فشل" | ||||
| 
 | ||||
| ################################################################################ | ||||
| l "zh-CN" "Chinese Simplified (简体中文)" 0x0804, 0x1004 | ||||
|  |  | |||
|  | @ -1288,7 +1288,7 @@ DWORD WINAPI FormatThread(LPVOID param) | |||
| 				lt.wYear, lt.wMonth, lt.wDay, lt.wHour, lt.wMinute, lt.wSecond); | ||||
| 				fclose(log_fd); | ||||
| 				r = MessageBoxU(hMainDialog, lmprintf(MSG_012, bb_msg, logfile), | ||||
| 					lmprintf(MSG_010), MB_ABORTRETRYIGNORE|MB_ICONWARNING); | ||||
| 					lmprintf(MSG_010), MB_ABORTRETRYIGNORE|MB_ICONWARNING|MB_IS_RTL); | ||||
| 			} else { | ||||
| 				// We didn't get any errors => delete the log file
 | ||||
| 				fclose(log_fd); | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| /*
 | ||||
|  * Rufus: The Reliable USB Formatting Utility | ||||
|  * Localization functions, a.k.a. "Everybody is doing it wrong but me!" | ||||
|  * Copyright © 2013 Pete Batard <pete@akeo.ie> | ||||
|  * Copyright © 2013-2014 Pete Batard <pete@akeo.ie> | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  | @ -61,9 +61,8 @@ const loc_parse parse_cmd[9] = { | |||
| 	// Set the font to use for the text controls that follow
 | ||||
| 	// Use f "Default" 0 to reset the font
 | ||||
| 	{ 'f', LC_FONT, "si" },		// f "MS Dialog" 10
 | ||||
| 	// Set the direction to use for the text controls that follow
 | ||||
| 	// 0 = Left to right, 1 = Right to left
 | ||||
| 	{ 'd', LC_DIRECTION, "i" },	// d 1					// TODO: NOT IMPLEMENTED YET
 | ||||
| 	// Set translations attributes such as right-to-left, numerals to use, etc
 | ||||
| 	{ 'a', LC_ATTRIBUTES, "s" },	// a "ra"
 | ||||
| }; | ||||
| 
 | ||||
| /* Globals */ | ||||
|  | @ -459,8 +458,6 @@ void apply_localization(int dlg_id, HWND hDlg) | |||
| 	loc_cmd* lcmd; | ||||
| 	HWND hCtrl = NULL; | ||||
| 	int id_start = IDD_DIALOG, id_end = IDD_DIALOG + ARRAYSIZE(loc_dlg); | ||||
| 	LONG_PTR style; | ||||
| 	BOOL left_to_right = FALSE; | ||||
| 
 | ||||
| 	if ((dlg_id >= id_start) && (dlg_id < id_end)) { | ||||
| 		// If we have a valid dialog_id, just process that one dialog
 | ||||
|  | @ -502,12 +499,6 @@ void apply_localization(int dlg_id, HWND hDlg) | |||
| 				if (hCtrl != NULL) { | ||||
| 					if ((lcmd->txt[1] != NULL) && (lcmd->txt[1][0] != 0)) | ||||
| 						SetWindowTextU(hCtrl, lcmd->txt[1]); | ||||
| 					if (left_to_right) { | ||||
| 						style = GetWindowLongPtr(hCtrl, GWL_EXSTYLE); | ||||
| 						style |= WS_EX_LAYOUTRTL; // TODO: WS_EX_RIGHT | WS_EX_RTLREADING
 | ||||
| 						SetWindowLongPtr(hCtrl, GWL_EXSTYLE, style); | ||||
| 						InvalidateRect(hCtrl, NULL, TRUE); | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			case LC_MOVE: | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| /*
 | ||||
|  * Rufus: The Reliable USB Formatting Utility | ||||
|  * Localization functions, a.k.a. "Everybody is doing it wrong but me!" | ||||
|  * Copyright © 2013 Pete Batard <pete@akeo.ie> | ||||
|  * Copyright © 2013-2014 Pete Batard <pete@akeo.ie> | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  | @ -28,6 +28,11 @@ | |||
| #define LOC_MESSAGE_SIZE        2048 | ||||
| #define LOC_HTAB_SIZE           1031	// Using a prime speeds up the hash table init
 | ||||
| 
 | ||||
| // Attributes that can be set by a translation
 | ||||
| #define LOC_RIGHT_TO_LEFT       0x00000001 | ||||
| #define LOC_ARABIC_NUMERALS     0x00000002 | ||||
| #define LOC_JAPANESE_NUMERALS   0x00000004 | ||||
| 
 | ||||
| // The [v]ersion major from a translation must match this number or
 | ||||
| // the translation will be ignored
 | ||||
| #define LOC_FRAMEWORK_VERSION  1 | ||||
|  | @ -113,14 +118,14 @@ enum loc_command_type { | |||
| 	LC_LOCALE, | ||||
| 	LC_BASE, | ||||
| 	LC_FONT, | ||||
| 	LC_DIRECTION, | ||||
| 	LC_ATTRIBUTES, | ||||
| }; | ||||
| 
 | ||||
| typedef struct loc_cmd_struct { | ||||
| 	uint8_t		command; | ||||
| 	uint8_t		unum_size; | ||||
| 	uint16_t	line_nr; | ||||
| 	int			ctrl_id; | ||||
| 	int			ctrl_id;	// Also used as the attributes mask
 | ||||
| 	int32_t		num[2]; | ||||
| 	uint32_t*	unum; | ||||
| 	char*		txt[2]; | ||||
|  |  | |||
|  | @ -374,7 +374,7 @@ out: | |||
| 		PrintStatus(0, FALSE, MSG_242); | ||||
| 		SetLastError(error_code); | ||||
| 		MessageBoxU(hMainDialog, IS_ERROR(FormatStatus)?StrError(FormatStatus, FALSE):WinInetErrorString(), | ||||
| 		lmprintf(MSG_044), MB_OK|MB_ICONERROR); | ||||
| 		lmprintf(MSG_044), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 	} | ||||
| 	if (hRequest) InternetCloseHandle(hRequest); | ||||
| 	if (hConnection) InternetCloseHandle(hConnection); | ||||
|  |  | |||
							
								
								
									
										33
									
								
								src/parser.c
									
										
									
									
									
								
							
							
						
						
									
										33
									
								
								src/parser.c
									
										
									
									
									
								
							|  | @ -1,7 +1,7 @@ | |||
| /*
 | ||||
|  * Rufus: The Reliable USB Formatting Utility | ||||
|  * Elementary Unicode compliant find/replace parser | ||||
|  * Copyright © 2012-2013 Pete Batard <pete@akeo.ie> | ||||
|  * Copyright © 2012-2014 Pete Batard <pete@akeo.ie> | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  | @ -38,6 +38,12 @@ | |||
| static const char space[] = " \t"; | ||||
| static const wchar_t wspace[] = L" \t"; | ||||
| 
 | ||||
| const struct {char c; int flag;} attr_parse[] = { | ||||
| 	{ 'r', LOC_RIGHT_TO_LEFT }, | ||||
| 	{ 'a', LOC_ARABIC_NUMERALS }, | ||||
| 	{ 'j', LOC_JAPANESE_NUMERALS }, | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * Fill a localization command buffer by parsing the line arguments | ||||
|  * The command is allocated and must be freed (by calling free_loc_cmd) | ||||
|  | @ -61,8 +67,8 @@ static loc_cmd* get_loc_cmd(char c, char* line) { | |||
| 		luprint("could not allocate command"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	lcmd->ctrl_id = -1; | ||||
| 	lcmd->command = parse_cmd[j].cmd; | ||||
| 	lcmd->ctrl_id = (lcmd->command <= LC_TEXT)?-1:0; | ||||
| 	lcmd->line_nr = (uint16_t)loc_line_nr; | ||||
| 
 | ||||
| 	i = 0; | ||||
|  | @ -231,7 +237,7 @@ BOOL get_supported_locales(const char* filename) | |||
| 	FILE* fd = NULL; | ||||
| 	BOOL r = FALSE; | ||||
| 	char line[1024]; | ||||
| 	size_t i; | ||||
| 	size_t i, j, k; | ||||
| 	loc_cmd *lcmd = NULL, *last_lcmd = NULL; | ||||
| 	long end_of_block; | ||||
| 	int version_line_nr = 0; | ||||
|  | @ -270,11 +276,11 @@ BOOL get_supported_locales(const char* filename) | |||
| 		loc_line_nr++; | ||||
| 		// Skip leading spaces
 | ||||
| 		i = strspn(line, space); | ||||
| 		if ((line[i] != 'l') && (line[i] != 'v')) | ||||
| 		if ((line[i] != 'l') && (line[i] != 'v') && (line[i] != 'a')) | ||||
| 			continue; | ||||
| 		// line[i] is not NUL so i+1 is safe to access
 | ||||
| 		lcmd = get_loc_cmd(line[i], &line[i+1]); | ||||
| 		if ((lcmd == NULL) || ((lcmd->command != LC_LOCALE) && (lcmd->command != LC_VERSION))) { | ||||
| 		if ((lcmd == NULL) || ((lcmd->command != LC_LOCALE) && (lcmd->command != LC_VERSION) && (lcmd->command != LC_ATTRIBUTES))) { | ||||
| 			free_loc_cmd(lcmd); | ||||
| 			continue; | ||||
| 		} | ||||
|  | @ -297,6 +303,23 @@ BOOL get_supported_locales(const char* filename) | |||
| 			last_lcmd = lcmd; | ||||
| 			version_line_nr = 0; | ||||
| 			break; | ||||
| 		case LC_ATTRIBUTES: | ||||
| 			if (last_lcmd == NULL) { | ||||
| 				luprint("[a]ttributes cannot precede [l]ocale"); | ||||
| 			} | ||||
| 			for(j=0; lcmd->txt[0][j] != 0; j++) { | ||||
| 				for (k=0; k<ARRAYSIZE(attr_parse); k++) { | ||||
| 					if (attr_parse[k].c == lcmd->txt[0][j]) { | ||||
| 						// Repurpose ctrl_id as an attributes mask
 | ||||
| 						last_lcmd->ctrl_id |= attr_parse[k].flag; | ||||
| 						break; | ||||
| 					} | ||||
| 				} | ||||
| 				if (k >= ARRAYSIZE(attr_parse)) | ||||
| 					luprintf("unknown attribute '%c' - ignored", lcmd->txt[0][j]); | ||||
| 			} | ||||
| 			free_loc_cmd(lcmd); | ||||
| 			break; | ||||
| 		case LC_VERSION: | ||||
| 			if (version_line_nr != 0) { | ||||
| 				luprintf("[v]ersion was already provided at line %d", version_line_nr); | ||||
|  |  | |||
|  | @ -13,6 +13,14 @@ | |||
| #define IDI_ICON                        110 | ||||
| #define IDI_UP                          111 | ||||
| #define IDI_DOWN                        112 | ||||
| #define RTL_IDD_DIALOG                  201 | ||||
| #define RTL_IDD_ABOUTBOX                202 | ||||
| #define RTL_IDD_NOTIFICATION            203 | ||||
| #define RTL_IDD_LICENSE                 204 | ||||
| #define RTL_IDD_ISO_EXTRACT             205 | ||||
| #define RTL_IDD_LOG                     206 | ||||
| #define RTL_IDD_UPDATE_POLICY           207 | ||||
| #define RTL_IDD_NEW_VERSION             208 | ||||
| #define IDR_FD_COMMAND_COM              300 | ||||
| #define IDR_FD_KERNEL_SYS               301 | ||||
| #define IDR_FD_DISPLAY_EXE              302 | ||||
|  |  | |||
							
								
								
									
										110
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										110
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -138,7 +138,7 @@ uint32_t dur_mins, dur_secs; | |||
| HWND hDeviceList, hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog = NULL; | ||||
| HWND hISOProgressDlg = NULL, hLogDlg = NULL, hISOProgressBar, hISOFileName, hDiskID; | ||||
| BOOL use_own_c32[NB_OLD_C32] = {FALSE, FALSE}, detect_fakes = TRUE, mbr_selected_by_user = FALSE; | ||||
| BOOL iso_op_in_progress = FALSE, format_op_in_progress = FALSE; | ||||
| BOOL iso_op_in_progress = FALSE, format_op_in_progress = FALSE, right_to_left_mode = FALSE; | ||||
| BOOL enable_HDDs = FALSE, advanced_mode = TRUE, force_update = FALSE; | ||||
| int dialog_showing = 0; | ||||
| uint16_t rufus_version[4], embedded_sl_version[2]; | ||||
|  | @ -199,7 +199,7 @@ static BOOL DefineClusterSizes(void) | |||
| 	LONGLONG i; | ||||
| 	int fs; | ||||
| 	BOOL r = FALSE; | ||||
| 	char tmp[64] = "", *entry; | ||||
| 	char tmp[128] = "", *entry; | ||||
| 
 | ||||
| 	default_fs = FS_UNKNOWN; | ||||
| 	memset(&SelectedDrive.ClusterSize, 0, sizeof(SelectedDrive.ClusterSize)); | ||||
|  | @ -839,6 +839,8 @@ static BOOL GetUSBDevices(DWORD devnum) | |||
| 					for (k=0; drive_letters[k]; k++) { | ||||
| 						// Append all the drive letters we detected
 | ||||
| 						letter_name[2] = drive_letters[k]; | ||||
| 						if (right_to_left_mode) | ||||
| 							safe_strcat(entry_msg, sizeof(entry_msg), RIGHT_TO_LEFT_MARK); | ||||
| 						safe_strcat(entry_msg, sizeof(entry_msg), letter_name); | ||||
| 						if (drive_letters[k] == app_dir[0]) break; | ||||
| 					} | ||||
|  | @ -1125,7 +1127,7 @@ static void CALLBACK BlockingTimer(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD | |||
| 			// A write or close operation hasn't made any progress since our last check
 | ||||
| 			user_notified = TRUE; | ||||
| 			uprintf("Blocking I/O operation detected\n"); | ||||
| 		MessageBoxU(hMainDialog, lmprintf(MSG_080), lmprintf(MSG_048), MB_OK|MB_ICONINFORMATION); | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_080), lmprintf(MSG_048), MB_OK|MB_ICONINFORMATION|MB_IS_RTL); | ||||
| 		} else { | ||||
| 			last_iso_blocking_status = iso_blocking_status; | ||||
| 		} | ||||
|  | @ -1216,7 +1218,7 @@ DWORD WINAPI ISOScanThread(LPVOID param) | |||
| 	} | ||||
| 	if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe))  | ||||
| 	  && (!iso_report.has_efi) && (!IS_REACTOS(iso_report)) ) { | ||||
| 		MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION); | ||||
| 		MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL); | ||||
| 		safe_free(iso_path); | ||||
| 		SetMBRProps(); | ||||
| 	} else if (HAS_SYSLINUX(iso_report)) { | ||||
|  | @ -1233,7 +1235,7 @@ DWORD WINAPI ISOScanThread(LPVOID param) | |||
| 					} else { | ||||
| 						PrintStatus(0, FALSE, MSG_204, old_c32_name[i]); | ||||
| 						if (MessageBoxU(hMainDialog, lmprintf(MSG_084, old_c32_name[i], old_c32_name[i]), | ||||
| 							 lmprintf(MSG_083, old_c32_name[i]), MB_YESNO|MB_ICONWARNING) == IDYES) { | ||||
| 							 lmprintf(MSG_083, old_c32_name[i]), MB_YESNO|MB_ICONWARNING|MB_IS_RTL) == IDYES) { | ||||
| 							SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, old_c32_name[i])); | ||||
| 							SetWindowTextU(hISOFileName, new_c32_url[i]); | ||||
| 							if (DownloadFile(new_c32_url[i], old_c32_name[i], hISOProgressDlg)) | ||||
|  | @ -1350,12 +1352,12 @@ static BOOL BootCheck(void) | |||
| 	if (dt == DT_ISO) { | ||||
| 		if (iso_path == NULL) { | ||||
| 			// Please click on the disc button to select a bootable ISO
 | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_087), lmprintf(MSG_086), MB_OK|MB_ICONERROR); | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_087), lmprintf(MSG_086), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 			return FALSE; | ||||
| 		} | ||||
| 		if ((size_check) && (iso_report.projected_size > (uint64_t)SelectedDrive.DiskSize)) { | ||||
| 			// This ISO image is too big for the selected target
 | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_089), lmprintf(MSG_088), MB_OK|MB_ICONERROR); | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_089), lmprintf(MSG_088), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 			return FALSE; | ||||
| 		} | ||||
| 		fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | ||||
|  | @ -1363,32 +1365,32 @@ static BOOL BootCheck(void) | |||
| 		if (bt == BT_UEFI) { | ||||
| 			if (!IS_EFI(iso_report)) { | ||||
| 				// Unsupported ISO
 | ||||
| 				MessageBoxU(hMainDialog, lmprintf(MSG_091), lmprintf(MSG_090), MB_OK|MB_ICONERROR); | ||||
| 				MessageBoxU(hMainDialog, lmprintf(MSG_091), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 				return FALSE; | ||||
| 			} | ||||
| 			if ((iso_report.has_win7_efi) && (!WimExtractCheck())) { | ||||
| 				// Your platform cannot extract files from WIM archives => download 7-zip?
 | ||||
| 				if (MessageBoxU(hMainDialog, lmprintf(MSG_102), lmprintf(MSG_101), MB_YESNO|MB_ICONERROR) == IDYES) | ||||
| 				if (MessageBoxU(hMainDialog, lmprintf(MSG_102), lmprintf(MSG_101), MB_YESNO|MB_ICONERROR|MB_IS_RTL) == IDYES) | ||||
| 					ShellExecuteA(hMainDialog, "open", SEVENZIP_URL, NULL, NULL, SW_SHOWNORMAL); | ||||
| 				return FALSE; | ||||
| 			} | ||||
| 		} else if ((fs == FS_NTFS) && (!iso_report.has_bootmgr) && (!IS_WINPE(iso_report.winpe))) { | ||||
| 			if (HAS_SYSLINUX(iso_report)) { | ||||
| 				// Only FAT/FAT32 is supported for this type of ISO
 | ||||
| 				MessageBoxU(hMainDialog, lmprintf(MSG_096), lmprintf(MSG_092), MB_OK|MB_ICONERROR); | ||||
| 				MessageBoxU(hMainDialog, lmprintf(MSG_096), lmprintf(MSG_092), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 			} else { | ||||
| 				// Only 'bootmgr' or 'WinPE' based ISO images can currently be used with NTFS
 | ||||
| 				MessageBoxU(hMainDialog, lmprintf(MSG_097), lmprintf(MSG_090), MB_OK|MB_ICONERROR); | ||||
| 				MessageBoxU(hMainDialog, lmprintf(MSG_097), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 			} | ||||
| 			return FALSE; | ||||
| 		} else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (!HAS_SYSLINUX(iso_report)) && (!IS_REACTOS(iso_report))) { | ||||
| 			// FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI
 | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_098), lmprintf(MSG_090), MB_OK|MB_ICONERROR); | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_098), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 			return FALSE; | ||||
| 		} | ||||
| 		if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (iso_report.has_4GB_file)) { | ||||
| 			// This ISO image contains a file larger than 4GB file (FAT32)
 | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_100), lmprintf(MSG_099), MB_OK|MB_ICONERROR); | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_100), lmprintf(MSG_099), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 			return FALSE; | ||||
| 		} | ||||
| 		if ((SL_MAJOR(iso_report.sl_version) >= 5) && (iso_report.sl_version != embedded_sl_version[1])) { | ||||
|  | @ -1411,7 +1413,7 @@ static BOOL BootCheck(void) | |||
| 					ldlinux, ldlinux_ext[0], ldlinux, ldlinux_ext[1], FILES_DIR, syslinux, &iso_report.sl_version_str[1]); | ||||
| 			} else { | ||||
| 				r = MessageBoxU(hMainDialog, lmprintf(MSG_114, iso_report.sl_version_str, embedded_sl_version_str[1]), | ||||
| 					lmprintf(MSG_115), MB_YESNO|MB_ICONWARNING); | ||||
| 					lmprintf(MSG_115), MB_YESNO|MB_ICONWARNING|MB_IS_RTL); | ||||
| 				if (r != IDYES) | ||||
| 					return FALSE; | ||||
| 				for (i=0; i<2; i++) { | ||||
|  | @ -1443,7 +1445,7 @@ static BOOL BootCheck(void) | |||
| 			PrintStatus(0, FALSE, MSG_206, tmp); | ||||
| 			// MSG_104: "Syslinux v5.0 or later requires a '%s' file to be installed"
 | ||||
| 			r = MessageBoxU(hMainDialog, lmprintf(MSG_104, tmp, tmp), | ||||
| 				lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING); | ||||
| 				lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING|MB_IS_RTL); | ||||
| 			if (r == IDCANCEL) | ||||
| 				return FALSE; | ||||
| 			if (r == IDYES) { | ||||
|  | @ -1458,7 +1460,7 @@ static BOOL BootCheck(void) | |||
| 	} else if (dt == DT_WINME) { | ||||
| 		if ((size_check) && (ComboBox_GetItemData(hClusterSize, ComboBox_GetCurSel(hClusterSize)) >= 65536)) { | ||||
| 			// MS-DOS cannot boot from a drive using a 64 kilobytes Cluster size
 | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_110), lmprintf(MSG_111), MB_OK|MB_ICONERROR); | ||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_110), lmprintf(MSG_111), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||
| 			return FALSE; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -1643,11 +1645,24 @@ void ShowLanguageMenu(HWND hDlg) | |||
| 	POINT pt; | ||||
| 	HMENU menu; | ||||
| 	loc_cmd* lcmd = NULL; | ||||
| 	UM_LANGUAGE_MENU_MAX = UM_LANGUAGE_MENU; | ||||
| 	char lang[256]; | ||||
| 	char *search = "()"; | ||||
| 	char *l, *r, *dup; | ||||
| 
 | ||||
| 	UM_LANGUAGE_MENU_MAX = UM_LANGUAGE_MENU; | ||||
| 	menu = CreatePopupMenu(); | ||||
| 	list_for_each_entry(lcmd, &locale_list, loc_cmd, list) { | ||||
| 		InsertMenuU(menu, -1, MF_BYPOSITION|((selected_locale == lcmd)?MF_CHECKED:0), UM_LANGUAGE_MENU_MAX++, lcmd->txt[1]); | ||||
| 		// The appearance of LTR languages must be fixed for RTL menus
 | ||||
| 		if ((right_to_left_mode) && (!(lcmd->ctrl_id & LOC_RIGHT_TO_LEFT)))  { | ||||
| 			dup = safe_strdup(lcmd->txt[1]); | ||||
| 			l = strtok(dup, search); | ||||
| 			r = strtok(NULL, search); | ||||
| 			static_sprintf(lang, LEFT_TO_RIGHT_MARK "(%s) " LEFT_TO_RIGHT_MARK "%s", r, l); | ||||
| 			safe_free(dup); | ||||
| 		} else { | ||||
| 			safe_strcpy(lang, sizeof(lang), lcmd->txt[1]); | ||||
| 		} | ||||
| 		InsertMenuU(menu, -1, MF_BYPOSITION|((selected_locale == lcmd)?MF_CHECKED:0), UM_LANGUAGE_MENU_MAX++, lang); | ||||
| 	} | ||||
| 
 | ||||
| 	SetForegroundWindow(hDlg); | ||||
|  | @ -1721,7 +1736,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 		// Create the log window (hidden)
 | ||||
| 		first_log_display = TRUE; | ||||
| 		log_displayed = FALSE; | ||||
| 		hLogDlg = CreateDialogW(hMainInstance, MAKEINTRESOURCEW(IDD_LOG), hDlg, (DLGPROC)LogProc); | ||||
| 		hLogDlg = CreateDialogW(hMainInstance, MAKEINTRESOURCEW(IDD_LOG + IDD_IS_RTL), hDlg, (DLGPROC)LogProc); | ||||
| 		InitDialog(hDlg); | ||||
| 		GetUSBDevices(0); | ||||
| 		CheckForUpdates(FALSE); | ||||
|  | @ -1780,7 +1795,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 			EnableWindow(GetDlgItem(hDlg, IDCANCEL), FALSE); | ||||
| 			if (format_thid != NULL) { | ||||
| 				if (MessageBoxU(hMainDialog, lmprintf(MSG_105), lmprintf(MSG_049), | ||||
| 					MB_YESNO|MB_ICONWARNING) == IDYES) { | ||||
| 					MB_YESNO|MB_ICONWARNING|MB_IS_RTL) == IDYES) { | ||||
| 					// Operation may have completed in the meantime
 | ||||
| 					if (format_thid != NULL) { | ||||
| 						FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED; | ||||
|  | @ -1812,21 +1827,32 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 			CreateAboutBox(); | ||||
| 			break; | ||||
| 		case IDC_LOG: | ||||
| 			// Place the log Window to the right of our dialog on first display
 | ||||
| 			// Place the log Window to the right (or left for RTL) of our dialog on first display
 | ||||
| 			if (first_log_display) { | ||||
| 				GetClientRect(GetDesktopWindow(), &DesktopRect); | ||||
| 				GetWindowRect(hLogDlg, &DialogRect); | ||||
| 				nWidth = DialogRect.right - DialogRect.left; | ||||
| 				nHeight = DialogRect.bottom - DialogRect.top; | ||||
| 				GetWindowRect(hDlg, &DialogRect); | ||||
| 				if (right_to_left_mode) | ||||
| 					Point.x = max(DialogRect.left - GetSystemMetrics(SM_CXSIZEFRAME)-(int)(2.0f * fScale) - nWidth, 0); | ||||
| 				else | ||||
| 					Point.x = min(DialogRect.right + GetSystemMetrics(SM_CXSIZEFRAME)+(int)(2.0f * fScale), DesktopRect.right - nWidth); | ||||
| 				 | ||||
| 				Point.y = max(DialogRect.top, DesktopRect.top - nHeight); | ||||
| 				MoveWindow(hLogDlg, Point.x, Point.y, nWidth, nHeight, FALSE); | ||||
| 				// The log may have been recentered to fit the screen, in which case, try to shift our main dialog left
 | ||||
| 				// The log may have been recentered to fit the screen, in which case, try to shift our main dialog left (or right for RTL)
 | ||||
| 				nWidth = DialogRect.right - DialogRect.left; | ||||
| 				nHeight = DialogRect.bottom - DialogRect.top; | ||||
| 				MoveWindow(hDlg, max((DialogRect.left<0)?DialogRect.left:0, | ||||
| 					Point.x - nWidth - GetSystemMetrics(SM_CXSIZEFRAME) - (int)(2.0f * fScale)), Point.y, nWidth, nHeight, TRUE); | ||||
| 				if (right_to_left_mode) { | ||||
| 					Point.x = DialogRect.left; | ||||
| 					GetWindowRect(hLogDlg, &DialogRect); | ||||
| 					Point.x = max(Point.x, DialogRect.right - DialogRect.left + GetSystemMetrics(SM_CXSIZEFRAME) + (int)(2.0f * fScale)); | ||||
| 				} else { | ||||
| 					Point.x = max((DialogRect.left<0)?DialogRect.left:0, | ||||
| 						Point.x - nWidth - GetSystemMetrics(SM_CXSIZEFRAME) - (int)(2.0f * fScale)); | ||||
| 				} | ||||
| 				MoveWindow(hDlg, Point.x, Point.y, nWidth, nHeight, TRUE); | ||||
| 				first_log_display = FALSE; | ||||
| 			} | ||||
| 			// Display the log Window
 | ||||
|  | @ -2037,7 +2063,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 					if (dur_secs > UDF_FORMAT_WARN) { | ||||
| 						dur_mins = dur_secs/60; | ||||
| 						dur_secs -= dur_mins*60; | ||||
| 						MessageBoxU(hMainDialog, lmprintf(MSG_112, dur_mins, dur_secs), lmprintf(MSG_113), MB_OK|MB_ICONASTERISK); | ||||
| 						MessageBoxU(hMainDialog, lmprintf(MSG_112, dur_mins, dur_secs), lmprintf(MSG_113), MB_OK|MB_ICONASTERISK|MB_IS_RTL); | ||||
| 					} else { | ||||
| 						dur_secs = 0; | ||||
| 						dur_mins = 0; | ||||
|  | @ -2046,12 +2072,12 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 
 | ||||
| 				GetWindowTextU(hDeviceList, tmp, ARRAYSIZE(tmp)); | ||||
| 				if (MessageBoxU(hMainDialog, lmprintf(MSG_003, tmp), | ||||
| 					APPLICATION_NAME, MB_OKCANCEL|MB_ICONWARNING) == IDCANCEL) { | ||||
| 					APPLICATION_NAME, MB_OKCANCEL|MB_ICONWARNING|MB_IS_RTL) == IDCANCEL) { | ||||
| 					format_op_in_progress = FALSE; | ||||
| 					break; | ||||
| 				} | ||||
| 				if ((SelectedDrive.nPartitions > 1) && (MessageBoxU(hMainDialog, lmprintf(MSG_093), | ||||
| 					lmprintf(MSG_094), MB_OKCANCEL|MB_ICONWARNING) == IDCANCEL)) { | ||||
| 					lmprintf(MSG_094), MB_OKCANCEL|MB_ICONWARNING|MB_IS_RTL) == IDCANCEL)) { | ||||
| 					format_op_in_progress = FALSE; | ||||
| 					break; | ||||
| 				} | ||||
|  | @ -2094,7 +2120,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 		// You'd think that Windows would let you instantiate a modeless dialog wherever
 | ||||
| 		// but you'd be wrong. It must be done in the main callback, hence the custom message.
 | ||||
| 		if (!IsWindow(hISOProgressDlg)) {  | ||||
| 			hISOProgressDlg = CreateDialogW(hMainInstance, MAKEINTRESOURCEW(IDD_ISO_EXTRACT), | ||||
| 			hISOProgressDlg = CreateDialogW(hMainInstance, MAKEINTRESOURCEW(IDD_ISO_EXTRACT + IDD_IS_RTL), | ||||
| 				hDlg, (DLGPROC)ISOProc); | ||||
| 
 | ||||
| 			// The window is not visible by default but takes focus => restore it
 | ||||
|  | @ -2307,7 +2333,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine | |||
| 	if ( (!get_supported_locales(loc_file)) | ||||
| 	  || ((selected_locale = ((locale_name == NULL)?get_locale_from_lcid(lcid, TRUE):get_locale_from_name(locale_name, TRUE))) == NULL) ) { | ||||
| 		uprintf("FATAL: Could not access locale!\n"); | ||||
| 		MessageBoxU(NULL, "The locale data is missing or invalid. This application will now exit.", "Fatal error", MB_ICONSTOP); | ||||
| 		MessageBoxU(NULL, "The locale data is missing or invalid. This application will now exit.", "Fatal error", MB_ICONSTOP|MB_IS_RTL); | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -2324,7 +2350,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine | |||
| 	if ((mutex == NULL) || (GetLastError() == ERROR_ALREADY_EXISTS)) { | ||||
| 		// Load the translation before we print the error
 | ||||
| 		get_loc_data_file(loc_file, selected_locale); | ||||
| 		MessageBoxU(NULL, lmprintf(MSG_002), lmprintf(MSG_001), MB_ICONSTOP); | ||||
| 		MessageBoxU(NULL, lmprintf(MSG_002), lmprintf(MSG_001), MB_ICONSTOP|MB_IS_RTL); | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -2348,6 +2374,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine | |||
| 
 | ||||
| relaunch: | ||||
| 	uprintf("localization: using locale '%s'\n", selected_locale->txt[0]); | ||||
| 	right_to_left_mode = ((selected_locale->ctrl_id) & LOC_RIGHT_TO_LEFT); | ||||
| 	SetProcessDefaultLayout(right_to_left_mode?LAYOUT_RTL:0); | ||||
| 	if (get_loc_data_file(loc_file, selected_locale)) | ||||
| 		WriteRegistryKeyStr(REGKEY_HKCU, REGKEY_LOCALE, selected_locale->txt[0]); | ||||
| 
 | ||||
|  | @ -2357,10 +2385,26 @@ relaunch: | |||
| 		hISOProgressDlg = NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	// Create the main Window
 | ||||
| 	hDlg = CreateDialogW(hInstance, MAKEINTRESOURCEW(IDD_DIALOG), NULL, MainCallback); | ||||
| 	/*
 | ||||
| 	 * Create the main Window | ||||
| 	 * | ||||
| 	 * Oh yeah, thanks to Microsoft limitations for dialog boxes this is SUPER SUCKY: | ||||
| 	 * As per the MSDN [http://msdn.microsoft.com/en-ie/goglobal/bb688119.aspx], "The only way
 | ||||
| 	 *   to switch between mirrored and nonmirrored dialog resources at run time is to have two | ||||
| 	 *   sets of dialog resources: one mirrored and one nonmirrored." | ||||
| 	 * Unfortunately, this limitation is VERY REAL, so that's what we have to go through, and | ||||
| 	 * furthermore, trying to switch part of the dialogs back to LTR is also a major exercise | ||||
| 	 * in frustration, because it's next to impossible which combination of WS_EX_RTLREADING, | ||||
| 	 * WS_EX_RIGHT, WS_EX_LAYOUTRTL, WS_EX_LEFTSCROLLBAR and ES_RIGHT will work, plus there's | ||||
| 	 * no way to toggle ES_RIGHT at runtime anyway. | ||||
| 	 * So, just like Microsoft advocates, we go through a massive duplication of all our RC | ||||
| 	 * dialogs (our RTL dialogs having their IDD's offset by +100 - see IDD_IS_RTL), just to | ||||
| 	 * add a handful of stupid flags. And of course, now we'll have to figure out a way to keep | ||||
| 	 * the RTL and non RTL duplicated dialogs always in sync... | ||||
| 	 */ | ||||
| 	hDlg = CreateDialogW(hInstance, MAKEINTRESOURCEW(IDD_DIALOG + IDD_IS_RTL), NULL, MainCallback); | ||||
| 	if (hDlg == NULL) { | ||||
| 		MessageBoxU(NULL, "Could not create Window", "DialogBox failure", MB_ICONSTOP); | ||||
| 		MessageBoxU(NULL, "Could not create Window", "DialogBox failure", MB_ICONSTOP|MB_IS_RTL); | ||||
| 		goto out; | ||||
| 	} | ||||
| 	if ((relaunch_rc.left > -65536) && (relaunch_rc.top > -65536)) | ||||
|  |  | |||
|  | @ -35,6 +35,8 @@ | |||
| #define APPLICATION_NAME            "Rufus" | ||||
| #define COMPANY_NAME                "Akeo Consulting" | ||||
| #define STR_NO_LABEL                "NO_LABEL" | ||||
| #define LEFT_TO_RIGHT_MARK          ""			// Yes, there is a character between the quotes!
 | ||||
| #define RIGHT_TO_LEFT_MARK          "" | ||||
| #define DRIVE_ACCESS_TIMEOUT        15000		// How long we should retry drive access (in ms)
 | ||||
| #define DRIVE_ACCESS_RETRIES        60			// How many times we should retry
 | ||||
| #define DRIVE_INDEX_MIN             0x00000080 | ||||
|  | @ -68,6 +70,8 @@ | |||
| #define ARRAYSIZE(A)                (sizeof(A)/sizeof((A)[0])) | ||||
| #endif | ||||
| #define IsChecked(CheckBox_ID)      (IsDlgButtonChecked(hMainDialog, CheckBox_ID) == BST_CHECKED) | ||||
| #define MB_IS_RTL                   (right_to_left_mode?MB_RTLREADING:0) | ||||
| #define IDD_IS_RTL                  (right_to_left_mode?100:0) | ||||
| 
 | ||||
| #define safe_free(p) do {free((void*)p); p = NULL;} while(0) | ||||
| #define safe_min(a, b) min((size_t)(a), (size_t)(b)) | ||||
|  | @ -289,7 +293,7 @@ extern DWORD FormatStatus; | |||
| extern DWORD syslinux_ldlinux_len[2]; | ||||
| extern RUFUS_DRIVE_INFO SelectedDrive; | ||||
| 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; | ||||
| extern BOOL use_own_c32[NB_OLD_C32], detect_fakes, iso_op_in_progress, format_op_in_progress, right_to_left_mode; | ||||
| extern RUFUS_ISO_REPORT iso_report; | ||||
| extern int64_t iso_blocking_status; | ||||
| extern uint16_t rufus_version[4], embedded_sl_version[2]; | ||||
|  |  | |||
							
								
								
									
										151
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										151
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -32,8 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | |||
| 
 | ||||
| IDD_DIALOG DIALOGEX 12, 12, 206, 329 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_APPWINDOW | ||||
| CAPTION "Rufus v1.4.3.389" | ||||
| CAPTION "Rufus v1.4.3.390" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     DEFPUSHBUTTON   "Start",IDC_START,94,291,50,14 | ||||
|  | @ -163,6 +162,146 @@ BEGIN | |||
|     EDITTEXT        IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY | ||||
| END | ||||
| 
 | ||||
| RTL_IDD_DIALOG DIALOGEX 12, 12, 206, 329 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Rufus v1.4.3.390" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     DEFPUSHBUTTON   "Start",IDC_START,94,291,50,14 | ||||
|     PUSHBUTTON      "Close",IDCANCEL,148,291,50,14 | ||||
|     PUSHBUTTON      "About...",IDC_ABOUT,8,291,50,14 | ||||
|     PUSHBUTTON      "Log",IDC_LOG,62,291,18,14 | ||||
|     PUSHBUTTON      "T",IDC_TEST,80,291,12,14,NOT WS_VISIBLE | ||||
|     COMBOBOX        IDC_DEVICE,8,17,190,33,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     LTEXT           "Device",IDS_DEVICE_TXT,9,6,171,8 | ||||
|     COMBOBOX        IDC_FILESYSTEM,8,75,190,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     LTEXT           "File system",IDS_FILESYSTEM_TXT,9,64,186,10 | ||||
|     COMBOBOX        IDC_PARTITION_TYPE,8,46,190,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     LTEXT           "Partition scheme and target system type",IDS_PARTITION_TYPE_TXT,9,35,186,8 | ||||
|     COMBOBOX        IDC_CLUSTERSIZE,8,104,190,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     LTEXT           "Cluster size",IDS_CLUSTERSIZE_TXT,9,93,186,10 | ||||
|     GROUPBOX        "Format Options       ",IDS_FORMAT_OPTIONS_GRP,7,149,192,66 | ||||
|     LTEXT           "New volume label",IDS_LABEL_TXT,9,121,186,10 | ||||
|     EDITTEXT        IDC_LABEL,7,131,190,13,ES_AUTOHSCROLL | ||||
|     CONTROL         "Check device for bad blocks:",IDC_BADBLOCKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,161,101,10 | ||||
|     CONTROL         "Quick format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,173,106,10 | ||||
|     CONTROL         "Create a bootable disk using:",IDC_BOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,185,104,10 | ||||
|     CONTROL         "Create extended label and icon files",IDC_SET_ICON, | ||||
|                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,198,181,10 | ||||
|     CONTROL         "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,272,189,9 | ||||
|     COMBOBOX        IDC_NBPASSES,119,159,49,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     COMBOBOX        IDC_BOOTTYPE,119,183,49,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     PUSHBUTTON      "...",IDC_SELECT_ISO,171,182,22,14,BS_ICON | ||||
|     CONTROL         "Use Rufus MBR with BIOS ID:",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,106,10 | ||||
|     PUSHBUTTON      "",IDC_ADVANCED,63,148,14,10,BS_TOP | BS_FLAT | ||||
|     GROUPBOX        "Advanced Options",IDS_ADVANCED_OPTIONS_GRP,7,210,192,54 | ||||
|     COMBOBOX        IDC_DISK_ID,119,246,73,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     CONTROL         "Add fixes for old BIOSes (extra partition, align, etc.)",IDC_EXTRA_PARTITION, | ||||
|                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,181,10 | ||||
|     CONTROL         "List USB Hard Drives",IDC_ENABLE_FIXED_DISKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,222,181,10 | ||||
|     PUSHBUTTON      "",IDC_LANG,183,2,15,13,BS_TOP | BS_FLAT | ||||
| END | ||||
| 
 | ||||
| RTL_IDD_ABOUTBOX DIALOGEX 0, 0, 319, 229 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "About Rufus" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x0 | ||||
| BEGIN | ||||
|     ICON            IDI_ICON,IDC_ABOUT_ICON,11,8,20,20 | ||||
|     DEFPUSHBUTTON   "OK",IDOK,251,207,50,14,WS_GROUP | ||||
|     PUSHBUTTON      "License",IDC_ABOUT_LICENSE,46,207,50,14,WS_GROUP | ||||
|     CONTROL         "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",WS_VSCROLL | 0x806,46,107,267,90,WS_EX_RTLREADING | WS_EX_STATICEDGE | ||||
|     CONTROL         "",IDC_ABOUT_BLURB,"RichEdit20W",WS_TABSTOP | 0x884,45,7,268,99 | ||||
|     PUSHBUTTON      "Updates",IDC_ABOUT_UPDATES,100,207,50,14,NOT WS_VISIBLE | WS_GROUP | ||||
| END | ||||
| 
 | ||||
| RTL_IDD_ISO_EXTRACT DIALOGEX 0, 0, 262, 66 | ||||
| STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Copying ISO files..." | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     LTEXT           "Opening ISO image - please wait...",IDC_ISO_FILENAME,8,10,246,13,SS_PATHELLIPSIS | ||||
|     CONTROL         "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7,26,247,8 | ||||
|     PUSHBUTTON      "Cancel",IDC_ISO_ABORT,111,43,50,14 | ||||
| END | ||||
| 
 | ||||
| RTL_IDD_LICENSE DIALOGEX 0, 0, 335, 205 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Rufus License" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     DEFPUSHBUTTON   "Close",IDCANCEL,278,187,50,14 | ||||
|     EDITTEXT        IDC_LICENSE_TEXT,7,7,321,176,ES_RIGHT | ES_MULTILINE | ES_READONLY | WS_VSCROLL,WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR | ||||
| END | ||||
| 
 | ||||
| RTL_IDD_LOG DIALOGEX 0, 0, 366, 329 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | ||||
| EXSTYLE WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Log" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     EDITTEXT        IDC_LOG_EDIT,0,0,366,301,ES_RIGHT | ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR | WS_EX_STATICEDGE | ||||
|     PUSHBUTTON      "Clear Log",IDC_LOG_CLEAR,198,308,50,14 | ||||
|     PUSHBUTTON      "Save Log",IDC_LOG_SAVE,253,308,50,14 | ||||
|     DEFPUSHBUTTON   "Close Log",IDCANCEL,308,308,50,14 | ||||
| END | ||||
| 
 | ||||
| RTL_IDD_NOTIFICATION DIALOGEX 0, 0, 263, 63 | ||||
| STYLE DS_SETFONT | DS_FIXEDSYS | DS_NOFAILCREATE | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Rufus" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     LTEXT           "",IDC_NOTIFICATION_LINE,0,0,263,39 | ||||
|     CONTROL         "",IDC_STATIC,"Static",SS_WHITERECT,0,0,263,38 | ||||
|     ICON            32516,IDC_NOTIFICATION_ICON,6,6,20,20 | ||||
|     LTEXT           "",IDC_NOTIFICATION_TEXT,35,10,219,20 | ||||
|     DEFPUSHBUTTON   "No",IDNO,206,44,50,14 | ||||
|     PUSHBUTTON      "More information",IDC_MORE_INFO,8,44,76,14,NOT WS_VISIBLE | ||||
|     PUSHBUTTON      "Yes",IDYES,154,44,50,14,NOT WS_VISIBLE | ||||
| END | ||||
| 
 | ||||
| RTL_IDD_UPDATE_POLICY DIALOGEX 0, 0, 287, 198 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Update policy and settings" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x0 | ||||
| BEGIN | ||||
|     ICON            IDI_ICON,IDC_ABOUT_ICON,11,8,20,20 | ||||
|     DEFPUSHBUTTON   "Close",IDCANCEL,221,172,50,14,WS_GROUP | ||||
|     CONTROL         "",IDC_POLICY,"RichEdit20W",WS_VSCROLL | 0x804,46,8,235,130,WS_EX_STATICEDGE | ||||
|     COMBOBOX        IDC_UPDATE_FREQUENCY,133,155,66,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     LTEXT           "Check for updates:",IDS_UPDATE_FREQUENCY_TXT,52,157,80,11 | ||||
|     LTEXT           "Include beta versions:",IDS_INCLUDE_BETAS_TXT,52,173,80,11 | ||||
|     COMBOBOX        IDC_INCLUDE_BETAS,133,171,36,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     GROUPBOX        "Settings",IDS_UPDATE_SETTINGS_GRP,45,145,161,46 | ||||
|     PUSHBUTTON      "Check Now",IDC_CHECK_NOW,221,154,50,14 | ||||
|     GROUPBOX        "",IDS_CHECK_NOW_GRP,210,145,71,46 | ||||
| END | ||||
| 
 | ||||
| RTL_IDD_NEW_VERSION DIALOGEX 0, 0, 384, 268 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Check For Updates - Rufus" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x0 | ||||
| BEGIN | ||||
|     PUSHBUTTON      "Close",IDCANCEL,167,244,50,14,WS_GROUP | ||||
|     CONTROL         "",IDC_RELEASE_NOTES,"RichEdit20W",WS_VSCROLL | 0x804,15,77,352,88,WS_EX_STATICEDGE | ||||
|     DEFPUSHBUTTON   "Download",IDC_DOWNLOAD,293,211,74,14,WS_GROUP | ||||
|     CONTROL         "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,15,212,270,11 | ||||
|     GROUPBOX        "Release Notes",IDS_NEW_VERSION_NOTES_GRP,8,63,367,111 | ||||
|     LTEXT           "A newer version is available. Please download the latest version!",IDS_NEW_VERSION_AVAIL_TXT,10,32,366,8 | ||||
|     LTEXT           "[...]",IDC_YOUR_VERSION,10,8,366,8 | ||||
|     LTEXT           "[...]",IDC_LATEST_VERSION,10,19,366,8 | ||||
|     CTEXT           "Click here to go to the website",IDC_WEBSITE,10,49,366,9,SS_NOTIFY | ||||
|     GROUPBOX        "Download",IDS_NEW_VERSION_DOWNLOAD_GRP,8,177,367,58 | ||||
|     EDITTEXT        IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY | ||||
| END | ||||
| 
 | ||||
| 
 | ||||
| #ifdef APSTUDIO_INVOKED | ||||
| ///////////////////////////////////////////////////////////////////////////// | ||||
|  | @ -288,8 +427,8 @@ END | |||
| // | ||||
| 
 | ||||
| VS_VERSION_INFO VERSIONINFO | ||||
|  FILEVERSION 1,4,3,389 | ||||
|  PRODUCTVERSION 1,4,3,389 | ||||
|  FILEVERSION 1,4,3,390 | ||||
|  PRODUCTVERSION 1,4,3,390 | ||||
|  FILEFLAGSMASK 0x3fL | ||||
| #ifdef _DEBUG | ||||
|  FILEFLAGS 0x1L | ||||
|  | @ -306,13 +445,13 @@ BEGIN | |||
|         BEGIN | ||||
|             VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" | ||||
|             VALUE "FileDescription", "Rufus" | ||||
|             VALUE "FileVersion", "1.4.3.389" | ||||
|             VALUE "FileVersion", "1.4.3.390" | ||||
|             VALUE "InternalName", "Rufus" | ||||
|             VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)" | ||||
|             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" | ||||
|             VALUE "OriginalFilename", "rufus.exe" | ||||
|             VALUE "ProductName", "Rufus" | ||||
|             VALUE "ProductVersion", "1.4.3.389" | ||||
|             VALUE "ProductVersion", "1.4.3.390" | ||||
|         END | ||||
|     END | ||||
|     BLOCK "VarFileInfo" | ||||
|  |  | |||
							
								
								
									
										12
									
								
								src/stdlg.c
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								src/stdlg.c
									
										
									
									
									
								
							|  | @ -452,7 +452,7 @@ void ResizeMoveCtrl(HWND hDlg, HWND hCtrl, int dx, int dy, int dw, int dh) | |||
| 	SIZE border = {0, 0}; | ||||
| 
 | ||||
| 	GetWindowRect(hCtrl, &rect); | ||||
| 	point.x = rect.left; | ||||
| 	point.x = right_to_left_mode?rect.right:rect.left; | ||||
| 	point.y = rect.top; | ||||
| 	ScreenToClient(hDlg, &point); | ||||
| 	GetClientRect(hCtrl, &rect); | ||||
|  | @ -550,10 +550,10 @@ INT_PTR CALLBACK AboutCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP | |||
| 			EndDialog(hDlg, LOWORD(wParam)); | ||||
| 			return (INT_PTR)TRUE; | ||||
| 		case IDC_ABOUT_LICENSE: | ||||
| 			DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_LICENSE), hDlg, LicenseCallback); | ||||
| 			DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_LICENSE + IDD_IS_RTL), hDlg, LicenseCallback); | ||||
| 			break; | ||||
| 		case IDC_ABOUT_UPDATES: | ||||
| 			DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_UPDATE_POLICY), hDlg, UpdateCallback); | ||||
| 			DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_UPDATE_POLICY + IDD_IS_RTL), hDlg, UpdateCallback); | ||||
| 			break; | ||||
| 		} | ||||
| 		break; | ||||
|  | @ -565,7 +565,7 @@ INT_PTR CreateAboutBox(void) | |||
| { | ||||
| 	INT_PTR r; | ||||
| 	dialog_showing++; | ||||
| 	r = DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_ABOUTBOX), hMainDialog, AboutCallback); | ||||
| 	r = DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_ABOUTBOX + IDD_IS_RTL), hMainDialog, AboutCallback); | ||||
| 	dialog_showing--; | ||||
| 	return r; | ||||
| } | ||||
|  | @ -704,7 +704,7 @@ BOOL Notification(int type, const notification_info* more_info, char* title, cha | |||
| 		hMessageIcon = LoadIcon(NULL, IDI_INFORMATION); | ||||
| 		break; | ||||
| 	} | ||||
| 	ret = (DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_NOTIFICATION), hMainDialog, NotificationCallback) == IDYES); | ||||
| 	ret = (DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_NOTIFICATION + IDD_IS_RTL), hMainDialog, NotificationCallback) == IDYES); | ||||
| 	safe_free(szMessageText); | ||||
| 	dialog_showing--; | ||||
| 	return ret; | ||||
|  | @ -1275,7 +1275,7 @@ INT_PTR CALLBACK NewVersionCallback(HWND hDlg, UINT message, WPARAM wParam, LPAR | |||
| 
 | ||||
| void DownloadNewVersion(void) | ||||
| { | ||||
| 	DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_NEW_VERSION), hMainDialog, NewVersionCallback); | ||||
| 	DialogBoxW(hMainInstance, MAKEINTRESOURCEW(IDD_NEW_VERSION + IDD_IS_RTL), hMainDialog, NewVersionCallback); | ||||
| } | ||||
| 
 | ||||
| void SetTitleBarIcon(HWND hDlg) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue