Alexander Nicolaysen Sørnes : wordpad: Add font dialog.

Alexandre Julliard julliard at winehq.org
Thu Sep 13 07:17:20 CDT 2007


Module: wine
Branch: master
Commit: 4c3980da73530e60aa2b7b0556c75f8fe5346c48
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4c3980da73530e60aa2b7b0556c75f8fe5346c48

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Sat Aug 25 16:54:02 2007 +0200

wordpad: Add font dialog.

---

 programs/wordpad/De.rc      |    1 +
 programs/wordpad/En.rc      |    1 +
 programs/wordpad/Fr.rc      |    1 +
 programs/wordpad/Hu.rc      |    1 +
 programs/wordpad/Ko.rc      |    1 +
 programs/wordpad/Nl.rc      |    1 +
 programs/wordpad/No.rc      |    1 +
 programs/wordpad/Pl.rc      |    1 +
 programs/wordpad/Ru.rc      |    1 +
 programs/wordpad/Tr.rc      |    1 +
 programs/wordpad/resource.h |    2 +
 programs/wordpad/wordpad.c  |   50 ++++++++++++++++++++++++++++++++++++++++++-
 12 files changed, 61 insertions(+), 1 deletions(-)

diff --git a/programs/wordpad/De.rc b/programs/wordpad/De.rc
index 6478c64..809864e 100644
--- a/programs/wordpad/De.rc
+++ b/programs/wordpad/De.rc
@@ -73,6 +73,7 @@ BEGIN
     END
     POPUP "F&ormat"
     BEGIN
+        MENUITEM "&Font . . .",                  ID_FONTSETTINGS
         MENUITEM "&Bullet points"                ID_BULLET
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "&Tabs . . ."                   ID_TABSTOPS
diff --git a/programs/wordpad/En.rc b/programs/wordpad/En.rc
index 4eaa2da..3c06dda 100644
--- a/programs/wordpad/En.rc
+++ b/programs/wordpad/En.rc
@@ -73,6 +73,7 @@ BEGIN
     END
     POPUP "F&ormat"
     BEGIN
+        MENUITEM "&Font . . .",                  ID_FONTSETTINGS
         MENUITEM "&Bullet points"                ID_BULLET
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "&Tabs . . ."                   ID_TABSTOPS
diff --git a/programs/wordpad/Fr.rc b/programs/wordpad/Fr.rc
index d69ce86..bde211d 100644
--- a/programs/wordpad/Fr.rc
+++ b/programs/wordpad/Fr.rc
@@ -73,6 +73,7 @@ BEGIN
     END
     POPUP "Forma&t"
     BEGIN
+        MENUITEM "&Font . . .",                  ID_FONTSETTINGS
         MENUITEM "&Bullet points"                ID_BULLET
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "&Tabs . . ."                   ID_TABSTOPS
diff --git a/programs/wordpad/Hu.rc b/programs/wordpad/Hu.rc
index a6bdccc..2840495 100644
--- a/programs/wordpad/Hu.rc
+++ b/programs/wordpad/Hu.rc
@@ -73,6 +73,7 @@ BEGIN
     END
     POPUP "F&ormátum"
     BEGIN
+        MENUITEM "&Font . . .",                  ID_FONTSETTINGS
         MENUITEM "&Bullet points"                ID_BULLET
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "&Tabs . . ."                   ID_TABSTOPS
diff --git a/programs/wordpad/Ko.rc b/programs/wordpad/Ko.rc
index 6ee98fd..fac4733 100644
--- a/programs/wordpad/Ko.rc
+++ b/programs/wordpad/Ko.rc
@@ -75,6 +75,7 @@ BEGIN
     POPUP "Çü½Ä(&O)"
     BEGIN
         MENUITEM " °­Á¶ Á¡(&U)"                ID_BULLET
+        MENUITEM "&Font . . .",               ID_FONTSETTINGS
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "&Tabs . . ."                   ID_TABSTOPS
         POPUP "¹è°æ(&B)"
diff --git a/programs/wordpad/Nl.rc b/programs/wordpad/Nl.rc
index bc34cf3..73dc641 100644
--- a/programs/wordpad/Nl.rc
+++ b/programs/wordpad/Nl.rc
@@ -73,6 +73,7 @@ BEGIN
     END
     POPUP "&Opmaak"
     BEGIN
+        MENUITEM "&Font . . .",                  ID_FONTSETTINGS
         MENUITEM "&Bullet points"                ID_BULLET
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "&Tabs . . ."                   ID_TABSTOPS
diff --git a/programs/wordpad/No.rc b/programs/wordpad/No.rc
index ad16960..3bf663d 100644
--- a/programs/wordpad/No.rc
+++ b/programs/wordpad/No.rc
@@ -73,6 +73,7 @@ BEGIN
     END
     POPUP "F&ormat"
     BEGIN
+        MENUITEM "&Skrift . . .",               ID_FONTSETTINGS
         MENUITEM "&Punktmerking"                ID_BULLET
         MENUITEM "&Avsnitt . . ."               ID_PARAFORMAT
         MENUITEM "&Tabulatorer . . ."           ID_TABSTOPS
diff --git a/programs/wordpad/Pl.rc b/programs/wordpad/Pl.rc
index 54e1d3a..f212fc3 100644
--- a/programs/wordpad/Pl.rc
+++ b/programs/wordpad/Pl.rc
@@ -74,6 +74,7 @@ BEGIN
     END
     POPUP "F&ormat"
     BEGIN
+        MENUITEM "&Font . . .",                  ID_FONTSETTINGS
         MENUITEM "&Bullet points"                ID_BULLET
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "Tab&s . . ."                   ID_TABSTOPS
diff --git a/programs/wordpad/Ru.rc b/programs/wordpad/Ru.rc
index e6d6ae9..daceaf8 100644
--- a/programs/wordpad/Ru.rc
+++ b/programs/wordpad/Ru.rc
@@ -72,6 +72,7 @@ BEGIN
     END
     POPUP "Ôîð&ìàò"
     BEGIN
+        MENUITEM "&Font . . .",                  ID_FONTSETTINGS
         MENUITEM "B&ullet points"                ID_BULLET
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "&Tabs . . ."                   ID_TABSTOPS
diff --git a/programs/wordpad/Tr.rc b/programs/wordpad/Tr.rc
index 9a3013d..b748666 100644
--- a/programs/wordpad/Tr.rc
+++ b/programs/wordpad/Tr.rc
@@ -76,6 +76,7 @@ BEGIN
     END
     POPUP "&Biçim"
     BEGIN
+        MENUITEM "&Font . . .",                  ID_FONTSETTINGS
         MENUITEM "&Bullet points"                ID_BULLET
         MENUITEM "&Paragraph . . ."              ID_PARAFORMAT
         MENUITEM "&Tabs . . ."                   ID_TABSTOPS
diff --git a/programs/wordpad/resource.h b/programs/wordpad/resource.h
index c1a9935..8c33d38 100644
--- a/programs/wordpad/resource.h
+++ b/programs/wordpad/resource.h
@@ -63,6 +63,8 @@
 #define ID_EDIT_CLEAR 1313
 #define ID_BULLET 1314
 
+#define ID_FONTSETTINGS 1315
+
 #define ID_FORMAT_BOLD 1400
 #define ID_FORMAT_ITALIC 1401
 #define ID_FORMAT_UNDERLINE 1402
diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c
index 82dd40a..99bf120 100644
--- a/programs/wordpad/wordpad.c
+++ b/programs/wordpad/wordpad.c
@@ -719,6 +719,8 @@ static void set_font(LPCWSTR wszFaceName)
 {
     HWND hReBarWnd = GetDlgItem(hMainWnd, IDC_REBAR);
     HWND hSizeListWnd = GetDlgItem(hReBarWnd, IDC_SIZELIST);
+    HWND hFontListWnd = GetDlgItem(hReBarWnd, IDC_FONTLIST);
+    HWND hFontListEditWnd = (HWND)SendMessageW(hFontListWnd, CBEM_GETEDITCONTROL, 0, 0);
     CHARFORMAT2W fmt;
 
     ZeroMemory(&fmt, sizeof(fmt));
@@ -731,6 +733,8 @@ static void set_font(LPCWSTR wszFaceName)
     SendMessageW(hEditorWnd, EM_SETCHARFORMAT,  SCF_SELECTION, (LPARAM)&fmt);
 
     populate_size_list(hSizeListWnd);
+
+    SendMessageW(hFontListEditWnd, WM_SETTEXT, 0, (LPARAM)(LPWSTR)wszFaceName);
 }
 
 static void set_default_font(void)
@@ -785,8 +789,48 @@ static void add_font(LPWSTR fontName, DWORD fontType, HWND hListWnd, NEWTEXTMETR
     SendMessageW(hListWnd, CBEM_INSERTITEMW, 0, (LPARAM)&cbItem);
 }
 
+static void dialog_choose_font(void)
+{
+    CHOOSEFONTW cf;
+    LOGFONTW lf;
+    CHARFORMAT2W fmt;
+    HDC hDC = GetDC(hMainWnd);
+
+    ZeroMemory(&cf, sizeof(cf));
+    cf.lStructSize = sizeof(cf);
+    cf.hwndOwner = hMainWnd;
+    cf.lpLogFont = &lf;
+    cf.Flags = CF_SCREENFONTS | CF_NOSCRIPTSEL | CF_INITTOLOGFONTSTRUCT;
+
+    ZeroMemory(&fmt, sizeof(fmt));
+    fmt.cbSize = sizeof(fmt);
+
+    SendMessageW(hEditorWnd, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&fmt);
+    lstrcpyW(cf.lpLogFont->lfFaceName, fmt.szFaceName);
+    cf.lpLogFont->lfItalic = (fmt.dwEffects & CFE_ITALIC) ? TRUE : FALSE;
+    cf.lpLogFont->lfWeight = (fmt.dwEffects & CFE_BOLD) ? FW_BOLD : FW_NORMAL;
+    cf.lpLogFont->lfHeight = -MulDiv(fmt.yHeight / 20, GetDeviceCaps(hDC, LOGPIXELSY), 72);
+
+    if(ChooseFontW(&cf))
+    {
+        ZeroMemory(&fmt, sizeof(fmt));
+        fmt.cbSize = sizeof(fmt);
+        fmt.dwMask = CFM_BOLD | CFM_ITALIC | CFM_SIZE;
+        fmt.yHeight = cf.iPointSize * 2;
+
+        if(cf.nFontType & BOLD_FONTTYPE)
+            fmt.dwEffects |= CFE_BOLD;
+        if(cf.nFontType & ITALIC_FONTTYPE)
+            fmt.dwEffects |= CFE_ITALIC;
+
+        SendMessageW(hEditorWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&fmt);
+        set_font(cf.lpLogFont->lfFaceName);
+    }
+}
+
+
 int CALLBACK enum_font_proc(const LOGFONTW *lpelfe, const TEXTMETRICW *lpntme,
-                                       DWORD FontType, LPARAM lParam)
+                            DWORD FontType, LPARAM lParam)
 {
     HWND hListWnd = (HWND) lParam;
 
@@ -2670,6 +2714,10 @@ static LRESULT OnCommand( HWND hWnd, WPARAM wParam, LPARAM lParam)
         handle_findmsg(&findreplace);
         break;
 
+    case ID_FONTSETTINGS:
+        dialog_choose_font();
+        break;
+
     case ID_PRINT:
         dialog_print();
         break;




More information about the wine-cvs mailing list