📄 ui_panel.c
字号:
/*user interface: permanent control panel plus various popup panels*/#include <Xm/DialogS.h>#include <Xm/Frame.h>#include <Xm/Label.h>#include <Xm/PushB.h>#include <Xm/ToggleB.h>#include <Xm/RowColumn.h>#include <Xm/Scale.h>#include <Xm/Separator.h>#include <Xm/TextF.h>#include <Xm/Text.h>#include <stdlib.h>#include <stdio.h>#include "ui_panel.h"#include "main.h"#include "axis.h"#include "color.h"#include "draw.h"#include "data.h"#include "map.h"#include "render.h"#include "view.h"#include "movie.h"#include "colorbar.h"#include "grunge.h"#include "ui.h"extern Data data;extern UI ui;extern Message message;/********************************* CONTROL PANEL ******************************//* initialize controls */void UIControlInit1(Widget parent){ Widget widget; WidgetList list; if( !ui ){ return; } /* control panel */ ui->control = XtVaCreateManagedWidget("control1", xmRowColumnWidgetClass, parent, XmNwidth, UI_WIDE, XmNorientation, XmHORIZONTAL, XmNpacking, XmPACK_TIGHT, NULL); parent = XtVaCreateManagedWidget("frame", xmFrameWidgetClass, ui->control, NULL); ui->on_off = XmVaCreateSimpleRadioBox(parent, "movie", 1, (XtCallbackProc) UIMovie, XmVaRADIOBUTTON, XmStringCreateSimple("GO"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("NO"), NULL, NULL, NULL, XmNorientation, XmHORIZONTAL, NULL); XtManageChild(ui->on_off); XtManageChild(parent); parent = XtVaCreateManagedWidget("frame", xmFrameWidgetClass, ui->control, NULL); ui->direction = XmVaCreateSimpleRadioBox(parent, "dir", 0, (XtCallbackProc) UIDirection, XmVaRADIOBUTTON, XmStringCreateSimple("z"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Z"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("<"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple(">"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("^"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("v"), NULL, NULL, NULL, XmNorientation, XmHORIZONTAL, NULL); XtManageChild(ui->direction); XtManageChild(parent); parent = ui->control; { if( "SPEED"[0] != '\0' ){ XtVaCreateManagedWidget("SPEED", xmLabelWidgetClass, parent, NULL); } ui->speed = XtVaCreateManagedWidget("SPEED", xmScaleWidgetClass, parent, XmNorientation, XmHORIZONTAL, XmNvalue, (int) (100 * 1.0), NULL); XtAddCallback(ui->speed, XmNvalueChangedCallback, (XtCallbackProc) UISpeed, NULL); };}/* toggle movie */void UIMovie(Widget widget, int item){ static int toggle = 0; toggle = 1 - toggle; if( toggle ){ return; } switch (item ){ case 0: MovieOn(); break; case 1: MovieOff(); break; }}/*--------------------------------------------------------------------*\ Toggle the direction radio buttons. The user can single step by clicking on the direction buttons.\*--------------------------------------------------------------------*/void UIDirection(Widget widget, int item){ static int toggle = 0; static int prev = 1; WidgetList list; toggle = 1 - toggle; if( toggle ){ return; } XtVaGetValues(ui->direction, XmNchildren, &list, NULL); XtVaSetValues(list[prev], XmNset, False, NULL); XtVaSetValues(list[item], XmNset, True, NULL); prev = item; switch (item ){ case 0: ViewSetMovie(MOVIE_FRONT); MovieSetDir(MOVIE_REVERSE); if( !MovieRun() ){ ViewDrawMovie(); } break; case 1: ViewSetMovie(MOVIE_FRONT); MovieSetDir(MOVIE_FORWARD); if( !MovieRun() ){ ViewDrawMovie(); } break; case 2: ViewSetMovie(MOVIE_SIDE); MovieSetDir(MOVIE_REVERSE); if( !MovieRun() ){ ViewDrawMovie(); } break; case 3: ViewSetMovie(MOVIE_SIDE); MovieSetDir(MOVIE_FORWARD); if( !MovieRun() ){ ViewDrawMovie(); } break; case 4: ViewSetMovie(MOVIE_TOP); MovieSetDir(MOVIE_REVERSE); if( !MovieRun() ){ ViewDrawMovie(); } break; case 5: ViewSetMovie(MOVIE_TOP); MovieSetDir(MOVIE_FORWARD); if( !MovieRun() ){ ViewDrawMovie(); } break; }}void UIControlInit2(Widget parent){ if( !ui ){ return; } /* control panel */ ui->control = XtVaCreateManagedWidget("control2", xmRowColumnWidgetClass, parent, XmNwidth, UI_WIDE, /* controls laid out left to right */ XmNorientation, XmHORIZONTAL, XmNpacking, XmPACK_TIGHT, NULL); parent = ui->control; { if( "CONTRAST"[0] != '\0' ){ XtVaCreateManagedWidget("CONTRAST", xmLabelWidgetClass, parent, NULL);} ui->contrast = XtVaCreateManagedWidget("CONTRAST", xmScaleWidgetClass, parent, XmNorientation, XmHORIZONTAL, XmNvalue, (int) (100 * 0.5), NULL); XtAddCallback(ui->contrast, XmNvalueChangedCallback, (XtCallbackProc) UIContrast, NULL); if( data->overlay_mode ){ XtSetSensitive( ui->contrast ,False); } }; { if( "CENTER"[0] != '\0' ){ XtVaCreateManagedWidget("CENTER", xmLabelWidgetClass, parent, NULL); } ui->contrast0 = XtVaCreateManagedWidget("CENTER", xmScaleWidgetClass, parent, XmNorientation, XmHORIZONTAL, XmNvalue, (int) (100 * 0.5), NULL); XtAddCallback(ui->contrast0, XmNvalueChangedCallback, (XtCallbackProc) UIContrast0, NULL); if( data->overlay_mode ){ XtSetSensitive( ui->contrast0 ,False); } }; { Widget widget; widget = XtVaCreateManagedWidget("RESET", xmPushButtonWidgetClass, parent, NULL); XtAddCallback(widget, XmNactivateCallback, (XtCallbackProc) UIResetContrast, NULL); if( data->overlay_mode ){ XtSetSensitive( widget ,False); } };}/* get toggle state */int UIGetToggle(Widget widget){ int state = 0; XtVaGetValues(widget, XmNset, &state, NULL); return (state);}/* set toggle widget state */void UIToggleSet(Widget widget, int state){ XtVaSetValues(widget, XmNset, state, NULL);}/* set slider widget value between 0 and 1 */void UISetSlider(Widget widget, float value){ XtVaSetValues(widget, XmNvalue, (int) (100 * value), NULL);}/* set slider widget value between 0 and 1 */int UIGetSlider(Widget widget){ int value = 0; XtVaGetValues(widget, XmNvalue, &value, NULL); return (value);}/* speed slider callback */void UISpeed(Widget widget, XtPointer client, XmScaleCallbackStruct * data){ MovieSetSpeed(data->value);}/* contrast slider callback */void UIContrast(Widget widget, XtPointer client, XmScaleCallbackStruct * data){ ColorSetContrast(data->value); ColorSwitch();}void UIContrast0(Widget widget, XtPointer client, XmScaleCallbackStruct * data){ ColorSetContrast0(data->value); ColorSwitch();}/* reset contrast */void UIResetContrast(void){ if( !ui ){ return; } ColorSetContrast(CONTRAST); ColorSetContrast0(CONTRAST0); UISetSlider(ui->contrast, 0.5); UISetSlider(ui->contrast0, 0.5); ColorSwitch();}/********************************* SIZE PANEL ******************************//* bounds callback for array settings and sizing */void UISizeRaise(void){ UISizeInit(); UISizeReset(); XtPopup(ui->s_shell, XtGrabNone);}/* initialize size control panel */void UISizeInit(void){ extern View view; string svalue; Widget widget, parent; if( ui->s_shell ){ return; } ui->s_shell = XtVaCreatePopupShell("size", xmDialogShellWidgetClass, ui->main, XmNtitle, XmStringCreateSimple("SIZE PARAMETERS"), NULL); ui->s_base = XtVaCreateWidget("s_base", xmRowColumnWidgetClass, ui->s_shell, XmNnumColumns, 8, XmNpacking, XmPACK_COLUMN, XmNorientation, XmHORIZONTAL, NULL); ui->s_nslider = 0; parent = ui->s_base; XtVaCreateManagedWidget("SET SIZE:", xmLabelWidgetClass, parent, NULL);;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -