⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xpdfviewer.cc

📁 source code: Covert TXT to PDF
💻 CC
📖 第 1 页 / 共 5 页
字号:
void XPDFViewer::nextTenPageCbk(Widget widget, XtPointer ptr,				XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->gotoNextPage(10, gTrue);  viewer->core->takeFocus();}void XPDFViewer::backCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->goBackward();  viewer->core->takeFocus();}void XPDFViewer::forwardCbk(Widget widget, XtPointer ptr,			    XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->goForward();  viewer->core->takeFocus();}void XPDFViewer::zoomMenuCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XtPointer userData;  XtVaGetValues(widget, XmNuserData, &userData, NULL);  if ((int)userData != viewer->core->getZoom()) {    viewer->displayPage(viewer->core->getPageNum(), (int)userData,			viewer->core->getRotate(), gTrue, gFalse);  }  viewer->core->takeFocus();}void XPDFViewer::findCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  if (!viewer->core->getDoc()) {    return;  }  XtManageChild(viewer->findDialog);}void XPDFViewer::printCbk(Widget widget, XtPointer ptr,			  XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  if (!viewer->core->getDoc()) {    return;  }  XtManageChild(viewer->printDialog);}void XPDFViewer::aboutCbk(Widget widget, XtPointer ptr,			  XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XtManageChild(viewer->aboutDialog);}void XPDFViewer::quitCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->app->quit();}void XPDFViewer::openCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->mapOpenDialog(gFalse);}void XPDFViewer::openInNewWindowCbk(Widget widget, XtPointer ptr,				    XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->mapOpenDialog(gTrue);}void XPDFViewer::reloadCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->reloadFile();}void XPDFViewer::saveAsCbk(Widget widget, XtPointer ptr,			   XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  if (!viewer->core->getDoc()) {    return;  }  viewer->mapSaveAsDialog();}void XPDFViewer::rotateCCWCbk(Widget widget, XtPointer ptr,			      XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  int r;  r = viewer->core->getRotate();  r = (r == 0) ? 270 : r - 90;  viewer->displayPage(viewer->core->getPageNum(), viewer->core->getZoom(),		      r, gTrue, gFalse);}void XPDFViewer::rotateCWCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  int r;  r = viewer->core->getRotate();  r = (r == 270) ? 0 : r + 90;  viewer->displayPage(viewer->core->getPageNum(), viewer->core->getZoom(),		      r, gTrue, gFalse);}void XPDFViewer::closeCbk(Widget widget, XtPointer ptr,			  XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->app->close(viewer, gFalse);}void XPDFViewer::closeMsgCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->app->close(viewer, gTrue);}void XPDFViewer::pageNumCbk(Widget widget, XtPointer ptr,			    XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  char *s, *p;  int pg;  char buf[20];  if (!viewer->core->getDoc()) {    goto err;  }  s = XmTextFieldGetString(viewer->pageNumText);  for (p = s; *p; ++p) {    if (!isdigit(*p)) {      goto err;    }  }  pg = atoi(s);  if (pg < 1 || pg > viewer->core->getDoc()->getNumPages()) {    goto err;  }  viewer->displayPage(pg, viewer->core->getZoom(),		      viewer->core->getRotate(), gFalse, gTrue);  viewer->core->takeFocus();  return; err:  XBell(viewer->display, 0);  sprintf(buf, "%d", viewer->core->getPageNum());  XmTextFieldSetString(viewer->pageNumText, buf);}void XPDFViewer::updateCbk(void *data, GString *fileName,			   int pageNum, int numPages, char *linkLabel) {  XPDFViewer *viewer = (XPDFViewer *)data;  GString *title;  char buf[20];  XmString s;  if (fileName) {    if (!(title = viewer->app->getTitle())) {      title = (new GString(xpdfAppName))->append(": ")->append(fileName);    }    XtVaSetValues(viewer->win, XmNtitle, title->getCString(),		  XmNiconName, title->getCString(), NULL);    if (!viewer->app->getTitle()) {      delete title;    }#ifndef DISABLE_OUTLINE    if (!viewer->app->getFullScreen()) {      viewer->setupOutline();    }#endif    viewer->setupPrintDialog();  }  if (pageNum >= 0) {    s = XmStringCreateLocalized("");    XtVaSetValues(viewer->linkLabel, XmNlabelString, s, NULL);    XmStringFree(s);    sprintf(buf, "%d", pageNum);    XmTextFieldSetString(viewer->pageNumText, buf);    XtVaSetValues(viewer->prevTenPageBtn, XmNsensitive,		  pageNum > 1, NULL);    XtVaSetValues(viewer->prevPageBtn, XmNsensitive,		  pageNum > 1, NULL);    XtVaSetValues(viewer->nextTenPageBtn, XmNsensitive,		  pageNum < viewer->core->getDoc()->getNumPages(), NULL);    XtVaSetValues(viewer->nextPageBtn, XmNsensitive,		  pageNum < viewer->core->getDoc()->getNumPages(), NULL);    XtVaSetValues(viewer->backBtn, XmNsensitive,		  viewer->core->canGoBack(), NULL);    XtVaSetValues(viewer->forwardBtn, XmNsensitive,		  viewer->core->canGoForward(), NULL);  }  if (numPages >= 0) {    sprintf(buf, " of %d", numPages);    s = XmStringCreateLocalized(buf);    XtVaSetValues(viewer->pageCountLabel, XmNlabelString, s, NULL);    XmStringFree(s);  }  if (linkLabel) {    s = XmStringCreateLocalized(linkLabel);    XtVaSetValues(viewer->linkLabel, XmNlabelString, s, NULL);    XmStringFree(s);  }}//------------------------------------------------------------------------// GUI code: outline//------------------------------------------------------------------------#ifndef DISABLE_OUTLINEvoid XPDFViewer::setupOutline() {  GList *items;  UnicodeMap *uMap;  GString *enc;  int i;  // unmanage and destroy the old labels  if (outlineLabels) {    XtUnmanageChildren(outlineLabels, outlineLabelsLength);    for (i = 0; i < outlineLabelsLength; ++i) {      XtDestroyWidget(outlineLabels[i]);    }    gfree(outlineLabels);    outlineLabels = NULL;    outlineLabelsLength = outlineLabelsSize = 0;  }  // create the new labels  items = core->getDoc()->getOutline()->getItems();  if (items && items->getLength() > 0) {    enc = new GString("Latin1");    uMap = globalParams->getUnicodeMap(enc);    delete enc;    setupOutlineItems(items, NULL, uMap);    uMap->decRefCnt();  }  // manage the new labels  XtManageChildren(outlineLabels, outlineLabelsLength);}void XPDFViewer::setupOutlineItems(GList *items, Widget parent,				   UnicodeMap *uMap) {  OutlineItem *item;  GList *kids;  Widget label;  Arg args[20];  GString *title;  char buf[8];  XmString s;  int i, j, n;  for (i = 0; i < items->getLength(); ++i) {    item = (OutlineItem *)items->get(i);    title = new GString();    for (j = 0; j < item->getTitleLength(); ++j) {      n = uMap->mapUnicode(item->getTitle()[j], buf, sizeof(buf));      title->append(buf, n);    }    n = 0;    XtSetArg(args[n], XPDFNentryPosition, i); ++n;    if (parent) {      XtSetArg(args[n], XPDFNentryParent, parent); ++n;    }    XtSetArg(args[n], XPDFNentryExpanded, item->isOpen()); ++n;    s = XmStringCreateLocalized(title->getCString());    delete title;    XtSetArg(args[n], XmNlabelString, s); ++n;    XtSetArg(args[n], XmNuserData, item); ++n;    XtSetArg(args[n], XmNmarginWidth, 0); ++n;    XtSetArg(args[n], XmNmarginHeight, 2); ++n;    XtSetArg(args[n], XmNshadowThickness, 0); ++n;    XtSetArg(args[n], XmNforeground,	     app->getReverseVideo() ? WhitePixel(display, screenNum)	                            : BlackPixel(display, screenNum)); ++n;    XtSetArg(args[n], XmNbackground, app->getPaperColor()); ++n;    label = XmCreateLabelGadget(outlineTree, "label", args, n);    XmStringFree(s);    if (outlineLabelsLength == outlineLabelsSize) {      outlineLabelsSize += 64;      outlineLabels = (Widget *)grealloc(outlineLabels,					 outlineLabelsSize * sizeof(Widget *));    }    outlineLabels[outlineLabelsLength++] = label;    item->open();    if ((kids = item->getKids())) {      setupOutlineItems(kids, label, uMap);    }  }}void XPDFViewer::outlineSelectCbk(Widget widget, XtPointer ptr,				  XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XPDFTreeSelectCallbackStruct *data =      (XPDFTreeSelectCallbackStruct *)callData;  OutlineItem *item;  XtVaGetValues(data->selectedItem, XmNuserData, &item, NULL);  if (item) {    viewer->core->doAction(item->getAction());  }  viewer->core->takeFocus();}#endif // !DISABLE_OUTLINE//------------------------------------------------------------------------// GUI code: "about" dialog//------------------------------------------------------------------------void XPDFViewer::initAboutDialog() {  Widget scrolledWin, col, label, sep, closeBtn;  Arg args[20];  int n, i;  XmString s;  char buf[20];  XmFontListEntry entry;  //----- dialog  n = 0;  s = XmStringCreateLocalized(xpdfAppName ": About");  XtSetArg(args[n], XmNdialogTitle, s); ++n;  XtSetArg(args[n], XmNwidth, 450); ++n;  XtSetArg(args[n], XmNheight, 300); ++n;  aboutDialog = XmCreateFormDialog(win, "aboutDialog", args, n);  XmStringFree(s);  //----- "close" button  n = 0;  XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNrightOffset, 4); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomOffset, 4); ++n;  closeBtn = XmCreatePushButton(aboutDialog, "Close", args, n);  XtManageChild(closeBtn);  n = 0;  XtSetArg(args[n], XmNdefaultButton, closeBtn); ++n;  XtSetArg(args[n], XmNcancelButton, closeBtn); ++n;  XtSetValues(aboutDialog, args, n);  //----- scrolled window and RowColumn  n = 0;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNbottomWidget, closeBtn); ++n;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNscrollingPolicy, XmAUTOMATIC); ++n;  scrolledWin = XmCreateScrolledWindow(aboutDialog, "scrolledWin", args, n);  XtManageChild(scrolledWin);  n = 0;  XtSetArg(args[n], XmNorientation, XmVERTICAL); ++n;  XtSetArg(args[n], XmNpacking, XmPACK_TIGHT); ++n;  col = XmCreateRowColumn(scrolledWin, "col", args, n);  XtManageChild(col);  //----- fonts  entry = XmFontListEntryLoad(		display,		"-*-times-bold-i-normal--20-*-*-*-*-*-iso8859-1",		XmFONT_IS_FONT, XmFONTLIST_DEFAULT_TAG);  aboutBigFont = XmFontListAppendEntry(NULL, entry);  XmFontListEntryFree(&entry);  entry = XmFontListEntryLoad(		display,		"-*-times-medium-r-normal--16-*-*-*-*-*-iso8859-1",		XmFONT_IS_FONT, XmFONTLIST_DEFAULT_TAG);  aboutVersionFont = XmFontListAppendEntry(NULL, entry);  XmFontListEntryFree(&entry);  entry = XmFontListEntryLoad(		display,		"-*-courier-medium-r-normal--12-*-*-*-*-*-iso8859-1",		XmFONT_IS_FONT, XmFONTLIST_DEFAULT_TAG);  aboutFixedFont = XmFontListAppendEntry(NULL, entry);  XmFontListEntryFree(&entry);  //----- heading  n = 0;  s = XmStringCreateLocalized("Xpdf");  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNfontList, aboutBigFont); ++n;  label = XmCreateLabel(col, "h0", args, n);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -