📄 xpdfviewer.cc
字号:
void XPDFViewer::cmdFollowLinkNoSel(GString *args[], int nArgs, XEvent *event) { doLink(mouseX(event), mouseY(event), gTrue, gFalse);}void XPDFViewer::cmdFullScreenMode(GString *args[], int nArgs, XEvent *event) { PDFDoc *doc; XPDFViewer *viewer; int pg; Widget btn; if (core->getFullScreen()) { return; } pg = core->getPageNum(); XtPopdown(win); doc = core->takeDoc(gFalse); viewer = app->reopen(this, doc, pg, gTrue); btn = XtNameToWidget(viewer->popupMenu, "fullScreen"); XtVaSetValues(btn, XmNset, XmSET, NULL);}void XPDFViewer::cmdGoBackward(GString *args[], int nArgs, XEvent *event) { core->goBackward();}void XPDFViewer::cmdGoForward(GString *args[], int nArgs, XEvent *event) { core->goForward();}void XPDFViewer::cmdGotoDest(GString *args[], int nArgs, XEvent *event) { int pg; LinkDest *dest; getPageAndDest(1, args[0], &pg, &dest); if (dest) { displayDest(dest, core->getZoom(), core->getRotate(), gTrue); delete dest; }}void XPDFViewer::cmdGotoLastPage(GString *args[], int nArgs, XEvent *event) { displayPage(core->getDoc()->getNumPages(), core->getZoom(), core->getRotate(), gTrue, gTrue);}void XPDFViewer::cmdGotoLastPageNoScroll(GString *args[], int nArgs, XEvent *event) { displayPage(core->getDoc()->getNumPages(), core->getZoom(), core->getRotate(), gFalse, gTrue);}void XPDFViewer::cmdGotoPage(GString *args[], int nArgs, XEvent *event) { int pg; pg = atoi(args[0]->getCString()); if (pg < 1 || pg > core->getDoc()->getNumPages()) { return; } displayPage(pg, core->getZoom(), core->getRotate(), gTrue, gTrue);}void XPDFViewer::cmdGotoPageNoScroll(GString *args[], int nArgs, XEvent *event) { int pg; pg = atoi(args[0]->getCString()); if (pg < 1 || pg > core->getDoc()->getNumPages()) { return; } displayPage(pg, core->getZoom(), core->getRotate(), gFalse, gTrue);}void XPDFViewer::cmdNextPage(GString *args[], int nArgs, XEvent *event) { core->gotoNextPage(1, gTrue);}void XPDFViewer::cmdNextPageNoScroll(GString *args[], int nArgs, XEvent *event) { core->gotoNextPage(1, gFalse);}void XPDFViewer::cmdOpen(GString *args[], int nArgs, XEvent *event) { mapOpenDialog(gFalse);}void XPDFViewer::cmdOpenFile(GString *args[], int nArgs, XEvent *event) { open(args[0], 1, NULL);}void XPDFViewer::cmdOpenFileAtDest(GString *args[], int nArgs, XEvent *event) { open(args[0], 1, args[1]);}void XPDFViewer::cmdOpenFileAtDestInNewWin(GString *args[], int nArgs, XEvent *event) { app->openAtDest(args[0], args[1]);}void XPDFViewer::cmdOpenFileAtPage(GString *args[], int nArgs, XEvent *event) { open(args[0], atoi(args[1]->getCString()), NULL);}void XPDFViewer::cmdOpenFileAtPageInNewWin(GString *args[], int nArgs, XEvent *event) { app->open(args[0], atoi(args[1]->getCString()));}void XPDFViewer::cmdOpenFileInNewWin(GString *args[], int nArgs, XEvent *event) { app->open(args[0]);}void XPDFViewer::cmdOpenInNewWin(GString *args[], int nArgs, XEvent *event) { mapOpenDialog(gTrue);}void XPDFViewer::cmdOpenOutline(GString *args[], int nArgs, XEvent *event) {#ifndef DISABLE_OUTLINE Dimension w; if (outlineScroll == None) { return; } XtVaGetValues(outlineScroll, XmNwidth, &w, NULL); if (w == 1) { // this ugly kludge is apparently the only way to resize the panes // within an XmPanedWindow XtVaSetValues(outlineScroll, XmNpaneMinimum, outlinePaneWidth, XmNpaneMaximum, outlinePaneWidth, NULL); XtVaSetValues(outlineScroll, XmNpaneMinimum, 1, XmNpaneMaximum, 10000, NULL); }#endif}void XPDFViewer::cmdPageDown(GString *args[], int nArgs, XEvent *event) { core->scrollPageDown();}void XPDFViewer::cmdPageUp(GString *args[], int nArgs, XEvent *event) { core->scrollPageUp();}void XPDFViewer::cmdPostPopupMenu(GString *args[], int nArgs, XEvent *event) { XmMenuPosition(popupMenu, event->type == ButtonPress ? &event->xbutton : (XButtonEvent *)NULL); XtManageChild(popupMenu); // this is magic (taken from DDD) - weird things happen if this // call isn't made (this is done in two different places, in hopes // of squashing this stupid bug) XtUngrabButton(core->getDrawAreaWidget(), AnyButton, AnyModifier);}void XPDFViewer::cmdPrevPage(GString *args[], int nArgs, XEvent *event) { core->gotoPrevPage(1, gTrue, gFalse);}void XPDFViewer::cmdPrevPageNoScroll(GString *args[], int nArgs, XEvent *event) { core->gotoPrevPage(1, gFalse, gFalse);}void XPDFViewer::cmdPrint(GString *args[], int nArgs, XEvent *event) { XtManageChild(printDialog);}void XPDFViewer::cmdQuit(GString *args[], int nArgs, XEvent *event) { app->quit();}void XPDFViewer::cmdRaise(GString *args[], int nArgs, XEvent *event) { XMapRaised(display, XtWindow(win)); XFlush(display);}void XPDFViewer::cmdRedraw(GString *args[], int nArgs, XEvent *event) { displayPage(core->getPageNum(), core->getZoom(), core->getRotate(), gFalse, gFalse);}void XPDFViewer::cmdReload(GString *args[], int nArgs, XEvent *event) { reloadFile();}void XPDFViewer::cmdRun(GString *args[], int nArgs, XEvent *event) { GString *fmt, *cmd, *s; LinkAction *action; double selLRX, selLRY, selURX, selURY; int selPage; GBool gotSel; char buf[64]; char *p; char c0, c1; int i; cmd = new GString(); fmt = args[0]; i = 0; gotSel = gFalse; while (i < fmt->getLength()) { c0 = fmt->getChar(i); if (c0 == '%' && i+1 < fmt->getLength()) { c1 = fmt->getChar(i+1); switch (c1) { case 'f': if (core->getDoc() && (s = core->getDoc()->getFileName())) { cmd->append(s); } break; case 'b': if (core->getDoc() && (s = core->getDoc()->getFileName())) { if ((p = strrchr(s->getCString(), '.'))) { cmd->append(s->getCString(), p - s->getCString()); } else { cmd->append(s); } } break; case 'u': if ((action = core->getLinkAction()) && action->getKind() == actionURI) { s = core->mungeURL(((LinkURI *)action)->getURI()); cmd->append(s); delete s; } break; case 'x': case 'y': case 'X': case 'Y': if (!gotSel) { if (!core->getSelection(&selPage, &selURX, &selURY, &selLRX, &selLRY)) { selPage = 0; selURX = selURY = selLRX = selLRY = 0; } gotSel = gTrue; } sprintf(buf, "%g", (c1 == 'x') ? selURX : (c1 == 'y') ? selURY : (c1 == 'X') ? selLRX : selLRY); cmd->append(buf); break; default: cmd->append(c1); break; } i += 2; } else { cmd->append(c0); ++i; } }#ifdef VMS cmd->insert(0, "spawn/nowait ");#elif defined(__EMX__) cmd->insert(0, "start /min /n ");#else cmd->append(" &");#endif system(cmd->getCString()); delete cmd;}void XPDFViewer::cmdScrollDown(GString *args[], int nArgs, XEvent *event) { core->scrollDown(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollDownNextPage(GString *args[], int nArgs, XEvent *event) { core->scrollDownNextPage(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollLeft(GString *args[], int nArgs, XEvent *event) { core->scrollLeft(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollOutlineDown(GString *args[], int nArgs, XEvent *event) {#ifndef DISABLE_OUTLINE Widget sb; int val, inc, pageInc, m, slider; if (outlineScroll == None) { return; } if ((sb = XtNameToWidget(outlineScroll, "VertScrollBar"))) { XtVaGetValues(sb, XmNvalue, &val, XmNincrement, &inc, XmNpageIncrement, &pageInc, XmNmaximum, &m, XmNsliderSize, &slider, NULL); if ((val += inc * atoi(args[0]->getCString())) > m - slider) { val = m - slider; } XmScrollBarSetValues(sb, val, slider, inc, pageInc, True); }#endif}void XPDFViewer::cmdScrollOutlineUp(GString *args[], int nArgs, XEvent *event) {#ifndef DISABLE_OUTLINE Widget sb; int val, inc, pageInc, m, slider; if (outlineScroll == None) { return; } if ((sb = XtNameToWidget(outlineScroll, "VertScrollBar"))) { XtVaGetValues(sb, XmNvalue, &val, XmNincrement, &inc, XmNpageIncrement, &pageInc, XmNminimum, &m, XmNsliderSize, &slider, NULL); if ((val -= inc * atoi(args[0]->getCString())) < m) { val = m; } XmScrollBarSetValues(sb, val, slider, inc, pageInc, True); }#endif}void XPDFViewer::cmdScrollRight(GString *args[], int nArgs, XEvent *event) { core->scrollRight(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollToBottomEdge(GString *args[], int nArgs, XEvent *event) { core->scrollToBottomEdge();}void XPDFViewer::cmdScrollToBottomRight(GString *args[], int nArgs, XEvent *event) { core->scrollToBottomRight();}void XPDFViewer::cmdScrollToLeftEdge(GString *args[], int nArgs, XEvent *event) { core->scrollToLeftEdge();}void XPDFViewer::cmdScrollToRightEdge(GString *args[], int nArgs, XEvent *event) { core->scrollToRightEdge();}void XPDFViewer::cmdScrollToTopEdge(GString *args[], int nArgs, XEvent *event) { core->scrollToTopEdge();}void XPDFViewer::cmdScrollToTopLeft(GString *args[], int nArgs, XEvent *event) { core->scrollToTopLeft();}void XPDFViewer::cmdScrollUp(GString *args[], int nArgs, XEvent *event) { core->scrollUp(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollUpPrevPage(GString *args[], int nArgs, XEvent *event) { core->scrollUpPrevPage(atoi(args[0]->getCString()));}void XPDFViewer::cmdSinglePageMode(GString *args[], int nArgs, XEvent *event) { Widget btn; if (!core->getContinuousMode()) { return; } core->setContinuousMode(gFalse); btn = XtNameToWidget(popupMenu, "continuousMode"); XtVaSetValues(btn, XmNset, XmUNSET, NULL);}void XPDFViewer::cmdStartPan(GString *args[], int nArgs, XEvent *event) { core->startPan(mouseX(event), mouseY(event));}void XPDFViewer::cmdStartSelection(GString *args[], int nArgs, XEvent *event) { core->startSelection(mouseX(event), mouseY(event));}void XPDFViewer::cmdToggleContinuousMode(GString *args[], int nArgs, XEvent *event) { if (core->getContinuousMode()) { cmdSinglePageMode(NULL, 0, event); } else { cmdContinuousMode(NULL, 0, event); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -