]> www.fi.muni.cz Git - evince.git/blob - pdf/xpdf/XPDFViewer.h
Import of Xpdf 2.01 for merge
[evince.git] / pdf / xpdf / 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
28 class GString;
29 class GList;
30 class UnicodeMap;
31 class LinkDest;
32 class XPDFApp;
33
34 //------------------------------------------------------------------------
35 // XPDFViewer
36 //------------------------------------------------------------------------
37
38 class XPDFViewer {
39 public:
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   void reloadFile();
50
51   Widget getWindow() { return win; }
52
53 private:
54
55   //----- load / display
56   GBool loadFile(GString *fileName, GString *ownerPassword = NULL,
57                  GString *userPassword = NULL);
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