awips2/nativeLib/rary.empty.motif/include/Xm/RowColumnP.h
2017-04-21 18:33:55 -06:00

463 lines
13 KiB
C

/**
*
* $Id: RowColumnP.h,v 1.1 2004/08/28 19:23:26 dannybackx Exp $
*
* Copyright (C) 1995 Free Software Foundation, Inc.
* Copyright (C) 1995-2000 LessTif Development Team
*
* This file is part of the GNU LessTif Library.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
**/
#ifndef _XM_ROWCOLUMNP_H
#define _XM_ROWCOLUMNP_H
#include <Xm/RowColumn.h>
#include <Xm/ManagerP.h>
#ifdef __cplusplus
extern "C" {
#endif
/* used by the popup menu code. */
typedef struct _XmButtonEventStatusRec {
Time time;
Boolean verified;
Boolean waiting_to_be_managed;
XButtonEvent event;
} XmButtonEventStatusRec;
/* Also not used in lesstif.. will be someday */
typedef struct _XmReplayInfoRec {
Time time;
Widget toplevel_menu;
} XmReplayInfoRec;
typedef struct _XmMenuFocusRec {
Widget oldWidget;
Window oldFocus;
int oldRevert;
} XmMenuFocusRec;
/* per screen state information dealing with menus */
typedef struct _XmMenuStateRec {
Widget RC_LastSelectToplevel;
XmButtonEventStatusRec RC_ButtonEventStatus;
XmReplayInfoRec RC_ReplayInfo;
Widget RC_activeItem;
XmMenuFocusRec RC_menuFocus;
Boolean RC_allowAcceleratedInsensitiveUnmanagedMenuItems;
Time MS_LastManagedMenuTime;
Boolean MU_InDragMode;
Widget MU_CurrentMenuChild;
Boolean MU_InPMMode;
} XmMenuStateRec, *XmMenuState;
/* geometry information for children of the row column. Used to
simplify the layout routines */
typedef struct _XmRCKidGeometryRec
{
Widget kid;
XtWidgetGeometry box;
Dimension margin_top;
Dimension margin_bottom;
Dimension baseline;
} XmRCKidGeometryRec, *XmRCKidGeometry;
/* Define the rowcolumn instance part */
typedef struct {
Dimension margin_height;
Dimension margin_width;
Dimension spacing;
Dimension entry_border;
Widget help_pushbutton;
Widget cascadeBtn;
XmString option_label;
Widget option_submenu;
XmRCKidGeometry boxes;
WidgetClass entry_class;
XtCallbackList entry_callback;
XtCallbackList map_callback;
XtCallbackList unmap_callback;
Widget memory_subwidget;
short num_columns;
String menuPost;
unsigned int postButton;
int postEventType;
unsigned int postModifiers;
String menu_accelerator;
KeySym mnemonic;
XmStringCharSet mnemonicCharSet;
unsigned char entry_alignment;
unsigned char packing;
unsigned char type;
unsigned char orientation;
Boolean armed;
Boolean adjust_margin;
Boolean adjust_last;
Boolean do_alignment;
Boolean radio;
Boolean radio_one;
Boolean homogeneous;
Boolean resize_width;
Boolean resize_height;
Boolean popup_enabled;
Dimension old_width;
Dimension old_height;
Dimension old_shadow_thickness;
Widget *postFromList;
int postFromCount;
int postFromListSize;
Widget lastSelectToplevel;
Widget popupPosted;
unsigned char oldFocusPolicy;
unsigned char TearOffModel;
Widget ParentShell;
Widget tear_off_control;
Boolean to_state;
XtCallbackList tear_off_activated_callback;
XtCallbackList tear_off_deactivated_callback;
Widget tear_off_lastSelectToplevel;
Widget tear_off_focus_item;
unsigned char entry_vertical_alignment;
unsigned char popup_menu_click;
XtIntervalId popup_timeout_timer;
} XmRowColumnPart;
/* Define the full instance record */
typedef struct _XmRowColumnRec {
CorePart core;
CompositePart composite;
ConstraintPart constraint;
XmManagerPart manager;
XmRowColumnPart row_column;
} XmRowColumnRec;
/* Define class part structure */
typedef struct {
XmMenuProc menuProcedures; /* proc to interface with menu widgets */
XtActionProc armAndActivate; /* proc triggered by accelerator */
XmMenuTraversalProc traversalHandler; /* proc to handle menu traversal */
XtPointer extension;
} XmRowColumnClassPart;
/* Define the full class record */
typedef struct _XmRowColumnClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ConstraintClassPart constraint_class;
XmManagerClassPart manager_class;
XmRowColumnClassPart row_column_class;
} XmRowColumnClassRec;
/* Define the Constraint Resources */
typedef struct _XmRowColumnConstraintPart {
Boolean was_managed;
Dimension margin_top;
Dimension margin_bottom;
Dimension baseline;
short position_index;
} XmRowColumnConstraintPart;
typedef struct _XmRowColumnConstraintRec {
XmManagerConstraintPart manager;
XmRowColumnConstraintPart row_column;
} XmRowColumnConstraintRec, *XmRowColumnConstraints;
#define XmRC_ARMED_BIT (1 << 0)
#define XmRC_BEING_ARMED_BIT (1 << 1)
#define XmRC_EXPOSE_BIT (1 << 2)
#define XmRC_WINDOW_MOVED_BIT (1 << 3)
#define XmRC_WIDGET_MOVED_BIT (1 << 4)
#define XmRC_POPPING_DOWN_BIT (1 << 5)
#define XmRC_FROM_RESIZE_BIT (1 << 6)
#define RC_IsArmed(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_ARMED_BIT)
#define RC_BeingArmed(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_BEING_ARMED_BIT)
#define RC_WidgetHasMoved(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_WINDOW_MOVED_BIT)
#define RC_WindowHasMoved(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_WIDGET_MOVED_BIT)
#define RC_PoppingDown(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_POPPING_DOWN_BIT)
#define RC_FromResize(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_FROM_RESIZE_BIT)
#define RC_SetBit(byte,bit,v) byte = (byte & (~bit)) | (v ? bit : 0)
#define RC_SetArmed(m,v) RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_ARMED_BIT, v)
#define RC_SetBeingArmed(m,v) RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_BEING_ARMED_BIT, v)
#define RC_SetExpose(m,v) RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_EXPOSE_BIT, v)
#define RC_SetWidgetMoved(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_WIDGET_MOVED_BIT,v)
#define RC_SetWindowMoved(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_WINDOW_MOVED_BIT,v)
#define RC_SetPoppingDown(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_POPPING_DOWN_BIT,v)
#define RC_SetFromResize(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_FROM_RESIZE_BIT,v)
XMLIBEXPORT extern XmRowColumnClassRec xmRowColumnClassRec;
/*
* easy access macros
*/
#define RC_MarginW(m) \
(((XmRowColumnWidget)(m))->row_column.margin_width)
#define RC_MarginH(m) \
(((XmRowColumnWidget)(m))->row_column.margin_height)
#define RC_TearOffActivate_cb(m) \
(((XmRowColumnWidget)(m))->row_column.tear_off_activated_callback)
#define RC_TearOffDeactivate_cb(m) \
(((XmRowColumnWidget)(m))->row_column.tear_off_deactivated_callback)
#define RC_Entry_cb(m) \
(((XmRowColumnWidget)(m))->row_column.entry_callback)
#define RC_Map_cb(m) \
(((XmRowColumnWidget)(m))->row_column.map_callback)
#define RC_Unmap_cb(m) \
(((XmRowColumnWidget)(m))->row_column.unmap_callback)
#define RC_Orientation(m) \
(((XmRowColumnWidget)(m))->row_column.orientation)
#define RC_Spacing(m) \
(((XmRowColumnWidget)(m))->row_column.spacing)
#define RC_EntryBorder(m) \
(((XmRowColumnWidget)(m))->row_column.entry_border)
#define RC_HelpPb(m) \
(((XmRowColumnWidget)(m))->row_column.help_pushbutton)
#define RC_DoMarginAdjust(m) \
(((XmRowColumnWidget)(m))->row_column.adjust_margin)
#define RC_EntryAlignment(m) \
(((XmRowColumnWidget)(m))->row_column.entry_alignment)
#define RC_EntryVerticalAlignment(m) \
(((XmRowColumnWidget)(m))->row_column.entry_vertical_alignment)
#define RC_Packing(m) \
(((XmRowColumnWidget)(m))->row_column.packing)
#define RC_NCol(m) \
(((XmRowColumnWidget)(m))->row_column.num_columns)
#define RC_AdjLast(m) \
(((XmRowColumnWidget)(m))->row_column.adjust_last)
#define RC_AdjMargin(m) \
(((XmRowColumnWidget)(m))->row_column.adjust_margin)
#define RC_MemWidget(m) \
(((XmRowColumnWidget)(m))->row_column.memory_subwidget)
#define RC_CascadeBtn(m) \
(((XmRowColumnWidget)(m))->row_column.cascadeBtn)
#define RC_OptionLabel(m) \
(((XmRowColumnWidget)(m))->row_column.option_label)
#define RC_OptionSubMenu(m) \
(((XmRowColumnWidget)(m))->row_column.option_submenu)
#define RC_RadioBehavior(m) \
(((XmRowColumnWidget)(m))->row_column.radio)
#define RC_RadioAlwaysOne(m) \
(((XmRowColumnWidget)(m))->row_column.radio_one)
#define RC_PopupPosted(m) \
(((XmRowColumnWidget)(m))->row_column.popupPosted)
#define RC_ResizeHeight(m) \
(((XmRowColumnWidget)(m))->row_column.resize_height)
#define RC_ResizeWidth(m) \
(((XmRowColumnWidget)(m))->row_column.resize_width)
#define RC_Type(m) \
(((XmRowColumnWidget)(m))->row_column.type)
#define RC_EntryClass(m) \
(((XmRowColumnWidget)(m))->row_column.entry_class)
#define RC_IsHomogeneous(m) \
(((XmRowColumnWidget)(m))->row_column.homogeneous)
#define RC_Boxes(m) \
(((XmRowColumnWidget)(m))->row_column.boxes)
#define RC_PopupEnabled(m) \
(((XmRowColumnWidget)(m))->row_column.popup_enabled)
#define RC_MenuAccelerator(m) \
(((XmRowColumnWidget)(m))->row_column.menu_accelerator)
#define RC_Mnemonic(m) \
(((XmRowColumnWidget)(m))->row_column.mnemonic)
#define RC_MnemonicCharSet(m) \
(((XmRowColumnWidget)(m))->row_column.mnemonicCharSet)
#define RC_MenuPost(m) \
(((XmRowColumnWidget)(m))->row_column.menuPost)
#define RC_PostModifiers(m) \
(((XmRowColumnWidget)(m))->row_column.postModifiers)
#define RC_PostButton(m) \
(((XmRowColumnWidget)(m))->row_column.postButton)
#define RC_PostEventType(m) \
(((XmRowColumnWidget)(m))->row_column.postEventType)
#define RC_OldFocusPolicy(m) \
(((XmRowColumnWidget)(m))->row_column.oldFocusPolicy)
#define RC_ParentShell(w) \
(((XmRowColumnWidget)(w))->row_column.ParentShell)
#define RC_TearOffLastSelectToplevel(w) \
(((XmRowColumnWidget)(w))->row_column.tear_off_lastSelectToplevel)
#define RC_TearOffFocusItem(w) \
(((XmRowColumnWidget)(w))->row_column.tear_off_focus_item)
#define RC_TearOffControl(m) \
(((XmRowColumnWidget)(m))->row_column.tear_off_control)
#define RC_TearOffModel(m) \
(((XmRowColumnWidget)(m))->row_column.TearOffModel)
#define XmTO_TORN_OFF_BIT (1 << 0)
#define XmTO_FROM_INIT_BIT (1 << 1)
#define XmTO_VISUAL_DIRTY_BIT (1 << 2)
#define XmTO_ACTIVE_BIT (1 << 3)
#define RC_SetTornOff(m,v) \
RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_TORN_OFF_BIT,v)
#define RC_TornOff(m) \
(((XmRowColumnWidget)(m))->row_column.to_state & XmTO_TORN_OFF_BIT)
#define RC_SetFromInit(m,v) \
RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_FROM_INIT_BIT,v)
#define RC_FromInit(m) \
(((XmRowColumnWidget)(m))->row_column.to_state & XmTO_FROM_INIT_BIT)
#define RC_SetTearOffDirty(m,v) \
RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_VISUAL_DIRTY_BIT,v)
#define RC_TearOffDirty(m) \
(((XmRowColumnWidget)(m))->row_column.to_state & XmTO_VISUAL_DIRTY_BIT)
#define RC_TearOffActive(m) \
(((XmRowColumnWidget)(m))->row_column.to_state & XmTO_ACTIVE_BIT)
#define RC_SetTearOffActive(m,v) \
RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_ACTIVE_BIT,v)
/*
* for _XmProcessMenuTree()
* Don't use an enum as this will conflict with one for render tables
* in Xm.h.
*/
#define XmADD 0
#define XmDELETE 1
#define XmREPLACE 2
/*
* Defines used when calling _XmMenuIsAccessible()
*/
enum {
XmWEAK_CHECK = 1,
XmMEDIUM_CHECK,
XmSTRONG_CHECK
};
enum {
XmMENU_BEGIN,
XmMENU_MIDDLE,
XmMENU_END
};
/*
* Defines used when calling find_first_managed_child()
*/
enum {
ANY_CHILD,
FIRST_BUTTON
};
void _LtRCEntryCallback(Widget w, XtCallbackList cb_list, XtPointer cbs);
void _XmPostPopupMenu(Widget wid, XEvent *event);
void _XmSetPopupMenuClick(Widget wid, Boolean popupMenuClick);
Boolean _XmGetPopupMenuClick(Widget wid);
void _XmAllowAcceleratedInsensitiveUnmanagedMenuItems(Widget wid,
Boolean allowed);
void _XmSetSwallowEventHandler(Widget widget, Boolean add_handler);
void _XmMenuFocus(Widget w, int operation, Time _time);
void _XmGetActiveTopLevelMenu(Widget wid, Widget *rwid);
Boolean _XmMatchBSelectEvent(Widget wid, XEvent *event);
Boolean _XmMatchBDragEvent(Widget wid, XEvent *event);
void _XmHandleMenuButtonPress(Widget wid, XEvent *event);
void _XmMenuBtnDown(Widget wid, XEvent *event,
String *params, Cardinal *num_params);
void _XmMenuBtnUp(Widget wid, XEvent *event,
String *params, Cardinal *num_params);
void _XmCallRowColumnMapCallback(Widget wid, XEvent *event);
void _XmCallRowColumnUnmapCallback(Widget wid, XEvent *event);
void _XmMenuPopDown(Widget w, XEvent *event, Boolean *popped_up);
Boolean _XmIsActiveTearOff(Widget w);
void _XmMenuHelp(Widget wid, XEvent *event,
String *params, Cardinal *num_params);
Widget _XmMenuNextItem(Widget menu, Widget current_item);
#ifdef __cplusplus
}
#endif
#endif /* _XM_ROWCOLUMN_P_H */