Sun, 15 Dec 2024 11:59:30 +0100
implement motif menu/menu item
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2024 Olaf Wintermann. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef GRID_H #define GRID_H #include <X11/Intrinsic.h> #include <X11/IntrinsicP.h> #include <Xm/XmAll.h> #include <Xm/Primitive.h> #include <Xm/PrimitiveP.h> #include <Xm/ManagerP.h> #ifdef __cplusplus extern "C" { #endif #define gridColumn "gridColumn" #define gridRow "gridRow" #define gridColspan "gridColspan" #define gridRowspan "gridRowspan" #define gridHExpand "gridHExpand" #define gridVExpand "gridVExpand" #define gridHFill "gridHFill" #define gridVFill "gridVFill" #define gridMarginLeft "gridMarginLeft" #define gridMarginRight "gridMarginRight" #define gridMarginTop "gridMarginTop" #define gridMarginBottom "gridMarginBottom" typedef struct GridDef { Dimension size; Dimension pos; Boolean expand; } GridDef; typedef struct GridClassPart { int test; } GridClassPart; typedef struct GridClassRec { CoreClassPart core_class; CompositeClassPart composite_class; ConstraintClassPart constraint_class; XmManagerClassPart manager_class; GridClassPart mywidgetclass; } GridClassRec; typedef struct GridPart { int margin_left; int margin_right; int margin_top; int margin_bottom; int max_col; int max_row; Boolean sizerequest; } GridPart; typedef struct GridRec { CorePart core; CompositePart composite; ConstraintPart constraint; XmManagerPart manager; GridPart mywidget; } GridRec; typedef struct GridContraintPart { Dimension x; Dimension y; Dimension margin_left; Dimension margin_right; Dimension margin_top; Dimension margin_bottom; Boolean hexpand; Boolean vexpand; Boolean hfill; Boolean vfill; Dimension colspan; Dimension rowspan; Dimension pref_width; Dimension pref_height; } GridContraintPart; typedef struct GridConstraintRec { XmManagerConstraintPart manager; GridContraintPart grid; } GridConstraintRec; typedef GridRec* MyWidget; extern WidgetClass gridClass; void grid_class_initialize(); void grid_initialize(); void grid_realize(); void grid_destroy(); void grid_resize(); void grid_expose(); Boolean grid_set_values(); Boolean grid_acceptfocus(Widget , Time*); void grid_place_children(MyWidget w); void grid_getfocus(); void grid_loosefocus(); void grid_constraint_init( Widget request, Widget neww, ArgList args, Cardinal* num_args ); XtGeometryResult GridGeometryManager(Widget widget, XtWidgetGeometry *request, XtWidgetGeometry *reply); void GridChangeManaged(Widget widget); Boolean ConstraintSetValues(Widget old, Widget request, Widget neww, ArgList args, Cardinal *num_args); #ifdef __cplusplus } #endif #endif /* GRID_H */