📄 xpdfviewer.cc
字号:
break; case '-': if (!viewer->app->getFullScreen()) { z = viewer->getZoomIdx(); if (z < minZoomIdx && z >= maxZoomIdx) { ++z; viewer->setZoomIdx(z); viewer->displayPage(viewer->core->getPageNum(), zoomMenuInfo[z].zoom, viewer->core->getRotate(), gTrue, gFalse); } } break; case 'z': if (!viewer->app->getFullScreen() && viewer->core->getZoom() != zoomPage) { viewer->setZoomIdx(zoomPageIdx); viewer->displayPage(viewer->core->getPageNum(), zoomPage, viewer->core->getRotate(), gTrue, gFalse); } break; case 'w': if (!viewer->app->getFullScreen() && viewer->core->getZoom() != zoomWidth) { viewer->setZoomIdx(zoomWidthIdx); viewer->displayPage(viewer->core->getPageNum(), zoomWidth, viewer->core->getRotate(), gTrue, gFalse); } break; case '\014': // ^L viewer->displayPage(viewer->core->getPageNum(), viewer->core->getZoom(), viewer->core->getRotate(), gFalse, gFalse); break; case '\027': // ^W viewer->app->close(viewer, gFalse); break; case '?': XtManageChild(viewer->aboutDialog); break; case 'Q': case 'q': viewer->app->quit(); break; } }}void XPDFViewer::mouseCbk(void *data, XEvent *event) { XPDFViewer *viewer = (XPDFViewer *)data; if (event->type == ButtonPress && event->xbutton.button == 3) { XmMenuPosition(viewer->popupMenu, &event->xbutton); XtManageChild(viewer->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(viewer->core->getDrawAreaWidget(), AnyButton, AnyModifier); }}//------------------------------------------------------------------------// GUI code: main window//------------------------------------------------------------------------void XPDFViewer::initWindow() { Widget btn, label, lastBtn, zoomWidget;#ifndef DISABLE_OUTLINE Widget clipWin;#endif Colormap colormap; XColor xcol; Arg args[20]; int n; char *title; XmString s, s2, emptyString; int i; display = XtDisplay(app->getAppShell()); screenNum = XScreenNumberOfScreen(XtScreen(app->getAppShell())); // private colormap if (app->getInstallCmap()) { XtVaGetValues(app->getAppShell(), XmNcolormap, &colormap, NULL); // ensure that BlackPixel and WhitePixel are reserved in the // new colormap xcol.red = xcol.green = xcol.blue = 0; XAllocColor(display, colormap, &xcol); xcol.red = xcol.green = xcol.blue = 65535; XAllocColor(display, colormap, &xcol); colormap = XCopyColormapAndFree(display, colormap); } // top-level window n = 0; title = app->getTitle() ? app->getTitle()->getCString() : (char *)xpdfAppName; XtSetArg(args[n], XmNtitle, title); ++n; XtSetArg(args[n], XmNiconName, title); ++n; XtSetArg(args[n], XmNminWidth, 100); ++n; XtSetArg(args[n], XmNminHeight, 100); ++n; XtSetArg(args[n], XmNbaseWidth, 0); ++n; XtSetArg(args[n], XmNbaseHeight, 0); ++n; XtSetArg(args[n], XmNdeleteResponse, XmDO_NOTHING); ++n; if (app->getFullScreen()) { XtSetArg(args[n], XmNmwmDecorations, 0); ++n; XtSetArg(args[n], XmNgeometry, "+0+0"); ++n; } else if (app->getGeometry()) { XtSetArg(args[n], XmNgeometry, app->getGeometry()->getCString()); ++n; } win = XtCreatePopupShell("win", topLevelShellWidgetClass, app->getAppShell(), args, n); if (app->getInstallCmap()) { XtVaSetValues(win, XmNcolormap, colormap, NULL); } XmAddWMProtocolCallback(win, XInternAtom(display, "WM_DELETE_WINDOW", False), &closeMsgCbk, this); // form n = 0; form = XmCreateForm(win, "form", args, n); XtManageChild(form); // toolbar n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; toolBar = XmCreateForm(form, "toolBar", args, n); XtManageChild(toolBar); // create an empty string -- this is used for buttons that will get // pixmaps later emptyString = XmStringCreateLocalized(""); // page movement buttons n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNsensitive, False); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; backBtn = XmCreatePushButton(toolBar, "back", args, n); addToolTip(backBtn, "Back"); XtManageChild(backBtn); XtAddCallback(backBtn, XmNactivateCallback, &backCbk, (XtPointer)this); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, backBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNsensitive, False); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; prevTenPageBtn = XmCreatePushButton(toolBar, "prevTenPage", args, n); addToolTip(prevTenPageBtn, "-10 pages"); XtManageChild(prevTenPageBtn); XtAddCallback(prevTenPageBtn, XmNactivateCallback, &prevTenPageCbk, (XtPointer)this); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, prevTenPageBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNsensitive, False); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; prevPageBtn = XmCreatePushButton(toolBar, "prevPage", args, n); addToolTip(prevPageBtn, "Previous page"); XtManageChild(prevPageBtn); XtAddCallback(prevPageBtn, XmNactivateCallback, &prevPageCbk, (XtPointer)this); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, prevPageBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNsensitive, False); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; nextPageBtn = XmCreatePushButton(toolBar, "nextPage", args, n); addToolTip(nextPageBtn, "Next page"); XtManageChild(nextPageBtn); XtAddCallback(nextPageBtn, XmNactivateCallback, &nextPageCbk, (XtPointer)this); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, nextPageBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNsensitive, False); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; nextTenPageBtn = XmCreatePushButton(toolBar, "nextTenPage", args, n); addToolTip(nextTenPageBtn, "+10 pages"); XtManageChild(nextTenPageBtn); XtAddCallback(nextTenPageBtn, XmNactivateCallback, &nextTenPageCbk, (XtPointer)this); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, nextTenPageBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNsensitive, False); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; forwardBtn = XmCreatePushButton(toolBar, "forward", args, n); addToolTip(forwardBtn, "Forward"); XtManageChild(forwardBtn); XtAddCallback(forwardBtn, XmNactivateCallback, &forwardCbk, (XtPointer)this); // page number display n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, forwardBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; s = XmStringCreateLocalized("Page "); XtSetArg(args[n], XmNlabelString, s); ++n; label = XmCreateLabel(toolBar, "pageLabel", args, n); XmStringFree(s); XtManageChild(label); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, label); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 3); ++n; XtSetArg(args[n], XmNmarginHeight, 3); ++n; XtSetArg(args[n], XmNcolumns, 5); ++n; pageNumText = XmCreateTextField(toolBar, "pageNum", args, n); XtManageChild(pageNumText); XtAddCallback(pageNumText, XmNactivateCallback, &pageNumCbk, (XtPointer)this); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, pageNumText); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; s = XmStringCreateLocalized(" of 00000"); XtSetArg(args[n], XmNlabelString, s); ++n; XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); ++n; XtSetArg(args[n], XmNrecomputeSize, False); ++n; pageCountLabel = XmCreateLabel(toolBar, "pageCountLabel", args, n); XmStringFree(s); XtManageChild(pageCountLabel); s = XmStringCreateLocalized(" of 0"); XtVaSetValues(pageCountLabel, XmNlabelString, s, NULL); XmStringFree(s); // zoom menu#if USE_COMBO_BOX XmString st[nZoomMenuItems]; n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, pageCountLabel); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 0); ++n; XtSetArg(args[n], XmNmarginHeight, 0); ++n; XtSetArg(args[n], XmNcomboBoxType, XmDROP_DOWN_COMBO_BOX); ++n; XtSetArg(args[n], XmNpositionMode, XmONE_BASED); ++n; XtSetArg(args[n], XmNcolumns, 7); ++n; for (i = 0; i < nZoomMenuItems; ++i) { st[i] = XmStringCreateLocalized(zoomMenuInfo[i].label); } XtSetArg(args[n], XmNitems, st); ++n; XtSetArg(args[n], XmNitemCount, nZoomMenuItems); ++n; zoomComboBox = XmCreateComboBox(toolBar, "zoomComboBox", args, n); for (i = 0; i < nZoomMenuItems; ++i) { XmStringFree(st[i]); } addToolTip(zoomComboBox, "Zoom"); XtAddCallback(zoomComboBox, XmNselectionCallback, &zoomComboBoxCbk, (XtPointer)this); XtManageChild(zoomComboBox); zoomWidget = zoomComboBox;#else Widget menuPane; char buf[16]; n = 0; menuPane = XmCreatePulldownMenu(toolBar, "zoomMenuPane", args, n); for (i = 0; i < nZoomMenuItems; ++i) { n = 0; s = XmStringCreateLocalized(zoomMenuInfo[i].label); XtSetArg(args[n], XmNlabelString, s); ++n; XtSetArg(args[n], XmNuserData, (XtPointer)i); ++n; sprintf(buf, "zoom%d", i); btn = XmCreatePushButton(menuPane, buf, args, n); XmStringFree(s); XtManageChild(btn); XtAddCallback(btn, XmNactivateCallback, &zoomMenuCbk, (XtPointer)this); zoomMenuBtns[i] = btn; } n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, pageCountLabel); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 0); ++n; XtSetArg(args[n], XmNmarginHeight, 0); ++n; XtSetArg(args[n], XmNsubMenuId, menuPane); ++n; zoomMenu = XmCreateOptionMenu(toolBar, "zoomMenu", args, n); addToolTip(zoomMenu, "Zoom"); XtManageChild(zoomMenu); zoomWidget = zoomMenu;#endif // find/print/about buttons n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, zoomWidget); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; findBtn = XmCreatePushButton(toolBar, "find", args, n); addToolTip(findBtn, "Find"); XtManageChild(findBtn); XtAddCallback(findBtn, XmNactivateCallback, &findCbk, (XtPointer)this); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, findBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; printBtn = XmCreatePushButton(toolBar, "print", args, n); addToolTip(printBtn, "Print"); XtManageChild(printBtn); XtAddCallback(printBtn, XmNactivateCallback, &printCbk, (XtPointer)this); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, printBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; XtSetArg(args[n], XmNlabelString, emptyString); ++n; aboutBtn = XmCreatePushButton(toolBar, "about", args, n); addToolTip(aboutBtn, "About / help"); XtManageChild(aboutBtn); XtAddCallback(aboutBtn, XmNactivateCallback, &aboutCbk, (XtPointer)this); lastBtn = aboutBtn; // quit button n = 0; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNmarginWidth, 6); ++n; s = XmStringCreateLocalized("Quit"); XtSetArg(args[n], XmNlabelString, s); ++n; quitBtn = XmCreatePushButton(toolBar, "quit", args, n); XmStringFree(s); XtManageChild(quitBtn); XtAddCallback(quitBtn, XmNactivateCallback, &quitCbk, (XtPointer)this); // link label n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNleftWidget, lastBtn); ++n; XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNrightWidget, quitBtn); ++n; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n; s = XmStringCreateLocalized(""); XtSetArg(args[n], XmNlabelString, s); ++n; XtSetArg(args[n], XmNrecomputeSize, True); ++n; XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); ++n; linkLabel = XmCreateLabel(toolBar, "linkLabel", args, n); XmStringFree(s); XtManageChild(linkLabel);#ifndef DISABLE_OUTLINE if (app->getFullScreen()) {#endif // core core = new XPDFCore(win, form, app->getPaperRGB(), app->getPaperPixel(), app->getMattePixel(), app->getFullScreen(), app->getReverseVideo(), app->getInstallCmap(), app->getRGBCubeSize()); core->setUpdateCbk(&updateCbk, this); core->setActionCbk(&actionCbk, this); core->setKeyPressCbk(&keyPressCbk, this); core->setMouseCbk(&mouseCbk, this); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNbottomWidget, toolBar); ++n; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n; XtSetValues(core->getWidget(), args, n);#ifndef DISABLE_OUTLINE } else { // paned window n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNbottomWidget, toolBar); ++n; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNorientation, XmHORIZONTAL); ++n;#if defined(__sgi) && (XmVERSION <= 1) panedWin = SgCreateHorzPanedWindow(form, "panedWin", args, n);#else panedWin = XmCreatePanedWindow(form, "panedWin", args, n);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -