1 //========================================================================
5 // Copyright 2002-2003 Glyph & Cog, LLC
7 //========================================================================
14 #ifdef USE_GCC_PRAGMAS
18 #define Object XtObject
24 #if (XmVERSION <= 1) && !defined(__sgi)
25 #define DISABLE_OUTLINE
28 #if (XmVERSION >= 2 && !defined(LESSTIF_VERSION))
29 # define USE_COMBO_BOX 1
40 //------------------------------------------------------------------------
42 // NB: this must match the defn of zoomMenuBtnInfo in XPDFViewer.cc
43 #define nZoomMenuItems 10
45 //------------------------------------------------------------------------
47 //------------------------------------------------------------------------
52 XPDFViewer(XPDFApp *appA, GString *fileName,
53 int pageA, GString *destName,
54 GString *ownerPassword, GString *userPassword);
55 GBool isOk() { return ok; }
58 void open(GString *fileName, int pageA, GString *destName);
62 Widget getWindow() { return win; }
66 //----- load / display
67 GBool loadFile(GString *fileName, GString *ownerPassword = NULL,
68 GString *userPassword = NULL);
69 void displayPage(int pageA, double zoomA, int rotateA,
70 GBool scrollToTop, GBool addToHist);
71 void displayDest(LinkDest *dest, double zoomA, int rotateA,
73 void getPageAndDest(int pageA, GString *destName,
74 int *pageOut, LinkDest **destOut);
76 //----- password dialog
77 static GString *reqPasswordCbk(void *data, GBool again);
80 static void actionCbk(void *data, char *action);
82 //----- keyboard/mouse input
83 static void keyPressCbk(void *data, char *s, KeySym key,
85 static void mouseCbk(void *data, XEvent *event);
87 //----- GUI code: main window
92 void setZoomIdx(int idx);
93 void setZoomVal(double z);
94 static void prevPageCbk(Widget widget, XtPointer ptr,
96 static void prevTenPageCbk(Widget widget, XtPointer ptr,
98 static void nextPageCbk(Widget widget, XtPointer ptr,
100 static void nextTenPageCbk(Widget widget, XtPointer ptr,
102 static void backCbk(Widget widget, XtPointer ptr,
104 static void forwardCbk(Widget widget, XtPointer ptr,
107 static void zoomComboBoxCbk(Widget widget, XtPointer ptr,
110 static void zoomMenuCbk(Widget widget, XtPointer ptr,
113 static void findCbk(Widget widget, XtPointer ptr,
115 static void printCbk(Widget widget, XtPointer ptr,
117 static void aboutCbk(Widget widget, XtPointer ptr,
119 static void quitCbk(Widget widget, XtPointer ptr,
121 static void openCbk(Widget widget, XtPointer ptr,
123 static void openInNewWindowCbk(Widget widget, XtPointer ptr,
125 static void reloadCbk(Widget widget, XtPointer ptr,
127 static void saveAsCbk(Widget widget, XtPointer ptr,
129 static void rotateCCWCbk(Widget widget, XtPointer ptr,
131 static void rotateCWCbk(Widget widget, XtPointer ptr,
133 static void closeCbk(Widget widget, XtPointer ptr,
135 static void closeMsgCbk(Widget widget, XtPointer ptr,
137 static void pageNumCbk(Widget widget, XtPointer ptr,
139 static void updateCbk(void *data, GString *fileName,
140 int pageNum, int numPages, char *linkString);
142 //----- GUI code: outline
143 #ifndef DISABLE_OUTLINE
145 void setupOutlineItems(GList *items, Widget parent, UnicodeMap *uMap);
146 static void outlineSelectCbk(Widget widget, XtPointer ptr,
150 //----- GUI code: "about" dialog
151 void initAboutDialog();
153 //----- GUI code: "open" dialog
154 void initOpenDialog();
155 void setOpenDialogDir(char *dir);
156 void mapOpenDialog(GBool openInNewWindowA);
157 static void openOkCbk(Widget widget, XtPointer ptr,
160 //----- GUI code: "find" dialog
161 void initFindDialog();
162 static void findFindCbk(Widget widget, XtPointer ptr,
164 void doFind(GBool next);
165 static void findCloseCbk(Widget widget, XtPointer ptr,
168 //----- GUI code: "save as" dialog
169 void initSaveAsDialog();
170 void setSaveAsDialogDir(char *dir);
171 void mapSaveAsDialog();
172 static void saveAsOkCbk(Widget widget, XtPointer ptr,
175 //----- GUI code: "print" dialog
176 void initPrintDialog();
177 void setupPrintDialog();
178 static void printWithCmdBtnCbk(Widget widget, XtPointer ptr,
180 static void printToFileBtnCbk(Widget widget, XtPointer ptr,
182 static void printPrintCbk(Widget widget, XtPointer ptr,
185 //----- GUI code: password dialog
186 void initPasswordDialog();
187 static void passwordTextVerifyCbk(Widget widget, XtPointer ptr,
189 static void passwordOkCbk(Widget widget, XtPointer ptr,
191 static void passwordCancelCbk(Widget widget, XtPointer ptr,
193 void getPassword(GBool again);
195 //----- Motif support
196 XmFontList createFontList(char *xlfd);
203 Widget win; // top-level window
206 #ifndef DISABLE_OUTLINE
207 Widget outlineScroll;
209 Widget *outlineLabels;
210 int outlineLabelsLength;
211 int outlineLabelsSize;
216 Widget prevTenPageBtn;
219 Widget nextTenPageBtn;
222 Widget pageCountLabel;
227 Widget zoomMenuBtns[nZoomMenuItems];
237 XmFontList aboutBigFont, aboutVersionFont, aboutFixedFont;
240 GBool openInNewWindow;
248 Widget printWithCmdBtn;
249 Widget printToFileBtn;
251 Widget printFileText;
252 Widget printFirstPage;
253 Widget printLastPage;
255 Widget passwordDialog;