XPDFViewer.h
1//========================================================================
2//
3// XPDFViewer.h
4//
5// Copyright 2002 Glyph & Cog, LLC
6//
7//========================================================================
8
9#ifndef XPDFVIEWER_H
10#define XPDFVIEWER_H
11
12#include <aconf.h>
13
14#ifdef USE_GCC_PRAGMAS
15#pragma interface
16#endif
17
18#define Object XtObject
19#include <Xm/XmAll.h>
20#undef Object
21#include "gtypes.h"
22#include "XPDFCore.h"
23
24#if XmVERSION <= 1
25#define DISABLE_OUTLINE
26#endif
27
28class GString;
29class GList;
30class UnicodeMap;
31class LinkDest;
32class XPDFApp;
33
34//------------------------------------------------------------------------
35// XPDFViewer
36//------------------------------------------------------------------------
37
38class XPDFViewer {
39public:
40
41 XPDFViewer(XPDFApp *appA, GString *fileName,
42 int pageA, GString *destName,
43 GString *ownerPassword, GString *userPassword);
44 GBool isOk() { return ok; }
45 ~XPDFViewer();
46
47 void open(GString *fileName, int pageA, GString *destName);
48 void clear();
49
50 Widget getWindow() { return win; }
51
52private:
53
54 //----- load / display
55 GBool loadFile(GString *fileName, GString *ownerPassword = NULL,
56 GString *userPassword = NULL);
57 void reloadFile();
58 void displayPage(int pageA, int zoomA, int rotateA,
59 GBool scrollToTop, GBool addToHist);
60 void displayDest(LinkDest *dest, int zoomA, int rotateA,
61 GBool addToHist);
62 void getPageAndDest(int pageA, GString *destName,
63 int *pageOut, LinkDest **destOut);
64
65 //----- password dialog
66 static GString *reqPasswordCbk(void *data, GBool again);
67
68 //----- actions
69 static void actionCbk(void *data, char *action);
70
71 //----- keyboard/mouse input
72 static void keyPressCbk(void *data, char *s, KeySym key,
73 Guint modifiers);
74 static void mouseCbk(void *data, XEvent *event);
75
76 //----- GUI code: main window
77 void initWindow();
78 void mapWindow();
79 void closeWindow();
80 Widget getZoomMenuBtn(int z);
81 static void prevPageCbk(Widget widget, XtPointer ptr,
82 XtPointer callData);
83 static void prevTenPageCbk(Widget widget, XtPointer ptr,
84 XtPointer callData);
85 static void nextPageCbk(Widget widget, XtPointer ptr,
86 XtPointer callData);
87 static void nextTenPageCbk(Widget widget, XtPointer ptr,
88 XtPointer callData);
89 static void backCbk(Widget widget, XtPointer ptr,
90 XtPointer callData);
91 static void forwardCbk(Widget widget, XtPointer ptr,
92 XtPointer callData);
93 static void zoomMenuCbk(Widget widget, XtPointer ptr,
94 XtPointer callData);
95 static void findCbk(Widget widget, XtPointer ptr,
96 XtPointer callData);
97 static void printCbk(Widget widget, XtPointer ptr,
98 XtPointer callData);
99 static void aboutCbk(Widget widget, XtPointer ptr,
100 XtPointer callData);
101 static void quitCbk(Widget widget, XtPointer ptr,
102 XtPointer callData);
103 static void openCbk(Widget widget, XtPointer ptr,
104 XtPointer callData);
105 static void openInNewWindowCbk(Widget widget, XtPointer ptr,
106 XtPointer callData);
107 static void reloadCbk(Widget widget, XtPointer ptr,
108 XtPointer callData);
109 static void saveAsCbk(Widget widget, XtPointer ptr,
110 XtPointer callData);
111 static void rotateCCWCbk(Widget widget, XtPointer ptr,
112 XtPointer callData);
113 static void rotateCWCbk(Widget widget, XtPointer ptr,
114 XtPointer callData);
115 static void closeCbk(Widget widget, XtPointer ptr,
116 XtPointer callData);
117 static void closeMsgCbk(Widget widget, XtPointer ptr,
118 XtPointer callData);
119 static void pageNumCbk(Widget widget, XtPointer ptr,
120 XtPointer callData);
121 static void updateCbk(void *data, GString *fileName,
122 int pageNum, int numPages, char *linkLabel);
123
124 //----- GUI code: outline
125#ifndef DISABLE_OUTLINE
126 void setupOutline();
127 void setupOutlineItems(GList *items, Widget parent, UnicodeMap *uMap);
128 static void outlineSelectCbk(Widget widget, XtPointer ptr,
129 XtPointer callData);
130#endif
131
132 //----- GUI code: "about" dialog
133 void initAboutDialog();
134
135 //----- GUI code: "open" dialog
136 void initOpenDialog();
137 void setOpenDialogDir(char *dir);
138 void mapOpenDialog(GBool openInNewWindowA);
139 static void openOkCbk(Widget widget, XtPointer ptr,
140 XtPointer callData);
141
142 //----- GUI code: "find" dialog
143 void initFindDialog();
144 static void findFindCbk(Widget widget, XtPointer ptr,
145 XtPointer callData);
146 static void findCloseCbk(Widget widget, XtPointer ptr,
147 XtPointer callData);
148
149 //----- GUI code: "save as" dialog
150 void initSaveAsDialog();
151 void setSaveAsDialogDir(char *dir);
152 void mapSaveAsDialog();
153 static void saveAsOkCbk(Widget widget, XtPointer ptr,
154 XtPointer callData);
155
156 //----- GUI code: "print" dialog
157 void initPrintDialog();
158 void setupPrintDialog();
159 static void printWithCmdBtnCbk(Widget widget, XtPointer ptr,
160 XtPointer callData);
161 static void printToFileBtnCbk(Widget widget, XtPointer ptr,
162 XtPointer callData);
163 static void printPrintCbk(Widget widget, XtPointer ptr,
164 XtPointer callData);
165
166 //----- GUI code: password dialog
167 void initPasswordDialog();
168 static void passwordTextVerifyCbk(Widget widget, XtPointer ptr,
169 XtPointer callData);
170 static void passwordOkCbk(Widget widget, XtPointer ptr,
171 XtPointer callData);
172 static void passwordCancelCbk(Widget widget, XtPointer ptr,
173 XtPointer callData);
174 void getPassword(GBool again);
175
176 XPDFApp *app;
177 GBool ok;
178
179 Display *display;
180 int screenNum;
181 Widget win; // top-level window
182 Widget form;
183 Widget panedWin;
184#ifndef DISABLE_OUTLINE
185 Widget outlineScroll;
186 Widget outlineTree;
187 Widget *outlineLabels;
188 int outlineLabelsLength;
189 int outlineLabelsSize;
190#endif
191 XPDFCore *core;
192 Widget toolBar;
193 Widget backBtn;
194 Widget prevTenPageBtn;
195 Widget prevPageBtn;
196 Widget nextPageBtn;
197 Widget nextTenPageBtn;
198 Widget forwardBtn;
199 Widget pageNumText;
200 Widget pageCountLabel;
201 Widget zoomMenu;
202 Widget zoomMenuBtns[maxZoom - minZoom + 1 + 2];
203 Widget findBtn;
204 Widget printBtn;
205 Widget aboutBtn;
206 Widget linkLabel;
207 Widget quitBtn;
208 Widget popupMenu;
209
210 Widget aboutDialog;
211 XmFontList aboutBigFont, aboutVersionFont, aboutFixedFont;
212
213 Widget openDialog;
214 GBool openInNewWindow;
215
216 Widget findDialog;
217 Widget findText;
218
219 Widget saveAsDialog;
220
221 Widget printDialog;
222 Widget printWithCmdBtn;
223 Widget printToFileBtn;
224 Widget printCmdText;
225 Widget printFileText;
226 Widget printFirstPage;
227 Widget printLastPage;
228
229 Widget passwordDialog;
230 Widget passwordMsg;
231 Widget passwordText;
232 int passwordDone;
233 GString *password;
234};
235
236#endif