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

📄 search.c

📁 nedit 是一款linux下的开发源码的功能强大的编辑器
💻 C
📖 第 1 页 / 共 5 页
字号:
    	XtVaSetValues(XtParent(form), XmNtitle, "Find", NULL);     argcnt = 0;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNtopOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNalignment, XmALIGNMENT_BEGINNING); argcnt++;    XtSetArg(args[argcnt], XmNlabelString, st1=MKSTRING("String to Find:"));    	    argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'S'); argcnt++;    label1 = XmCreateLabel(form, "label1", args, argcnt);    XmStringFree(st1);    XtManageChild(label1);     argcnt = 0;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNtopOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNalignment, XmALIGNMENT_END); argcnt++;    XtSetArg(args[argcnt], XmNlabelString, st1=MKSTRING(    	   "(use up arrow key to recall previous)")); argcnt++;    label2 = XmCreateLabel(form, "label2", args, argcnt);    XmStringFree(st1);    XtManageChild(label2);     argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNtopWidget, label1); argcnt++;    XtSetArg(args[argcnt], XmNleftOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNrightOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNmaxLength, SEARCHMAX); argcnt++;    findText = XmCreateText(form, "searchString", args, argcnt);    XtAddCallback(findText, XmNfocusCallback, (XtCallbackProc)fFocusCB, window);    XtAddCallback(findText, XmNvalueChangedCallback,       (XtCallbackProc)findTextValueChangedCB, window);    XtAddEventHandler(findText, KeyPressMask, False,    	    (XtEventHandler)findArrowKeyCB, window);    RemapDeleteKey(findText);    XtManageChild(findText);    XmAddTabGroup(findText);    XtVaSetValues(label1, XmNuserData, findText, NULL); /* mnemonic processing */    argcnt = 0;    XtSetArg(args[argcnt], XmNorientation, XmHORIZONTAL); argcnt++;    XtSetArg(args[argcnt], XmNpacking, XmPACK_TIGHT); argcnt++;    XtSetArg(args[argcnt], XmNmarginHeight, 0); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNtopWidget, findText); argcnt++;    XtSetArg(args[argcnt], XmNleftOffset, 2); argcnt++;    XtSetArg(args[argcnt], XmNrightOffset, 4); argcnt++;        searchTypeBox = XmCreateRowColumn(form, "searchTypeBox", args, argcnt);    XtManageChild(searchTypeBox);    XmAddTabGroup(searchTypeBox);     argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNlabelString,     	     st1=MKSTRING("Regular Expression")); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'R'); argcnt++;    window->findRegexToggle = XmCreateToggleButton(searchTypeBox, "regExp", args, argcnt);    XmStringFree(st1);    XtManageChild(window->findRegexToggle);    XtAddCallback(window->findRegexToggle, XmNvalueChangedCallback, (XtCallbackProc) findRegExpToggleCB, window);     argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNlabelString, st1=MKSTRING("Case Sensitive")); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'C'); argcnt++;    window->findCaseToggle = XmCreateToggleButton(searchTypeBox, "caseSensitive", args, argcnt);    XmStringFree(st1);    XtManageChild(window->findCaseToggle);    XtAddCallback(window->findCaseToggle, XmNvalueChangedCallback, (XtCallbackProc) findCaseToggleCB, window);        argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNlabelString, st1=MKSTRING("Whole Word")); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'h'); argcnt++;    window->findWordToggle = XmCreateToggleButton(searchTypeBox, "wholeWord", args, argcnt);    XmStringFree(st1);    XtManageChild(window->findWordToggle);        argcnt = 0;    XtSetArg(args[argcnt], XmNorientation, XmHORIZONTAL); argcnt++;    XtSetArg(args[argcnt], XmNpacking, XmPACK_TIGHT); argcnt++;    XtSetArg(args[argcnt], XmNmarginHeight, 0); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;    XtSetArg(args[argcnt], XmNtopWidget, searchTypeBox); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNleftOffset, 2); argcnt++;    XtSetArg(args[argcnt], XmNradioBehavior, False); argcnt++;    searchDirBox = XmCreateRowColumn(form, "searchDirBox", args, argcnt);    XtManageChild(searchDirBox);    XmAddTabGroup(searchDirBox);        argcnt = 0;    XtSetArg(args[argcnt], XmNlabelString,    	     st1=MKSTRING("Search Backward")); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'B'); argcnt++;    reverseBtn = XmCreateToggleButton(searchDirBox, "reverse", args, argcnt);    XmStringFree(st1);    XtManageChild(reverseBtn);        argcnt = 0;    XtSetArg(args[argcnt], XmNlabelString,    	     st1=MKSTRING("Keep Dialog")); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'K'); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;    XtSetArg(args[argcnt], XmNtopWidget, searchTypeBox); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightOffset, 4); argcnt++;    keepBtn = XmCreateToggleButton(form, "keep", args, argcnt);    XtAddCallback(keepBtn, XmNvalueChangedCallback,    	    (XtCallbackProc)fKeepCB, window);    XmStringFree(st1);    XtManageChild(keepBtn);    XmAddTabGroup(keepBtn);    argcnt = 0;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNtopWidget, searchDirBox); argcnt++;    XtSetArg(args[argcnt], XmNleftOffset, 2); argcnt++;    XtSetArg(args[argcnt], XmNrightOffset, 4); argcnt++;    btnForm = XmCreateForm(form, "buttons", args, argcnt);    XtManageChild(btnForm);    XmAddTabGroup(btnForm);    argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNlabelString, st1=MKSTRING("Find")); argcnt++;    XtSetArg(args[argcnt], XmNshowAsDefault, (short)1); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftPosition, 20); argcnt++;    XtSetArg(args[argcnt], XmNbottomOffset, 6); argcnt++;    findBtn = XmCreatePushButton(btnForm, "find", args, argcnt);    XtAddCallback(findBtn, XmNactivateCallback, (XtCallbackProc)findCB, window);    XmStringFree(st1);    XtManageChild(findBtn);    XtVaGetValues(findBtn, XmNshadowThickness, &shadowThickness, NULL);    defaultBtnOffset = shadowThickness + 4;    argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNlabelString, st1=MKSTRING("Cancel")); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;    XtSetArg(args[argcnt], XmNrightPosition, 80); argcnt++;    XtSetArg(args[argcnt], XmNtopOffset, defaultBtnOffset); argcnt++;    cancelBtn = XmCreatePushButton(btnForm, "cancel", args, argcnt);    XtAddCallback(cancelBtn, XmNactivateCallback, (XtCallbackProc)fCancelCB,    	    window);    XmStringFree(st1);    XtManageChild(cancelBtn);    XtVaSetValues(form, XmNcancelButton, cancelBtn, NULL);    AddDialogMnemonicHandler(form, FALSE);        window->findDlog = form;    window->findText = findText;    window->findRevToggle = reverseBtn;    window->findKeepBtn = keepBtn;    window->findBtns = btnForm;    window->findBtn = findBtn;    window->findSearchTypeBox = searchTypeBox;}static void createReplaceMultiFileDlog(WindowInfo *window) {    Arg		args[50];    int		argcnt, defaultBtnOffset;    XmString	st1;    Widget	list, label1, form, pathBtn;    Widget	btnForm, replaceBtn, selectBtn, deselectBtn, cancelBtn;    Dimension	shadowThickness;        argcnt = 0;    XtSetArg(args[argcnt], XmNautoUnmanage, False); argcnt++;    XtSetArg (args[argcnt], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL);	    argcnt ++;    /* Ideally, we should create the multi-file dialog as a child widget       of the replace dialog. However, if we do this, the main window       can hide the multi-file dialog when raised (I'm not sure why, but        it's something that I observed with fvwm). By using the main window       as the parent, it is possible that the replace dialog _partially_       covers the multi-file dialog, but this much better than the multi-file       dialog being covered completely by the main window */    form = CreateFormDialog(window->shell, "replaceMultiFileDialog",            			     args, argcnt);    XtVaSetValues(form, XmNshadowThickness, 0, NULL);    XtVaSetValues(XtParent(form), XmNtitle, "Replace All in Multiple Files", 		  NULL);        /* Label at top left. */    argcnt = 0;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;    /* Offset = 6 + (highlightThickness + detailShadowThickness) of the       toggle button (see below). Unfortunately, detailShadowThickness is       a Motif 2.x property, so we can't measure it. The default is 2 pixels.       To make things even more complicated, the SunOS 5.6 / Solaris 2.6        version of Motif 1.2 seems to use a detailShadowThickness of 0 ...       So we'll have to live with a slight misalignment on that platform       (those Motif libs are known to have many other problems). */    XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;    XtSetArg(args[argcnt], XmNleftOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNalignment, XmALIGNMENT_BEGINNING); argcnt++;    XtSetArg(args[argcnt], XmNlabelString,        st1=MKSTRING("Files in which to Replace All:")); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'F'); argcnt++;    label1 = XmCreateLabel(form, "label1", args, argcnt);    XmStringFree(st1);    XtManageChild(label1);        /* Pathname toggle button at top right (always unset by default) */    argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNset, False); argcnt++;    XtSetArg(args[argcnt], XmNrightOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNtopOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNalignment, XmALIGNMENT_END); argcnt++;    XtSetArg(args[argcnt], XmNlabelString,    	     st1=MKSTRING("Show Path Names")); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'P'); argcnt++;    pathBtn = XmCreateToggleButton(form, "path", args, argcnt);    XmStringFree(st1);    XtAddCallback(pathBtn, XmNvalueChangedCallback,    	    (XtCallbackProc)rMultiFilePathCB, window);    XtManageChild(pathBtn);        /*     * Buttons at bottom. Place them before the list, such that we can     * attach the list to the label and the button box. In that way only     * the lists resizes vertically when the dialog is resized; users expect     * the list to resize, not the buttons.     */         argcnt = 0;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNleftOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNrightOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNtopOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNresizable, (short)0); argcnt++;    btnForm = XmCreateForm(form, "buttons", args, argcnt);    XtManageChild(btnForm);        /* Replace */    argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNlabelString, st1=MKSTRING("Replace")); argcnt++;    XtSetArg(args[argcnt], XmNshowAsDefault, (short)1); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'R'); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION);

⌨️ 快捷键说明

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