Pixmap UIMarker(int style, int foreground, int background) { if (style >= (int) (sizeof(_UIMarkers) / sizeof(char *))) return ((Pixmap) NULL); return (XCreatePixmapFromBitmapData(XtDisplay(UITopLevel()), XtWindow(UITopLevel()), _UIMarkers[style], UIWidth, UIHeight, foreground, background, DefaultDepth (XtDisplay(UITopLevel()), DefaultScreen(XtDisplay(UITopLevel()))))); }
Widget UISelectionCreate (char *selectTitle) { Widget dShell, selection; dShell = XtVaCreatePopupShell (selectTitle,xmDialogShellWidgetClass,UITopLevel (), XmNminWidth, 200, XmNallowShellResize, true, XmNtransient, true, XmNkeyboardFocusPolicy, XmEXPLICIT, NULL); selection = XtVaCreateWidget ("UISelectionDialog",xmSelectionBoxWidgetClass,dShell, XmNnoResize, true, XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL, XmNautoUnmanage, false, XmNmustMatch, true, NULL); XtVaSetValues (XmSelectionBoxGetChild (selection,XmDIALOG_OK_BUTTON),XmNdefaultButtonShadowThickness, 0,NULL); XtVaSetValues (XmSelectionBoxGetChild (selection,XmDIALOG_CANCEL_BUTTON),XmNdefaultButtonShadowThickness, 0,NULL); XtUnmanageChild (XmSelectionBoxGetChild (selection,XmDIALOG_HELP_BUTTON)); XtUnmanageChild (XmSelectionBoxGetChild (selection,XmDIALOG_APPLY_BUTTON)); XtUnmanageChild (XmSelectionBoxGetChild (selection,XmDIALOG_SELECTION_LABEL)); XtUnmanageChild (XmSelectionBoxGetChild (selection,XmDIALOG_TEXT)); XtAddCallback (selection,XmNokCallback,(XtCallbackProc) _UIOkSelectionCallback,NULL); XtAddCallback (selection,XmNokCallback,(XtCallbackProc) UILoopStopCBK,NULL); XtAddCallback (selection,XmNcancelCallback,(XtCallbackProc) UILoopStopCBK,NULL); XtAddCallback (selection,XmNdestroyCallback,(XtCallbackProc) UILoopStopCBK,NULL); XtAddCallback (selection,XmNnoMatchCallback,(XtCallbackProc) _UINoMatchSelectionCallback,NULL); return (selection); }
Widget UIFileSelectionCreate(char *titleText, char *directory, char *pattern, int type) { static char fullPath[DBDataFileNameLen]; XmString string; Widget dShell, selection; dShell = XtVaCreatePopupShell(titleText, xmDialogShellWidgetClass, UITopLevel(), XmNallowShellResize, true, XmNtransient, true, XmNkeyboardFocusPolicy, XmEXPLICIT, NULL); selection = XtVaCreateWidget("UIFileSelectionDialog", xmFileSelectionBoxWidgetClass, dShell, XmNfileTypeMask, type, XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL, NULL); if (directory != NULL) { string = XmStringCreate(directory, UICharSetNormal); XtVaSetValues(selection, XmNdirectory, string, NULL); XmStringFree(string); } if (pattern != NULL) { string = XmStringCreate(pattern, UICharSetNormal); XtVaSetValues(selection, XmNpattern, string, NULL); XmStringFree(string); } XtUnmanageChild(XmFileSelectionBoxGetChild(selection, XmDIALOG_HELP_BUTTON)); XtAddCallback(selection, XmNokCallback, (XtCallbackProc) _UIFileSelectionOkCBK, fullPath); XtAddCallback(selection, XmNokCallback, (XtCallbackProc) UILoopStopCBK, NULL); XtAddCallback(selection, XmNcancelCallback, (XtCallbackProc) UILoopStopCBK, NULL); XtAddCallback(selection, XmNnoMatchCallback, (XtCallbackProc) _UIFileSelectionNoMatchCBK, NULL); return (selection); }
Widget UIDialogForm (char *dialogTitle,int resize) { Widget dShell, bulletin, pane, actionForm, button; XmString ok = XmStringCreate ((char *) "Accept",UICharSetBold); XmString cancel = XmStringCreate ((char *) "Discard",UICharSetBold); dShell = XtVaCreatePopupShell (dialogTitle,xmDialogShellWidgetClass,UITopLevel (), XmNkeyboardFocusPolicy, XmEXPLICIT, XmNallowShellResize, true, NULL); bulletin = XtVaCreateWidget (UIDialogBulletinName + 1,xmBulletinBoardWidgetClass,dShell, XmNnoResize, resize, XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL, XmNtransient, true, XmNmarginHeight, 5, XmNmarginWidth, 5, NULL); XtAddCallback (bulletin,XmNunmapCallback,(XtCallbackProc) UILoopStopCBK,NULL); pane = XtVaCreateManagedWidget (UIDialogPaneName + 1,xmPanedWindowWidgetClass,bulletin, XmNsashWidth, 1, XmNsashHeight, 1, XmNallowResize, true, NULL); XtVaCreateManagedWidget (UIDialogFormName + 1, xmFormWidgetClass, pane, XmNshadowThickness, 0, XmNallowResize, true, NULL); actionForm = XtVaCreateManagedWidget (UIDialogActionFormName + 1,xmFormWidgetClass,pane, XmNallowResize, false, XmNshadowThickness, 0, NULL); button = XtVaCreateManagedWidget (UIDialogOkButtonName + 1,xmPushButtonWidgetClass,actionForm, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 5, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 5, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 20, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 40, XmNlabelString, ok, NULL); XtSetSensitive (button,false); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UILoopStopCBK,NULL); button = XtVaCreateManagedWidget (UIDialogCancelButtonName+ 1,xmPushButtonWidgetClass,actionForm, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 5, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 5, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 60, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 80, XmNlabelString, cancel, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UILoopStopCBK,NULL); XmStringFree (ok); XmStringFree (cancel); return (dShell); }
UI2DView::UI2DView () : DBObject ("Noname 2DView",sizeof (UI2DView)) { char name [DBStringLength]; Widget menuBar, scrolledWindow, radioBox; Widget button; static Pixmap iconPixmap = (Pixmap) NULL, meshPixmap = (Pixmap) NULL; static Pixmap fullPixmap = (Pixmap) NULL, extentPixmap = (Pixmap) NULL; static Pixmap capturePixmap = (Pixmap) NULL, redrawPixmap = (Pixmap) NULL; static Pixmap zoomPixmap = (Pixmap) NULL, panePixmap = (Pixmap) NULL, userPixmap = (Pixmap) NULL; Pixel foreground, background; XWindowAttributes xwa; XSetWindowAttributes xswa; Atom deleteWindowAtom = XmInternAtom(XtDisplay(UITopLevel ()),(char *) "WM_DELETE_WINDOW",FALSE); _UI2DViewLIST.Add (this); sprintf (name,"2DView:%2d",RowID ()); Name (name); Image = (XImage *) NULL; DrawRegion = FullRegion = NULL; MaxVertexNumVAR = 0; PointARR = (XPoint *) NULL; RequiredEXT = (UIDataset ())->Extent (); DShell = XtVaCreatePopupShell ("UI2DView",xmDialogShellWidgetClass,UITopLevel (), XmNkeyboardFocusPolicy, XmPOINTER, XmNtitle, Name (), XmNtransient, false, XmNminWidth, 600, XmNminHeight, 450, NULL); XmAddWMProtocolCallback (DShell,deleteWindowAtom,(XtCallbackProc) _UI2DViewDeleteCBK,(XtPointer) this); MainFormW = XtVaCreateManagedWidget ("UI2DViewForm",xmFormWidgetClass,DShell, XmNdialogStyle, XmDIALOG_WORK_AREA, XmNshadowThickness, 0, XmNwidth, 600, XmNheight, 450, NULL); menuBar = XtVaCreateManagedWidget ("UI2DViewMenuBar",xmRowColumnWidgetClass,MainFormW, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 2, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 2, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 2, XmNorientation, XmHORIZONTAL, XmNrowColumnType, XmWORK_AREA, NULL); XtVaGetValues (MainFormW,XmNforeground, &foreground,XmNbackground, &background,NULL); iconPixmap = iconPixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen (UITopLevel()),(char *) "GHAAS2Dview.bmp",foreground,background): iconPixmap; XtVaSetValues (DShell,XmNiconPixmap, iconPixmap,NULL); fullPixmap = fullPixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen(UITopLevel()),(char *) "GHAASfull.bmp", foreground,background) : fullPixmap; extentPixmap = extentPixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen(UITopLevel()),(char *) "GHAASextent.bmp",foreground,background) : extentPixmap; capturePixmap= capturePixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen(UITopLevel()),(char *) "GHAAScapture.bmp",foreground,background):capturePixmap; redrawPixmap = redrawPixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen(UITopLevel()),(char *) "GHAASredraw.bmp", foreground,background) : redrawPixmap; zoomPixmap = zoomPixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen(UITopLevel()),(char *) "GHAASzoom.bmp", foreground,background) : zoomPixmap; panePixmap = panePixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen(UITopLevel()),(char *) "GHAASpane.bmp", foreground,background) : panePixmap; userPixmap = userPixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen(UITopLevel()),(char *) "GHAASuser.bmp", foreground,background) : userPixmap; meshPixmap = meshPixmap == (Pixmap) NULL ? XmGetPixmap(XtScreen(UITopLevel()),(char *) "GHAASmesh.bmp", foreground,background) : meshPixmap; button = XtVaCreateManagedWidget ("UI2DViewRedrawButton",xmPushButtonGadgetClass,menuBar, XmNlabelType, XmPIXMAP, XmNlabelPixmap, redrawPixmap, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UI2DViewRedrawCBK,this); button = XtVaCreateManagedWidget ("UI2DViewFullButton",xmPushButtonGadgetClass,menuBar, XmNlabelType, XmPIXMAP, XmNlabelPixmap, fullPixmap, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UI2DViewFullActivateCBK,this); button = XtVaCreateManagedWidget ("UI2DViewExtentButton",xmPushButtonGadgetClass,menuBar, XmNlabelType, XmPIXMAP, XmNlabelPixmap, extentPixmap, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UI2DViewExtentActivateCBK,this); button = XtVaCreateManagedWidget ("UI2DViewCaptureButton",xmPushButtonGadgetClass,menuBar, XmNlabelType, XmPIXMAP, XmNlabelPixmap, capturePixmap, NULL); radioBox = XtVaCreateManagedWidget ("UI2DViewRadioBox",xmRowColumnWidgetClass,menuBar, XmNorientation, XmHORIZONTAL, XmNpacking, XmPACK_COLUMN, XmNisHomogeneous, true, XmNentryClass, xmToggleButtonGadgetClass, XmNradioBehavior, true, NULL); ZoomToggle = XtVaCreateManagedWidget ("UI2DViewZoomToggle",xmToggleButtonGadgetClass,radioBox, XmNlabelType, XmPIXMAP, XmNlabelPixmap, zoomPixmap, XmNshadowThickness, 0, XmNset, true, NULL); XtAddCallback (ZoomToggle,XmNvalueChangedCallback,(XtCallbackProc) _UI2DViewZoomToggleValueCBK,this); PaneToggle = XtVaCreateManagedWidget ("UI2DViewPaneToggle",xmToggleButtonGadgetClass,radioBox, XmNlabelType, XmPIXMAP, XmNlabelPixmap, panePixmap, XmNshadowThickness, 0, NULL); XtAddCallback (PaneToggle,XmNvalueChangedCallback,(XtCallbackProc) _UI2DViewPaneToggleValueCBK,this); UserToggle = XtVaCreateWidget ("UI2DViewUserToggle",xmToggleButtonGadgetClass,radioBox, XmNlabelType, XmPIXMAP, XmNlabelPixmap, userPixmap, XmNmappedWhenManaged, false, XmNshadowThickness, 0, NULL); XtAddCallback (UserToggle,XmNvalueChangedCallback,(XtCallbackProc) _UI2DViewUserToggleValueCBK,this); if (_UI2DViewUserFunction != (UI2DViewUserFunction) NULL) XtManageChild (UserToggle); MeshOptionW = XtVaCreateManagedWidget ("UI2DViewMeshOption",xmToggleButtonGadgetClass,menuBar, XmNlabelType, XmPIXMAP, XmNlabelPixmap, meshPixmap, XmNshadowThickness, 0, NULL); XtAddCallback (MeshOptionW,XmNvalueChangedCallback,(XtCallbackProc) _UI2DViewMeshOptionCBK,this); XtVaSetValues (menuBar, XmNmenuHelpWidget, MeshOptionW, NULL); ScaleW = XtVaCreateManagedWidget ("UI2DViewScale",xmScaleWidgetClass,MainFormW, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, menuBar, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 2, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 18, XmNorientation, XmVERTICAL, XmNwidth, 16, NULL); XtAddCallback (ScaleW,XmNvalueChangedCallback,(XtCallbackProc) _UI2DViewScaleValueChangedCBK,this); scrolledWindow = XtVaCreateManagedWidget ("UI2DViewScrolledWindow",xmScrolledWindowWidgetClass,MainFormW, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, menuBar, XmNtopOffset, 2, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, ScaleW, XmNleftOffset, 3, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 3, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 3, XmNspacing, 2, NULL); HorScrollBarW = XtVaCreateManagedWidget ("UI2DViewHorScrollBar", xmScrollBarWidgetClass, scrolledWindow, XmNsliderSize, 100, XmNorientation, XmHORIZONTAL, XmNheight, 16, NULL); XtAddCallback (HorScrollBarW,XmNvalueChangedCallback,(XtCallbackProc) _UI2DViewHorScrollBarValueChangedCBK,this); VerScrollBarW = XtVaCreateManagedWidget ("UI2DViewVerScrollBar", xmScrollBarWidgetClass, scrolledWindow, XmNsliderSize, 100, XmNorientation, XmVERTICAL, XmNwidth, 16, NULL); XtAddCallback (VerScrollBarW,XmNvalueChangedCallback,(XtCallbackProc) _UI2DViewVerScrollBarValueChangedCBK,this); DrawingAreaW = XtVaCreateManagedWidget ("UI2DViewDrawingArea", xmDrawingAreaWidgetClass, scrolledWindow, XmNuserData, this, XmNbackground, UIColor (UIColorStandard,0), NULL); XtAddCallback (DrawingAreaW,XmNresizeCallback,(XtCallbackProc) _UI2DViewResizeCBK,this); XtAddEventHandler (DrawingAreaW,EnterWindowMask|LeaveWindowMask|PointerMotionMask|ButtonPressMask|ButtonReleaseMask, false,(XtEventHandler) _UI2DViewPointerEHR,this); XmScrolledWindowSetAreas(scrolledWindow,HorScrollBarW,VerScrollBarW,DrawingAreaW); _UI2DViewViewCursor = _UI2DViewViewCursor != (Cursor) NULL ? _UI2DViewViewCursor : XCreateFontCursor (XtDisplay (DrawingAreaW),XC_top_left_arrow), _UI2DViewUserCursor = _UI2DViewUserCursor != (Cursor) NULL ? _UI2DViewUserCursor : XCreateFontCursor (XtDisplay (DrawingAreaW),XC_crosshair); RegenCursor = XCreateFontCursor (XtDisplay (DrawingAreaW),XC_watch); ActiveCursor = xswa.cursor = _UI2DViewViewCursor; XChangeWindowAttributes (XtDisplay (DrawingAreaW), XtWindow (DrawingAreaW), CWCursor, &xswa); XGetWindowAttributes (XtDisplay (DrawingAreaW),XtWindow (DrawingAreaW),&xwa); Background = xwa.backing_pixel; xswa.backing_store = Always; XChangeWindowAttributes (XtDisplay (DrawingAreaW), XtWindow (DrawingAreaW),CWBackingStore,&xswa); InputMode (ZOOM_MODE); Size (); Set (); }
int UISymbolEdit (DBObjTable *symbols,int symbolType) { int symNum; static int changed, save; static Widget dShell = NULL; XmString string; UISymbol **editSymbols; DBObjRecord *symRecord; if (dShell == NULL) { char symString [20]; int depth; Pixel foreground, background; XGCValues xgcv; GC gc; Widget mainForm, scrolledW, list, label, button, text, foreMenu, backMenu, rowCol, symMenu; Pixmap markerPixmap, labelPixmap; dShell = UIDialogForm ((char *) "Symbol Edit"); mainForm = UIDialogFormGetMainForm (dShell); scrolledW = XtVaCreateManagedWidget ("UISymScrolledWindow",xmScrolledWindowWidgetClass,mainForm, XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, NULL); list = XtVaCreateManagedWidget (UISymListName + 1,xmListWidgetClass,scrolledW, XmNvisibleItemCount, 6, XmNselectionPolicy, XmBROWSE_SELECT, XmNscrollBarDisplayPolicy, XmSTATIC, NULL); XtAddCallback (list,XmNbrowseSelectionCallback,(XtCallbackProc) _UISymbolListSelectCBK,dShell); string = XmStringCreate ((char *) "Symbol",UICharSetNormal); label = XtVaCreateManagedWidget ("UISymbolLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, scrolledW, XmNleftAttachment, XmATTACH_FORM, XmNlabelString, string, NULL); XmStringFree (string); string = XmStringCreate ((char *) "Load Names",UICharSetNormal); button = XtVaCreateManagedWidget (UISymLoadNamesButtonName + 1,xmPushButtonWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, label, XmNrightAttachment, XmATTACH_FORM, XmNlabelString, string, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UISymbolLoadNamesCBK,list); XmStringFree (string); text = XtVaCreateManagedWidget (UISymTextFieldName + 1,xmTextFieldWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, label, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNrightOffset, 5, NULL); XtAddCallback (text,XmNvalueChangedCallback,(XtCallbackProc) _UISymbolTextValueChangedCBK,list); XtAddCallback (text,XmNvalueChangedCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&changed); foreMenu = XmCreatePulldownMenu (mainForm,(char *) "UISymForegroundMenuPane",NULL,0); backMenu = XmCreatePulldownMenu (mainForm,(char *) "UISymBackgroundMenuPane",NULL,0); for (symNum = 0;symNum < UIColorNum (UIColorStandard);symNum++) { foreground = UIColor (UIColorStandard,symNum); _UISymSetButtonString (symString,symNum); string = XmStringCreate (UIStandardColorName(symNum),UICharSetNormal); button = XtVaCreateManagedWidget (symString + 1,xmPushButtonWidgetClass,foreMenu, XmNuserData, symNum, XmNforeground, foreground, XmNlabelString, string, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UISymbolSetForegroundCBK,text); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&changed); button = XtVaCreateManagedWidget (symString + 1,xmPushButtonWidgetClass,backMenu, XmNuserData, symNum, XmNforeground, foreground, XmNlabelString, string, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UISymbolSetBackgroundCBK,text); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&changed); XmStringFree (string); } string = XmStringCreate ((char *) "Foreground:",UICharSetNormal); foreMenu = XtVaCreateManagedWidget (UISymForegroundMenuName + 1,xmRowColumnWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, text, XmNrightAttachment, XmATTACH_FORM, XmNsubMenuId, foreMenu, XmNlabelString, string, XmNrowColumnType, XmMENU_OPTION, XmNtraversalOn, false, NULL); XmStringFree (string); string = XmStringCreate ((char *) "Background:",UICharSetNormal); backMenu = XtVaCreateManagedWidget (UISymBackgroundMenuName + 1,xmRowColumnWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, foreMenu, XmNrightAttachment, XmATTACH_FORM, XmNsubMenuId, backMenu, XmNlabelString, string, XmNrowColumnType, XmMENU_OPTION, XmNtraversalOn, false, NULL); rowCol = XtVaCreateManagedWidget ("UISymbolRowCol",xmRowColumnWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, backMenu, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL); XtVaGetValues (mainForm,XmNforeground, &foreground,XmNbackground, &background,NULL); xgcv.foreground = foreground; xgcv.background = background; xgcv.fill_style = FillTiled; gc = XCreateGC (XtDisplay (UITopLevel ()),XtWindow (UITopLevel ()),GCForeground | GCBackground | GCFillStyle,&xgcv); symMenu = XmCreatePulldownMenu (rowCol,(char *) "UISymShadeMenuPane",NULL,0); depth = DefaultDepth (XtDisplay (UITopLevel ()),DefaultScreen (XtDisplay (UITopLevel ()))); for (symNum = 0;(xgcv.tile = UIPattern (symNum,foreground,background)) != (Pixmap) NULL;symNum++) { labelPixmap = XCreatePixmap (XtDisplay (UITopLevel ()),XtWindow (UITopLevel ()),96,24,depth); XChangeGC (XtDisplay (UITopLevel ()),gc,GCTile,&xgcv); XFillRectangle (XtDisplay (UITopLevel ()),labelPixmap,gc,0,0,96,24); XFreePixmap (XtDisplay (UITopLevel ()),xgcv.tile); _UISymSetButtonString(symString,symNum); button = XtVaCreateManagedWidget (symString + 1,xmPushButtonGadgetClass,symMenu, XmNuserData, symNum, XmNlabelType, XmPIXMAP, XmNlabelPixmap, labelPixmap, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UISymbolSetStyleCBK,text); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&changed); } string = XmStringCreate ((char *) "Shade:",UICharSetNormal); symMenu = XtVaCreateWidget (UISymShadeMenuName + 1,xmRowColumnWidgetClass,rowCol, XmNsubMenuId, symMenu, XmNlabelString, string, XmNrowColumnType, XmMENU_OPTION, XmNtraversalOn, false, NULL); XmStringFree (string); xgcv.foreground = background; xgcv.fill_style = FillSolid; XChangeGC (XtDisplay (UITopLevel ()),gc,GCForeground | GCFillStyle,&xgcv); symMenu = XmCreatePulldownMenu (rowCol,(char *) "UISymMarkerMenuPane",NULL,0); depth = DefaultDepth (XtDisplay (UITopLevel ()),DefaultScreen (XtDisplay (UITopLevel ()))); for (symNum = 0;(markerPixmap = UIMarker (symNum,foreground,background)) != (Pixmap) NULL;symNum++) { labelPixmap = XCreatePixmap (XtDisplay (UITopLevel ()),XtWindow (UITopLevel ()),96,24,depth); XFillRectangle (XtDisplay (UITopLevel ()),labelPixmap,gc,0,0,96,24); XCopyArea (XtDisplay (UITopLevel ()),markerPixmap,labelPixmap,gc,0,0,11,11,42,6); XFreePixmap (XtDisplay (UITopLevel ()),markerPixmap); _UISymSetButtonString(symString,symNum); button = XtVaCreateManagedWidget (symString + 1,xmPushButtonGadgetClass,symMenu, XmNuserData, symNum, XmNlabelType, XmPIXMAP, XmNlabelPixmap, labelPixmap, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UISymbolSetStyleCBK,text); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&changed); } string = XmStringCreate ((char *) "Marker:",UICharSetNormal); symMenu = XtVaCreateWidget (UISymMarkerMenuName + 1,xmRowColumnWidgetClass,rowCol, XmNsubMenuId, symMenu, XmNlabelString, string, XmNrowColumnType, XmMENU_OPTION, XmNtraversalOn, false, NULL); XmStringFree (string); symMenu = XmCreatePulldownMenu (rowCol,(char *) "UISymLineMenuPane",NULL,0); depth = DefaultDepth (XtDisplay (UITopLevel ()),DefaultScreen (XtDisplay (UITopLevel ()))); for (symNum = 0;symNum < 12;symNum++) { labelPixmap = XCreatePixmap (XtDisplay (UITopLevel ()),XtWindow (UITopLevel ()),96,24,depth); xgcv.foreground = background; xgcv.fill_style = FillSolid; XChangeGC (XtDisplay (UITopLevel ()),gc,GCForeground | GCFillStyle,&xgcv); XFillRectangle (XtDisplay (UITopLevel ()),labelPixmap,gc,0,0,96,24); xgcv.line_width = symNum & 0x03; switch (symNum >> 0x02) { case 0: xgcv.line_style = LineSolid; break; case 1: xgcv.line_style = LineOnOffDash; break; case 2: xgcv.line_style = LineDoubleDash; break; } xgcv.foreground = foreground; xgcv.background = UIColor (UIColorStandard,0); XChangeGC (XtDisplay (UITopLevel ()),gc,GCForeground | GCBackground | GCLineWidth | GCLineStyle,&xgcv); XDrawLine (XtDisplay (UITopLevel ()),labelPixmap,gc,0,12,96,12); _UISymSetButtonString(symString,symNum); button = XtVaCreateManagedWidget (symString + 1,xmPushButtonGadgetClass,symMenu, XmNuserData, symNum, XmNlabelType, XmPIXMAP, XmNlabelPixmap, labelPixmap, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _UISymbolSetStyleCBK,text); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&changed); } string = XmStringCreate ((char *) "Line:",UICharSetNormal); symMenu = XtVaCreateWidget (UISymLineMenuName + 1,xmRowColumnWidgetClass,rowCol, XmNsubMenuId, symMenu, XmNlabelString, string, XmNrowColumnType, XmMENU_OPTION, XmNtraversalOn, false, NULL); XmStringFree (string); XtAddCallback (UIDialogFormGetOkButton (dShell),XmNactivateCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&save); }
UIAttribView::UIAttribView (DBObjData *data) : DBObject (data->Name (),sizeof (UIAttribView)) { DBObjTableField *field; DBObjectLIST<DBObjTableField> *fields; Widget mainForm, scrolledW, rowCol, label; XmString string; Atom deleteWindowAtom = XmInternAtom(XtDisplay(UITopLevel ()),(char *) "WM_DELETE_WINDOW",FALSE); DataPTR = data; ItemTable = DataPTR->Table (DBrNItems); Name (UIAttribViewSTR); DShellWGT = XtVaCreatePopupShell ("UIAttribView",xmDialogShellWidgetClass,UITopLevel (), XmNkeyboardFocusPolicy, XmPOINTER, XmNtitle, data->Name (), XmNtransient, False, XmNminWidth, 400, XmNminHeight, 300, NULL); XmAddWMProtocolCallback (DShellWGT,deleteWindowAtom,(XtCallbackProc) _UIAttribViewDeleteCBK,(XtPointer) this); mainForm = XtVaCreateWidget ("UIAttribViewForm",xmFormWidgetClass,DShellWGT, XmNshadowThickness, 0, NULL); string = XmStringCreate ((char *) "Item:",UICharSetBold); label = XtVaCreateManagedWidget ("UIAttribViewNameLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 5, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 10, XmNlabelString, string, XmNrecomputeSize, False, NULL); XmStringFree (string); string = XmStringCreate ((char *) "",UICharSetNormal); ItemNameWGT = XtVaCreateManagedWidget ("UIAttribViewNameText",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 5, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, label, XmNleftOffset, 5, XmNlabelString, string, NULL); XmStringFree (string); scrolledW = XtVaCreateManagedWidget ("UIAttribViewScrolledW",xmScrolledWindowWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, label, XmNtopOffset, 5, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 5, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 5, XmNheight, 150, XmNvisualPolicy, XmCONSTANT, XmNscrollingPolicy, XmAUTOMATIC, NULL); rowCol = XtVaCreateManagedWidget ("UIAttribViewRowColumn",xmRowColumnWidgetClass,scrolledW, XmNnumColumns, 2, XmNorientation, XmHORIZONTAL, XmNrowColumnType, XmWORK_AREA, NULL); NamesRowCol = XtVaCreateManagedWidget ("UIAttribViewNamesRowColumn",xmRowColumnWidgetClass,rowCol, XmNorientation, XmVERTICAL, XmNrowColumnType, XmWORK_AREA, XmNpacking, XmPACK_COLUMN, XmNspacing, 0, NULL); FieldsRowCol = XtVaCreateManagedWidget ("UIAttribViewNamesRowColumn",xmRowColumnWidgetClass,rowCol, XmNorientation, XmVERTICAL, XmNrowColumnType, XmWORK_AREA, XmNspacing, 0, NULL); switch (DataPTR->Type ()) { case DBTypeVectorPoint: case DBTypeVectorLine: case DBTypeVectorPolygon: case DBTypeGridDiscrete: fields = ItemTable->Fields (); for (field = fields->First ();field != (DBObjTableField *) NULL;field = fields->Next ()) if (DBTableFieldIsVisible (field) == true) NewField (field->Name (),field->Format ()); break; case DBTypeGridContinuous: { DBObjRecord *record; DBGridIF *gridIF = new DBGridIF (DataPTR); ItemTable = DataPTR->Table (DBrNLayers); for (record = ItemTable->First ();record != (DBObjRecord *) NULL;record = ItemTable->Next ()) NewField (record->Name (),gridIF->ValueFormat ()); delete gridIF; } break; case DBTypeNetwork: { DBObjTable *cellTable = DataPTR->Table (DBrNCells); NewField ((char *) "Basin Name",(char *) "%s"); fields = ItemTable->Fields (); for (field = fields->First ();field != (DBObjTableField *) NULL;field = fields->Next ()) if (DBTableFieldIsVisible (field) == true) NewField (field->Name (),field->Format ()); fields = cellTable->Fields (); for (field = fields->First ();field != (DBObjTableField *) NULL;field = fields->Next ()) if (DBTableFieldIsVisible (field) == true) NewField (field->Name (),field->Format ()); } break; default: break; } XtManageChild (mainForm); UILoop (); }
int UIYesOrNo(char *message) { static int answer; Widget dShell; static Widget dialogWidget = NULL; XmString messageString; if (dialogWidget == NULL) { dShell = XtVaCreatePopupShell("UIQuestionDialogShell", xmDialogShellWidgetClass, UITopLevel(), XmNallowShellResize, true, XmNtransient, true, XmNkeyboardFocusPolicy, XmEXPLICIT, NULL); dialogWidget = XtVaCreateManagedWidget("UIQuestionDialog", xmMessageBoxWidgetClass, dShell, XmNnoResize, true, XmNautoUnmanage, false, XmNdialogTitle, XmStringCreate((char *) "Question", UICharSetNormal), XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL, XmNokLabelString, XmStringCreate((char *) "Yes", UICharSetNormal), XmNcancelLabelString, XmStringCreate((char *) "No", UICharSetNormal), NULL); XtAddCallback(dialogWidget, XmNokCallback, (XtCallbackProc) UIAuxSetBooleanTrueCBK, &answer); XtAddCallback(dialogWidget, XmNokCallback, (XtCallbackProc) UILoopStopCBK, 0); XtAddCallback(dialogWidget, XmNcancelCallback, (XtCallbackProc) UIAuxSetBooleanFalseCBK, &answer); XtAddCallback(dialogWidget, XmNcancelCallback, (XtCallbackProc) UILoopStopCBK, 0); XtUnmanageChild(XmMessageBoxGetChild(dialogWidget, XmDIALOG_HELP_BUTTON)); } messageString = XmStringCreate(message, UICharSetNormal); XtVaSetValues(dialogWidget, XmNmessageString, messageString, NULL); XtManageChild(dialogWidget); while (UILoop()); XtUnmanageChild(dialogWidget); XmStringFree(messageString); return (answer); }