📄 xbcview.c
字号:
if ((i == XAW_LIST_NONE) || !ranges) return; /* check selected list item */ widget = ((int)client == 0) ? di_h_min : di_v_min; sprintf(buf, "%g", ranges[i].min); XtVaSetValues(widget, XtNstring, buf, NULL); widget = ((int)client == 0) ? di_h_max : di_v_max; sprintf(buf, "%g", ranges[i].max); XtVaSetValues(widget, XtNstring, buf, NULL);} /* lcb_att() */ /* set new range of values *//*---------------------------------------------------------------------- Action Functions----------------------------------------------------------------------*/static void ld_class (Widget w, XEvent *e, String *s, Cardinal *c){ /* --- File > Load Classifier... */ const char *t; /* buffer for dialog box title */ mn_enable(menu, MN_MENU, 0); /* disable menu bar */ XtVaGetValues(XtNameToWidget(mn_menubar(menu), "*ld_class"), XtNlabel, &t, NULL); /* get name of menu entry */ if (fselect(w_top, t, NULL, NULL, dcb_class) != 0) { error(E_DIALOG); mn_enable(menu, MN_MENU, 1); }} /* ld_class() */ /* show a file selector box *//*--------------------------------------------------------------------*/static void ld_data (Widget w, XEvent *e, String *s, Cardinal *c){ /* --- File > Load Data... */ const char *t; /* buffer for dialog box title */ if (!attset) { /* if no classifier has been loaded, */ error(E_DATA); return; } /* no data file can be loaded */ mn_enable(menu, MN_MENU, 0); /* disable menu bar */ XtVaGetValues(XtNameToWidget(mn_menubar(menu), "*ld_data"), XtNlabel, &t, NULL); /* get name of menu entry */ if (fselect(w_top, t, NULL, NULL, dcb_data) != 0) { error(E_DIALOG); mn_enable(menu, MN_MENU, 1); }} /* ld_data() */ /* show a file selector box *//*--------------------------------------------------------------------*/static void format (Widget w, XEvent *e, String *s, Cardinal *c){ /* --- File > Data Format... */ if (!psh_fmt) { /* if property sheet not created yet */ psh_fmt = psh_create("fmtDlg", w_top, 1); if (!psh_fmt) return; /* create a property sheet */ if ((psh_addline(psh_fmt, "lfirst") != 0) || (psh_additem(psh_fmt, "first", PSH_MENU, 0) != 0) || (psh_menuadd(psh_fmt, "first", "atts") != 0) || (psh_menuadd(psh_fmt, "first", "data") != 0) || (psh_menuadd(psh_fmt, "first", "comment") != 0) || (psh_addline(psh_fmt, "lblank") != 0) || (psh_additem(psh_fmt, "blank", PSH_EDIT, 0) != 0) || (psh_addline(psh_fmt, "lfield") != 0) || (psh_additem(psh_fmt, "field", PSH_EDIT, 0) != 0) || (psh_addline(psh_fmt, "lrecord") != 0) || (psh_additem(psh_fmt, "record", PSH_EDIT, 0) != 0) || (psh_addline(psh_fmt, "lunknown") != 0) || (psh_additem(psh_fmt, "unknown", PSH_EDIT, 0) != 0)) { psh_delete(psh_fmt); error(E_DIALOG); return; } } /* add dialog items */ mn_enable(menu, MN_MENU, 0); /* disable menu bar */ psh_setval(psh_fmt, "first", (char*)fmtinfo.first); psh_setval(psh_fmt, "blank", fmtinfo.blanks); psh_setval(psh_fmt, "field", fmtinfo.fldseps); psh_setval(psh_fmt, "record", fmtinfo.recseps); psh_setval(psh_fmt, "unknown", fmtinfo.uvchars); psh_handle(psh_fmt, dcb_format); /* fill input gadgets with current */} /* format() */ /* values and handle dialog *//*--------------------------------------------------------------------*/static void quit (Widget w, XEvent *e, String *s, Cardinal *c){ /* --- File > Quit */ bc_clean(); /* clean up the variables and */ col_delete(); /* delete all colors and shades */ if (w_top) XtDestroyApplicationContext(appctx); exit(0); /* terminate the program */} /* quit() *//*--------------------------------------------------------------------*/static void dclick (Widget w, XEvent *e, String *s, Cardinal *c){ /* --- double click in attribute list */ dcb_atts(db_atts, (void*)2, NULL);} /* dclick() */ /* call dialog box callback for `ok' *//*--------------------------------------------------------------------*/static int listbox (Widget form, Widget left, const char *name){ /* --- create a list box */ int n; /* widget argument counter */ Arg args[16]; /* widget argument list */ Widget view, list; /* viewport and list widget */ Widget min, max; /* minimum and maximum widget */ Widget label; /* buffer for label widgets */ char buf[16]; /* buffer for widget name */ /* --- create list box --- */ n = 0; /* build argument list */ XtSetArg(args[n], XtNborderWidth, 0); n++; if (left) { XtSetArg(args[n], XtNfromHoriz, left); n++; } else { XtSetArg(args[n], XtNleft, XtChainLeft); n++; } XtSetArg(args[n], XtNtop, XtChainTop); n++; XtSetArg(args[n], XtNbottom, XtChainTop); n++; XtSetArg(args[n], XtNjustify, XtJustifyLeft); n++; sprintf(buf, "l%s", name); /* create the widget name */ label = XtCreateManagedWidget(buf, labelWidgetClass, form, args, n); if (!label) return -1; /* create title widget */ n = 0; /* build argument list */ XtSetArg(args[n], XtNborderWidth, 1); n++; if (left) { XtSetArg(args[n], XtNfromHoriz, left); n++; } else { XtSetArg(args[n], XtNleft, XtChainLeft); n++; } XtSetArg(args[n], XtNfromVert, label); n++; XtSetArg(args[n], XtNallowHoriz, False); n++; XtSetArg(args[n], XtNallowVert, True); n++; XtSetArg(args[n], XtNuseRight, True); n++; XtSetArg(args[n], XtNtop, XtChainTop); n++; XtSetArg(args[n], XtNbottom, XtChainBottom); n++; sprintf(buf, "v%s", name); /* create the widget name */ view = XtCreateManagedWidget(buf, viewportWidgetClass, form, args, n); if (!view) return -1; /* create list viewport */ n = 0; /* build argument list */ XtSetArg(args[n], XtNstring, ""); n++; XtSetArg(args[n], XtNborderWidth, 0); n++; XtSetArg(args[n], XtNverticalList, True); n++; XtSetArg(args[n], XtNdefaultColumns, 1); n++; XtSetArg(args[n], XtNforceColumns, True); n++; sprintf(buf, "%s_att", name); /* create the widget name */ list = XtCreateManagedWidget(buf, listWidgetClass, view, args, n); if (!list) return -1; /* create list widget */ /* --- create input field for minimum --- */ n = 0; /* build argument list */ XtSetArg(args[n], XtNborderWidth, 0); n++; XtSetArg(args[n], XtNfromVert, view); n++; if (left) { XtSetArg(args[n], XtNfromHoriz, left); n++; } else { XtSetArg(args[n], XtNleft, XtChainLeft); n++; } XtSetArg(args[n], XtNtop, XtChainBottom); n++; XtSetArg(args[n], XtNbottom, XtChainBottom); n++; XtSetArg(args[n], XtNjustify, XtJustifyLeft); n++; sprintf(buf, "l%s_min", name); /* create the widget name */ label = XtCreateManagedWidget(buf, labelWidgetClass, form, args, n); if (!label) return -1; /* create min label widget */ n = 0; /* build argument list */ XtSetArg(args[n], XtNborderWidth, 1); n++; XtSetArg(args[n], XtNeditType, XawtextEdit); n++; XtSetArg(args[n], XtNfromHoriz, label); n++; XtSetArg(args[n], XtNfromVert, view); n++; XtSetArg(args[n], XtNtop, XtChainBottom); n++; XtSetArg(args[n], XtNbottom, XtChainBottom); n++; min = XtCreateManagedWidget(buf+1, asciiTextWidgetClass, form, args, n); if (!min) return -1; /* create minimum widget */ /* --- create input field for maximum --- */ n = 0; /* build argument list */ XtSetArg(args[n], XtNborderWidth, 0); n++; XtSetArg(args[n], XtNfromVert, min); n++; if (left) { XtSetArg(args[n], XtNfromHoriz, left); n++; } else { XtSetArg(args[n], XtNleft, XtChainLeft); n++; } XtSetArg(args[n], XtNtop, XtChainBottom); n++; XtSetArg(args[n], XtNbottom, XtChainBottom); n++; XtSetArg(args[n], XtNjustify, XtJustifyLeft); n++; sprintf(buf, "l%s_max", name); /* create the widget name */ label = XtCreateManagedWidget(buf, labelWidgetClass, form, args, n); if (!label) return -1; /* create h_max label widget */ n = 0; /* build argument list */ XtSetArg(args[n], XtNborderWidth, 1); n++; XtSetArg(args[n], XtNeditType, XawtextEdit); n++; XtSetArg(args[n], XtNfromHoriz, label); n++; XtSetArg(args[n], XtNfromVert, min); n++; XtSetArg(args[n], XtNtop, XtChainBottom); n++; XtSetArg(args[n], XtNbottom, XtChainBottom); n++; max = XtCreateManagedWidget(buf+1, asciiTextWidgetClass, form, args, n); if (!max) return -1; /* create maximum widget */ return 0; /* return 'ok' */} /* listbox() *//*--------------------------------------------------------------------*/static void atts (Widget w, XEvent *e, String *s, Cardinal *c){ /* --- Actions > Attributes... */ static String empty = ""; /* an empty string */ XtTranslations tla, tlo; /* translations for text widgets */ Widget shell = NULL, form; /* widgets for dialog shell and form */ Widget lview, rview; /* left and right viewport widget */ Widget lh_min, lh_max; /* label widgets for horizontal */ Widget lv_min, lv_max; /* and vertical minimum/maximum */ Widget ok, cancel; /* widgets for ok and cancel buttons */ Arg args[16]; /* widget argument list */ int n; /* widget argument counter */ Position x, y; /* position of created dialog */ Dimension wd, ht; /* width and height of created dialog */ Dimension lblwd, t; /* label width and temp. buffer */ int dd; /* default distance of dialog items */ if (!db_atts) { /* if dialog box is not created */ shell = XtCreatePopupShell("attDlg", transientShellWidgetClass, w_top, NULL, 0); /* create a dialog box shell */ if (!shell) { error(E_DIALOG); return; } XtSetArg(args[0], XtNborderWidth, 0); form = XtCreateManagedWidget("form", formWidgetClass, shell, args, 1); /* create a form for the box layout */ if (!form) { XtDestroyWidget(shell); error(E_DIALOG); return; } /* --- create listbox for horizontal axis --- */ if (listbox(form, NULL, "h") != 0) { XtDestroyWidget(shell); error(E_DIALOG); return; } lview = XtNameToWidget(form, "*vh"); di_h_att = XtNameToWidget(form, "*h_att"); di_h_min = XtNameToWidget(form, "*h_min"); di_h_max = XtNameToWidget(form, "*h_max"); XtAddCallback(di_h_att, XtNcallback, lcb_att, (void*)0); /* --- create listbox for vertical axis --- */ if (listbox(form, lview, "v") != 0) { XtDestroyWidget(shell); error(E_DIALOG); return; } rview = XtNameToWidget(form, "*vv"); di_v_att = XtNameToWidget(form, "*v_att"); di_v_min = XtNameToWidget(form, "*v_min"); di_v_max = XtNameToWidget(form, "*v_max"); XtAddCallback(di_v_att, XtNcallback, lcb_att, (void*)1); /* --- create ok button --- */ n = 0; /* build argument list */ XtSetArg(args[n], XtNfromVert, di_h_max); n++; XtSetArg(args[n], XtNleft, XtChainLeft); n++; XtSetArg(args[n], XtNtop, XtChainBottom); n++; XtSetArg(args[n], XtNbottom, XtChainBottom); n++; ok = XtCreateManagedWidget("ok", commandWidgetClass, form, args, n); /* create 'ok' button */ if (!ok) { XtDestroyWidget(shell); error(E_DIALOG); return; } XtAddCallback(ok, XtNcallback, dcb_atts, (void*)1); /* --- create cancel button --- */ n = 0; /* build argument list */ XtSetArg(args[n], XtNfromHoriz, ok); n++; XtSetArg(args[n], XtNfromVert, di_v_max); n++; XtSetArg(args[n], XtNtop, XtChainBottom); n++; XtSetArg(args[n], XtNright, XtChainRight); n++; XtSetArg(args[n], XtNbottom, XtChainBottom); n++; cancel = XtCreateManagedWidget("cancel", commandWidgetClass, form, args, n); /* create 'cancel' button */ if (!cancel) { XtDestroyWidget(shell); error(E_DIALOG); return; } XtAddCallback(cancel, XtNcallback, dcb_atts, (void*)0); /* --- adapt widths of labels and gadgets --- */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -