1 //========================================================================
5 // Copyright 2002-2003 Glyph & Cog, LLC
7 //========================================================================
14 #ifdef USE_GCC_PRAGMAS
21 #define DISABLE_OUTLINE
31 //------------------------------------------------------------------------
33 // NB: this must match the defn of zoomMenuBtnInfo in XPDFViewer.cc
34 #define nZoomMenuItems 10
36 //------------------------------------------------------------------------
38 struct XPDFViewerCmd
{
43 void (XPDFViewer::*func
)(GString
*args
[], int nArgs
, XEvent
*event
);
46 //------------------------------------------------------------------------
48 //------------------------------------------------------------------------
53 XPDFViewer(XPDFApp
*appA
, GString
*fileName
,
54 int pageA
, GString
*destName
, GBool fullScreen
,
55 GString
*ownerPassword
, GString
*userPassword
);
56 XPDFViewer(XPDFApp
*appA
, PDFDoc
*doc
, int pageA
,
57 GString
*destName
, GBool fullScreen
);
58 GBool
isOk() { return ok
; }
61 void open(GString
*fileName
, int pageA
, GString
*destName
);
65 void execCmd(GString
*cmd
, XEvent
*event
);
67 //Widget getWindow() { return win; }
71 //----- load / display
72 GBool
loadFile(GString
*fileName
, GString
*ownerPassword
= NULL
,
73 GString
*userPassword
= NULL
);
74 void displayPage(int pageA
, double zoomA
, int rotateA
,
75 GBool scrollToTop
, GBool addToHist
);
76 void displayDest(LinkDest
*dest
, double zoomA
, int rotateA
,
78 void getPageAndDest(int pageA
, GString
*destName
,
79 int *pageOut
, LinkDest
**destOut
);
81 //----- hyperlinks / actions
82 void doLink(int wx
, int wy
, GBool onlyIfNoSelection
, GBool newWin
);
83 static void actionCbk(void *data
, char *action
);
85 //----- keyboard/mouse input
86 static void keyPressCbk(void *data
, KeySym key
, Guint modifiers
,
88 static void mouseCbk(void *data
, XEvent
*event
);
89 int getModifiers(Guint modifiers
);
90 int getContext(Guint modifiers
);
92 //----- command functions
93 void cmdAbout(GString
*args
[], int nArgs
, XEvent
*event
);
94 void cmdCloseOutline(GString
*args
[], int nArgs
, XEvent
*event
);
95 void cmdCloseWindow(GString
*args
[], int nArgs
, XEvent
*event
);
96 void cmdContinuousMode(GString
*args
[], int nArgs
, XEvent
*event
);
97 void cmdEndPan(GString
*args
[], int nArgs
, XEvent
*event
);
98 void cmdEndSelection(GString
*args
[], int nArgs
, XEvent
*event
);
99 void cmdFind(GString
*args
[], int nArgs
, XEvent
*event
);
100 void cmdFindNext(GString
*args
[], int nArgs
, XEvent
*event
);
101 void cmdFocusToDocWin(GString
*args
[], int nArgs
, XEvent
*event
);
102 void cmdFocusToPageNum(GString
*args
[], int nArgs
, XEvent
*event
);
103 void cmdFollowLink(GString
*args
[], int nArgs
, XEvent
*event
);
104 void cmdFollowLinkInNewWin(GString
*args
[], int nArgs
, XEvent
*event
);
105 void cmdFollowLinkInNewWinNoSel(GString
*args
[], int nArgs
, XEvent
*event
);
106 void cmdFollowLinkNoSel(GString
*args
[], int nArgs
, XEvent
*event
);
107 void cmdFullScreenMode(GString
*args
[], int nArgs
, XEvent
*event
);
108 void cmdGoBackward(GString
*args
[], int nArgs
, XEvent
*event
);
109 void cmdGoForward(GString
*args
[], int nArgs
, XEvent
*event
);
110 void cmdGotoDest(GString
*args
[], int nArgs
, XEvent
*event
);
111 void cmdGotoLastPage(GString
*args
[], int nArgs
, XEvent
*event
);
112 void cmdGotoLastPageNoScroll(GString
*args
[], int nArgs
, XEvent
*event
);
113 void cmdGotoPage(GString
*args
[], int nArgs
, XEvent
*event
);
114 void cmdGotoPageNoScroll(GString
*args
[], int nArgs
, XEvent
*event
);
115 void cmdNextPage(GString
*args
[], int nArgs
, XEvent
*event
);
116 void cmdNextPageNoScroll(GString
*args
[], int nArgs
, XEvent
*event
);
117 void cmdOpen(GString
*args
[], int nArgs
, XEvent
*event
);
118 void cmdOpenFile(GString
*args
[], int nArgs
, XEvent
*event
);
119 void cmdOpenFileAtDest(GString
*args
[], int nArgs
, XEvent
*event
);
120 void cmdOpenFileAtDestInNewWin(GString
*args
[], int nArgs
, XEvent
*event
);
121 void cmdOpenFileAtPage(GString
*args
[], int nArgs
, XEvent
*event
);
122 void cmdOpenFileAtPageInNewWin(GString
*args
[], int nArgs
, XEvent
*event
);
123 void cmdOpenFileInNewWin(GString
*args
[], int nArgs
, XEvent
*event
);
124 void cmdOpenInNewWin(GString
*args
[], int nArgs
, XEvent
*event
);
125 void cmdOpenOutline(GString
*args
[], int nArgs
, XEvent
*event
);
126 void cmdPageDown(GString
*args
[], int nArgs
, XEvent
*event
);
127 void cmdPageUp(GString
*args
[], int nArgs
, XEvent
*event
);
128 void cmdPostPopupMenu(GString
*args
[], int nArgs
, XEvent
*event
);
129 void cmdPrevPage(GString
*args
[], int nArgs
, XEvent
*event
);
130 void cmdPrevPageNoScroll(GString
*args
[], int nArgs
, XEvent
*event
);
131 void cmdPrint(GString
*args
[], int nArgs
, XEvent
*event
);
132 void cmdQuit(GString
*args
[], int nArgs
, XEvent
*event
);
133 void cmdRaise(GString
*args
[], int nArgs
, XEvent
*event
);
134 void cmdRedraw(GString
*args
[], int nArgs
, XEvent
*event
);
135 void cmdReload(GString
*args
[], int nArgs
, XEvent
*event
);
136 void cmdRun(GString
*args
[], int nArgs
, XEvent
*event
);
137 void cmdScrollDown(GString
*args
[], int nArgs
, XEvent
*event
);
138 void cmdScrollDownNextPage(GString
*args
[], int nArgs
, XEvent
*event
);
139 void cmdScrollLeft(GString
*args
[], int nArgs
, XEvent
*event
);
140 void cmdScrollOutlineDown(GString
*args
[], int nArgs
, XEvent
*event
);
141 void cmdScrollOutlineUp(GString
*args
[], int nArgs
, XEvent
*event
);
142 void cmdScrollRight(GString
*args
[], int nArgs
, XEvent
*event
);
143 void cmdScrollToBottomEdge(GString
*args
[], int nArgs
, XEvent
*event
);
144 void cmdScrollToBottomRight(GString
*args
[], int nArgs
, XEvent
*event
);
145 void cmdScrollToLeftEdge(GString
*args
[], int nArgs
, XEvent
*event
);
146 void cmdScrollToRightEdge(GString
*args
[], int nArgs
, XEvent
*event
);
147 void cmdScrollToTopEdge(GString
*args
[], int nArgs
, XEvent
*event
);
148 void cmdScrollToTopLeft(GString
*args
[], int nArgs
, XEvent
*event
);
149 void cmdScrollUp(GString
*args
[], int nArgs
, XEvent
*event
);
150 void cmdScrollUpPrevPage(GString
*args
[], int nArgs
, XEvent
*event
);
151 void cmdSinglePageMode(GString
*args
[], int nArgs
, XEvent
*event
);
152 void cmdStartPan(GString
*args
[], int nArgs
, XEvent
*event
);
153 void cmdStartSelection(GString
*args
[], int nArgs
, XEvent
*event
);
154 void cmdToggleContinuousMode(GString
*args
[], int nArgs
, XEvent
*event
);
155 void cmdToggleFullScreenMode(GString
*args
[], int nArgs
, XEvent
*event
);
156 void cmdToggleOutline(GString
*args
[], int nArgs
, XEvent
*event
);
157 void cmdWindowMode(GString
*args
[], int nArgs
, XEvent
*event
);
158 void cmdZoomFitPage(GString
*args
[], int nArgs
, XEvent
*event
);
159 void cmdZoomFitWidth(GString
*args
[], int nArgs
, XEvent
*event
);
160 void cmdZoomIn(GString
*args
[], int nArgs
, XEvent
*event
);
161 void cmdZoomOut(GString
*args
[], int nArgs
, XEvent
*event
);
162 void cmdZoomPercent(GString
*args
[], int nArgs
, XEvent
*event
);
163 void cmdZoomToSelection(GString
*args
[], int nArgs
, XEvent
*event
);
165 //----- GUI code: main window
166 void initWindow(GBool fullScreen
);
167 //void initToolbar(Widget parent);
169 //void initCore(Widget parent, GBool fullScreen);
170 void initPopupMenu();
171 //void addToolTip(Widget widget, char *text);
175 void setZoomIdx(int idx
);
176 void setZoomVal(double z
);
177 static void prevPageCbk(Widget widget
, XtPointer ptr
,
179 static void prevTenPageCbk(Widget widget
, XtPointer ptr
,
181 static void nextPageCbk(Widget widget
, XtPointer ptr
,
183 static void nextTenPageCbk(Widget widget
, XtPointer ptr
,
185 static void backCbk(Widget widget
, XtPointer ptr
,
187 static void forwardCbk(Widget widget
, XtPointer ptr
,
190 static void zoomComboBoxCbk(Widget widget
, XtPointer ptr
,
193 static void zoomMenuCbk(Widget widget
, XtPointer ptr
,
196 static void findCbk(Widget widget
, XtPointer ptr
,
198 static void printCbk(Widget widget
, XtPointer ptr
,
200 static void aboutCbk(Widget widget
, XtPointer ptr
,
202 static void quitCbk(Widget widget
, XtPointer ptr
,
204 static void openCbk(Widget widget
, XtPointer ptr
,
206 static void openInNewWindowCbk(Widget widget
, XtPointer ptr
,
208 static void reloadCbk(Widget widget
, XtPointer ptr
,
210 static void saveAsCbk(Widget widget
, XtPointer ptr
,
212 static void continuousModeToggleCbk(Widget widget
, XtPointer ptr
,
214 static void fullScreenToggleCbk(Widget widget
, XtPointer ptr
,
216 static void rotateCCWCbk(Widget widget
, XtPointer ptr
,
218 static void rotateCWCbk(Widget widget
, XtPointer ptr
,
220 static void zoomToSelectionCbk(Widget widget
, XtPointer ptr
,
222 static void closeCbk(Widget widget
, XtPointer ptr
,
224 static void closeMsgCbk(Widget widget
, XtPointer ptr
,
226 static void pageNumCbk(Widget widget
, XtPointer ptr
,
228 static void updateCbk(void *data
, GString
*fileName
,
229 int pageNum
, int numPages
, char *linkString
);
231 //----- GUI code: outline
232 #ifndef DISABLE_OUTLINE
234 void setupOutlineItems(GList
*items
, Widget parent
, UnicodeMap
*uMap
);
235 static void outlineSelectCbk(Widget widget
, XtPointer ptr
,
239 //----- GUI code: "about" dialog
240 void initAboutDialog();
242 //----- GUI code: "open" dialog
243 void initOpenDialog();
244 void mapOpenDialog(GBool openInNewWindowA
);
245 static void openOkCbk(Widget widget
, XtPointer ptr
,
248 //----- GUI code: "find" dialog
249 void initFindDialog();
250 static void findFindCbk(Widget widget
, XtPointer ptr
,
252 void mapFindDialog();
253 void doFind(GBool next
);
254 static void findCloseCbk(Widget widget
, XtPointer ptr
,
257 //----- GUI code: "save as" dialog
258 void initSaveAsDialog();
259 void mapSaveAsDialog();
260 static void saveAsOkCbk(Widget widget
, XtPointer ptr
,
263 //----- GUI code: "print" dialog
264 void initPrintDialog();
265 void setupPrintDialog();
266 static void printWithCmdBtnCbk(Widget widget
, XtPointer ptr
,
268 static void printToFileBtnCbk(Widget widget
, XtPointer ptr
,
270 static void printPrintCbk(Widget widget
, XtPointer ptr
,
273 //----- Motif support
274 XmFontList
createFontList(char *xlfd
);
276 static XPDFViewerCmd cmdTab
[];
283 Widget win
; // top-level window
286 #ifndef DISABLE_OUTLINE
287 Widget outlineScroll
;
289 Widget
*outlineLabels
;
290 int outlineLabelsLength
;
291 int outlineLabelsSize
;
292 Dimension outlinePaneWidth
;
297 Widget prevTenPageBtn
;
300 Widget nextTenPageBtn
;
303 Widget pageCountLabel
;
308 Widget zoomMenuBtns
[nZoomMenuItems
];
319 XmFontList aboutBigFont
, aboutVersionFont
, aboutFixedFont
;
322 GBool openInNewWindow
;
326 Widget findBackwardToggle
;
327 Widget findCaseSensitiveToggle
;
332 Widget printWithCmdBtn
;
333 Widget printToFileBtn
;
335 Widget printFileText
;
336 Widget printFirstPage
;
337 Widget printLastPage
;