diff options
author | Robin Watts <robin.watts@artifex.com> | 2012-04-17 00:40:43 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2012-04-17 09:25:03 +0100 |
commit | 4069e52998d2cb2b54e65e8a8b418868ffa73bee (patch) | |
tree | 423024feca20fdb07224ecb40c807dbb3fbd4644 /apps | |
parent | 00851c1b04215f2e5688836be57e4efdb198483b (diff) | |
download | mupdf-4069e52998d2cb2b54e65e8a8b418868ffa73bee.tar.xz |
Add Meta interface to fz_document.
Use this to reintroduce "Document Properties..." in mupdf viewer.
Diffstat (limited to 'apps')
-rw-r--r-- | apps/win_main.c | 84 | ||||
-rw-r--r-- | apps/win_res.rc | 36 |
2 files changed, 120 insertions, 0 deletions
diff --git a/apps/win_main.c b/apps/win_main.c index 37864e19..cc71a120 100644 --- a/apps/win_main.c +++ b/apps/win_main.c @@ -20,6 +20,7 @@ #endif #define ID_ABOUT 0x1000 +#define ID_DOCINFO 0x1001 static HWND hwndframe = NULL; static HWND hwndview = NULL; @@ -165,6 +166,83 @@ char *winpassword(pdfapp_t *app, char *filename) } INT CALLBACK +dloginfoproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + char buf[256]; + fz_document *doc = gapp.doc; + + switch(message) + { + case WM_INITDIALOG: + + SetDlgItemTextW(hwnd, 0x10, wbuf); + + if (fz_meta(doc, FZ_META_FORMAT_INFO, buf, 256) < 0) + { + SetDlgItemTextA(hwnd, 0x11, "Unknown"); + SetDlgItemTextA(hwnd, 0x12, "None"); + SetDlgItemTextA(hwnd, 0x13, "n/a"); + return TRUE; + } + + SetDlgItemTextA(hwnd, 0x11, buf); + + if (fz_meta(doc, FZ_META_CRYPT_INFO, buf, 256) == 0) + { + SetDlgItemTextA(hwnd, 0x12, buf); + } + else + { + SetDlgItemTextA(hwnd, 0x12, "None"); + } + buf[0] = 0; + if (fz_meta(doc, FZ_META_HAS_PERMISSION, NULL, FZ_PERMISSION_PRINT) == 0) + strcat(buf, "print, "); + if (fz_meta(doc, FZ_META_HAS_PERMISSION, NULL, FZ_PERMISSION_CHANGE) == 0) + strcat(buf, "modify, "); + if (fz_meta(doc, FZ_META_HAS_PERMISSION, NULL, FZ_PERMISSION_COPY) == 0) + strcat(buf, "copy, "); + if (fz_meta(doc, FZ_META_HAS_PERMISSION, NULL, FZ_PERMISSION_NOTES) == 0) + strcat(buf, "annotate, "); + if (strlen(buf) > 2) + buf[strlen(buf)-2] = 0; + else + strcpy(buf, "None"); + SetDlgItemTextA(hwnd, 0x13, buf); + +#define SETUTF8(ID, STRING) \ + { \ + *(char **)buf = STRING; \ + if (fz_meta(doc, FZ_META_INFO, buf, 256) <= 0) \ + buf[0] = 0; \ + SetDlgItemTextA(hwnd, ID, buf); \ + } + + SETUTF8(0x20, "Title"); + SETUTF8(0x21, "Author"); + SETUTF8(0x22, "Subject"); + SETUTF8(0x23, "Keywords"); + SETUTF8(0x24, "Creator"); + SETUTF8(0x25, "Producer"); + SETUTF8(0x26, "CreationDate"); + SETUTF8(0x27, "ModDate"); + return TRUE; + + case WM_COMMAND: + EndDialog(hwnd, 1); + return TRUE; + } + return FALSE; +} + +void info() +{ + int code = DialogBoxW(NULL, L"IDD_DLOGINFO", hwndframe, dloginfoproc); + if (code <= 0) + winerror(&gapp, "cannot create info dialog"); +} + +INT CALLBACK dlogaboutproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) @@ -287,6 +365,7 @@ void winopen() menu = GetSystemMenu(hwndframe, 0); AppendMenuW(menu, MF_SEPARATOR, 0, NULL); AppendMenuW(menu, MF_STRING, ID_ABOUT, L"About MuPDF..."); + AppendMenuW(menu, MF_STRING, ID_DOCINFO, L"Document Properties..."); SetCursor(arrowcurs); } @@ -600,6 +679,11 @@ frameproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) winhelp(&gapp); return 0; } + if (wParam == ID_DOCINFO) + { + info(); + return 0; + } if (wParam == SC_MAXIMIZE) gapp.shrinkwrap = 0; break; diff --git a/apps/win_res.rc b/apps/win_res.rc index 75b94ebe..f87de7d0 100644 --- a/apps/win_res.rc +++ b/apps/win_res.rc @@ -13,6 +13,42 @@ BEGIN LTEXT "Password:", 5, 17, 22, 40, 10, 0x00000 END +IDD_DLOGINFO DIALOG 50, 50, 300, 145 +STYLE 128 | 0x80000000 +CAPTION " Document Properties " +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "Okay", 1, 300-10-50, 145-7-14, 50, 14, 0x50010001 + + LTEXT "File:", -1, 10, 10, 50, 10, 0 + LTEXT "Format:", -1, 10, 20, 50, 10, 0 + LTEXT "Encryption:", -1, 10, 30, 50, 10, 0 + LTEXT "Permissions:", -1, 10, 40, 50, 10, 0 + + LTEXT "<file", 0x10, 60, 10, 230, 10, 0 + LTEXT "<version", 0x11, 60, 20, 230, 10, 0 + LTEXT "<encryption", 0x12, 60, 30, 230, 10, 0 + LTEXT "<permissions", 0x13, 60, 40, 230, 10, 0 + + LTEXT "Title:", -1, 10, 55, 50, 10, 0 + LTEXT "Author:", -1, 10, 65, 50, 10, 0 + LTEXT "Subject:", -1, 10, 75, 50, 10, 0 + LTEXT "Keywords:", -1, 10, 85, 50, 10, 0 + LTEXT "Creator:", -1, 10, 95, 50, 10, 0 + LTEXT "Producer:", -1, 10, 105, 50, 10, 0 + LTEXT "Created:", -1, 10, 115, 50, 10, 0 + LTEXT "Modified:", -1, 10, 125, 50, 10, 0 + + LTEXT "", 0x20, 60, 55, 230, 10, 0 + LTEXT "", 0x21, 60, 65, 230, 10, 0 + LTEXT "", 0x22, 60, 75, 230, 10, 0 + LTEXT "", 0x23, 60, 85, 230, 10, 0 + LTEXT "", 0x24, 60, 95, 230, 10, 0 + LTEXT "", 0x25, 60, 105, 230, 10, 0 + LTEXT "", 0x26, 60, 115, 100, 10, 0 + LTEXT "", 0x27, 60, 125, 100, 10, 0 +END + IDD_DLOGABOUT DIALOG 50, 50, 200, 220 STYLE 128 | 0x80000000 CAPTION " About MuPDF " |