#include "winefile.h"
Go to the source code of this file.
Data Structures | |
struct | PropertiesDialog |
struct | LANGANDCODEPAGE |
Defines | |
#define | infoStr pInfoString |
Functions | |
static BOOL | get_check (HWND hwnd, INT id) |
static INT | set_check (HWND hwnd, INT id, BOOL on) |
void | choose_font (HWND hwnd) |
INT_PTR CALLBACK | FilterDialogDlgProc (HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam) |
INT_PTR CALLBACK | ExecuteDialogDlgProc (HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam) |
INT_PTR CALLBACK | DestinationDlgProc (HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam) |
static void | PropDlg_DisplayValue (HWND hlbox, HWND hedit) |
static void | CheckForFileInfo (struct PropertiesDialog *dlg, HWND hwnd, LPCTSTR strFilename) |
static INT_PTR CALLBACK | PropertiesDialogDlgProc (HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam) |
void | show_properties_dlg (Entry *entry, HWND hwnd) |
Variables | |
struct LANGANDCODEPAGE * | lpTranslate |
static LPCSTR | InfoStrings [] |
#define infoStr pInfoString |
Referenced by CheckForFileInfo().
static void CheckForFileInfo | ( | struct PropertiesDialog * | dlg, | |
HWND | hwnd, | |||
LPCTSTR | strFilename | |||
) | [static] |
Definition at line 245 of file dialogs.c.
References BUFFER_LEN, heap_alloc, IDC_LIST_PROP_VERSION_TYPES, IDC_LIST_PROP_VERSION_VALUES, IDC_STATIC_PROP_VERSION, infoStr, InfoStrings, PropDlg_DisplayValue(), PropertiesDialog::pVersionData, LANGANDCODEPAGE::wCodePage, and LANGANDCODEPAGE::wLanguage.
Referenced by PropertiesDialogDlgProc().
00246 { 00247 static TCHAR sBackSlash[] = {'\\','\0'}; 00248 static TCHAR sTranslation[] = {'\\','V','a','r','F','i','l','e','I','n','f','o','\\','T','r','a','n','s','l','a','t','i','o','n','\0'}; 00249 static TCHAR sStringFileInfo[] = {'\\','S','t','r','i','n','g','F','i','l','e','I','n','f','o','\\', 00250 '%','0','4','x','%','0','4','x','\\','%','s','\0'}; 00251 DWORD dwVersionDataLen = GetFileVersionInfoSize((LPTSTR)strFilename, NULL); /* VC6 and MinGW headers use LPTSTR instead of LPCTSTR */ 00252 00253 if (dwVersionDataLen) { 00254 dlg->pVersionData = heap_alloc(dwVersionDataLen); 00255 00256 if (GetFileVersionInfo((LPTSTR)strFilename, 0, dwVersionDataLen, dlg->pVersionData)) { /* VC6 and MinGW headers use LPTSTR instead of LPCTSTR */ 00257 LPVOID pVal; 00258 UINT nValLen; 00259 00260 if (VerQueryValue(dlg->pVersionData, sBackSlash, &pVal, &nValLen)) { 00261 if (nValLen == sizeof(VS_FIXEDFILEINFO)) { 00262 VS_FIXEDFILEINFO* pFixedFileInfo = (VS_FIXEDFILEINFO*)pVal; 00263 char buffer[BUFFER_LEN]; 00264 00265 sprintf(buffer, "%d.%d.%d.%d", 00266 HIWORD(pFixedFileInfo->dwFileVersionMS), LOWORD(pFixedFileInfo->dwFileVersionMS), 00267 HIWORD(pFixedFileInfo->dwFileVersionLS), LOWORD(pFixedFileInfo->dwFileVersionLS)); 00268 00269 SetDlgItemTextA(hwnd, IDC_STATIC_PROP_VERSION, buffer); 00270 } 00271 } 00272 00273 /* Read the list of languages and code pages. */ 00274 if (VerQueryValue(dlg->pVersionData, sTranslation, &pVal, &nValLen)) { 00275 struct LANGANDCODEPAGE* pTranslate = (struct LANGANDCODEPAGE*)pVal; 00276 struct LANGANDCODEPAGE* pEnd = (struct LANGANDCODEPAGE*)((LPBYTE)pVal+nValLen); 00277 00278 HWND hlbox = GetDlgItem(hwnd, IDC_LIST_PROP_VERSION_TYPES); 00279 00280 /* Read the file description for each language and code page. */ 00281 for(; pTranslate<pEnd; ++pTranslate) { 00282 LPCSTR* p; 00283 00284 for(p=InfoStrings; *p; ++p) { 00285 TCHAR subblock[200]; 00286 #ifdef UNICODE 00287 TCHAR infoStr[100]; 00288 #endif 00289 LPCTSTR pTxt; 00290 UINT nValLen; 00291 00292 LPCSTR pInfoString = *p; 00293 #ifdef UNICODE 00294 MultiByteToWideChar(CP_ACP, 0, pInfoString, -1, infoStr, 100); 00295 #else 00296 #define infoStr pInfoString 00297 #endif 00298 wsprintf(subblock, sStringFileInfo, pTranslate->wLanguage, pTranslate->wCodePage, infoStr); 00299 00300 /* Retrieve file description for language and code page */ 00301 if (VerQueryValue(dlg->pVersionData, subblock, (PVOID)&pTxt, &nValLen)) { 00302 int idx = ListBox_AddString(hlbox, infoStr); 00303 (void)ListBox_SetItemData(hlbox, idx, pTxt); 00304 } 00305 } 00306 } 00307 00308 (void)ListBox_SetCurSel(hlbox, 0); 00309 00310 PropDlg_DisplayValue(hlbox, GetDlgItem(hwnd,IDC_LIST_PROP_VERSION_VALUES)); 00311 } 00312 } 00313 } 00314 }
void choose_font | ( | HWND | hwnd | ) | [inline] |
Definition at line 38 of file dialogs.c.
References BUFFER_LEN, Globals, WINEFILE_GLOBALS::hfont, WINEFILE_GLOBALS::hInstance, WINEFILE_GLOBALS::hmdiclient, _Pane::hwnd, IDS_FONT_SEL_DLG_NAME, IDS_FONT_SEL_ERROR, IMAGE_HEIGHT, _ChildWnd::left, _ChildWnd::right, WINEFILE_GLOBALS::spaceSize, and sSpace.
Referenced by FrameWndProc().
00039 { 00040 WCHAR dlg_name[BUFFER_LEN], dlg_info[BUFFER_LEN]; 00041 CHOOSEFONTW chFont; 00042 LOGFONTW lFont; 00043 00044 HDC hdc = GetDC(hwnd); 00045 chFont.lStructSize = sizeof(CHOOSEFONT); 00046 chFont.hwndOwner = hwnd; 00047 chFont.hDC = NULL; 00048 chFont.lpLogFont = &lFont; 00049 chFont.Flags = CF_SCREENFONTS | CF_FORCEFONTEXIST | CF_LIMITSIZE | CF_NOSCRIPTSEL; 00050 chFont.rgbColors = RGB(0,0,0); 00051 chFont.lCustData = 0; 00052 chFont.lpfnHook = NULL; 00053 chFont.lpTemplateName = NULL; 00054 chFont.hInstance = Globals.hInstance; 00055 chFont.lpszStyle = NULL; 00056 chFont.nFontType = SIMULATED_FONTTYPE; 00057 chFont.nSizeMin = 0; 00058 chFont.nSizeMax = 24; 00059 00060 if (ChooseFontW(&chFont)) { 00061 HWND childWnd; 00062 HFONT hFontOld; 00063 00064 DeleteObject(Globals.hfont); 00065 Globals.hfont = CreateFontIndirectW(&lFont); 00066 hFontOld = SelectObject(hdc, Globals.hfont); 00067 GetTextExtentPoint32(hdc, sSpace, 1, &Globals.spaceSize); 00068 00069 /* change font in all open child windows */ 00070 for(childWnd=GetWindow(Globals.hmdiclient,GW_CHILD); childWnd; childWnd=GetNextWindow(childWnd,GW_HWNDNEXT)) { 00071 ChildWnd* child = (ChildWnd*) GetWindowLongPtrW(childWnd, GWLP_USERDATA); 00072 SendMessageW(child->left.hwnd, WM_SETFONT, (WPARAM)Globals.hfont, TRUE); 00073 SendMessageW(child->right.hwnd, WM_SETFONT, (WPARAM)Globals.hfont, TRUE); 00074 SendMessageW(child->left.hwnd, LB_SETITEMHEIGHT, 1, max(Globals.spaceSize.cy,IMAGE_HEIGHT+3)); 00075 SendMessageW(child->right.hwnd, LB_SETITEMHEIGHT, 1, max(Globals.spaceSize.cy,IMAGE_HEIGHT+3)); 00076 InvalidateRect(child->left.hwnd, NULL, TRUE); 00077 InvalidateRect(child->right.hwnd, NULL, TRUE); 00078 } 00079 00080 SelectObject(hdc, hFontOld); 00081 } 00082 else if (CommDlgExtendedError()) { 00083 LoadStringW(Globals.hInstance, IDS_FONT_SEL_DLG_NAME, dlg_name, BUFFER_LEN); 00084 LoadStringW(Globals.hInstance, IDS_FONT_SEL_ERROR, dlg_info, BUFFER_LEN); 00085 MessageBoxW(hwnd, dlg_info, dlg_name, MB_OK); 00086 } 00087 00088 ReleaseDC(hwnd, hdc); 00089 }
INT_PTR CALLBACK DestinationDlgProc | ( | HWND | hwnd, | |
UINT | nmsg, | |||
WPARAM | wparam, | |||
LPARAM | lparam | |||
) |
Definition at line 166 of file dialogs.c.
References BUFFER_LEN, IDS_NO_IMPL, IDS_WINEFILE, and RS.
00167 { 00168 TCHAR b1[BUFFER_LEN], b2[BUFFER_LEN]; 00169 00170 switch(nmsg) { 00171 case WM_INITDIALOG: 00172 SetWindowLongPtr(hwnd, GWLP_USERDATA, lparam); 00173 SetWindowText(GetDlgItem(hwnd, 201), (LPCTSTR)lparam); 00174 return 1; 00175 00176 case WM_COMMAND: { 00177 int id = (int)wparam; 00178 00179 switch(id) { 00180 case IDOK: { 00181 LPTSTR dest = (LPTSTR) GetWindowLongPtr(hwnd, GWLP_USERDATA); 00182 GetWindowText(GetDlgItem(hwnd, 201), dest, MAX_PATH); 00183 EndDialog(hwnd, id); 00184 break;} 00185 00186 case IDCANCEL: 00187 EndDialog(hwnd, id); 00188 break; 00189 00190 case 254: 00191 MessageBox(hwnd, RS(b1,IDS_NO_IMPL), RS(b2,IDS_WINEFILE), MB_OK); 00192 break; 00193 } 00194 00195 return 1; 00196 } 00197 } 00198 00199 return 0; 00200 }
INT_PTR CALLBACK ExecuteDialogDlgProc | ( | HWND | hwnd, | |
UINT | nmsg, | |||
WPARAM | wparam, | |||
LPARAM | lparam | |||
) |
Definition at line 138 of file dialogs.c.
References ExecuteDialog::cmd, ExecuteDialog::cmdshow, and get_check().
Referenced by FrameWndProc().
00139 { 00140 static struct ExecuteDialog* dlg; 00141 00142 switch(nmsg) { 00143 case WM_INITDIALOG: 00144 dlg = (struct ExecuteDialog*) lparam; 00145 return 1; 00146 00147 case WM_COMMAND: { 00148 int id = (int)wparam; 00149 00150 if (id == IDOK) { 00151 GetWindowText(GetDlgItem(hwnd, 201), dlg->cmd, MAX_PATH); 00152 dlg->cmdshow = get_check(hwnd, 214) ? SW_SHOWMINIMIZED : SW_SHOWNORMAL; 00153 EndDialog(hwnd, id); 00154 } else if (id == IDCANCEL) 00155 EndDialog(hwnd, id); 00156 00157 return 1;} 00158 } 00159 00160 return 0; 00161 }
INT_PTR CALLBACK FilterDialogDlgProc | ( | HWND | hwnd, | |
UINT | nmsg, | |||
WPARAM | wparam, | |||
LPARAM | lparam | |||
) |
Definition at line 94 of file dialogs.c.
References FilterDialog::flags, get_check(), IDC_VIEW_PATTERN, IDC_VIEW_TYPE_DIRECTORIES, IDC_VIEW_TYPE_DOCUMENTS, IDC_VIEW_TYPE_HIDDEN, IDC_VIEW_TYPE_OTHERS, IDC_VIEW_TYPE_PROGRAMS, FilterDialog::pattern, set_check(), TF_DIRECTORIES, TF_DOCUMENTS, TF_HIDDEN, TF_OTHERS, and TF_PROGRAMS.
00095 { 00096 static struct FilterDialog* dlg; 00097 00098 switch(nmsg) { 00099 case WM_INITDIALOG: 00100 dlg = (struct FilterDialog*) lparam; 00101 SetWindowText(GetDlgItem(hwnd, IDC_VIEW_PATTERN), dlg->pattern); 00102 set_check(hwnd, IDC_VIEW_TYPE_DIRECTORIES, dlg->flags&TF_DIRECTORIES); 00103 set_check(hwnd, IDC_VIEW_TYPE_PROGRAMS, dlg->flags&TF_PROGRAMS); 00104 set_check(hwnd, IDC_VIEW_TYPE_DOCUMENTS, dlg->flags&TF_DOCUMENTS); 00105 set_check(hwnd, IDC_VIEW_TYPE_OTHERS, dlg->flags&TF_OTHERS); 00106 set_check(hwnd, IDC_VIEW_TYPE_HIDDEN, dlg->flags&TF_HIDDEN); 00107 return 1; 00108 00109 case WM_COMMAND: { 00110 int id = (int)wparam; 00111 00112 if (id == IDOK) { 00113 int flags = 0; 00114 00115 GetWindowText(GetDlgItem(hwnd, IDC_VIEW_PATTERN), dlg->pattern, MAX_PATH); 00116 00117 flags |= get_check(hwnd, IDC_VIEW_TYPE_DIRECTORIES) ? TF_DIRECTORIES : 0; 00118 flags |= get_check(hwnd, IDC_VIEW_TYPE_PROGRAMS) ? TF_PROGRAMS : 0; 00119 flags |= get_check(hwnd, IDC_VIEW_TYPE_DOCUMENTS) ? TF_DOCUMENTS : 0; 00120 flags |= get_check(hwnd, IDC_VIEW_TYPE_OTHERS) ? TF_OTHERS : 0; 00121 flags |= get_check(hwnd, IDC_VIEW_TYPE_HIDDEN) ? TF_HIDDEN : 0; 00122 00123 dlg->flags = flags; 00124 00125 EndDialog(hwnd, id); 00126 } else if (id == IDCANCEL) 00127 EndDialog(hwnd, id); 00128 00129 return 1;} 00130 } 00131 00132 return 0; 00133 }
static BOOL get_check | ( | HWND | hwnd, | |
INT | id | |||
) | [inline, static] |
Definition at line 25 of file dialogs.c.
Referenced by ExecuteDialogDlgProc(), and FilterDialogDlgProc().
static void PropDlg_DisplayValue | ( | HWND | hlbox, | |
HWND | hedit | |||
) | [static] |
Definition at line 232 of file dialogs.c.
Referenced by CheckForFileInfo(), and PropertiesDialogDlgProc().
00233 { 00234 int idx = ListBox_GetCurSel(hlbox); 00235 00236 if (idx != LB_ERR) { 00237 LPCTSTR pValue = (LPCTSTR) ListBox_GetItemData(hlbox, idx); 00238 00239 if (pValue) 00240 SetWindowText(hedit, pValue); 00241 } 00242 }
static INT_PTR CALLBACK PropertiesDialogDlgProc | ( | HWND | hwnd, | |
UINT | nmsg, | |||
WPARAM | wparam, | |||
LPARAM | lparam | |||
) | [static] |
Definition at line 317 of file dialogs.c.
References BUFFER_LEN, CheckForFileInfo(), COL_DATE, COL_TIME, _Entry::data, PropertiesDialog::entry, format_date(), heap_free, IDC_CHECK_ARCHIVE, IDC_CHECK_COMPRESSED, IDC_CHECK_HIDDEN, IDC_CHECK_READONLY, IDC_CHECK_SYSTEM, IDC_LIST_PROP_VERSION_TYPES, IDC_LIST_PROP_VERSION_VALUES, IDC_STATIC_PROP_FILENAME, IDC_STATIC_PROP_LASTCHANGE, IDC_STATIC_PROP_PATH, IDC_STATIC_PROP_SIZE, PropertiesDialog::path, PropDlg_DisplayValue(), PropertiesDialog::pVersionData, set_check(), and sLongNumFmt.
Referenced by show_properties_dlg().
00318 { 00319 static struct PropertiesDialog* dlg; 00320 00321 switch(nmsg) { 00322 case WM_INITDIALOG: { 00323 static const TCHAR sByteFmt[] = {'%','s',' ','B','y','t','e','s','\0'}; 00324 TCHAR b1[BUFFER_LEN], b2[BUFFER_LEN]; 00325 LPWIN32_FIND_DATA pWFD; 00326 ULONGLONG size; 00327 00328 dlg = (struct PropertiesDialog*) lparam; 00329 pWFD = (LPWIN32_FIND_DATA) &dlg->entry.data; 00330 00331 GetWindowText(hwnd, b1, MAX_PATH); 00332 wsprintf(b2, b1, pWFD->cFileName); 00333 SetWindowText(hwnd, b2); 00334 00335 format_date(&pWFD->ftLastWriteTime, b1, COL_DATE|COL_TIME); 00336 SetWindowText(GetDlgItem(hwnd, IDC_STATIC_PROP_LASTCHANGE), b1); 00337 00338 size = ((ULONGLONG)pWFD->nFileSizeHigh << 32) | pWFD->nFileSizeLow; 00339 _stprintf(b1, sLongNumFmt, size); 00340 wsprintf(b2, sByteFmt, b1); 00341 SetWindowText(GetDlgItem(hwnd, IDC_STATIC_PROP_SIZE), b2); 00342 00343 SetWindowText(GetDlgItem(hwnd, IDC_STATIC_PROP_FILENAME), pWFD->cFileName); 00344 SetWindowText(GetDlgItem(hwnd, IDC_STATIC_PROP_PATH), dlg->path); 00345 00346 set_check(hwnd, IDC_CHECK_READONLY, pWFD->dwFileAttributes&FILE_ATTRIBUTE_READONLY); 00347 set_check(hwnd, IDC_CHECK_ARCHIVE, pWFD->dwFileAttributes&FILE_ATTRIBUTE_ARCHIVE); 00348 set_check(hwnd, IDC_CHECK_COMPRESSED, pWFD->dwFileAttributes&FILE_ATTRIBUTE_COMPRESSED); 00349 set_check(hwnd, IDC_CHECK_HIDDEN, pWFD->dwFileAttributes&FILE_ATTRIBUTE_HIDDEN); 00350 set_check(hwnd, IDC_CHECK_SYSTEM, pWFD->dwFileAttributes&FILE_ATTRIBUTE_SYSTEM); 00351 00352 CheckForFileInfo(dlg, hwnd, dlg->path); 00353 return 1;} 00354 00355 case WM_COMMAND: { 00356 int id = (int)wparam; 00357 00358 switch(HIWORD(wparam)) { 00359 case LBN_SELCHANGE: { 00360 HWND hlbox = GetDlgItem(hwnd, IDC_LIST_PROP_VERSION_TYPES); 00361 PropDlg_DisplayValue(hlbox, GetDlgItem(hwnd,IDC_LIST_PROP_VERSION_VALUES)); 00362 break; 00363 } 00364 00365 case BN_CLICKED: 00366 if (id==IDOK || id==IDCANCEL) 00367 EndDialog(hwnd, id); 00368 } 00369 00370 return 1;} 00371 00372 case WM_NCDESTROY: 00373 heap_free(dlg->pVersionData); 00374 dlg->pVersionData = NULL; 00375 break; 00376 } 00377 00378 return 0; 00379 }
static INT set_check | ( | HWND | hwnd, | |
INT | id, | |||
BOOL | on | |||
) | [inline, static] |
Definition at line 31 of file dialogs.c.
Referenced by FilterDialogDlgProc(), and PropertiesDialogDlgProc().
00032 { 00033 return SendMessageW(GetDlgItem(hwnd, id), BM_SETCHECK, on?BST_CHECKED:BST_UNCHECKED, 0); 00034 }
void show_properties_dlg | ( | Entry * | entry, | |
HWND | hwnd | |||
) |
Definition at line 382 of file dialogs.c.
References PropertiesDialog::entry, get_path(), Globals, WINEFILE_GLOBALS::hInstance, IDD_DIALOG_PROPERTIES, PropertiesDialog::path, and PropertiesDialogDlgProc().
00383 { 00384 struct PropertiesDialog dlg; 00385 00386 memset(&dlg, 0, sizeof(struct PropertiesDialog)); 00387 get_path(entry, dlg.path); 00388 memcpy(&dlg.entry, entry, sizeof(Entry)); 00389 00390 DialogBoxParam(Globals.hInstance, MAKEINTRESOURCE(IDD_DIALOG_PROPERTIES), hwnd, PropertiesDialogDlgProc, (LPARAM)&dlg); 00391 }
LPCSTR InfoStrings[] [static] |
Initial value:
{ "Comments", "CompanyName", "FileDescription", "FileVersion", "InternalName", "LegalCopyright", "LegalTrademarks", "OriginalFilename", "PrivateBuild", "ProductName", "ProductVersion", "SpecialBuild", NULL }
Definition at line 215 of file dialogs.c.
Referenced by CheckForFileInfo().
struct LANGANDCODEPAGE * lpTranslate |
Winefile Source Code Documentation
generated on 15.09.2008 by |