00001
00002
00003
00004
00005
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
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
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
00066 static GString *reqPasswordCbk(void *data, GBool again);
00067
00068
00069 static void actionCbk(void *data, char *action);
00070
00071
00072 static void keyPressCbk(void *data, char *s, KeySym key,
00073 Guint modifiers);
00074 static void mouseCbk(void *data, XEvent *event);
00075
00076
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
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
00133 void initAboutDialog();
00134
00135
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
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
00150 void initSaveAsDialog();
00151 void setSaveAsDialogDir(char *dir);
00152 void mapSaveAsDialog();
00153 static void saveAsOkCbk(Widget widget, XtPointer ptr,
00154 XtPointer callData);
00155
00156
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
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;
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