From 6112dfe4b45b0305c7a6f61bd8a847f69f892cbb Mon Sep 17 00:00:00 2001 From: Martin Kretzschmar Date: Mon, 31 Mar 2003 16:45:09 +0000 Subject: Initial revision --- (limited to 'pdf/xpdf/XPDFViewer.h') diff --git a/pdf/xpdf/XPDFViewer.h b/pdf/xpdf/XPDFViewer.h new file mode 100644 index 0000000..77875c4 --- /dev/null +++ b/pdf/xpdf/XPDFViewer.h @@ -0,0 +1,236 @@ +//======================================================================== +// +// XPDFViewer.h +// +// Copyright 2002 Glyph & Cog, LLC +// +//======================================================================== + +#ifndef XPDFVIEWER_H +#define XPDFVIEWER_H + +#include + +#ifdef USE_GCC_PRAGMAS +#pragma interface +#endif + +#define Object XtObject +#include +#undef Object +#include "gtypes.h" +#include "XPDFCore.h" + +#if XmVERSION <= 1 +#define DISABLE_OUTLINE +#endif + +class GString; +class GList; +class UnicodeMap; +class LinkDest; +class XPDFApp; + +//------------------------------------------------------------------------ +// XPDFViewer +//------------------------------------------------------------------------ + +class XPDFViewer { +public: + + XPDFViewer(XPDFApp *appA, GString *fileName, + int pageA, GString *destName, + GString *ownerPassword, GString *userPassword); + GBool isOk() { return ok; } + ~XPDFViewer(); + + void open(GString *fileName, int pageA, GString *destName); + void clear(); + + Widget getWindow() { return win; } + +private: + + //----- load / display + GBool loadFile(GString *fileName, GString *ownerPassword = NULL, + GString *userPassword = NULL); + void reloadFile(); + void displayPage(int pageA, int zoomA, int rotateA, + GBool scrollToTop, GBool addToHist); + void displayDest(LinkDest *dest, int zoomA, int rotateA, + GBool addToHist); + void getPageAndDest(int pageA, GString *destName, + int *pageOut, LinkDest **destOut); + + //----- password dialog + static GString *reqPasswordCbk(void *data, GBool again); + + //----- actions + static void actionCbk(void *data, char *action); + + //----- keyboard/mouse input + static void keyPressCbk(void *data, char *s, KeySym key, + Guint modifiers); + static void mouseCbk(void *data, XEvent *event); + + //----- GUI code: main window + void initWindow(); + void mapWindow(); + void closeWindow(); + Widget getZoomMenuBtn(int z); + static void prevPageCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void prevTenPageCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void nextPageCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void nextTenPageCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void backCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void forwardCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void zoomMenuCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void findCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void printCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void aboutCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void quitCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void openCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void openInNewWindowCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void reloadCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void saveAsCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void rotateCCWCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void rotateCWCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void closeCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void closeMsgCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void pageNumCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void updateCbk(void *data, GString *fileName, + int pageNum, int numPages, char *linkLabel); + + //----- GUI code: outline +#ifndef DISABLE_OUTLINE + void setupOutline(); + void setupOutlineItems(GList *items, Widget parent, UnicodeMap *uMap); + static void outlineSelectCbk(Widget widget, XtPointer ptr, + XtPointer callData); +#endif + + //----- GUI code: "about" dialog + void initAboutDialog(); + + //----- GUI code: "open" dialog + void initOpenDialog(); + void setOpenDialogDir(char *dir); + void mapOpenDialog(GBool openInNewWindowA); + static void openOkCbk(Widget widget, XtPointer ptr, + XtPointer callData); + + //----- GUI code: "find" dialog + void initFindDialog(); + static void findFindCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void findCloseCbk(Widget widget, XtPointer ptr, + XtPointer callData); + + //----- GUI code: "save as" dialog + void initSaveAsDialog(); + void setSaveAsDialogDir(char *dir); + void mapSaveAsDialog(); + static void saveAsOkCbk(Widget widget, XtPointer ptr, + XtPointer callData); + + //----- GUI code: "print" dialog + void initPrintDialog(); + void setupPrintDialog(); + static void printWithCmdBtnCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void printToFileBtnCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void printPrintCbk(Widget widget, XtPointer ptr, + XtPointer callData); + + //----- GUI code: password dialog + void initPasswordDialog(); + static void passwordTextVerifyCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void passwordOkCbk(Widget widget, XtPointer ptr, + XtPointer callData); + static void passwordCancelCbk(Widget widget, XtPointer ptr, + XtPointer callData); + void getPassword(GBool again); + + XPDFApp *app; + GBool ok; + + Display *display; + int screenNum; + Widget win; // top-level window + Widget form; + Widget panedWin; +#ifndef DISABLE_OUTLINE + Widget outlineScroll; + Widget outlineTree; + Widget *outlineLabels; + int outlineLabelsLength; + int outlineLabelsSize; +#endif + XPDFCore *core; + Widget toolBar; + Widget backBtn; + Widget prevTenPageBtn; + Widget prevPageBtn; + Widget nextPageBtn; + Widget nextTenPageBtn; + Widget forwardBtn; + Widget pageNumText; + Widget pageCountLabel; + Widget zoomMenu; + Widget zoomMenuBtns[maxZoom - minZoom + 1 + 2]; + Widget findBtn; + Widget printBtn; + Widget aboutBtn; + Widget linkLabel; + Widget quitBtn; + Widget popupMenu; + + Widget aboutDialog; + XmFontList aboutBigFont, aboutVersionFont, aboutFixedFont; + + Widget openDialog; + GBool openInNewWindow; + + Widget findDialog; + Widget findText; + + Widget saveAsDialog; + + Widget printDialog; + Widget printWithCmdBtn; + Widget printToFileBtn; + Widget printCmdText; + Widget printFileText; + Widget printFirstPage; + Widget printLastPage; + + Widget passwordDialog; + Widget passwordMsg; + Widget passwordText; + int passwordDone; + GString *password; +}; + +#endif -- cgit v0.9.1