|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef _XmHierarchyP_h
|
|
Packit |
b099d7 |
#define _XmHierarchyP_h
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#if defined(VMS) || defined(__VMS)
|
|
Packit |
b099d7 |
#include <X11/apienvset.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* INCLUDE FILES
|
|
Packit |
b099d7 |
*************************************************************/
|
|
Packit |
b099d7 |
#include <Xm/ManagerP.h>
|
|
Packit |
b099d7 |
#include <Xm/ExtP.h>
|
|
Packit |
b099d7 |
#include <Xm/Hierarchy.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* TYPEDEFS AND DEFINES
|
|
Packit |
b099d7 |
*************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef __cplusplus
|
|
Packit |
b099d7 |
extern "C" {
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define IS_MAPPED (1L << 1)
|
|
Packit |
b099d7 |
#define IS_COMPRESSED (1L << 2)
|
|
Packit |
b099d7 |
#define PARENT_GONE (1L << 3)
|
|
Packit |
b099d7 |
#define IS_SELECTED (1L << 4)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* MACROS
|
|
Packit |
b099d7 |
*************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* GLOBAL DECLARATIONS
|
|
Packit |
b099d7 |
*************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _HierNodeInfo {
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Public (Resource) data.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmHierarchyNodeState state; /* State of the node. */
|
|
Packit |
b099d7 |
Widget parent; /* parent of this child. */
|
|
Packit |
b099d7 |
Widget insert_before; /* Sibling to insert this node before;
|
|
Packit |
b099d7 |
NULL will place it at the end. */
|
|
Packit |
b099d7 |
Pixmap open_folder, close_folder; /* Images for open/close buttons. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Private data.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget widget; /* Back pointer to this node's widget. */
|
|
Packit |
b099d7 |
Widget open_close_button; /* The open or close button. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
struct _HierarchyConstraintRec ** children; /* norm children. */
|
|
Packit |
b099d7 |
Cardinal num_children; /* number of each type of children. */
|
|
Packit |
b099d7 |
Cardinal alloc_attrs, alloc; /* amount of allocated space for each */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
unsigned char status; /* 8 status bits. */
|
|
Packit |
b099d7 |
} HierNodeInfo;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _HierarchyConstraintRec {
|
|
Packit |
b099d7 |
XmManagerConstraintPart manager;
|
|
Packit |
b099d7 |
HierNodeInfo hierarchy;
|
|
Packit |
b099d7 |
} HierarchyConstraintRec, XmHierarchyConstraintRec, *HierarchyConstraints;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef void (*XmHierarchyNodeProc)(HierarchyConstraints);
|
|
Packit |
b099d7 |
typedef void (*XmHierarchyExtraNodeProc)(Widget, HierarchyConstraints);
|
|
Packit |
b099d7 |
typedef void (*XmHierarchyBuildTableProc)(Widget,
|
|
Packit |
b099d7 |
HierarchyConstraints, Cardinal *);
|
|
Packit |
b099d7 |
typedef void (*XmHierarchyResetButtonProc)(Widget, HierarchyConstraints);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct {
|
|
Packit |
b099d7 |
/* Class function for changing node state. */
|
|
Packit |
b099d7 |
XmHierarchyNodeProc change_node_state;
|
|
Packit |
b099d7 |
/* map or unmap a given node. */
|
|
Packit |
b099d7 |
XmHierarchyNodeProc map_node;
|
|
Packit |
b099d7 |
XmHierarchyNodeProc unmap_node;
|
|
Packit |
b099d7 |
/* Unmaps all the extra nodes. */
|
|
Packit |
b099d7 |
XmHierarchyExtraNodeProc unmap_all_extra_nodes;
|
|
Packit |
b099d7 |
/* Builds the node table. */
|
|
Packit |
b099d7 |
XmHierarchyBuildTableProc build_node_table;
|
|
Packit |
b099d7 |
/* Correctly sets the state of the open/close button. */
|
|
Packit |
b099d7 |
XmHierarchyResetButtonProc reset_open_close_button;
|
|
Packit |
b099d7 |
/* Toggles state of a node. */
|
|
Packit |
b099d7 |
XtCallbackProc toggle_node_state;
|
|
Packit |
b099d7 |
/* Just in case we need it later. */
|
|
Packit |
b099d7 |
XtPointer extension;
|
|
Packit |
b099d7 |
} HierarchyClassPart;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _XmHierarchyClassRec {
|
|
Packit |
b099d7 |
CoreClassPart core_class;
|
|
Packit |
b099d7 |
CompositeClassPart composite_class;
|
|
Packit |
b099d7 |
ConstraintClassPart constraint_class;
|
|
Packit |
b099d7 |
XmManagerClassPart manager_class;
|
|
Packit |
b099d7 |
HierarchyClassPart hierarchy_class;
|
|
Packit |
b099d7 |
} XmHierarchyClassRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externalref XmHierarchyClassRec xmHierarchyClassRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _HierarchyPart {
|
|
Packit |
b099d7 |
/* resources */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Boolean auto_close; /* Auto-close children when parent is closed?*/
|
|
Packit |
b099d7 |
Boolean refigure_mode; /* Do refigures? */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Dimension h_margin; /* The horizontal margin. */
|
|
Packit |
b099d7 |
Dimension v_margin; /* The vertical margin. */
|
|
Packit |
b099d7 |
Pixmap open_folder, close_folder; /* Images for open/close buttons. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtCallbackList node_state_callback; /* Called when the node button is
|
|
Packit |
b099d7 |
clicked */
|
|
Packit |
b099d7 |
XtCallbackList node_state_changed_callback; /* Called when the node state
|
|
Packit |
b099d7 |
changes */
|
|
Packit |
b099d7 |
XtCallbackList node_state_beg_end_callback; /* Called when beginning
|
|
Packit |
b099d7 |
or ending a set of node
|
|
Packit |
b099d7 |
state changes */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* private state */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
HierarchyConstraintRec ** node_table;
|
|
Packit |
b099d7 |
HierarchyConstraints top_node;
|
|
Packit |
b099d7 |
Cardinal num_nodes, alloc_nodes;
|
|
Packit |
b099d7 |
Pixmap def_open_folder, def_close_folder; /* Default folder button Images*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtWorkProcId work_proc_id; /* work proc id for the move nodes wp */
|
|
Packit |
b099d7 |
} HierarchyPart;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _XmHierarchyRec {
|
|
Packit |
b099d7 |
CorePart core;
|
|
Packit |
b099d7 |
CompositePart composite;
|
|
Packit |
b099d7 |
ConstraintPart constraint;
|
|
Packit |
b099d7 |
XmManagerPart manager;
|
|
Packit |
b099d7 |
HierarchyPart hierarchy;
|
|
Packit |
b099d7 |
} XmHierarchyRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* These are necessary because the XmResolvePartOffset macros assume a
|
|
Packit |
b099d7 |
* certain naming convention
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
typedef HierarchyPart XmHierarchyPart;
|
|
Packit |
b099d7 |
typedef HierNodeInfo XmHierarchyConstraintPart;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XmHierarchy_auto_close(w) (((XmHierarchyWidget)(w))->hierarchy.auto_close)
|
|
Packit |
b099d7 |
#define XmHierarchy_refigure_mode(w) (((XmHierarchyWidget)(w))->hierarchy.refigure_mode)
|
|
Packit |
b099d7 |
#define XmHierarchy_h_margin(w) (((XmHierarchyWidget)(w))->hierarchy.h_margin)
|
|
Packit |
b099d7 |
#define XmHierarchy_v_margin(w) (((XmHierarchyWidget)(w))->hierarchy.v_margin)
|
|
Packit |
b099d7 |
#define XmHierarchy_open_folder(w) (((XmHierarchyWidget)(w))->hierarchy.open_folder)
|
|
Packit |
b099d7 |
#define XmHierarchy_close_folder(w) (((XmHierarchyWidget)(w))->hierarchy.close_folder)
|
|
Packit |
b099d7 |
#define XmHierarchy_node_state_callback(w) (((XmHierarchyWidget)(w))->hierarchy.node_state_callback)
|
|
Packit |
b099d7 |
#define XmHierarchy_node_state_changed_callback(w) (((XmHierarchyWidget)(w))->hierarchy.node_state_changed_callback)
|
|
Packit |
b099d7 |
#define XmHierarchy_node_state_beg_end_callback(w) (((XmHierarchyWidget)(w))->hierarchy.node_state_beg_end_callback)
|
|
Packit |
b099d7 |
#define XmHierarchy_node_table(w) (((XmHierarchyWidget)(w))->hierarchy.node_table)
|
|
Packit |
b099d7 |
#define XmHierarchy_top_node(w) (((XmHierarchyWidget)(w))->hierarchy.top_node)
|
|
Packit |
b099d7 |
#define XmHierarchy_num_nodes(w) (((XmHierarchyWidget)(w))->hierarchy.num_nodes)
|
|
Packit |
b099d7 |
#define XmHierarchy_alloc_nodes(w) (((XmHierarchyWidget)(w))->hierarchy.alloc_nodes)
|
|
Packit |
b099d7 |
#define XmHierarchy_def_open_folder(w) (((XmHierarchyWidget)(w))->hierarchy.def_open_folder)
|
|
Packit |
b099d7 |
#define XmHierarchy_def_close_folder(w) (((XmHierarchyWidget)(w))->hierarchy.def_close_folder)
|
|
Packit |
b099d7 |
#define XmHierarchy_work_proc_id(w) (((XmHierarchyWidget)(w))->hierarchy.work_proc_id)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XmHierarchyC_state(constraints) ((constraints)->hierarchy.state)
|
|
Packit |
b099d7 |
#define XmHierarchyC_parent(constraints) ((constraints)->hierarchy.parent)
|
|
Packit |
b099d7 |
#define XmHierarchyC_insert_before(constraints) ((constraints)->hierarchy.insert_before)
|
|
Packit |
b099d7 |
#define XmHierarchyC_open_folder(constraints) ((constraints)->hierarchy.open_folder)
|
|
Packit |
b099d7 |
#define XmHierarchyC_close_folder(constraints) ((constraints)->hierarchy.close_folder)
|
|
Packit |
b099d7 |
#define XmHierarchyC_widget(constraints) ((constraints)->hierarchy.widget)
|
|
Packit |
b099d7 |
#define XmHierarchyC_open_close_button(constraints) ((constraints)->hierarchy.open_close_button)
|
|
Packit |
b099d7 |
#define XmHierarchyC_children(constraints) ((constraints)->hierarchy.children)
|
|
Packit |
b099d7 |
#define XmHierarchyC_num_children(constraints) ((constraints)->hierarchy.num_children)
|
|
Packit |
b099d7 |
#define XmHierarchyC_alloc_attrs(constraints) ((constraints)->hierarchy.alloc_attrs)
|
|
Packit |
b099d7 |
#define XmHierarchyC_alloc(constraints) ((constraints)->hierarchy.alloc)
|
|
Packit |
b099d7 |
#define XmHierarchyC_status(constraints) ((constraints)->hierarchy.status)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XtInheritChangeNodeState ((XmHierarchyNodeProc)_XtInherit)
|
|
Packit |
b099d7 |
#define XtInheritUnmapAllExtraNodes ((XmHierarchyExtraNodeProc)_XtInherit)
|
|
Packit |
b099d7 |
#define XtInheritUnmapNode ((XmHierarchyNodeProc)_XtInherit)
|
|
Packit |
b099d7 |
#define XtInheritMapNode ((XmHierarchyNodeProc)_XtInherit)
|
|
Packit |
b099d7 |
#define XtInheritBuildNodeTable ((XmHierarchyBuildTableProc)_XtInherit)
|
|
Packit |
b099d7 |
#define XtInheritResetOpenCloseButton ((XmHierarchyResetButtonProc)_XtInherit)
|
|
Packit |
b099d7 |
#define XtInheritToggleNodeState ((XtCallbackProc)_XtInherit)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* EXTERNAL DECLARATIONS
|
|
Packit |
b099d7 |
*************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* STATIC DECLARATIONS
|
|
Packit |
b099d7 |
*************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef __cplusplus
|
|
Packit |
b099d7 |
} /* Closes scope of 'extern "C"' declaration */
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#if defined(VMS) || defined(__VMS)
|
|
Packit |
b099d7 |
#include <X11/apienvrst.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#endif /* _HierarchyP_h */
|