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

📄 xpdfviewer.cc

📁 将pdf文档转换为高质量的html文档
💻 CC
📖 第 1 页 / 共 5 页
字号:
    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->getPaperPixel()); ++n;    label = XmCreateLabelGadget(outlineTree, "label", args, n);    XmStringFree(s);    if (outlineLabelsLength == outlineLabelsSize) {      outlineLabelsSize += 64;      outlineLabels = (Widget *)greallocn(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) {    if (item->getAction()) {      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];  //----- 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  aboutBigFont =    createFontList("-*-times-bold-i-normal--20-*-*-*-*-*-iso8859-1");  aboutVersionFont =    createFontList("-*-times-medium-r-normal--16-*-*-*-*-*-iso8859-1");  aboutFixedFont =    createFontList("-*-courier-medium-r-normal--12-*-*-*-*-*-iso8859-1");  //----- heading  n = 0;  s = XmStringCreateLocalized("Xpdf");  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNfontList, aboutBigFont); ++n;  label = XmCreateLabel(col, "h0", args, n);  XmStringFree(s);  XtManageChild(label);  n = 0;  s = XmStringCreateLocalized("Version " xpdfVersion);  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNfontList, aboutVersionFont); ++n;  label = XmCreateLabel(col, "h1", args, n);  XmStringFree(s);  XtManageChild(label);  n = 0;  s = XmStringCreateLocalized(xpdfCopyright);  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNfontList, aboutVersionFont); ++n;  label = XmCreateLabel(col, "h2", args, n);  XmStringFree(s);  XtManageChild(label);  n = 0;  s = XmStringCreateLocalized(" ");  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNfontList, aboutVersionFont); ++n;  label = XmCreateLabel(col, "h3", args, n);  XmStringFree(s);  XtManageChild(label);  n = 0;  XtSetArg(args[n], XmNorientation, XmHORIZONTAL); ++n;  sep = XmCreateSeparator(col, "sep", args, n);  XtManageChild(sep);  n = 0;  s = XmStringCreateLocalized(" ");  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNfontList, aboutVersionFont); ++n;  label = XmCreateLabel(col, "h4", args, n);  XmStringFree(s);  XtManageChild(label);  n = 0;  //----- text  for (i = 0; aboutWinText[i]; ++i) {    n = 0;    s = XmStringCreateLocalized(aboutWinText[i]);    XtSetArg(args[n], XmNlabelString, s); ++n;    XtSetArg(args[n], XmNfontList, aboutFixedFont); ++n;    sprintf(buf, "t%d", i);    label = XmCreateLabel(col, buf, args, n);    XtManageChild(label);    XmStringFree(s);  }}//------------------------------------------------------------------------// GUI code: "open" dialog//------------------------------------------------------------------------void XPDFViewer::initOpenDialog() {  Arg args[20];  int n;  XmString s1, s2, s3;  GString *dir;  n = 0;  s1 = XmStringCreateLocalized("Open");  XtSetArg(args[n], XmNokLabelString, s1); ++n;  s2 = XmStringCreateLocalized("*.[Pp][Dd][Ff]");  XtSetArg(args[n], XmNpattern, s2); ++n;  s3 = XmStringCreateLocalized(xpdfAppName ": Open");  XtSetArg(args[n], XmNdialogTitle, s3); ++n;  XtSetArg(args[n], XmNdialogStyle, XmDIALOG_PRIMARY_APPLICATION_MODAL); ++n;  XtSetArg(args[n], XmNautoUnmanage, True); ++n;  openDialog = XmCreateFileSelectionDialog(win, "openDialog", args, n);  XmStringFree(s1);  XmStringFree(s2);  XmStringFree(s3);  XtUnmanageChild(XmFileSelectionBoxGetChild(openDialog,					     XmDIALOG_HELP_BUTTON));  XtAddCallback(openDialog, XmNokCallback,		&openOkCbk, (XtPointer)this);  if (core->getDoc() && core->getDoc()->getFileName()) {    dir = makePathAbsolute(grabPath(	      core->getDoc()->getFileName()->getCString()));    s1 = XmStringCreateLocalized(dir->getCString());    XtVaSetValues(openDialog, XmNdirectory, s1, NULL);    XmStringFree(s1);    delete dir;  }}void XPDFViewer::mapOpenDialog(GBool openInNewWindowA) {  if (!openDialog) {    initOpenDialog();  }  openInNewWindow = openInNewWindowA;  XmFileSelectionDoSearch(openDialog, NULL);  XtManageChild(openDialog);}void XPDFViewer::openOkCbk(Widget widget, XtPointer ptr,			   XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XmFileSelectionBoxCallbackStruct *data =    (XmFileSelectionBoxCallbackStruct *)callData;  char *fileName;  XmStringContext context;  XmStringCharSet charSet;  XmStringDirection dir;  Boolean sep;  GString *fileNameStr;  XmStringInitContext(&context, data->value);  if (XmStringGetNextSegment(context, &fileName, &charSet, &dir, &sep)) {    fileNameStr = new GString(fileName);    if (viewer->openInNewWindow) {      viewer->app->open(fileNameStr);    } else {      if (viewer->loadFile(fileNameStr)) {	viewer->displayPage(1, viewer->core->getZoom(),			    viewer->core->getRotate(), gTrue, gTrue);      }    }    delete fileNameStr;    XtFree(charSet);    XtFree(fileName);  }  XmStringFreeContext(context);}//------------------------------------------------------------------------// GUI code: "find" dialog//------------------------------------------------------------------------void XPDFViewer::initFindDialog() {  Widget form1, label, okBtn, closeBtn;  Arg args[20];  int n;  XmString s;  //----- dialog  n = 0;  s = XmStringCreateLocalized(xpdfAppName ": Find");  XtSetArg(args[n], XmNdialogTitle, s); ++n;  XtSetArg(args[n], XmNnavigationType, XmNONE); ++n;  XtSetArg(args[n], XmNautoUnmanage, False); ++n;  findDialog = XmCreateFormDialog(win, "findDialog", args, n);  XmStringFree(s);  //----- "find" and "close" buttons  n = 0;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNleftOffset, 4); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomOffset, 4); ++n;  XtSetArg(args[n], XmNnavigationType, XmEXCLUSIVE_TAB_GROUP); ++n;  okBtn = XmCreatePushButton(findDialog, "Find", args, n);  XtManageChild(okBtn);  XtAddCallback(okBtn, XmNactivateCallback,		&findFindCbk, (XtPointer)this);  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;  XtSetArg(args[n], XmNnavigationType, XmEXCLUSIVE_TAB_GROUP); ++n;  closeBtn = XmCreatePushButton(findDialog, "Close", args, n);  XtManageChild(closeBtn);  XtAddCallback(closeBtn, XmNactivateCallback,		&findCloseCbk, (XtPointer)this);  //----- checkboxes  n = 0;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNleftOffset, 4); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNbottomWidget, okBtn); ++n;  XtSetArg(args[n], XmNindicatorType, XmN_OF_MANY); ++n;#if XmVERSION <= 1  XtSetArg(args[n], XmNindicatorOn, True); ++n;#else  XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_FILL); ++n;#endif  XtSetArg(args[n], XmNset, XmUNSET); ++n;  s = XmStringCreateLocalized("Search backward");  XtSetArg(args[n], XmNlabelString, s); ++n;  findBackwardToggle = XmCreateToggleButton(findDialog, "backward", args, n);  XmStringFree(s);  XtManageChild(findBackwardToggle);  n = 0;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNleftWidget, findBackwardToggle); ++n;  XtSetArg(args[n], XmNleftOffset, 16); ++n;  XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNrightOffset, 4); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNbottomWidget, okBtn); ++n;  XtSetArg(args[n], XmNindicatorType, XmN_OF_MANY); ++n;#if XmVERSION <= 1  XtSetArg(args[n], XmNindicatorOn, True); ++n;#else  XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_FILL); ++n;#endif  XtSetArg(args[n], XmNset, XmUNSET); ++n;  s = XmStringCreateLocalized("Match case");  XtSetArg(args[n], XmNlabelString, s); ++n;  findCaseSensitiveToggle =      XmCreateToggleButton(findDialog, "matchCase", args, n);  XmStringFree(s);  XtManageChild(findCaseSensitiveToggle);  //----- search string entry  n = 0;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNtopOffset, 4); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNbottomWidget, findBackwardToggle); ++n;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNleftOffset, 2); ++n;  XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNrightOffset, 2); ++n;  form1 = XmCreateForm(findDialog, "form", args, n);  XtManageChild(form1);  n = 0;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n;  s = XmStringCreateLocalized("Find text: ");  XtSetArg(args[n], XmNlabelString, s); ++n;  label = XmCreateLabel(form1, "label", args, n);  XmStringFree(s);  XtManageChild(label);  n = 0;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNleftWidget, label); ++n;  XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n;  findText = XmCreateTextField(form1, "text", args, n);  XtManageChild(findText);#ifdef LESSTIF_VERSION  XtAddCallback(findText, XmNactivateCallback,		&findFindCbk, (XtPointer)this);#endif  //----- dialog parameters  n = 0;  XtSetArg(args[n], XmNdefaultButton, okBtn); ++n;  XtSetArg(args[n], XmNcancelButton, closeBtn); ++n;#if XmVersion > 1001  XtSetArg(args[n], XmNinitialFocus, findText); ++n;#endif  XtSetValues(findDialog, args, n);}void XPDFViewer::findFindCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->doFind(gFalse);}void XPDFViewer::mapFindDialog() {  XmTextFieldSetSelection(findText, 0, XmTextFieldGetLastPosition(findText),			  XtLastTimestampProcessed(display));  XmTextFieldSetInsertionPosition(findText, 0);  XtManageChild(findDialog);}void XPDFViewer::doFind(GBool next) {  if (XtWindow(findDialog)) {    XDefineCursor(display, XtWindow(findDialog), core->getBusyCursor());  }  core->find(XmTextFieldGetString(findText),	     XmToggleButtonGetState(findCaseSensitiveToggle),	     next,	     XmToggleButtonGetState(findBackwardToggle),	     gFalse);  if (XtWindow(findDialog)) {    XUndefineCursor(display, XtWindow(findDialog));  }}void XPDFViewer::findCloseCbk(Widget widget, XtPointer ptr,			      XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XtUnmanageChild(viewer->findDialog);}//------------------------------------------------------------------------// GUI code: "save as" dialog//------------------------------------------------------------------------void XPDFViewer::initSaveAsDialog() {  Arg args[20];  int n;  XmString s1, s2, s3;  GString *dir;  n = 0;  s1 = XmStringCreateLocalized("Save");  XtSetArg(args[n], XmNokLabelString, s1); ++n;  s2 = XmStringCreateLocalized("*.[Pp][Dd][Ff]");  XtSetArg(args[n], XmNpattern, s2); ++n;  s3 = XmStringCreateLocalized(xpdfAppName ": Save as");  XtSetArg(args[n], XmNdialogTitle, s3); ++n;  XtSetArg(args[n], XmNdialogStyle, XmDIALOG_PRIMARY_APPLICATION_MODAL); ++n;  XtSetArg(args[n], XmNautoUnmanage, True); ++n;  saveAsDialog = XmCreateFileSelectionDialog(win, "saveAsDialog", args, 

⌨️ 快捷键说明

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