Blame lib/Xm/HierarchyP.h

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 */