📄 windowtitle.c
字号:
if (XmToggleButtonGetState(etDialog.hostW)) appendToFormat(" [%h]"); else removeFromFormat("%h");}#ifndef VMSstatic void toggleClearCaseCB(Widget w, XtPointer clientData, XtPointer callData){ if (XmToggleButtonGetState(etDialog.ccW)) appendToFormat(" {%c}"); else removeFromFormat("%c");}#endif /* VMS */static void toggleStatusCB(Widget w, XtPointer clientData, XtPointer callData){ if (XmToggleButtonGetState(etDialog.statusW)) { if (XmToggleButtonGetState(etDialog.shortStatusW)) appendToFormat(" (%*S)"); else appendToFormat(" (%S)"); } else { removeFromFormat("%S"); removeFromFormat("%*S"); }}static void toggleShortStatusCB(Widget w, XtPointer clientData, XtPointer callData){ char *format, *pos; if (etDialog.suppressFormatUpdate) { return; } format = XmTextGetString(etDialog.formatW); if (XmToggleButtonGetState(etDialog.shortStatusW)) { /* Find all %S occurrences and replace them by %*S */ do { pos = strstr(format, "%S"); if (pos) { char* tmp = (char*)XtMalloc((strlen(format)+2)*sizeof(char)); strncpy(tmp, format, (size_t)(pos-format+1)); tmp[pos-format+1] = 0; strcat(tmp, "*"); strcat(tmp, pos+1); XtFree(format); format = tmp; } } while (pos); } else { /* Replace all %*S occurences by %S */ do { pos = strstr(format, "%*S"); if (pos) { strcpy(pos+1, pos+2); } } while(pos); } XmTextSetString(etDialog.formatW, format); XtFree(format);}static void toggleUserCB(Widget w, XtPointer clientData, XtPointer callData){ if (XmToggleButtonGetState(etDialog.nameW)) appendToFormat(" %u"); else removeFromFormat("%u");}static void toggleDirectoryCB(Widget w, XtPointer clientData, XtPointer callData){ if (XmToggleButtonGetState(etDialog.dirW)) { char buf[20]; int maxComp; char *value = XmTextGetString(etDialog.ndirW); if (*value) { if (sscanf(value, "%d", &maxComp) > 0) { sprintf(&buf[0], " %%%dd ", maxComp); } else { sprintf(&buf[0], " %%d "); /* Should not be necessary */ } } else { sprintf(&buf[0], " %%d "); } XtFree(value); appendToFormat(buf); } else { int i; removeFromFormat("%d"); for (i=0; i<=9; ++i) { char buf[20]; sprintf(&buf[0], "%%%dd", i); removeFromFormat(buf); } }}static void enterMaxDirCB(Widget w, XtPointer clientData, XtPointer callData){ int maxComp = -1; char *format; char *value; if (etDialog.suppressFormatUpdate) { return; } format = XmTextGetString(etDialog.formatW); value = XmTextGetString(etDialog.ndirW); if (*value) { if (sscanf(value, "%d", &maxComp) <= 0) { /* Don't allow non-digits to be entered */ XBell(XtDisplay(w), 0); XmTextSetString(etDialog.ndirW, ""); } } if (maxComp >= 0) { char *pos; int found = False; char insert[2]; insert[0] = (char)('0' + maxComp); insert[1] = (char)0; /* '0' digit and 0 char ! */ /* Find all %d and %nd occurrences and replace them by the new value */ do { int i; found = False; pos = strstr(format, "%d"); if (pos) { char* tmp = (char*)XtMalloc((strlen(format)+2)*sizeof(char)); strncpy(tmp, format, (size_t)(pos-format+1)); tmp[pos-format+1] = 0; strcat(tmp, &insert[0]); strcat(tmp, pos+1); XtFree(format); format = tmp; found = True; } for (i=0; i<=9; ++i) { char buf[20]; sprintf(&buf[0], "%%%dd", i); if (i != maxComp) { pos = strstr(format, &buf[0]); if (pos) { *(pos+1) = insert[0]; found = True; } } } } while (found); } else { int found = True; /* Replace all %nd occurences by %d */ do { int i; found = False; for (i=0; i<=9; ++i) { char buf[20]; char *pos; sprintf(&buf[0], "%%%dd", i); pos = strstr(format, &buf[0]); if (pos) { strcpy(pos+1, pos+2); found = True; } } } while(found); } XmTextSetString(etDialog.formatW, format); XtFree(format); XtFree(value);}static void createEditTitleDialog(Widget parent){#define LEFT_MARGIN_POS 2#define RIGHT_MARGIN_POS 98#define V_MARGIN 5#define RADIO_INDENT 3 Widget buttonForm, formatLbl, previewFrame; Widget previewForm, previewBox, selectFrame, selectBox, selectForm; Widget testLbl, selectLbl; Widget applyBtn, dismissBtn, restoreBtn, helpBtn; XmString s1; XmFontList fontList; Arg args[20]; int defaultBtnOffset; Dimension shadowThickness; Dimension radioHeight, textHeight; Pixel background; int ac = 0; XtSetArg(args[ac], XmNautoUnmanage, False); ac++; XtSetArg(args[ac], XmNtitle, "Customize Window Title"); ac++; etDialog.form = CreateFormDialog(parent, "customizeTitle", args, ac); /* * Destroy the dialog every time it is unmapped (otherwise it 'sticks' * to the window for which it was created originally). */ XtAddCallback(etDialog.form, XmNunmapCallback, wtUnmapCB, NULL); XtAddCallback(etDialog.form, XmNdestroyCallback, wtDestroyCB, NULL); etDialog.shell = XtParent(etDialog.form); /* Definition form */ selectFrame = XtVaCreateManagedWidget("selectionFrame", xmFrameWidgetClass, etDialog.form, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, LEFT_MARGIN_POS, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, V_MARGIN, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, RIGHT_MARGIN_POS, NULL); XtVaCreateManagedWidget("titleLabel", xmLabelGadgetClass, selectFrame, XmNlabelString, s1=XmStringCreateSimple("Title definition"), XmNchildType, XmFRAME_TITLE_CHILD, XmNchildHorizontalAlignment, XmALIGNMENT_BEGINNING, NULL); XmStringFree(s1); selectForm = XtVaCreateManagedWidget("selectForm", xmFormWidgetClass, selectFrame , XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, LEFT_MARGIN_POS, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, V_MARGIN, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, RIGHT_MARGIN_POS, NULL); selectLbl = XtVaCreateManagedWidget("selectLabel", xmLabelGadgetClass, selectForm, XmNlabelString, s1=XmStringCreateSimple("Select title components to include: "), XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, LEFT_MARGIN_POS, XmNtopOffset, 5, XmNbottomOffset, 5, XmNtopAttachment, XmATTACH_FORM, NULL); XmStringFree(s1); selectBox = XtVaCreateManagedWidget("selectBox", xmFormWidgetClass, selectForm, XmNorientation, XmHORIZONTAL, XmNpacking, XmPACK_TIGHT, XmNradioBehavior, False, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNtopOffset, 5, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, selectLbl, NULL); etDialog.fileW = XtVaCreateManagedWidget("file", xmToggleButtonWidgetClass, selectBox, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, RADIO_INDENT, XmNtopAttachment, XmATTACH_FORM, XmNlabelString, s1=XmStringCreateSimple("File name (%f)"), XmNmnemonic, 'F', NULL); XtAddCallback(etDialog.fileW, XmNvalueChangedCallback, toggleFileCB, NULL); XmStringFree(s1); etDialog.statusW = XtVaCreateManagedWidget("status", xmToggleButtonWidgetClass, selectBox, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, RADIO_INDENT, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, etDialog.fileW, XmNlabelString, s1=XmStringCreateSimple("File status (%S) "), XmNmnemonic, 't', NULL); XtAddCallback(etDialog.statusW, XmNvalueChangedCallback, toggleStatusCB, NULL); XmStringFree(s1); etDialog.shortStatusW = XtVaCreateManagedWidget("shortStatus", xmToggleButtonWidgetClass, selectBox, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, etDialog.statusW, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, etDialog.fileW, XmNlabelString, s1=XmStringCreateSimple("brief"), XmNmnemonic, 'b', NULL); XtAddCallback(etDialog.shortStatusW, XmNvalueChangedCallback, toggleShortStatusCB, NULL); XmStringFree(s1); etDialog.ccW = XtVaCreateManagedWidget("ccView", xmToggleButtonWidgetClass, selectBox, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, RADIO_INDENT, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, etDialog.statusW, XmNlabelString, s1=XmStringCreateSimple("ClearCase view tag (%c) "), XmNmnemonic, 'C', NULL);#ifdef VMS XtSetSensitive(etDialog.ccW, False);#else XtAddCallback(etDialog.ccW, XmNvalueChangedCallback, toggleClearCaseCB, NULL);#endif /* VMS */ XmStringFree(s1); etDialog.dirW = XtVaCreateManagedWidget("directory", xmToggleButtonWidgetClass, selectBox, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, RADIO_INDENT, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, etDialog.ccW, XmNlabelString, s1=XmStringCreateSimple("Directory (%d),"), XmNmnemonic, 'D', NULL); XtAddCallback(etDialog.dirW, XmNvalueChangedCallback, toggleDirectoryCB, NULL); XmStringFree(s1); XtVaGetValues(etDialog.fileW, XmNheight, &radioHeight, NULL); etDialog.mdirW = XtVaCreateManagedWidget("componentLab", xmLabelGadgetClass, selectBox, XmNheight, radioHeight, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, etDialog.dirW, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, etDialog.ccW, XmNlabelString, s1=XmStringCreateSimple("max. components: "), XmNmnemonic, 'x', NULL); XmStringFree(s1); etDialog.ndirW = XtVaCreateManagedWidget("dircomp",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -