filters

XPDFViewer.h

00001 //========================================================================
00002 //
00003 // XPDFViewer.h
00004 //
00005 // Copyright 2002 Glyph & Cog, LLC
00006 //
00007 //========================================================================
00008 
00009 #ifndef XPDFVIEWER_H
00010 #define XPDFVIEWER_H
00011 
00012 #include <aconf.h>
00013 
00014 #ifdef USE_GCC_PRAGMAS
00015 #pragma interface
00016 #endif
00017 
00018 #define Object XtObject
00019 #include <Xm/XmAll.h>
00020 #undef Object
00021 #include "gtypes.h"
00022 #include "XPDFCore.h"
00023 
00024 #if XmVERSION <= 1
00025 #define DISABLE_OUTLINE
00026 #endif
00027 
00028 class GString;
00029 class GList;
00030 class UnicodeMap;
00031 class LinkDest;
00032 class XPDFApp;
00033 
00034 //------------------------------------------------------------------------
00035 // XPDFViewer
00036 //------------------------------------------------------------------------
00037 
00038 class XPDFViewer {
00039 public:
00040 
00041   XPDFViewer(XPDFApp *appA, GString *fileName,
00042          int pageA, GString *destName,
00043          GString *ownerPassword, GString *userPassword);
00044   GBool isOk() { return ok; }
00045   ~XPDFViewer();
00046 
00047   void open(GString *fileName, int pageA, GString *destName);
00048   void clear();
00049 
00050   Widget getWindow() { return win; }
00051 
00052 private:
00053 
00054   //----- load / display
00055   GBool loadFile(GString *fileName, GString *ownerPassword = NULL,
00056          GString *userPassword = NULL);
00057   void reloadFile();
00058   void displayPage(int pageA, int zoomA, int rotateA,
00059                    GBool scrollToTop, GBool addToHist);
00060   void displayDest(LinkDest *dest, int zoomA, int rotateA,
00061            GBool addToHist);
00062   void getPageAndDest(int pageA, GString *destName,
00063               int *pageOut, LinkDest **destOut);
00064 
00065   //----- password dialog
00066   static GString *reqPasswordCbk(void *data, GBool again);
00067 
00068   //----- actions
00069   static void actionCbk(void *data, char *action);
00070 
00071   //----- keyboard/mouse input
00072   static void keyPressCbk(void *data, char *s, KeySym key,
00073               Guint modifiers);
00074   static void mouseCbk(void *data, XEvent *event);
00075 
00076   //----- GUI code: main window
00077   void initWindow();
00078   void mapWindow();
00079   void closeWindow();
00080   Widget getZoomMenuBtn(int z);
00081   static void prevPageCbk(Widget widget, XtPointer ptr,
00082               XtPointer callData);
00083   static void prevTenPageCbk(Widget widget, XtPointer ptr,
00084                  XtPointer callData);
00085   static void nextPageCbk(Widget widget, XtPointer ptr,
00086               XtPointer callData);
00087   static void nextTenPageCbk(Widget widget, XtPointer ptr,
00088                  XtPointer callData);
00089   static void backCbk(Widget widget, XtPointer ptr,
00090               XtPointer callData);
00091   static void forwardCbk(Widget widget, XtPointer ptr,
00092              XtPointer callData);
00093   static void zoomMenuCbk(Widget widget, XtPointer ptr,
00094               XtPointer callData);
00095   static void findCbk(Widget widget, XtPointer ptr,
00096               XtPointer callData);
00097   static void printCbk(Widget widget, XtPointer ptr,
00098                XtPointer callData);
00099   static void aboutCbk(Widget widget, XtPointer ptr,
00100                XtPointer callData);
00101   static void quitCbk(Widget widget, XtPointer ptr,
00102               XtPointer callData);
00103   static void openCbk(Widget widget, XtPointer ptr,
00104               XtPointer callData);
00105   static void openInNewWindowCbk(Widget widget, XtPointer ptr,
00106                  XtPointer callData);
00107   static void reloadCbk(Widget widget, XtPointer ptr,
00108             XtPointer callData);
00109   static void saveAsCbk(Widget widget, XtPointer ptr,
00110             XtPointer callData);
00111   static void rotateCCWCbk(Widget widget, XtPointer ptr,
00112                XtPointer callData);
00113   static void rotateCWCbk(Widget widget, XtPointer ptr,
00114               XtPointer callData);
00115   static void closeCbk(Widget widget, XtPointer ptr,
00116                XtPointer callData);
00117   static void closeMsgCbk(Widget widget, XtPointer ptr,
00118               XtPointer callData);
00119   static void pageNumCbk(Widget widget, XtPointer ptr,
00120              XtPointer callData);
00121   static void updateCbk(void *data, GString *fileName,
00122             int pageNum, int numPages, char *linkLabel);
00123 
00124   //----- GUI code: outline
00125 #ifndef DISABLE_OUTLINE
00126   void setupOutline();
00127   void setupOutlineItems(GList *items, Widget parent, UnicodeMap *uMap);
00128   static void outlineSelectCbk(Widget widget, XtPointer ptr,
00129                    XtPointer callData);
00130 #endif
00131 
00132   //----- GUI code: "about" dialog
00133   void initAboutDialog();
00134 
00135   //----- GUI code: "open" dialog
00136   void initOpenDialog();
00137   void setOpenDialogDir(char *dir);
00138   void mapOpenDialog(GBool openInNewWindowA);
00139   static void openOkCbk(Widget widget, XtPointer ptr,
00140             XtPointer callData);
00141 
00142   //----- GUI code: "find" dialog
00143   void initFindDialog();
00144   static void findFindCbk(Widget widget, XtPointer ptr,
00145               XtPointer callData);
00146   static void findCloseCbk(Widget widget, XtPointer ptr,
00147                XtPointer callData);
00148 
00149   //----- GUI code: "save as" dialog
00150   void initSaveAsDialog();
00151   void setSaveAsDialogDir(char *dir);
00152   void mapSaveAsDialog();
00153   static void saveAsOkCbk(Widget widget, XtPointer ptr,
00154               XtPointer callData);
00155 
00156   //----- GUI code: "print" dialog
00157   void initPrintDialog();
00158   void setupPrintDialog();
00159   static void printWithCmdBtnCbk(Widget widget, XtPointer ptr,
00160                  XtPointer callData);
00161   static void printToFileBtnCbk(Widget widget, XtPointer ptr,
00162                 XtPointer callData);
00163   static void printPrintCbk(Widget widget, XtPointer ptr,
00164                 XtPointer callData);
00165 
00166   //----- GUI code: password dialog
00167   void initPasswordDialog();
00168   static void passwordTextVerifyCbk(Widget widget, XtPointer ptr,
00169                     XtPointer callData);
00170   static void passwordOkCbk(Widget widget, XtPointer ptr,
00171                 XtPointer callData);
00172   static void passwordCancelCbk(Widget widget, XtPointer ptr,
00173                 XtPointer callData);
00174   void getPassword(GBool again);
00175 
00176   XPDFApp *app;
00177   GBool ok;
00178 
00179   Display *display;
00180   int screenNum;
00181   Widget win;           // top-level window
00182   Widget form;
00183   Widget panedWin;
00184 #ifndef DISABLE_OUTLINE
00185   Widget outlineScroll;
00186   Widget outlineTree;
00187   Widget *outlineLabels;
00188   int outlineLabelsLength;
00189   int outlineLabelsSize;
00190 #endif
00191   XPDFCore *core;
00192   Widget toolBar;
00193   Widget backBtn;
00194   Widget prevTenPageBtn;
00195   Widget prevPageBtn;
00196   Widget nextPageBtn;
00197   Widget nextTenPageBtn;
00198   Widget forwardBtn;
00199   Widget pageNumText;
00200   Widget pageCountLabel;
00201   Widget zoomMenu;
00202   Widget zoomMenuBtns[maxZoom - minZoom + 1 + 2];
00203   Widget findBtn;
00204   Widget printBtn;
00205   Widget aboutBtn;
00206   Widget linkLabel;
00207   Widget quitBtn;
00208   Widget popupMenu;
00209 
00210   Widget aboutDialog;
00211   XmFontList aboutBigFont, aboutVersionFont, aboutFixedFont;
00212 
00213   Widget openDialog;
00214   GBool openInNewWindow;
00215 
00216   Widget findDialog;
00217   Widget findText;
00218 
00219   Widget saveAsDialog;
00220 
00221   Widget printDialog;
00222   Widget printWithCmdBtn;
00223   Widget printToFileBtn;
00224   Widget printCmdText;
00225   Widget printFileText;
00226   Widget printFirstPage;
00227   Widget printLastPage;
00228 
00229   Widget passwordDialog;
00230   Widget passwordMsg;
00231   Widget passwordText;
00232   int passwordDone;
00233   GString *password;
00234 };
00235 
00236 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys