📄 ui_panel.c
字号:
XmNvalue, AxisScaledValue(axis, ui->start), NULL); XtVaSetValues(ui->a_end, XmNdecimalPoints, AxisPrec(axis), XmNminimum, AxisScaledValue(axis, 0), XmNmaximum, AxisScaledValue(axis, AxisSize(axis) - 1), XmNvalue, AxisScaledValue(axis, (ui->across * ui->down * ui->delta + ui->start) < (AxisSize(axis) - 1) ? AxisScaledValue(axis, ui->across * ui->down * ui->delta + ui-> start) : AxisScaledValue(axis, AxisSize(axis) - 1)), NULL);}/* execute array control panel settings */void UIArrayDraw(void){ extern View view; Axis axis; int iaxis, value; if( ui->dir != AxisDir(axis = MapAxis(ViewMap(view, AXIS_DEEP))) ){ if( ui->dir == AxisDir(axis = MapAxis(ViewMap(view, AXIS_ACROSS))) ){ MapSwap(ViewMap(view, AXIS_DEEP), ViewMap(view, AXIS_ACROSS)); } else { axis = MapAxis(ViewMap(view, AXIS_DOWN)); MapSwap(ViewMap(view, AXIS_DEEP), ViewMap(view, AXIS_DOWN)); } } XtVaGetValues(ui->a_across, XmNvalue, &ui->across, NULL); XtVaGetValues(ui->a_down, XmNvalue, &ui->down, NULL); XtVaGetValues(ui->a_delta, XmNvalue, &value, NULL); ui->delta = AxisScaledIndex(axis, value + AxisScaledValue(axis, 0)); XtVaGetValues(ui->a_start, XmNvalue, &value, NULL); ui->start = AxisScaledIndex(axis, value); ViewArray(ui->across, ui->down, ui->start, ui->delta); UISizeReset();}/* close array control panel */void UIArrayClose(void){ XtPopdown(ui->a_shell); ui->shell = 0;}/* synchronize array end slider with other array slider adjustments */void UIArrayEndAdjust(void){ extern Data data; Axis axis; int max, value; axis = DataAxis(data, ui->dir); XtVaGetValues(ui->a_across, XmNvalue, &ui->across, NULL); XtVaGetValues(ui->a_down, XmNvalue, &ui->down, NULL); XtVaGetValues(ui->a_delta, XmNvalue, &value, NULL); ui->delta = AxisScaledIndex(axis, value + AxisScaledValue(axis, 0)); XtVaGetValues(ui->a_start, XmNvalue, &value, NULL); ui->start = AxisScaledIndex(axis, value); XtVaGetValues(ui->a_end, XmNmaximum, &value, NULL); max = AxisScaledIndex(axis, value); XtVaSetValues(ui->a_end, XmNvalue, max < (ui->start + ui->down * ui->across * ui->delta) ? AxisScaledValue(axis, max) : AxisScaledValue(axis, ui->start + ui->down * ui->across * ui->delta), NULL);}/* synchronize array delta slider with array end slider changes */void UIArrayDeltaAdjust(void){ int last, max, value; extern Data data; Axis axis; axis = DataAxis(data, ui->dir); XtVaGetValues(ui->a_across, XmNvalue, &ui->across, NULL); XtVaGetValues(ui->a_down, XmNvalue, &ui->down, NULL); XtVaGetValues(ui->a_start, XmNvalue, &value, NULL); ui->start = AxisScaledIndex(axis, value); XtVaGetValues(ui->a_end, XmNvalue, &value, NULL); last = AxisScaledIndex(axis, value); ui->delta = (last - ui->start - 1) / (ui->across * ui->down); ui->delta = ui->delta > 1 ? ui->delta : 1; ui->delta = ui->delta < 50 ? ui->delta : 50; XtVaSetValues(ui->a_delta, XmNvalue, irint(AxisScale(axis) * AxisDelta(axis) * ui->delta), NULL);}void UIArrayShape(int n, int *across, int *down){ double sqrt(double); int across_, down_; if( n < 4 ){ across_ = n; down_ = 1; } else { across_ = (int) sqrt((double) n); down_ = n / across_; if( across_ * down_ < n ){ across_++; } } across_ = across_ > 1 ? across_ : 1; down_ = down_ > 1 ? down_ : 1; across_ = across_ < 50 ? across_ : 50; down_ = down_ < 50 ? down_ : 50; *across = across_; *down = down_;}/********************************* LABEL PANEL ******************************/void UILabelInit(void){ extern View view; string svalue; Widget parent; if( ui->l_shell ){ return; } ui->l_shell = XtVaCreatePopupShell("label", xmDialogShellWidgetClass, ui->main, XmNtitle, XmStringCreateSimple("LABEL PARAMETERS"), NULL); ui->l_base = XtVaCreateWidget("l_base", xmRowColumnWidgetClass, ui->l_shell, XmNnumColumns, 9, XmNpacking, XmPACK_COLUMN, XmNorientation, XmHORIZONTAL, NULL); parent = ui->l_base; XtVaCreateManagedWidget("TITLE", xmLabelWidgetClass, parent, NULL);; ui->l_title = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; XtVaCreateManagedWidget("", xmLabelWidgetClass, parent, NULL);; XtVaCreateManagedWidget("", xmLabelWidgetClass, parent, NULL);; XtVaCreateManagedWidget("", xmLabelWidgetClass, parent, NULL);; XtVaCreateManagedWidget("", xmLabelWidgetClass, parent, NULL);; XtVaCreateManagedWidget("COLOR", xmLabelWidgetClass, parent, NULL);; XtVaCreateManagedWidget("DOWN", xmLabelWidgetClass, parent, NULL);; XtVaCreateManagedWidget("ACROSS", xmLabelWidgetClass, parent, NULL);; XtVaCreateManagedWidget("DEEP", xmLabelWidgetClass, parent, NULL);; XtVaCreateManagedWidget("LABEL", xmLabelWidgetClass, parent, NULL);; ui->l_label[AXIS_COLOR] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_label[AXIS_DOWN] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_label[AXIS_ACROSS] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_label[AXIS_DEEP] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; XtVaCreateManagedWidget("ORIGIN", xmLabelWidgetClass, parent, NULL);; ui->l_first[AXIS_COLOR] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_first[AXIS_DOWN] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_first[AXIS_ACROSS] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_first[AXIS_DEEP] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; XtVaCreateManagedWidget("DELTA", xmLabelWidgetClass, parent, NULL);; ui->l_delta[AXIS_COLOR] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_delta[AXIS_DOWN] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_delta[AXIS_ACROSS] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_delta[AXIS_DEEP] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; XtVaCreateManagedWidget("MIN TIC", xmLabelWidgetClass, parent, NULL);; ui->l_tic0[AXIS_COLOR] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_tic0[AXIS_DOWN] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_tic0[AXIS_ACROSS] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_tic0[AXIS_DEEP] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; XtVaCreateManagedWidget("TIC INC", xmLabelWidgetClass, parent, NULL);; ui->l_dtic[AXIS_COLOR] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_dtic[AXIS_DOWN] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_dtic[AXIS_ACROSS] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_dtic[AXIS_DEEP] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; XtVaCreateManagedWidget("MAX TIC", xmLabelWidgetClass, parent, NULL);; ui->l_tic2[AXIS_COLOR] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_tic2[AXIS_DOWN] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_tic2[AXIS_ACROSS] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; ui->l_tic2[AXIS_DEEP] = XtVaCreateManagedWidget("var", xmTextFieldWidgetClass, parent, XmNcolumns, 6, NULL);; { Widget widget; widget = XtVaCreateManagedWidget("EXECUTE SETTINGS", xmPushButtonWidgetClass, parent, NULL); XtAddCallback(widget, XmNactivateCallback, (XtCallbackProc) UILabelDraw, NULL);}; { Widget widget; widget = XtVaCreateManagedWidget("CURRENT SETTINGS", xmPushButtonWidgetClass, parent, NULL); XtAddCallback(widget, XmNactivateCallback, (XtCallbackProc) UILabelReset, NULL); }; { Widget widget; widget = XtVaCreateManagedWidget("CLOSE", xmPushButtonWidgetClass, parent, NULL); XtAddCallback(widget, XmNactivateCallback, (XtCallbackProc) UILabelClose, NULL); }; XtManageChild(ui->l_base);}void UILabelRaise(void){ UILabelInit(); UILabelReset(); XtPopup(ui->l_shell, XtGrabNone);}void UILabelReset(void){ int i; extern View view; extern Data data; string svalue; XtVaSetValues(ui->l_title, XmNvalue, DataTitle(data), NULL); for( i = 0; i < 4; i++ ){ XtVaSetValues(ui->l_label[i], XmNvalue, AxisLabel(MapAxis(view->map[i])), NULL); sprintf(svalue, "%g", AxisFirst(MapAxis(view->map[i]))); XtVaSetValues(ui->l_first[i], XmNvalue, svalue, NULL); sprintf(svalue, "%g", AxisDelta(MapAxis(view->map[i]))); XtVaSetValues(ui->l_delta[i], XmNvalue, svalue, NULL); sprintf(svalue, "%g", MapTic0(view->map[i])); XtVaSetValues(ui->l_tic0[i], XmNvalue, svalue, NULL); sprintf(svalue, "%g", MapDtic(view->map[i])); XtVaSetValues(ui->l_dtic[i], XmNvalue, svalue, NULL); sprintf(svalue, "%g", MapTic2(view->map[i])); XtVaSetValues(ui->l_tic2[i], XmNvalue, svalue, NULL); }}void UILabelDraw(void){ extern Data data; extern View view; char *svalue; double atof(const char *); int i, daxis, dtics; XtVaGetValues(ui->l_title, XmNvalue, &svalue, NULL); strcpy(data->title, svalue); for( i = 0; i < 4; i++ ){ daxis = 0; dtics = 0; XtVaGetValues(ui->l_label[i], XmNvalue, &svalue, NULL); strcpy(view->map[i]->axis->label, svalue); XtVaGetValues(ui->l_first[i], XmNvalue, &svalue, NULL); if( view->map[i]->axis->first != atof(svalue) ){ view->map[i]->axis->first = atof(svalue); daxis = 1; } XtVaGetValues(ui->l_delta[i], XmNvalue, &svalue, NULL); if( view->map[i]->axis->delta != atof(svalue) ){ view->map[i]->axis->delta = atof(svalue); daxis = 1; } XtVaGetValues(ui->l_tic0[i], XmNvalue, &svalue, NULL); if( view->map[i]->tic0 != atof(svalue) ){ view->map[i]->tic0 = atof(svalue); dtics = 1; } XtVaGetValues(ui->l_dtic[i], XmNvalue, &svalue, NULL); if( view->map[i]->dtic != atof(svalue) ){ view->map[i]->dtic = atof(svalue); dtics = 1; } XtVaGetValues(ui->l_tic2[i], XmNvalue, &svalue, NULL); if( view->map[i]->tic2 != atof(svalue) ){ view->map[i]->tic2 = atof(svalue); dtics = 1; } if( daxis ){ AxisSetValues(view->map[i]->axis); MapSetTics(view->map[i]); } } ViewDrawAll(); ColorbarDraw();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -