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

📄 search.c

📁 nedit 是一款linux下的开发源码的功能强大的编辑器
💻 C
📖 第 1 页 / 共 5 页
字号:
        /* Set the state of the Keep Dialog Up button */    XmToggleButtonSetState(window->findKeepBtn, keepDialogs, True);        /* Set the state of the Find button */    fUpdateActionButtons(window);    /* start the search history mechanism at the current history item */    window->fHistIndex = 0;        /* Display the dialog */    ManageDialogCenteredOnPointer(window->findDlog);}void DoReplaceMultiFileDlog(WindowInfo *window){    char	searchString[SEARCHMAX], replaceString[SEARCHMAX];    int		direction, searchType;        /* Validate and fetch the find and replace strings from the dialog */    if (!getReplaceDlogInfo(window, &direction, searchString, replaceString,    	    &searchType))  	return;        /* Don't let the user select files when no replacement can be made */    if (*searchString == '\0') {       /* Set the initial focus of the dialog back to the search string */       resetReplaceTabGroup(window);       /* pop down the replace dialog */       if (!XmToggleButtonGetState(window->replaceKeepBtn))    	   unmanageReplaceDialogs(window);       return;    }        /* Create the dialog if it doesn't already exist */    if (window->replaceMultiFileDlog == NULL)    	createReplaceMultiFileDlog(window);    /* Raising the window doesn't make sense. It is modal, so we        can't get here unless it is unmanaged */    /* Prepare a list of writable windows */    collectWritableWindows(window);        /* Initialize/update the list of files. */    uploadFileListItems(window, False);        /* Display the dialog */    ManageDialogCenteredOnPointer(window->replaceMultiFileDlog);}/*** If a window is closed (possibly via the window manager) while it is on the** multi-file replace dialog list of any other window (or even the same one),** we must update those lists or we end up with dangling references.** Normally, there can be only one of those dialogs at the same time** (application modal), but Lesstif doesn't (always) honor application** modalness, so there can be more than one dialog. */void RemoveFromMultiReplaceDialog(WindowInfo *doomedWindow){    WindowInfo *w;        for (w=WindowList; w!=NULL; w=w->next)        if (w->writableWindows)           /* A multi-file replacement dialog is up for this window */          checkMultiReplaceListForDoomedW(w, doomedWindow);}static void createReplaceDlog(Widget parent, WindowInfo *window){    Arg    	args[50];    int    	argcnt, defaultBtnOffset;    XmString	st1;    Widget	form, btnForm;#ifdef REPLACE_SCOPE    Widget	scopeForm, replaceAllBtn;#else    Widget	label3, allForm;#endif    Widget	inWinBtn, inSelBtn, inMultiBtn;    Widget    	searchTypeBox;    Widget    	label2, label1, label, replaceText, findText;    Widget    	findBtn,  cancelBtn, replaceBtn;    Widget    	replaceFindBtn;    Widget	searchDirBox, reverseBtn, keepBtn;    char 	title[MAXPATHLEN + 19];    Dimension	shadowThickness;     argcnt = 0;    XtSetArg(args[argcnt], XmNautoUnmanage, False); argcnt++;    form = CreateFormDialog(parent, "replaceDialog", args, argcnt);    XtVaSetValues(form, XmNshadowThickness, 0, NULL);    if (GetPrefKeepSearchDlogs()) {    	sprintf(title, "Replace/Find (in %s)", window->filename);    	XtVaSetValues(XtParent(form), XmNtitle, title, NULL);    } else    	XtVaSetValues(XtParent(form), XmNtitle, "Replace/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, 4); 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, 't'); 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, "replaceString", args, argcnt);    XtAddCallback(findText, XmNfocusCallback, (XtCallbackProc)rFocusCB, window);    XtAddCallback(findText, XmNvalueChangedCallback,       (XtCallbackProc)rFindTextValueChangedCB, window);    XtAddEventHandler(findText, KeyPressMask, False,    	    (XtEventHandler)rFindArrowKeyCB, window);    RemapDeleteKey(findText);    XtManageChild(findText);    XmAddTabGroup(findText);    XtVaSetValues(label1, XmNuserData, findText, NULL); /* mnemonic processing */     argcnt = 0;    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_NONE); argcnt++;    XtSetArg(args[argcnt], XmNtopWidget, findText); 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("Replace With:")); argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'W'); argcnt++;    label = XmCreateLabel(form, "label", args, argcnt);    XmStringFree(st1);    XtManageChild(label);     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, label); argcnt++;    XtSetArg(args[argcnt], XmNleftOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNrightOffset, 6); argcnt++;    XtSetArg(args[argcnt], XmNmaxLength, SEARCHMAX); argcnt++;    replaceText = XmCreateText(form, "replaceWithString", args, argcnt);    XtAddEventHandler(replaceText, KeyPressMask, False,    	    (XtEventHandler)replaceArrowKeyCB, window);    RemapDeleteKey(replaceText);    XtManageChild(replaceText);    XmAddTabGroup(replaceText);    XtVaSetValues(label, XmNuserData, replaceText, 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, replaceText); 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->replaceRegexToggle = XmCreateToggleButton(searchTypeBox, "regExp", args, argcnt);    XmStringFree(st1);    XtManageChild(window->replaceRegexToggle);    XtAddCallback(window->replaceRegexToggle, XmNvalueChangedCallback, (XtCallbackProc) replaceRegExpToggleCB, 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->replaceCaseToggle = XmCreateToggleButton(searchTypeBox, "caseSensitive", args, argcnt);    XmStringFree(st1);    XtManageChild(window->replaceCaseToggle);    XtAddCallback(window->replaceCaseToggle, XmNvalueChangedCallback, (XtCallbackProc) replaceCaseToggleCB, 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->replaceWordToggle = XmCreateToggleButton(searchTypeBox, "wholeWord", args, argcnt);    XmStringFree(st1);    XtManageChild(window->replaceWordToggle);        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)rKeepCB, window);    XmStringFree(st1);    XtManageChild(keepBtn);    XmAddTabGroup(keepBtn);    #ifdef REPLACE_SCOPE    argcnt = 0;    XtSetArg(args[argcnt], XmNorientation, XmHORIZONTAL); argcnt++;    XtSetArg(args[argcnt], XmNpacking, XmPACK_TIGHT); argcnt++;    XtSetArg(args[argcnt], XmNmarginHeight, 0); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); 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, 6); argcnt++;    XtSetArg(args[argcnt], XmNradioBehavior, True); argcnt++;    XtSetArg(args[argcnt], XmNradioAlwaysOne, True); argcnt++;    scopeForm = XmCreateRowColumn(form, "scope", args, argcnt);    XtManageChild(scopeForm);    XmAddTabGroup(scopeForm);        argcnt = 0;    XtSetArg(args[argcnt], XmNtraversalOn, True); argcnt++;    XtSetArg(args[argcnt], XmNhighlightThickness, 2); argcnt++;    XtSetArg(args[argcnt], XmNlabelString, st1=MKSTRING("In Window"));         argcnt++;    XtSetArg(args[argcnt], XmNmnemonic, 'i'); argcnt++;    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;

⌨️ 快捷键说明

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