/***************************************************************************** FILE : $Source: /projects/higgs1/SNNS/CVS/SNNS/xgui/sources/d3_pannels.c,v $ SHORTNAME : pannels.c SNNS VERSION : 4.2 PURPOSE : this module creates the control pannel NOTES : AUTHOR : Ralf Huebner DATE : 1.12.1991 CHANGED BY : RCS VERSION : $Revision: 2.12 $ LAST CHANGE : $Date: 1998/03/13 16:31:49 $ Copyright (c) 1990-1995 SNNS Group, IPVR, Univ. Stuttgart, FRG Copyright (c) 1996-1998 SNNS Group, WSI, Univ. Tuebingen, FRG ******************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ui.h" #include "ui_xWidgets.h" #include "ui_key.h" #include "d3_global.h" #include "d3_draw.h" #include "d3_disp.h" #include "d3_graph.h" #include "d3_fonts.h" #include "d3_move.h" #include "d3_xUtils.h" #include "d3_setup.h" #include "d3_units.h" #include "d3_links.h" #include "d3_model.h" #include "d3_project.h" #include "d3_light.h" #include "d3_main.h" #include "o_graph.h" #include "d3_zgraph.h" #include "d3_zValue.h" #include "d3_pannels.ph" /***************************************************************************** FUNCTION : d3_doneProc PURPOSE : finishes the 3D View and closes all windows RETURNS : void NOTES : UPDATE : ******************************************************************************/ static void d3_doneProc (void) { if (d3_displayIsReady) XtDestroyWidget (d3_displayMainWidget);; XtDestroyWidget (d3_controlWidget);; d3_displayIsReady = FALSE; d3_controlIsReady = FALSE; } /***************************************************************************** FUNCTION : d3_toggleFreezeButton PURPOSE : toggles the freeze button RETURNS : void NOTES : UPDATE : ******************************************************************************/ static void d3_toggleFreezeButton (Widget w, Widget button, caddr_t call_data) { d3_freeze ^= 1; ui_xSetToggleState (button, d3_freeze); } /***************************************************************************** FUNCTION : d3_createButtonPannel PURPOSE : creates the pannel for the setup, model, light... buttons RETURNS : void NOTES : UPDATE : ******************************************************************************/ static void d3_createButtonPannel (Widget parent) { Widget box, setup, model, project, light, units, links; Widget freeze, display, done, box2, reset; int n; Arg arg[10]; n = 0; XtSetArg(arg[n], XtNwidth, 250); n++; XtSetArg(arg[n], XtNleft , XtChainLeft); n++; XtSetArg(arg[n], XtNright , XtChainLeft); n++; XtSetArg(arg[n], XtNtop , XtChainTop); n++; XtSetArg(arg[n], XtNbottom, XtChainTop); n++; box = XtCreateManagedWidget("box", boxWidgetClass, parent, arg, (unsigned int) n); setup = d3_xCreateButtonItem ("setup", box, NULL, NULL); model = d3_xCreateButtonItem ("model", box, setup, NULL); project = d3_xCreateButtonItem ("project", box, model, NULL); light = d3_xCreateButtonItem ("light", box, project, NULL); units = d3_xCreateButtonItem ("units", box, NULL, setup); links = d3_xCreateButtonItem ("links", box, units, model); reset = d3_xCreateButtonItem ("reset", box, links, project); freeze = d3_xCreateButtonItem ("freeze", box, reset, light); XtAddCallback (reset, XtNcallback, (XtCallbackProc) d3_resetDisplay, NULL); XtAddCallback (project, XtNcallback, (XtCallbackProc) d3_createProjectPannel, (caddr_t) project); XtAddCallback (units, XtNcallback, (XtCallbackProc) d3_createUnitPannel, (caddr_t) units); XtAddCallback (links, XtNcallback, (XtCallbackProc) d3_createLinkPannel, (caddr_t) links); XtAddCallback (setup, XtNcallback, (XtCallbackProc) d3_createSetupPannel, (caddr_t) setup); XtAddCallback (model, XtNcallback, (XtCallbackProc) d3_createModelPannel, (caddr_t) model); XtAddCallback (light, XtNcallback, (XtCallbackProc) d3_createLightPannel, (caddr_t) light); XtAddCallback (freeze, XtNcallback, (XtCallbackProc) d3_toggleFreezeButton, (caddr_t) freeze); n = 0; XtSetArg(arg[n], XtNwidth, 50); n++; XtSetArg(arg[n], XtNleft , XtChainLeft); n++; XtSetArg(arg[n], XtNright , XtChainLeft); n++; XtSetArg(arg[n], XtNtop , XtChainTop); n++; XtSetArg(arg[n], XtNbottom, XtChainTop); n++; box2 = XtCreateManagedWidget("box2", boxWidgetClass, parent, arg, (unsigned int) n); display = d3_xCreateButtonItem ("display", box2, NULL, NULL); done = d3_xCreateButtonItem ("done2", box2, NULL, display); XtAddCallback(display, XtNcallback, (XtCallbackProc) d3_createDisplayWindow, NULL); XtAddCallback(done, XtNcallback, (XtCallbackProc) d3_doneProc, NULL); if (d3_state.model_mode == solid) d3_initZbuffer (); } /***************************************************************************** FUNCTION : d3_createControlPannel PURPOSE : creates subpannels of the control pannel RETURNS : void NOTES : UPDATE : ******************************************************************************/ static void d3_createControlPannel (Widget parent) { d3_createMovePannel (parent); d3_createButtonPannel (parent); d3_createZvaluePannel (parent); } /***************************************************************************** FUNCTION : d3_displayGraphic PURPOSE : creates the control pannel RETURNS : void NOTES : !!! this is entry point from the XGUI !!! the function is a callback from ui_xCreatePanel in module ui_main.c UPDATE : ******************************************************************************/ void d3_displayGraphic (void) { Widget d3_frameWidget; Arg arg[25]; Cardinal n; char buf[40]; if (d3_controlIsReady){ XRaiseWindow(XtDisplay(d3_controlWidget), XtWindow(d3_controlWidget)); return; } sprintf (buf, "SNNS 3D-control"); n = 0; d3_controlWidget = XtCreatePopupShell (buf, topLevelShellWidgetClass, ui_toplevel, arg, n); n = 0; XtSetArg (arg[n], XtNwidth, 300); n++; XtSetArg (arg[n], XtNleft , XtChainLeft); n++; XtSetArg (arg[n], XtNright , XtChainRight); n++; XtSetArg (arg[n], XtNtop , XtChainTop); n++; XtSetArg (arg[n], XtNbottom, XtChainBottom); n++; d3_frameWidget = XtCreateManagedWidget ("form", boxWidgetClass, d3_controlWidget, arg, n); d3_createControlPannel (d3_frameWidget); ui_checkWindowPosition(d3_controlWidget); XtAddEventHandler(d3_frameWidget,KeyPressMask,FALSE, (XtEventHandler)ui_key_control,(Cardinal *) 0); XtPopup (d3_controlWidget, XtGrabNone); ui_xDontResizeWidget(d3_controlWidget); d3_controlIsReady = TRUE; } /* end of file */