mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[ui] factorize code and remove unused one
* Merge Notification and Question * Remove bold and url related workarounds * also switch some files to UTF-8
This commit is contained in:
		
							parent
							
								
									454010c27c
								
							
						
					
					
						commit
						f1929d7014
					
				
					 6 changed files with 93 additions and 209 deletions
				
			
		|  | @ -1,7 +1,7 @@ | ||||||
| /*
 | /*
 | ||||||
|  * Rufus: The Reliable USB Formatting Utility |  * Rufus: The Reliable USB Formatting Utility | ||||||
|  * Licensing Data |  * Licensing Data | ||||||
|  * Copyright (c) 2011-2012 Pete Batard <pete@akeo.ie> |  * Copyright © 2011-2012 Pete Batard <pete@akeo.ie> | ||||||
|  * |  * | ||||||
|  * This program is free software: you can redistribute it and/or modify |  * 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 |  * it under the terms of the GNU General Public License as published by | ||||||
|  | @ -22,7 +22,7 @@ const char* about_blurb_format = | ||||||
| "{\\b\\fs20Rufus - The Reliable USB Formatting Utility}\\line\n" | "{\\b\\fs20Rufus - The Reliable USB Formatting Utility}\\line\n" | ||||||
| "\\fs18Version %d.%d.%d (Build %d)\\line\n" | "\\fs18Version %d.%d.%d (Build %d)\\line\n" | ||||||
| "\\line\n" | "\\line\n" | ||||||
| "Copyright © 2011-2012 Pete Batard / Akeo\\line\n" | "Copyright © 2011-2012 Pete Batard / Akeo\\line\n" | ||||||
| RUFUS_URL "\\line\n" | RUFUS_URL "\\line\n" | ||||||
| "\\line\n" | "\\line\n" | ||||||
| "Report bugs or request enhancements at:\\line\n" | "Report bugs or request enhancements at:\\line\n" | ||||||
|  |  | ||||||
|  | @ -12,8 +12,7 @@ | ||||||
| #define IDS_VERSION                     108 | #define IDS_VERSION                     108 | ||||||
| #define IDI_UP                          109 | #define IDI_UP                          109 | ||||||
| #define IDI_DOWN                        110 | #define IDI_DOWN                        110 | ||||||
| #define IDD_QUESTION                    111 | #define IDD_UPDATE_POLICY               111 | ||||||
| #define IDD_UPDATE_POLICY               112 |  | ||||||
| #define IDR_BR_MBR_BIN                  200 | #define IDR_BR_MBR_BIN                  200 | ||||||
| #define IDR_FD_COMMAND_COM              300 | #define IDR_FD_COMMAND_COM              300 | ||||||
| #define IDR_FD_KERNEL_SYS               301 | #define IDR_FD_KERNEL_SYS               301 | ||||||
|  | @ -70,10 +69,7 @@ | ||||||
| #define IDC_EXTRA_PARTITION             1023 | #define IDC_EXTRA_PARTITION             1023 | ||||||
| #define IDC_ABOUT_LICENSE               1030 | #define IDC_ABOUT_LICENSE               1030 | ||||||
| #define IDC_ABOUT_ICON                  1031 | #define IDC_ABOUT_ICON                  1031 | ||||||
| #define IDC_RUFUS_BOLD                  1032 |  | ||||||
| #define IDC_ABOUT_COPYRIGHTS            1033 | #define IDC_ABOUT_COPYRIGHTS            1033 | ||||||
| #define IDC_ABOUT_RUFUS_URL             1034 |  | ||||||
| #define IDC_ABOUT_BUG_URL               1035 |  | ||||||
| #define IDC_LICENSE_TEXT                1036 | #define IDC_LICENSE_TEXT                1036 | ||||||
| #define IDC_NOTIFICATION_ICON           1040 | #define IDC_NOTIFICATION_ICON           1040 | ||||||
| #define IDC_NOTIFICATION_TEXT           1041 | #define IDC_NOTIFICATION_TEXT           1041 | ||||||
|  | @ -84,7 +80,7 @@ | ||||||
| #define IDC_LOG_EDIT                    1050 | #define IDC_LOG_EDIT                    1050 | ||||||
| #define IDC_LOG_SAVE                    1051 | #define IDC_LOG_SAVE                    1051 | ||||||
| #define IDC_LOG_CLEAR                   1052 | #define IDC_LOG_CLEAR                   1052 | ||||||
| #define IDC_QUESTION_MORE_INFO          1060 | #define IDC_MORE_INFO                   1060 | ||||||
| #define IDC_UPDATES_POLICY              1061 | #define IDC_UPDATES_POLICY              1061 | ||||||
| #define IDC_UPDATE_FREQUENCY            1062 | #define IDC_UPDATE_FREQUENCY            1062 | ||||||
| #define IDC_INCLUDE_BETAS               1063 | #define IDC_INCLUDE_BETAS               1063 | ||||||
|  | @ -95,7 +91,7 @@ | ||||||
| #ifdef APSTUDIO_INVOKED | #ifdef APSTUDIO_INVOKED | ||||||
| #ifndef APSTUDIO_READONLY_SYMBOLS | #ifndef APSTUDIO_READONLY_SYMBOLS | ||||||
| #define _APS_NO_MFC                     1 | #define _APS_NO_MFC                     1 | ||||||
| #define _APS_NEXT_RESOURCE_VALUE        113 | #define _APS_NEXT_RESOURCE_VALUE        112 | ||||||
| #define _APS_NEXT_COMMAND_VALUE         40001 | #define _APS_NEXT_COMMAND_VALUE         40001 | ||||||
| #define _APS_NEXT_CONTROL_VALUE         1065 | #define _APS_NEXT_CONTROL_VALUE         1065 | ||||||
| #define _APS_NEXT_SYMED_VALUE           101 | #define _APS_NEXT_SYMED_VALUE           101 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| /*
 | /*
 | ||||||
|  * Rufus: The Reliable USB Formatting Utility |  * Rufus: The Reliable USB Formatting Utility | ||||||
|  * Copyright (c) 2011-2012 Pete Batard <pete@akeo.ie> |  * Copyright © 2011-2012 Pete Batard <pete@akeo.ie> | ||||||
|  *  |  *  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  * 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 |  * it under the terms of the GNU General Public License as published by | ||||||
|  | @ -1627,7 +1627,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 			break; | 			break; | ||||||
| #ifdef RUFUS_TEST | #ifdef RUFUS_TEST | ||||||
| 		case IDC_TEST: | 		case IDC_TEST: | ||||||
| 			testme = Question("Rufus updates", "Do you want to allow " APPLICATION_NAME " to check for updates?\n"); | 			testme = Notification(MSG_QUESTION, IDD_UPDATE_POLICY, UpdateCallback,  | ||||||
|  | 				"Rufus updates", "Do you want to allow " APPLICATION_NAME " to check for updates?\n"); | ||||||
| 			uprintf("User said %s\n", testme?"YES":"NO"); | 			uprintf("User said %s\n", testme?"YES":"NO"); | ||||||
| //			CheckForUpdates();
 | //			CheckForUpdates();
 | ||||||
| /*
 | /*
 | ||||||
|  | @ -1903,12 +1904,12 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 			SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_PAUSED, 0); | 			SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_PAUSED, 0); | ||||||
| 			SetTaskbarProgressState(TASKBAR_PAUSED); | 			SetTaskbarProgressState(TASKBAR_PAUSED); | ||||||
| 			PrintStatus(0, FALSE, "Cancelled"); | 			PrintStatus(0, FALSE, "Cancelled"); | ||||||
| 			Notification(MSG_INFO, "Cancelled", "Operation cancelled by the user."); | 			Notification(MSG_INFO, 0, NULL, "Cancelled", "Operation cancelled by the user."); | ||||||
| 		} else { | 		} else { | ||||||
| 			SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_ERROR, 0); | 			SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_ERROR, 0); | ||||||
| 			SetTaskbarProgressState(TASKBAR_ERROR); | 			SetTaskbarProgressState(TASKBAR_ERROR); | ||||||
| 			PrintStatus(0, FALSE, "FAILED"); | 			PrintStatus(0, FALSE, "FAILED"); | ||||||
| 			Notification(MSG_ERROR, "Error", "Error: %s.%s", StrError(FormatStatus),  | 			Notification(MSG_ERROR, 0, NULL, "Error", "Error: %s.%s", StrError(FormatStatus),  | ||||||
| 				(strchr(StrError(FormatStatus), '\n') != NULL)?"":"\nFor more information, please check the log."); | 				(strchr(StrError(FormatStatus), '\n') != NULL)?"":"\nFor more information, please check the log."); | ||||||
| 		} | 		} | ||||||
| 		return (INT_PTR)TRUE; | 		return (INT_PTR)TRUE; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| /*
 | /*
 | ||||||
|  * Rufus: The Reliable USB Formatting Utility |  * Rufus: The Reliable USB Formatting Utility | ||||||
|  * Copyright (c) 2011-2012 Pete Batard <pete@akeo.ie> |  * Copyright © 2011-2012 Pete Batard <pete@akeo.ie> | ||||||
|  * |  * | ||||||
|  * This program is free software: you can redistribute it and/or modify |  * 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 |  * it under the terms of the GNU General Public License as published by | ||||||
|  | @ -92,8 +92,10 @@ enum user_message_type { | ||||||
| enum notification_type { | enum notification_type { | ||||||
| 	MSG_INFO, | 	MSG_INFO, | ||||||
| 	MSG_WARNING, | 	MSG_WARNING, | ||||||
| 	MSG_ERROR | 	MSG_ERROR, | ||||||
|  | 	MSG_QUESTION, | ||||||
| }; | }; | ||||||
|  | typedef INT_PTR (CALLBACK *Callback_t)(HWND, UINT, WPARAM, LPARAM); | ||||||
| 
 | 
 | ||||||
| /* Timers used throughout the program */ | /* Timers used throughout the program */ | ||||||
| enum timer_type { | enum timer_type { | ||||||
|  | @ -225,7 +227,7 @@ extern INT_PTR CreateAboutBox(void); | ||||||
| extern BOOL CreateTooltip(HWND hControl, const char* message, int duration); | extern BOOL CreateTooltip(HWND hControl, const char* message, int duration); | ||||||
| extern void DestroyTooltip(HWND hWnd); | extern void DestroyTooltip(HWND hWnd); | ||||||
| extern void DestroyAllTooltips(void); | extern void DestroyAllTooltips(void); | ||||||
| extern BOOL Notification(int type, char* title, char* format, ...); | extern BOOL Notification(int type, WORD extra_id, Callback_t extra_callback, char* title, char* format, ...); | ||||||
| extern BOOL Question(char* title, char* format, ...); | extern BOOL Question(char* title, char* format, ...); | ||||||
| extern BOOL ExtractDOS(const char* path); | extern BOOL ExtractDOS(const char* path); | ||||||
| extern BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan); | extern BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan); | ||||||
|  | @ -242,6 +244,7 @@ extern char* FileDialog(BOOL save, char* path, char* filename, char* ext, char* | ||||||
| extern BOOL FileIO(BOOL save, char* path, char** buffer, DWORD* size); | extern BOOL FileIO(BOOL save, char* path, char** buffer, DWORD* size); | ||||||
| extern LONG GetEntryWidth(HWND hDropDown, const char* entry); | extern LONG GetEntryWidth(HWND hDropDown, const char* entry); | ||||||
| extern BOOL DownloadFile(const char* url, const char* file); | extern BOOL DownloadFile(const char* url, const char* file); | ||||||
|  | extern INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); | ||||||
| extern BOOL CheckForUpdates(void); | extern BOOL CheckForUpdates(void); | ||||||
| extern BOOL IsShown(HWND hDlg); | extern BOOL IsShown(HWND hDlg); | ||||||
| extern char* get_token_data_file(const char* token, const char* filename); | extern char* get_token_data_file(const char* token, const char* filename); | ||||||
|  |  | ||||||
							
								
								
									
										34
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -30,7 +30,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL | ||||||
| IDD_DIALOG DIALOGEX 12, 12, 206, 316 | IDD_DIALOG DIALOGEX 12, 12, 206, 316 | ||||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||||
| EXSTYLE WS_EX_APPWINDOW | EXSTYLE WS_EX_APPWINDOW | ||||||
| CAPTION "Rufus v1.2.1.198" | CAPTION "Rufus v1.2.1.199" | ||||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||||
| BEGIN | BEGIN | ||||||
|     DEFPUSHBUTTON   "Start",IDC_START,94,278,50,14 |     DEFPUSHBUTTON   "Start",IDC_START,94,278,50,14 | ||||||
|  | @ -78,18 +78,6 @@ BEGIN | ||||||
|     CONTROL         "",IDC_ABOUT_BLURB,"RichEdit20W",WS_TABSTOP | 0x884,46,7,235,93 |     CONTROL         "",IDC_ABOUT_BLURB,"RichEdit20W",WS_TABSTOP | 0x884,46,7,235,93 | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| IDD_NOTIFICATION DIALOGEX 0, 0, 263, 63 |  | ||||||
| STYLE DS_SETFONT | DS_FIXEDSYS | DS_NOFAILCREATE | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME |  | ||||||
| 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   "Close",IDCANCEL,211,44,50,14 |  | ||||||
| END |  | ||||||
| 
 |  | ||||||
| IDD_ISO_EXTRACT DIALOGEX 0, 0, 262, 66 | IDD_ISO_EXTRACT DIALOGEX 0, 0, 262, 66 | ||||||
| STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | ||||||
| CAPTION "Copying ISO files..." | CAPTION "Copying ISO files..." | ||||||
|  | @ -120,7 +108,7 @@ BEGIN | ||||||
|     PUSHBUTTON      "Close Log",IDCANCEL,308,259,50,14 |     PUSHBUTTON      "Close Log",IDCANCEL,308,259,50,14 | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| IDD_QUESTION DIALOGEX 0, 0, 263, 63 | IDD_NOTIFICATION DIALOGEX 0, 0, 263, 63 | ||||||
| STYLE DS_SETFONT | DS_FIXEDSYS | DS_NOFAILCREATE | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME | STYLE DS_SETFONT | DS_FIXEDSYS | DS_NOFAILCREATE | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME | ||||||
| CAPTION "Rufus" | CAPTION "Rufus" | ||||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||||
|  | @ -130,8 +118,8 @@ BEGIN | ||||||
|     ICON            32516,IDC_NOTIFICATION_ICON,6,6,20,20 |     ICON            32516,IDC_NOTIFICATION_ICON,6,6,20,20 | ||||||
|     LTEXT           "",IDC_NOTIFICATION_TEXT,35,10,219,20 |     LTEXT           "",IDC_NOTIFICATION_TEXT,35,10,219,20 | ||||||
|     DEFPUSHBUTTON   "No",IDNO,211,44,50,14 |     DEFPUSHBUTTON   "No",IDNO,211,44,50,14 | ||||||
|     DEFPUSHBUTTON   "More info...",IDC_QUESTION_MORE_INFO,8,44,50,14 |     DEFPUSHBUTTON   "More info...",IDC_MORE_INFO,8,44,50,14,NOT WS_VISIBLE | ||||||
|     DEFPUSHBUTTON   "Yes",IDYES,159,44,50,14 |     DEFPUSHBUTTON   "Yes",IDYES,159,44,50,14,NOT WS_VISIBLE | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| IDD_UPDATE_POLICY DIALOGEX 0, 0, 287, 195 | IDD_UPDATE_POLICY DIALOGEX 0, 0, 287, 195 | ||||||
|  | @ -231,10 +219,6 @@ BEGIN | ||||||
|     BEGIN |     BEGIN | ||||||
|     END |     END | ||||||
| 
 | 
 | ||||||
|     IDD_NOTIFICATION, DIALOG |  | ||||||
|     BEGIN |  | ||||||
|     END |  | ||||||
| 
 |  | ||||||
|     IDD_ISO_EXTRACT, DIALOG |     IDD_ISO_EXTRACT, DIALOG | ||||||
|     BEGIN |     BEGIN | ||||||
|     END |     END | ||||||
|  | @ -247,7 +231,7 @@ BEGIN | ||||||
|     BEGIN |     BEGIN | ||||||
|     END |     END | ||||||
| 
 | 
 | ||||||
|     IDD_QUESTION, DIALOG |     IDD_NOTIFICATION, DIALOG | ||||||
|     BEGIN |     BEGIN | ||||||
|     END |     END | ||||||
| 
 | 
 | ||||||
|  | @ -264,8 +248,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 1,2,1,198 |  FILEVERSION 1,2,1,199 | ||||||
|  PRODUCTVERSION 1,2,1,198 |  PRODUCTVERSION 1,2,1,199 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -282,13 +266,13 @@ BEGIN | ||||||
|         BEGIN |         BEGIN | ||||||
|             VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" |             VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" | ||||||
|             VALUE "FileDescription", "Rufus" |             VALUE "FileDescription", "Rufus" | ||||||
|             VALUE "FileVersion", "1.2.1.198" |             VALUE "FileVersion", "1.2.1.199" | ||||||
|             VALUE "InternalName", "Rufus" |             VALUE "InternalName", "Rufus" | ||||||
|             VALUE "LegalCopyright", "(c) 2011-2012 Pete Batard (GPL v3)" |             VALUE "LegalCopyright", "(c) 2011-2012 Pete Batard (GPL v3)" | ||||||
|             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" |             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" | ||||||
|             VALUE "OriginalFilename", "rufus.exe" |             VALUE "OriginalFilename", "rufus.exe" | ||||||
|             VALUE "ProductName", "Rufus" |             VALUE "ProductName", "Rufus" | ||||||
|             VALUE "ProductVersion", "1.2.1.198" |             VALUE "ProductVersion", "1.2.1.199" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
							
								
								
									
										236
									
								
								src/stdlg.c
									
										
									
									
									
								
							
							
						
						
									
										236
									
								
								src/stdlg.c
									
										
									
									
									
								
							|  | @ -1,7 +1,7 @@ | ||||||
| /*
 | /*
 | ||||||
|  * Rufus: The Reliable USB Formatting Utility |  * Rufus: The Reliable USB Formatting Utility | ||||||
|  * Standard Dialog Routines (Browse for folder, About, etc) |  * Standard Dialog Routines (Browse for folder, About, etc) | ||||||
|  * Copyright (c) 2011-2012 Pete Batard <pete@akeo.ie> |  * Copyright © 2011-2012 Pete Batard <pete@akeo.ie> | ||||||
|  * |  * | ||||||
|  * Based on zadig_stdlg.c, part of libwdi: http://libwdi.sf.net
 |  * Based on zadig_stdlg.c, part of libwdi: http://libwdi.sf.net
 | ||||||
|  * |  * | ||||||
|  | @ -63,8 +63,10 @@ static char* szMessageTitle = NULL; | ||||||
| enum WindowsVersion nWindowsVersion = WINDOWS_UNSUPPORTED; | enum WindowsVersion nWindowsVersion = WINDOWS_UNSUPPORTED; | ||||||
| static HWND hBrowseEdit; | static HWND hBrowseEdit; | ||||||
| static WNDPROC pOrgBrowseWndproc; | static WNDPROC pOrgBrowseWndproc; | ||||||
| HFONT hBoldFont = NULL; |  | ||||||
| static const SETTEXTEX friggin_microsoft_unicode_amateurs = {ST_DEFAULT, CP_UTF8}; | static const SETTEXTEX friggin_microsoft_unicode_amateurs = {ST_DEFAULT, CP_UTF8}; | ||||||
|  | static BOOL notification_is_question; | ||||||
|  | static WORD notification_info_id; | ||||||
|  | static Callback_t notification_info_callback; | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Detect Windows version |  * Detect Windows version | ||||||
|  | @ -561,30 +563,6 @@ fallback: | ||||||
| 	return filepath; | 	return filepath; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void CreateBoldFont(HDC dc) { |  | ||||||
| 	TEXTMETRIC tm; |  | ||||||
| 	LOGFONT lf; |  | ||||||
| 
 |  | ||||||
| 	if (hBoldFont != NULL) |  | ||||||
| 		return; |  | ||||||
| 	GetTextMetrics(dc, &tm); |  | ||||||
| 	lf.lfHeight = tm.tmHeight+1; |  | ||||||
| 	lf.lfWidth = tm.tmAveCharWidth+1; |  | ||||||
| 	lf.lfEscapement = 0; |  | ||||||
| 	lf.lfOrientation = 0; |  | ||||||
| 	lf.lfWeight = FW_BOLD; |  | ||||||
| 	lf.lfItalic = tm.tmItalic; |  | ||||||
| 	lf.lfUnderline = FALSE; |  | ||||||
| 	lf.lfStrikeOut = tm.tmStruckOut; |  | ||||||
| 	lf.lfCharSet = tm.tmCharSet; |  | ||||||
| 	lf.lfOutPrecision = OUT_DEFAULT_PRECIS; |  | ||||||
| 	lf.lfClipPrecision = CLIP_DEFAULT_PRECIS; |  | ||||||
| 	lf.lfQuality = DEFAULT_QUALITY; |  | ||||||
| 	lf.lfPitchAndFamily = tm.tmPitchAndFamily; |  | ||||||
| 	GetTextFace(dc, LF_FACESIZE, lf.lfFaceName); |  | ||||||
| 	hBoldFont = CreateFontIndirect(&lf); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /*
 | /*
 | ||||||
|  * Create the application status bar |  * Create the application status bar | ||||||
|  */ |  */ | ||||||
|  | @ -696,14 +674,6 @@ INT_PTR CALLBACK AboutCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP | ||||||
| 			SendMessage(hEdit[i], EM_SETBKGNDCOLOR, 0, (LPARAM)GetSysColor(COLOR_BTNFACE)); | 			SendMessage(hEdit[i], EM_SETBKGNDCOLOR, 0, (LPARAM)GetSysColor(COLOR_BTNFACE)); | ||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
| 	case WM_CTLCOLORSTATIC: |  | ||||||
| 		if ((HWND)lParam == GetDlgItem(hDlg, IDC_RUFUS_BOLD)) { |  | ||||||
| 			CreateBoldFont((HDC)wParam); |  | ||||||
| 			SetBkMode((HDC)wParam, TRANSPARENT); |  | ||||||
| 			SelectObject((HDC)wParam, hBoldFont); |  | ||||||
| 			return (INT_PTR)CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); |  | ||||||
| 		} |  | ||||||
| 		break; |  | ||||||
| 	case WM_NOTIFY: | 	case WM_NOTIFY: | ||||||
| 		switch (((LPNMHDR)lParam)->code) { | 		switch (((LPNMHDR)lParam)->code) { | ||||||
| 		case EN_LINK: | 		case EN_LINK: | ||||||
|  | @ -738,53 +708,6 @@ INT_PTR CreateAboutBox(void) | ||||||
| 	return DialogBoxA(hMainInstance, MAKEINTRESOURCEA(IDD_ABOUTBOX), hMainDialog, AboutCallback); | 	return DialogBoxA(hMainInstance, MAKEINTRESOURCEA(IDD_ABOUTBOX), hMainDialog, AboutCallback); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /*
 |  | ||||||
|  * Update policy and settings dialog callback |  | ||||||
|  */ |  | ||||||
| INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) |  | ||||||
| { |  | ||||||
| 	HWND hPolicy, hCombo; |  | ||||||
| 
 |  | ||||||
| 	switch (message) { |  | ||||||
| 	case WM_INITDIALOG: |  | ||||||
| 		CenterDialog(hDlg); |  | ||||||
| 		hCombo = GetDlgItem(hDlg, IDC_UPDATE_FREQUENCY); |  | ||||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hCombo, ComboBox_AddStringU(hCombo, "Never (Disabled)"), -1)); |  | ||||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hCombo, ComboBox_AddStringU(hCombo, "Daily (Default)"), 86400)); |  | ||||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hCombo, ComboBox_AddStringU(hCombo, "Weekly"), 604800)); |  | ||||||
| 		IGNORE_RETVAL(ComboBox_SetItemData(hCombo, ComboBox_AddStringU(hCombo, "Monthly"), 2629800)); |  | ||||||
| 		IGNORE_RETVAL(ComboBox_SetCurSel(hCombo, 1)); |  | ||||||
| 		hCombo = GetDlgItem(hDlg, IDC_INCLUDE_BETAS); |  | ||||||
| 		IGNORE_RETVAL(ComboBox_AddStringU(hCombo, "No")); |  | ||||||
| 		IGNORE_RETVAL(ComboBox_AddStringU(hCombo, "Yes")); |  | ||||||
| 		IGNORE_RETVAL(ComboBox_SetCurSel(hCombo, 0)); |  | ||||||
| 		hPolicy = GetDlgItem(hDlg, IDC_UPDATES_POLICY); |  | ||||||
| 		SendMessage(hPolicy, EM_AUTOURLDETECT, 1, 0); |  | ||||||
| 		SendMessageA(hPolicy, EM_SETTEXTEX, (WPARAM)&friggin_microsoft_unicode_amateurs, (LPARAM)update_policy); |  | ||||||
| 		SendMessage(hPolicy, EM_SETSEL, -1, -1); |  | ||||||
| 		SendMessage(hPolicy, EM_SETEVENTMASK, 0, ENM_LINK); |  | ||||||
| 		SendMessageA(hPolicy, EM_SETBKGNDCOLOR, 0, (LPARAM)GetSysColor(COLOR_BTNFACE)); |  | ||||||
| 		break; |  | ||||||
| 	case WM_CTLCOLORSTATIC: |  | ||||||
| 		if ((HWND)lParam == GetDlgItem(hDlg, IDC_RUFUS_BOLD)) { |  | ||||||
| 			CreateBoldFont((HDC)wParam); |  | ||||||
| 			SetBkMode((HDC)wParam, TRANSPARENT); |  | ||||||
| 			SelectObject((HDC)wParam, hBoldFont); |  | ||||||
| 			return (INT_PTR)CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); |  | ||||||
| 		} |  | ||||||
| 		break; |  | ||||||
| 	case WM_COMMAND: |  | ||||||
| 		switch (LOWORD(wParam)) { |  | ||||||
| 		case IDOK: |  | ||||||
| 		case IDCANCEL: |  | ||||||
| 			EndDialog(hDlg, LOWORD(wParam)); |  | ||||||
| 			return (INT_PTR)TRUE; |  | ||||||
| 		} |  | ||||||
| 		break; |  | ||||||
| 	} |  | ||||||
| 	return (INT_PTR)FALSE; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /*
 | /*
 | ||||||
|  * We use our own MessageBox for notifications to have greater control (center, no close button, etc) |  * We use our own MessageBox for notifications to have greater control (center, no close button, etc) | ||||||
|  */ |  */ | ||||||
|  | @ -810,6 +733,15 @@ INT_PTR CALLBACK NotificationCallback(HWND hDlg, UINT message, WPARAM wParam, LP | ||||||
| 		if (szMessageTitle != NULL) { | 		if (szMessageTitle != NULL) { | ||||||
| 			SetWindowTextA(hDlg, szMessageTitle); | 			SetWindowTextA(hDlg, szMessageTitle); | ||||||
| 		} | 		} | ||||||
|  | 		// Enable/disable the buttons and set text
 | ||||||
|  | 		if (!notification_is_question) { | ||||||
|  | 			SetWindowTextA(GetDlgItem(hDlg, IDNO), "Close"); | ||||||
|  | 		} else { | ||||||
|  | 			ShowWindow(GetDlgItem(hDlg, IDYES), SW_SHOW); | ||||||
|  | 		} | ||||||
|  | 		if (notification_info_callback != NULL) { | ||||||
|  | 			ShowWindow(GetDlgItem(hDlg, IDC_MORE_INFO), SW_SHOW); | ||||||
|  | 		} | ||||||
| 		// Set the control text
 | 		// Set the control text
 | ||||||
| 		if (szMessageText != NULL) { | 		if (szMessageText != NULL) { | ||||||
| 			SetWindowTextA(GetDlgItem(hDlg, IDC_NOTIFICATION_TEXT), szMessageText); | 			SetWindowTextA(GetDlgItem(hDlg, IDC_NOTIFICATION_TEXT), szMessageText); | ||||||
|  | @ -835,8 +767,13 @@ INT_PTR CALLBACK NotificationCallback(HWND hDlg, UINT message, WPARAM wParam, LP | ||||||
| 		switch (LOWORD(wParam)) { | 		switch (LOWORD(wParam)) { | ||||||
| 		case IDOK: | 		case IDOK: | ||||||
| 		case IDCANCEL: | 		case IDCANCEL: | ||||||
|  | 		case IDYES: | ||||||
|  | 		case IDNO: | ||||||
| 			EndDialog(hDlg, LOWORD(wParam)); | 			EndDialog(hDlg, LOWORD(wParam)); | ||||||
| 			return (INT_PTR)TRUE; | 			return (INT_PTR)TRUE; | ||||||
|  | 		case IDC_MORE_INFO: | ||||||
|  | 			DialogBoxA(hMainInstance, MAKEINTRESOURCEA(notification_info_id), hDlg, notification_info_callback); | ||||||
|  | 			break; | ||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
|  | @ -846,8 +783,9 @@ INT_PTR CALLBACK NotificationCallback(HWND hDlg, UINT message, WPARAM wParam, LP | ||||||
| /*
 | /*
 | ||||||
|  * Display a custom notification |  * Display a custom notification | ||||||
|  */ |  */ | ||||||
| BOOL Notification(int type, char* title, char* format, ...) | BOOL Notification(int type, WORD extra_id, Callback_t extra_callback, char* title, char* format, ...) | ||||||
| { | { | ||||||
|  | 	BOOL ret; | ||||||
| 	va_list args; | 	va_list args; | ||||||
| 	szMessageText = (char*)malloc(MAX_PATH); | 	szMessageText = (char*)malloc(MAX_PATH); | ||||||
| 	if (szMessageText == NULL) return FALSE; | 	if (szMessageText == NULL) return FALSE; | ||||||
|  | @ -856,6 +794,9 @@ BOOL Notification(int type, char* title, char* format, ...) | ||||||
| 	safe_vsnprintf(szMessageText, MAX_PATH-1, format, args); | 	safe_vsnprintf(szMessageText, MAX_PATH-1, format, args); | ||||||
| 	va_end(args); | 	va_end(args); | ||||||
| 	szMessageText[MAX_PATH-1] = 0; | 	szMessageText[MAX_PATH-1] = 0; | ||||||
|  | 	notification_info_callback = extra_callback; | ||||||
|  | 	notification_info_id = extra_id; | ||||||
|  | 	notification_is_question = FALSE; | ||||||
| 
 | 
 | ||||||
| 	switch(type) { | 	switch(type) { | ||||||
| 	case MSG_WARNING: | 	case MSG_WARNING: | ||||||
|  | @ -864,97 +805,16 @@ BOOL Notification(int type, char* title, char* format, ...) | ||||||
| 	case MSG_ERROR: | 	case MSG_ERROR: | ||||||
| 		hMessageIcon = LoadIcon(NULL, IDI_ERROR); | 		hMessageIcon = LoadIcon(NULL, IDI_ERROR); | ||||||
| 		break; | 		break; | ||||||
|  | 	case MSG_QUESTION: | ||||||
|  | 		hMessageIcon = LoadIcon(NULL, IDI_QUESTION); | ||||||
|  | 		notification_is_question = TRUE; | ||||||
|  | 		break; | ||||||
| 	case MSG_INFO: | 	case MSG_INFO: | ||||||
| 	default: | 	default: | ||||||
| 		hMessageIcon = LoadIcon(NULL, IDI_INFORMATION); | 		hMessageIcon = LoadIcon(NULL, IDI_INFORMATION); | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
| 	DialogBox(hMainInstance, MAKEINTRESOURCE(IDD_NOTIFICATION), hMainDialog, NotificationCallback); | 	ret = (DialogBox(hMainInstance, MAKEINTRESOURCE(IDD_NOTIFICATION), hMainDialog, NotificationCallback) == IDYES); | ||||||
| 	safe_free(szMessageText); |  | ||||||
| 	return TRUE; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Same for custom questions |  | ||||||
|  */ |  | ||||||
| INT_PTR CALLBACK QuestionCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) |  | ||||||
| { |  | ||||||
| 	LRESULT loc; |  | ||||||
| 	int i; |  | ||||||
| 	// Prevent resizing
 |  | ||||||
| 	static LRESULT disabled[9] = { HTLEFT, HTRIGHT, HTTOP, HTBOTTOM, HTSIZE, |  | ||||||
| 		HTTOPLEFT, HTTOPRIGHT, HTBOTTOMLEFT, HTBOTTOMRIGHT }; |  | ||||||
| 	static HBRUSH white_brush, separator_brush; |  | ||||||
| 
 |  | ||||||
| 	switch (message) { |  | ||||||
| 	case WM_INITDIALOG: |  | ||||||
| 		white_brush = CreateSolidBrush(WHITE); |  | ||||||
| 		separator_brush = CreateSolidBrush(SEPARATOR_GREY); |  | ||||||
| 		CenterDialog(hDlg); |  | ||||||
| 		// Change the default icon
 |  | ||||||
| 		if (Static_SetIcon(GetDlgItem(hDlg, IDC_NOTIFICATION_ICON), hMessageIcon) == 0) { |  | ||||||
| 			uprintf("Could not set dialog icon\n"); |  | ||||||
| 		} |  | ||||||
| 		// Set the dialog title
 |  | ||||||
| 		if (szMessageTitle != NULL) { |  | ||||||
| 			SetWindowTextA(hDlg, szMessageTitle); |  | ||||||
| 		} |  | ||||||
| 		// Set the control text
 |  | ||||||
| 		if (szMessageText != NULL) { |  | ||||||
| 			SetWindowTextA(GetDlgItem(hDlg, IDC_NOTIFICATION_TEXT), szMessageText); |  | ||||||
| 		} |  | ||||||
| 		return (INT_PTR)TRUE; |  | ||||||
| 	case WM_CTLCOLORSTATIC: |  | ||||||
| 		// Change the background colour for static text and icon
 |  | ||||||
| 		SetBkMode((HDC)wParam, TRANSPARENT); |  | ||||||
| 		if ((HWND)lParam == GetDlgItem(hDlg, IDC_NOTIFICATION_LINE)) { |  | ||||||
| 			return (INT_PTR)separator_brush; |  | ||||||
| 		} |  | ||||||
| 		return (INT_PTR)white_brush; |  | ||||||
| 	case WM_NCHITTEST: |  | ||||||
| 		// Check coordinates to prevent resize actions
 |  | ||||||
| 		loc = DefWindowProc(hDlg, message, wParam, lParam); |  | ||||||
| 		for(i = 0; i < 9; i++) { |  | ||||||
| 			if (loc == disabled[i]) { |  | ||||||
| 				return (INT_PTR)TRUE; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		return (INT_PTR)FALSE; |  | ||||||
| 	case WM_COMMAND: |  | ||||||
| 		switch (LOWORD(wParam)) { |  | ||||||
| 		case IDYES: |  | ||||||
| 		case IDNO: |  | ||||||
| 			EndDialog(hDlg, LOWORD(wParam)); |  | ||||||
| 			return (INT_PTR)TRUE; |  | ||||||
| 		case IDC_QUESTION_MORE_INFO: |  | ||||||
| 			DialogBoxA(hMainInstance, MAKEINTRESOURCEA(IDD_UPDATE_POLICY), hDlg, UpdateCallback); |  | ||||||
| 			break; |  | ||||||
| 		} |  | ||||||
| 		break; |  | ||||||
| 	} |  | ||||||
| 	return (INT_PTR)FALSE; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Display a custom question |  | ||||||
|  * returns TRUE if the user answered yes, FALSE if no |  | ||||||
|  * TODO: point to a static dialog for more info |  | ||||||
|  */ |  | ||||||
| BOOL Question(char* title, char* format, ...) |  | ||||||
| { |  | ||||||
| 	va_list args; |  | ||||||
| 	BOOL ret; |  | ||||||
| 	szMessageText = (char*)malloc(MAX_PATH); |  | ||||||
| 	if (szMessageText == NULL) return FALSE; |  | ||||||
| 	szMessageTitle = title; |  | ||||||
| 	va_start(args, format); |  | ||||||
| 	safe_vsnprintf(szMessageText, MAX_PATH-1, format, args); |  | ||||||
| 	va_end(args); |  | ||||||
| 	szMessageText[MAX_PATH-1] = 0; |  | ||||||
| 
 |  | ||||||
| 	hMessageIcon = LoadIcon(NULL, IDI_QUESTION); |  | ||||||
| 	ret = (DialogBox(hMainInstance, MAKEINTRESOURCE(IDD_QUESTION), hMainDialog, QuestionCallback) == IDYES); |  | ||||||
| 	safe_free(szMessageText); | 	safe_free(szMessageText); | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
|  | @ -1236,3 +1096,43 @@ BOOL SetTaskbarProgressValue(ULONGLONG ullCompleted, ULONGLONG ullTotal) | ||||||
| 	return !FAILED(ptbl->lpVtbl->SetProgressValue(ptbl, hMainDialog, ullCompleted, ullTotal)); | 	return !FAILED(ptbl->lpVtbl->SetProgressValue(ptbl, hMainDialog, ullCompleted, ullTotal)); | ||||||
| } | } | ||||||
| #pragma pop_macro("INTERFACE") | #pragma pop_macro("INTERFACE") | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Update policy and settings dialog callback | ||||||
|  |  */ | ||||||
|  | INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | ||||||
|  | { | ||||||
|  | 	HWND hPolicy, hCombo; | ||||||
|  | 
 | ||||||
|  | 	switch (message) { | ||||||
|  | 	case WM_INITDIALOG: | ||||||
|  | 		CenterDialog(hDlg); | ||||||
|  | 		hCombo = GetDlgItem(hDlg, IDC_UPDATE_FREQUENCY); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_SetItemData(hCombo, ComboBox_AddStringU(hCombo, "Disabled"), -1)); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_SetItemData(hCombo, ComboBox_AddStringU(hCombo, "Daily (Default)"), 86400)); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_SetItemData(hCombo, ComboBox_AddStringU(hCombo, "Weekly"), 604800)); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_SetItemData(hCombo, ComboBox_AddStringU(hCombo, "Monthly"), 2629800)); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_SetCurSel(hCombo, 1)); | ||||||
|  | 		hCombo = GetDlgItem(hDlg, IDC_INCLUDE_BETAS); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_AddStringU(hCombo, "No")); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_AddStringU(hCombo, "Yes")); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_SetCurSel(hCombo, 0)); | ||||||
|  | 		hPolicy = GetDlgItem(hDlg, IDC_UPDATES_POLICY); | ||||||
|  | 		SendMessage(hPolicy, EM_AUTOURLDETECT, 1, 0); | ||||||
|  | 		SendMessageA(hPolicy, EM_SETTEXTEX, (WPARAM)&friggin_microsoft_unicode_amateurs, (LPARAM)update_policy); | ||||||
|  | 		SendMessage(hPolicy, EM_SETSEL, -1, -1); | ||||||
|  | 		SendMessage(hPolicy, EM_SETEVENTMASK, 0, ENM_LINK); | ||||||
|  | 		SendMessageA(hPolicy, EM_SETBKGNDCOLOR, 0, (LPARAM)GetSysColor(COLOR_BTNFACE)); | ||||||
|  | 		break; | ||||||
|  | 	case WM_COMMAND: | ||||||
|  | 		switch (LOWORD(wParam)) { | ||||||
|  | 		case IDOK: | ||||||
|  | 		case IDCANCEL: | ||||||
|  | 			EndDialog(hDlg, LOWORD(wParam)); | ||||||
|  | 			return (INT_PTR)TRUE; | ||||||
|  | 		} | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | 	return (INT_PTR)FALSE; | ||||||
|  | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue