Module: wine Branch: master Commit: 7aa2e616f0c252a0fab5965abed43f38a21ed402 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7aa2e616f0c252a0fab5965abe...
Author: Alexander Nicolaysen Sørnes alex@thehandofagony.com Date: Sun Feb 25 14:40:27 2007 +0100
wordpad: Add open file dialogue.
---
programs/wordpad/En.rc | 7 ++++ programs/wordpad/No.rc | 7 ++++ programs/wordpad/resource.h | 4 ++ programs/wordpad/wordpad.c | 76 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 93 insertions(+), 1 deletions(-)
diff --git a/programs/wordpad/En.rc b/programs/wordpad/En.rc index a78ab0e..bab4178 100644 --- a/programs/wordpad/En.rc +++ b/programs/wordpad/En.rc @@ -66,3 +66,10 @@ BEGIN END END END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_RICHTEXT_FILES_RTF, "Rich text format (*.rtf)" + STRING_TEXT_FILES_TXT, "Text files (*.txt)" + STRING_ALL_FILES, "All documents (*.*)" +END diff --git a/programs/wordpad/No.rc b/programs/wordpad/No.rc index 7021490..b13fb67 100644 --- a/programs/wordpad/No.rc +++ b/programs/wordpad/No.rc @@ -66,3 +66,10 @@ BEGIN END END END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_RICHTEXT_FILES_RTF, "Rikt tekstformat (*.rtf)" + STRING_TEXT_FILES_TXT, "Tekstfiler (*.txt)" + STRING_ALL_FILES, "Alle filer (*.*)" +END diff --git a/programs/wordpad/resource.h b/programs/wordpad/resource.h index 72976f7..5e996d5 100644 --- a/programs/wordpad/resource.h +++ b/programs/wordpad/resource.h @@ -59,3 +59,7 @@ #define IDC_COMBO 2004
#define IDB_TOOLBAR 100 + +#define STRING_ALL_FILES 1400 +#define STRING_TEXT_FILES_TXT 1401 +#define STRING_RICHTEXT_FILES_RTF 1402 diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c index 455f73f..0d45cb7 100644 --- a/programs/wordpad/wordpad.c +++ b/programs/wordpad/wordpad.c @@ -21,6 +21,8 @@ #define WIN32_LEAN_AND_MEAN #define _WIN32_IE 0x0400
+#define MAX_STRING_LEN 255 + #include <stdarg.h> #include <ctype.h> #include <stdio.h> @@ -29,10 +31,10 @@ #include <windows.h> #include <richedit.h> #include <commctrl.h> +#include <commdlg.h>
#include "resource.h"
- /* use LoadString */ static const WCHAR xszAppTitle[] = {'W','i','n','e',' ','W','o','r','d','p','a','d',0}; static const WCHAR xszMainMenu[] = {'M','A','I','N','M','E','N','U',0}; @@ -44,6 +46,32 @@ static const WCHAR wszAppTitle[] = {'W','i','n','e',' ','W','o','r','d','p','a', static HWND hMainWnd; static HWND hEditorWnd;
+static char szFilter[MAX_STRING_LEN]; + +/* Load string resources */ +static void DoLoadStrings() +{ + LPSTR p = szFilter; + char files_rtf[] = "*.rtf"; + char files_txt[] = "*.txt"; + char files_all[] = "*.*"; + HINSTANCE hInstance = (HINSTANCE)GetWindowLongPtr(hMainWnd, GWLP_HINSTANCE); + + LoadString(hInstance, STRING_RICHTEXT_FILES_RTF, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, files_rtf); + p += strlen(p) + 1; + LoadString(hInstance, STRING_TEXT_FILES_TXT, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, files_txt); + p += strlen(p) + 1; + LoadString(hInstance, STRING_ALL_FILES, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, files_all); + p += strlen(p) + 1; + *p = '\0'; +} + static void AddButton(HWND hwndToolBar, int nImage, int nCommand) { TBBUTTON button; @@ -94,6 +122,10 @@ static void DoOpenFile(LPCWSTR szFileName) DWORD dwNumRead; EDITSTREAM es;
+ char szCaption[MAX_PATH]; + char szAppTitle[sizeof(wszAppTitle)]; + char szSeparator[] = " - "; + hFile = CreateFileW(szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) @@ -133,6 +165,42 @@ static void DoOpenFile(LPCWSTR szFileName) HeapFree(GetProcessHeap(), 0, pTemp);
SetFocus(hEditorWnd); + + WideCharToMultiByte(CP_ACP, 0, wszAppTitle, -1, szAppTitle, sizeof(wszAppTitle), NULL, NULL); + + WideCharToMultiByte(CP_ACP, 0, szFileName, -1, szCaption, MAX_PATH, NULL, NULL); + + lstrcat(szCaption, szSeparator); + lstrcat(szCaption, szAppTitle); + + SetWindowText(hMainWnd, szCaption); +} + +static void DialogOpenFile() +{ + OPENFILENAME ofn; + + char szFile[MAX_PATH] = ""; + char szDefExt[] = "rtf"; + + ZeroMemory(&ofn, sizeof(ofn)); + + ofn.lStructSize = sizeof(ofn); + ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST; + ofn.hwndOwner = hMainWnd; + ofn.lpstrFilter = szFilter; + ofn.lpstrFile = szFile; + ofn.nMaxFile = MAX_PATH; + ofn.lpstrDefExt = szDefExt; + + if(GetOpenFileName(&ofn)) + { + WCHAR szOpenFile[MAX_PATH]; + + MultiByteToWideChar(CP_ACP, 0, ofn.lpstrFile, MAX_PATH, szOpenFile, sizeof(szOpenFile)/sizeof(szOpenFile[0])); + + DoOpenFile(szOpenFile); + } }
static void HandleCommandLine(LPWSTR cmdline) @@ -263,6 +331,9 @@ static LRESULT OnCreate( HWND hWnd, WPARAM wParam, LPARAM lParam)
SetFocus(hEditorWnd); SendMessage(hEditorWnd, EM_SETEVENTMASK, 0, ENM_SELCHANGE); + + DoLoadStrings(); + return 0; }
@@ -337,6 +408,9 @@ static LRESULT OnCommand( HWND hWnd, WPARAM wParam, LPARAM lParam) break;
case ID_FILE_OPEN: + DialogOpenFile(); + break; + case ID_FILE_SAVE: case ID_PRINT: case ID_PREVIEW: