Alexander Nicolaysen Sørnes : wordpad: Add page setup dialog.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Sep 12 07:50:57 CDT 2007


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

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Thu Aug 23 01:38:08 2007 +0200

wordpad: Add page setup 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      |    2 +
 programs/wordpad/resource.h |    5 ++-
 programs/wordpad/wordpad.c  |   52 +++++++++++++++++++++++++++++++++++++++---
 12 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/programs/wordpad/De.rc b/programs/wordpad/De.rc
index 4941f49..39ff38f 100644
--- a/programs/wordpad/De.rc
+++ b/programs/wordpad/De.rc
@@ -28,6 +28,7 @@ BEGIN
         MENUITEM "Speichern &unter...",        ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",  ID_PRINT
+        MENUITEM "Pag&e setup . . .",     ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "&Beenden",      ID_FILE_EXIT
     END
diff --git a/programs/wordpad/En.rc b/programs/wordpad/En.rc
index ac30045..835cb01 100644
--- a/programs/wordpad/En.rc
+++ b/programs/wordpad/En.rc
@@ -28,6 +28,7 @@ BEGIN
         MENUITEM "Save &as . . .",        ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",  ID_PRINT
+        MENUITEM "Pag&e setup . . .",     ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "E&xit",         ID_FILE_EXIT
     END
diff --git a/programs/wordpad/Fr.rc b/programs/wordpad/Fr.rc
index b6ed430..1a0d6a2 100644
--- a/programs/wordpad/Fr.rc
+++ b/programs/wordpad/Fr.rc
@@ -28,6 +28,7 @@ BEGIN
         MENUITEM "Enregistrer &sous...",    ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",    ID_PRINT
+        MENUITEM "Page setup . . .",        ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "&Quitter",        ID_FILE_EXIT
     END
diff --git a/programs/wordpad/Hu.rc b/programs/wordpad/Hu.rc
index 9bd0682..e2ac6e5 100644
--- a/programs/wordpad/Hu.rc
+++ b/programs/wordpad/Hu.rc
@@ -28,6 +28,7 @@ BEGIN
         MENUITEM "Mentés má&sként...",        ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",  ID_PRINT
+        MENUITEM "Page setup . . .",      ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "&Kilépés",      ID_FILE_EXIT
     END
diff --git a/programs/wordpad/Ko.rc b/programs/wordpad/Ko.rc
index 65ad9e0..f51a8da 100644
--- a/programs/wordpad/Ko.rc
+++ b/programs/wordpad/Ko.rc
@@ -29,6 +29,7 @@ BEGIN
         MENUITEM "´Ù¸¥ À̸§À¸·Î ÀúÀå(&A)...", ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",    ID_PRINT
+        MENUITEM "Pag&e setup . . .",       ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "³ª°¡±â(&X)",         ID_FILE_EXIT
     END
diff --git a/programs/wordpad/Nl.rc b/programs/wordpad/Nl.rc
index b5a4b33..6416322 100644
--- a/programs/wordpad/Nl.rc
+++ b/programs/wordpad/Nl.rc
@@ -28,6 +28,7 @@ BEGIN
         MENUITEM "Ops&laan als...",       ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",  ID_PRINT
+        MENUITEM "Pag&e setup . . .",     ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "&Afsluiten",    ID_FILE_EXIT
     END
diff --git a/programs/wordpad/No.rc b/programs/wordpad/No.rc
index e6a2457..5c980ce 100644
--- a/programs/wordpad/No.rc
+++ b/programs/wordpad/No.rc
@@ -28,6 +28,7 @@ BEGIN
         MENUITEM "Lagre &som . . .",          ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Skriv ut . . .\tCtrl+P",   ID_PRINT
+        MENUITEM "&Utskriftformat . . .",     ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "&Avslutt",                  ID_FILE_EXIT
     END
diff --git a/programs/wordpad/Pl.rc b/programs/wordpad/Pl.rc
index 782a008..7812a79 100644
--- a/programs/wordpad/Pl.rc
+++ b/programs/wordpad/Pl.rc
@@ -29,6 +29,7 @@ BEGIN
         MENUITEM "Z&apisz jako...",         ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",    ID_PRINT
+        MENUITEM "Pag&e setup . . .",       ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "Za&koñcz",         ID_FILE_EXIT
     END
diff --git a/programs/wordpad/Ru.rc b/programs/wordpad/Ru.rc
index 453d961..ae43e35 100644
--- a/programs/wordpad/Ru.rc
+++ b/programs/wordpad/Ru.rc
@@ -28,6 +28,7 @@ BEGIN
         MENUITEM "Ñîõðàíèòü &êàê...",  ID_FILE_SAVEAS
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",  ID_PRINT
+        MENUITEM "Pag&e setup . . .",     ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "Â&ûõîä",     ID_FILE_EXIT
     END
diff --git a/programs/wordpad/Tr.rc b/programs/wordpad/Tr.rc
index c3f06c9..2cd1edf 100644
--- a/programs/wordpad/Tr.rc
+++ b/programs/wordpad/Tr.rc
@@ -28,8 +28,10 @@ BEGIN
         MENUITEM "&Aç...\tCtrl+O",        ID_FILE_OPEN
         MENUITEM "&Kaydet\tCtrl+S",       ID_FILE_SAVE
         MENUITEM "&Farklý Kaydet...",     ID_FILE_SAVEAS
+        MENUITEM "Pag&e setup . . .",     ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "&Print . . .\tCtrl+P",  ID_PRINT
+        MENUITEM "Pag&e setup . . .",     ID_PRINTSETUP
         MENUITEM SEPARATOR
         MENUITEM "&Çýk",          ID_FILE_EXIT
     END
diff --git a/programs/wordpad/resource.h b/programs/wordpad/resource.h
index ea7b52a..7915568 100644
--- a/programs/wordpad/resource.h
+++ b/programs/wordpad/resource.h
@@ -30,9 +30,10 @@
 
 #define ID_PRINT 1010
 #define ID_PREVIEW 1011
+#define ID_PRINTSETUP 1012
 
-#define ID_FIND 1012
-#define ID_FIND_NEXT 1013
+#define ID_FIND 1013
+#define ID_FIND_NEXT 1014
 
 #define ID_ALIGN_LEFT 1100
 #define ID_ALIGN_CENTER 1101
diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c
index 5b84b25..bb744c2 100644
--- a/programs/wordpad/wordpad.c
+++ b/programs/wordpad/wordpad.c
@@ -915,6 +915,15 @@ static LONG devunits_to_twips(int units, int dpi)
     return (LONG)ret;
 }
 
+static int centmm_to_twips(int mm)
+{
+    return MulDiv(mm, 567, 1000);
+}
+
+static RECT margins;
+
+static HGLOBAL devMode;
+
 static void print(LPPRINTDLGW pd)
 {
     FORMATRANGE fr;
@@ -929,10 +938,10 @@ static void print(LPPRINTDLGW pd)
     width = devunits_to_twips(GetDeviceCaps(fr.hdc, PHYSICALWIDTH), dpiX);
     height = devunits_to_twips(GetDeviceCaps(fr.hdc, PHYSICALHEIGHT), dpiY);
 
-    fr.rc.left = devunits_to_twips(GetDeviceCaps(fr.hdc, PHYSICALOFFSETX), dpiX);
-    fr.rc.right = width - (fr.rc.left * 2);
-    fr.rc.top = devunits_to_twips(GetDeviceCaps(fr.hdc, PHYSICALOFFSETY), dpiY);
-    fr.rc.bottom = height - (fr.rc.top * 2);
+    fr.rc.left = centmm_to_twips(margins.left);
+    fr.rc.right = width - centmm_to_twips(margins.right);
+    fr.rc.top = centmm_to_twips(margins.top);
+    fr.rc.bottom = height - centmm_to_twips(margins.bottom);
     fr.rcPage.left = 0;
     fr.rcPage.right = width;
     fr.rcPage.top = 0;
@@ -978,6 +987,32 @@ static void print(LPPRINTDLGW pd)
     SendMessageW(hEditorWnd, EM_FORMATRANGE, FALSE, 0);
 }
 
+static void registry_read_margins(void)
+{
+    margins.top = 2500;
+    margins.bottom = 2500;
+    margins.left = 3100;
+    margins.right = 3100;
+}
+
+static void dialog_printsetup(void)
+{
+    PAGESETUPDLGW ps;
+
+    ZeroMemory(&ps, sizeof(ps));
+    ps.lStructSize = sizeof(ps);
+    ps.hwndOwner = hMainWnd;
+    ps.Flags = PSD_INHUNDREDTHSOFMILLIMETERS | PSD_MARGINS;
+    ps.rtMargin = margins;
+    ps.hDevMode = devMode;
+
+    if(PageSetupDlgW(&ps))
+    {
+        margins = ps.rtMargin;
+        devMode = ps.hDevMode;
+    }
+}
+
 static void dialog_print(void)
 {
     PRINTDLGW pd;
@@ -990,13 +1025,17 @@ static void dialog_print(void)
     pd.Flags = PD_RETURNDC | PD_USEDEVMODECOPIESANDCOLLATE;
     pd.nMinPage = 1;
     pd.nMaxPage = 1;
+    pd.hDevMode = devMode;
 
     SendMessageW(hEditorWnd, EM_GETSEL, (WPARAM)&from, (LPARAM)&to);
     if(from == to)
         pd.Flags |= PD_NOSELECTION;
 
     if(PrintDlgW(&pd))
+    {
+        devMode = pd.hDevMode;
         print(&pd);
+    }
 }
 
 static void HandleCommandLine(LPWSTR cmdline)
@@ -1660,6 +1699,7 @@ static LRESULT OnCreate( HWND hWnd, WPARAM wParam, LPARAM lParam)
 
     registry_read_filelist(hWnd);
     registry_read_options();
+    registry_read_margins();
     DragAcceptFiles(hWnd, TRUE);
 
     return 0;
@@ -1834,6 +1874,10 @@ static LRESULT OnCommand( HWND hWnd, WPARAM wParam, LPARAM lParam)
         }
         break;
 
+    case ID_PRINTSETUP:
+        dialog_printsetup();
+        break;
+
     case ID_FORMAT_BOLD:
     case ID_FORMAT_ITALIC:
     case ID_FORMAT_UNDERLINE:




More information about the wine-cvs mailing list