📄 ui_menu.c
字号:
/*====================================================================*\ user interface: menu setup and callbacks \*====================================================================*/#include <sys/types.h>#include <Xm/FileSB.h>#include <Xm/MessageB.h>#include <Xm/SelectioB.h>#include <fcntl.h>#include <time.h>#include <stdio.h>#include <stdlib.h>#include "par.h"#include "main.h"#include "axis.h"#include "color.h"#include "draw.h"#include "edit.h"#include "data.h"#include "map.h"#include "render.h"#include "plane.h"#include "view.h"#include "region.h"#include "pick.h"#include "pik.h"#include "movie.h"#include "section.h"#include "ui_panel.h"#include "ui_menu.h"#include "ui_window.h"#include "grunge.h"#include "ui.h"extern Data data;extern View view;extern UI ui;extern Message message;FILE *savefd = 0;/* setup menus; install callbacks *//*--------------------------------------------------------------------*\ UIMenuInit() creates the menu system for the application. It's long and ugly, but otherwise unremarkable. This is best done using a library function and an array of structures, but is not worth rewriting.\*--------------------------------------------------------------------*/void UIMenuInit(Widget parent){ int ibar = 0; WidgetList list; /* menubar */ if (!ui) { return; } ui->menuBar = XmVaCreateSimpleMenuBar(parent, "menubar", XmVaCASCADEBUTTON, XmStringCreateSimple("Misc"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Style"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Orient"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Size"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Movie"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Color"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Pick"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("EditVol"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Sections"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Status"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Help"), NULL, NULL); /* main drop down menu */ ui->menu = XmVaCreateSimplePulldownMenu(ui->menuBar, "main", ibar++, NULL, XmVaPUSHBUTTON, XmStringCreateSimple("Redraw"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple("Fix Picking"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Write vgrid file ( floats ) ..."), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Write vgrid file ( bytes ) ..."), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Write parameter restart file ..."), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple("Quit"), NULL, NULL, NULL, NULL); XtVaGetValues(ui->menu, XmNchildren, &list, NULL); XtAddCallback(list[0], XmNactivateCallback, (XtCallbackProc) ViewDrawAll, NULL); XtAddCallback(list[1], XmNactivateCallback, (XtCallbackProc) UIWakeup, NULL); XtAddCallback(list[2], XmNactivateCallback, (XtCallbackProc) UIDumpFloats, NULL); XtAddCallback(list[3], XmNactivateCallback, (XtCallbackProc) UIDumpBytes, NULL); XtAddCallback(list[4], XmNactivateCallback, (XtCallbackProc) UISavePar, NULL); XtAddCallback(list[5], XmNactivateCallback, (XtCallbackProc) UIQuit, NULL);/*--------------------------------------------------------------------*\ Note: The order of buttons here is critical as it is presumed by the C preprocessor macros used to desribe view elsewhere in the code. If you disturb this menu, make sure that you check that all the VIEW_ macros are kept in sync.\*--------------------------------------------------------------------*/ ui->menu = XmVaCreateSimplePulldownMenu(ui->menuBar, "view", ibar++, (XtCallbackProc) UIStyleChoice, XmVaRADIOBUTTON, XmStringCreateSimple("Front Face"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Side Face"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Top Face"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Three Faces"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Array ..."), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Cube"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Fence ..."), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple ("Transparent Cube ..."), NULL, NULL, NULL, XmNradioAlwaysOne, True, XmNradioBehavior, True, NULL); XtVaGetValues(ui->menu, XmNchildren, &list, NULL); XtVaSetValues(list[view->style], XmNset, True, NULL); if( view->map[AXIS_DEEP]->size == 1 ){ XtSetSensitive( list[VIEW_SIDE] ,False ); XtSetSensitive( list[VIEW_TOP] ,False ); XtSetSensitive( list[VIEW_THREE] ,False ); XtSetSensitive( list[VIEW_ARRAY] ,False ); XtSetSensitive( list[VIEW_CUBE] ,False ); XtSetSensitive( list[VIEW_FENCE] ,False ); XtSetSensitive( list[VIEW_TRANSP] ,False ); } ui->menu = XmVaCreateSimplePulldownMenu(ui->menuBar, "orient", ibar++, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Swap Side & Top Faces; Transpose"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Swap Front & Side Faces"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Swap Top & Front Faces"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Swap Deep & 4th Axes"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Swap Across & 4th Axes"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Swap Down & 4th Axes"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Flip Down Direction"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Flip Across Direction"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Flip Deep Direction"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Move Frames to Middle"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Move Frames to Corner"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Initial Orientation"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Adjust Labels ..."), NULL, NULL, NULL, XmVaTITLE, XmStringCreateSimple ("4th AXIS IS n4= AND HIDDEN"), NULL); XtVaGetValues(ui->menu, XmNchildren, &list, NULL); XtAddCallback(list[0], XmNactivateCallback, (XtCallbackProc) UISwapSideTop, NULL); XtAddCallback(list[1], XmNactivateCallback, (XtCallbackProc) UISwapFrontSide, NULL); XtAddCallback(list[2], XmNactivateCallback, (XtCallbackProc) UISwapTopFront, NULL); XtAddCallback(list[5], XmNactivateCallback, (XtCallbackProc) UISwapFrontExtra, NULL); XtAddCallback(list[4], XmNactivateCallback, (XtCallbackProc) UISwapSideExtra, NULL); XtAddCallback(list[3], XmNactivateCallback, (XtCallbackProc) UISwapTopExtra, NULL); XtAddCallback(list[6], XmNactivateCallback, (XtCallbackProc) UIFlipDown, NULL); XtAddCallback(list[7], XmNactivateCallback, (XtCallbackProc) UIFlipAcross, NULL); XtAddCallback(list[8], XmNactivateCallback, (XtCallbackProc) UIFlipDeep, NULL); XtAddCallback(list[9], XmNactivateCallback, (XtCallbackProc) ViewFramesMiddle, NULL); XtAddCallback(list[10], XmNactivateCallback, (XtCallbackProc) ViewFramesOrigin, NULL); XtAddCallback(list[11], XmNactivateCallback, (XtCallbackProc) UIOrient0, NULL); XtAddCallback(list[12], XmNactivateCallback, (XtCallbackProc) UILabelRaise, NULL); ui->menu = XmVaCreateSimplePulldownMenu(ui->menuBar, "size", ibar++, (XtCallbackProc) UISizeChoice, XmVaRADIOBUTTON, XmStringCreateSimple("Even Cube"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("True Proportions"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Sample Per Pixel"), NULL, NULL, NULL, XmVaTOGGLEBUTTON, XmStringCreateSimple("Interpolate"), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple("Fine Control ..."), NULL, NULL, NULL, XmVaPUSHBUTTON, XmStringCreateSimple("Initial Size"), NULL, NULL, NULL, XmVaTITLE, XmStringCreateSimple ("LEFT MOUSE BOX ZOOMS"), XmVaTITLE, XmStringCreateSimple("+ 'h' ONLY HORZ"), XmVaTITLE, XmStringCreateSimple("+ 'v' ONLY VERT"), NULL); XtVaGetValues(ui->menu, XmNchildren, &list, NULL); ui->shape_stretch = list[0]; ui->shape_true = list[1]; ui->shape_pixel = list[2]; XtVaSetValues(list[0], XmNset, True, NULL); XtVaSetValues(list[4], XmNset, False, NULL); XtAddCallback(list[3], XmNvalueChangedCallback, (XtCallbackProc) UIInterpolateToggle, NULL); XtAddCallback(list[4], XmNactivateCallback, (XtCallbackProc) UISyzeRaise, NULL); XtAddCallback(list[5], XmNactivateCallback, (XtCallbackProc) UISize0, NULL); ui->menu = XmVaCreateSimplePulldownMenu(ui->menuBar, "movie", ibar++, NULL, XmVaPUSHBUTTON, XmStringCreateSimple ("Movie to Boundaries"), NULL, NULL, NULL, XmVaTOGGLEBUTTON, XmStringCreateSimple("High Speed"), NULL, NULL, NULL, XmVaTITLE, XmStringCreateSimple ("MIDDLE MOUSE CLICK XFRAMES"), XmVaTITLE, XmStringCreateSimple ("MIDDLE MOUSE DRAG MOVIE BOUNDS"), XmNradioAlwaysOne, True, NULL); XtVaGetValues(ui->menu, XmNchildren, &list, NULL); XtAddCallback(list[0], XmNactivateCallback, (XtCallbackProc) ViewMovieFullBounds, NULL); XtAddCallback(list[1], XmNvalueChangedCallback, (XtCallbackProc) MovieToggleCache, NULL); XtVaSetValues(list[1], XmNset, False, NULL); ui->menu = XmVaCreateSimplePulldownMenu(ui->menuBar, "color", ibar++, (XtCallbackProc) UIColorChoice, XmVaRADIOBUTTON, XmStringCreateSimple("Gray"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Straw"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Flag"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Tiger"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Blue"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Rainbow"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("AVO"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Velocity"), NULL, NULL, NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Overlay"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Mark"), NULL, XmVaCASCADEBUTTON, XmStringCreateSimple("Background"), NULL, XmVaPUSHBUTTON, XmStringCreateSimple("Flip Polarity"), NULL, NULL, NULL, XmNradioBehavior, True, XmNradioAlwaysOne, True, NULL); XtVaGetValues(ui->menu, XmNchildren, &list, NULL); XtAddCallback(list[11], XmNactivateCallback, (XtCallbackProc) RenderTogglePolarity, NULL); XtVaSetValues(list[0], XmNset, True, NULL); ui->menu1 = XmVaCreateSimplePulldownMenu(ui->menu, "overlay", 8, (XtCallbackProc) UIOverlayChoice, XmVaRADIOBUTTON, XmStringCreateSimple("Red"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Green"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("White"), NULL, NULL, NULL, XmVaRADIOBUTTON, XmStringCreateSimple("Black"), NULL, NULL,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -