]> www.fi.muni.cz Git - evince.git/blob - pdf/xpdf/XPDFViewer.h
Import of Xpdf 2.03
[evince.git] / pdf / xpdf / XPDFViewer.h
1 //========================================================================
2 //
3 // XPDFViewer.h
4 //
5 // Copyright 2002-2003 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) && !defined(__sgi)
25 #define DISABLE_OUTLINE
26 #endif
27
28 #if (XmVERSION >= 2 && !defined(LESSTIF_VERSION))
29 #  define USE_COMBO_BOX 1
30 #else
31 #  undef USE_COMBO_BOX
32 #endif
33
34 class GString;
35 class GList;
36 class UnicodeMap;
37 class LinkDest;
38 class XPDFApp;
39
40 //------------------------------------------------------------------------
41
42 // NB: this must match the defn of zoomMenuBtnInfo in XPDFViewer.cc
43 #define nZoomMenuItems 10
44
45 //------------------------------------------------------------------------
46 // XPDFViewer
47 //------------------------------------------------------------------------
48
49 class XPDFViewer {
50 public:
51
52   XPDFViewer(XPDFApp *appA, GString *fileName,
53              int pageA, GString *destName,
54              GString *ownerPassword, GString *userPassword);
55   GBool isOk() { return ok; }
56   ~XPDFViewer();
57
58   void open(GString *fileName, int pageA, GString *destName);
59   void clear();
60   void reloadFile();
61
62   Widget getWindow() { return win; }
63
64 private:
65
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,
72                    GBool addToHist);
73   void getPageAndDest(int pageA, GString *destName,
74                       int *pageOut, LinkDest **destOut);
75
76   //----- password dialog
77   static GString *reqPasswordCbk(void *data, GBool again);
78
79   //----- actions
80   static void actionCbk(void *data, char *action);
81
82   //----- keyboard/mouse input
83   static void keyPressCbk(void *data, char *s, KeySym key,
84                           Guint modifiers);
85   static void mouseCbk(void *data, XEvent *event);
86
87   //----- GUI code: main window
88   void initWindow();
89   void mapWindow();
90   void closeWindow();
91   int getZoomIdx();
92   void setZoomIdx(int idx);
93   void setZoomVal(double z);
94   static void prevPageCbk(Widget widget, XtPointer ptr,
95                           XtPointer callData);
96   static void prevTenPageCbk(Widget widget, XtPointer ptr,
97                              XtPointer callData);
98   static void nextPageCbk(Widget widget, XtPointer ptr,
99                           XtPointer callData);
100   static void nextTenPageCbk(Widget widget, XtPointer ptr,
101                              XtPointer callData);
102   static void backCbk(Widget widget, XtPointer ptr,
103                       XtPointer callData);
104   static void forwardCbk(Widget widget, XtPointer ptr,
105                          XtPointer callData);
106 #if USE_COMBO_BOX
107   static void zoomComboBoxCbk(Widget widget, XtPointer ptr,
108                               XtPointer callData);
109 #else
110   static void zoomMenuCbk(Widget widget, XtPointer ptr,
111                           XtPointer callData);
112 #endif
113   static void findCbk(Widget widget, XtPointer ptr,
114                       XtPointer callData);
115   static void printCbk(Widget widget, XtPointer ptr,
116                        XtPointer callData);
117   static void aboutCbk(Widget widget, XtPointer ptr,
118                        XtPointer callData);
119   static void quitCbk(Widget widget, XtPointer ptr,
120                       XtPointer callData);
121   static void openCbk(Widget widget, XtPointer ptr,
122                       XtPointer callData);
123   static void openInNewWindowCbk(Widget widget, XtPointer ptr,
124                                  XtPointer callData);
125   static void reloadCbk(Widget widget, XtPointer ptr,
126                         XtPointer callData);
127   static void saveAsCbk(Widget widget, XtPointer ptr,
128                         XtPointer callData);
129   static void rotateCCWCbk(Widget widget, XtPointer ptr,
130                            XtPointer callData);
131   static void rotateCWCbk(Widget widget, XtPointer ptr,
132                           XtPointer callData);
133   static void closeCbk(Widget widget, XtPointer ptr,
134                        XtPointer callData);
135   static void closeMsgCbk(Widget widget, XtPointer ptr,
136                           XtPointer callData);
137   static void pageNumCbk(Widget widget, XtPointer ptr,
138                          XtPointer callData);
139   static void updateCbk(void *data, GString *fileName,
140                         int pageNum, int numPages, char *linkString);
141
142   //----- GUI code: outline
143 #ifndef DISABLE_OUTLINE
144   void setupOutline();
145   void setupOutlineItems(GList *items, Widget parent, UnicodeMap *uMap);
146   static void outlineSelectCbk(Widget widget, XtPointer ptr,
147                                XtPointer callData);
148 #endif
149
150   //----- GUI code: "about" dialog
151   void initAboutDialog();
152
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,
158                         XtPointer callData);
159
160   //----- GUI code: "find" dialog
161   void initFindDialog();
162   static void findFindCbk(Widget widget, XtPointer ptr,
163                           XtPointer callData);
164   void doFind(GBool next);
165   static void findCloseCbk(Widget widget, XtPointer ptr,
166                            XtPointer callData);
167
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,
173                           XtPointer callData);
174
175   //----- GUI code: "print" dialog
176   void initPrintDialog();
177   void setupPrintDialog();
178   static void printWithCmdBtnCbk(Widget widget, XtPointer ptr,
179                                  XtPointer callData);
180   static void printToFileBtnCbk(Widget widget, XtPointer ptr,
181                                 XtPointer callData);
182   static void printPrintCbk(Widget widget, XtPointer ptr,
183                             XtPointer callData);
184
185   //----- GUI code: password dialog
186   void initPasswordDialog();
187   static void passwordTextVerifyCbk(Widget widget, XtPointer ptr,
188                                     XtPointer callData);
189   static void passwordOkCbk(Widget widget, XtPointer ptr,
190                             XtPointer callData);
191   static void passwordCancelCbk(Widget widget, XtPointer ptr,
192                                 XtPointer callData);
193   void getPassword(GBool again);
194
195   //----- Motif support
196   XmFontList createFontList(char *xlfd);
197
198   XPDFApp *app;
199   GBool ok;
200
201   Display *display;
202   int screenNum;
203   Widget win;                   // top-level window
204   Widget form;
205   Widget panedWin;
206 #ifndef DISABLE_OUTLINE
207   Widget outlineScroll;
208   Widget outlineTree;
209   Widget *outlineLabels;
210   int outlineLabelsLength;
211   int outlineLabelsSize;
212 #endif
213   XPDFCore *core;
214   Widget toolBar;
215   Widget backBtn;
216   Widget prevTenPageBtn;
217   Widget prevPageBtn;
218   Widget nextPageBtn;
219   Widget nextTenPageBtn;
220   Widget forwardBtn;
221   Widget pageNumText;
222   Widget pageCountLabel;
223 #if USE_COMBO_BOX
224   Widget zoomComboBox;
225 #else
226   Widget zoomMenu;
227   Widget zoomMenuBtns[nZoomMenuItems];
228 #endif
229   Widget findBtn;
230   Widget printBtn;
231   Widget aboutBtn;
232   Widget linkLabel;
233   Widget quitBtn;
234   Widget popupMenu;
235
236   Widget aboutDialog;
237   XmFontList aboutBigFont, aboutVersionFont, aboutFixedFont;
238
239   Widget openDialog;
240   GBool openInNewWindow;
241
242   Widget findDialog;
243   Widget findText;
244
245   Widget saveAsDialog;
246
247   Widget printDialog;
248   Widget printWithCmdBtn;
249   Widget printToFileBtn;
250   Widget printCmdText;
251   Widget printFileText;
252   Widget printFirstPage;
253   Widget printLastPage;
254
255   Widget passwordDialog;
256   Widget passwordMsg;
257   Widget passwordText;
258   int passwordDone;
259   GString *password;
260 };
261
262 #endif