cdesktopenv/cde/programs/dtappbuilder/src/libABobj/obj.h

1354 lines
44 KiB
C

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these librararies and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/*
* $XConsortium: obj.h /main/5 1996/10/29 15:20:51 mustafa $
*
* @(#)obj.h 3.237 04 May 1995
*
* RESTRICTED CONFIDENTIAL INFORMATION:
*
* The information in this document is subject to special
* restrictions in a confidential disclosure agreement between
* HP, IBM, Sun, USL, SCO and Univel. Do not distribute this
* document outside HP, IBM, Sun, USL, SCO, or Univel without
* Sun's specific written approval. This document and all copies
* and derivative works thereof must be returned or destroyed at
* Sun's request.
*
* Copyright 1993 Sun Microsystems, Inc. All rights reserved.
*
*/
/*
* libABobj/obj.h - definition of a guide UI object
*
* The AB_OBJ is a structure which is used to represent all UI objects and
* actions. The AB_OBJ structure also defines a tree structure that
* is used to store the objects.
*
* For the routines that take or return scoped names, a scoped name may
* be of the form "name", "module.name", or "module::name", with
* arbitrary white space around the module/object separator (e.g.,
* "module :: name" or "module. name").
*
*/
#ifndef _ABOBJ_OBJ_H_
#define _ABOBJ_OBJ_H_
#include <ab_private/AB.h> /* always the first ab include file */
#include <ab_private/util.h>
#include <ab/util_types.h>
#include <ab_private/istr.h>
#include <ab_private/strlist.h>
#define AB_OBJ_MAX_CHILDREN 2000 /* max children per object */
/*
* Forward-referenced data types.
*/
typedef struct _AB_OBJ ABObjRec;
typedef struct _AB_OBJ *ABObj;
typedef struct _AB_OBJ *ABObjPtr;
typedef union _AB_FUNC_VALUE
{
AB_BUILTIN_ACTION builtin; /* AB_FUNC_BUILTIN */
ISTRING func_name; /* AB_FUNC_USERDEF */
ISTRING code_frag; /* AB_FUNC_CODEFRAG */
} AB_FUNC_VALUE;
typedef union _AB_ARG_VALUE
{
int ival;
ISTRING sval;
float fval;
} AB_ARG_VALUE;
/*
* Store Attachment info for object group
*/
typedef struct _AB_ATTACHMENT
{
AB_ATTACH_TYPE type;
void *value;
int offset;
} AB_ATTACHMENT, ABAttachment, *ABAttachPtr;
typedef struct _AB_ATTACHMENT_LIST
{
AB_ATTACHMENT north;
AB_ATTACHMENT south;
AB_ATTACHMENT east;
AB_ATTACHMENT west;
} AB_ATTACHMENT_LIST, ABAttachmentList, *ABAttachListPtr;
/*
* Simple True/False filter for ABObj
* REMIND: move this to libABobj (these typedefs only)
*/
typedef BOOL ABOBJ_TEST_FUNC(ABObj obj);
typedef ABOBJ_TEST_FUNC *ABObjTestFunc;
/*
* Types for code generator
*/
typedef unsigned int CGenFlags;
struct CGEN_ANY_DATA_REC; /* fwd ref */
typedef struct CGEN_ANY_DATA_REC *CGenAnyData;
/*
* Types for test mode
*/
typedef unsigned int TestModeFlags;
struct TEST_MODE_ANY_DATA_REC; /* fwd ref */
typedef struct TEST_MODE_ANY_DATA_REC *TestModeAnyData;
/*
* for update_clients_with_data methods
*/
typedef int (*UpdateDataFreeFunc)(int update_code, void *update_data);
#define NoFlags 0x0000
#define NoCodeGenFlag 0x0001 /* Obj not for generated code */
#define XmConfiguredFlag 0x0002 /* Obj is configured for Motif */
#define XmCfgForCodeFlag 0x0004 /* Obj args configured for Code-gen */
#define XmCfgForBuildFlag 0x0008 /* Obj args configured for Building */
#define InstantiatedFlag 0x0010 /* Obj is Instantiated */
#define BuildActionsFlag 0x0020 /* Obj has Building actions */
#define MappedFlag 0x0040 /* Obj is mapped to screen */
#define AttrChangedFlag 0x0080 /* Obj Attribute Changed */
#define SaveNeededFlag 0x0100 /* Obj changed; Save needed */
#define BeingDestroyedFlag 0x0200 /* Obj to be destroyed */
#define CreateAttrsFlag 0x0400 /* Obj has create-attributes set */
#define PostCreateAttrsFlag 0x0800 /* Obj has create-attributes set */
#define VisibleFlag 0x1000 /* Obj is visible */
#define IconifiedFlag 0x2000 /* Obj (window) is iconified */
#define DecorChangedFlag 0x4000 /* Obj Win decorations changed */
#define TestModeWinFlag 0x8000 /* Obj Win modified in Test Mode */
/*
* These are drag and drop flags
*/
typedef BYTE ABDndOpFlags;
#define ABDndOpNone ((BYTE)0x00)
#define ABDndOpCopy ((BYTE)0x01)
#define ABDndOpMove ((BYTE)0x02)
#define ABDndOpLink ((BYTE)0x04)
typedef BYTE ABDndTypeFlags;
#define ABDndTypeNone ((BYTE)0x00)
#define ABDndTypeText ((BYTE)0x01)
#define ABDndTypeFilename ((BYTE)0x02)
#define ABDndTypeUserDef ((BYTE)0x04)
#define ABDndTypeAny ((BYTE)0x08)
typedef enum
{
AB_REF_UNDEF = 0,
AB_REF_ATTACH_EAST,
AB_REF_ATTACH_NORTH,
AB_REF_ATTACH_SOUTH,
AB_REF_ATTACH_WEST,
AB_REF_CHILD,
AB_REF_CONNECT_FROM,
AB_REF_CONNECT_TO,
AB_REF_DEFAULT_BUTTON,
AB_REF_PARENT,
AB_REF_ROOT_WINDOW,
AB_REF_SIBLING_PREV,
AB_REF_SIBLING_NEXT,
AB_REF_WIN_PARENT,
AB_REF_REF_TO, /* ref to obj */
AB_OBJ_REF_TYPE_NUM_VALUES /* must be last */
} AB_OBJ_REF_TYPE;
/*************************************************************************
** **
** UI OBJECT DATA TYPE **
** **
**************************************************************************/
/*
* Actions are stored in a linked list under the project node.
* An action defines the destination object and what action to perform
* on that object.
*/
/*
* Extra info for types: AB_TYPE_ACTION
*/
typedef struct _AB_ACTION_INFO
{
ABObj from;
ABObj to;
AB_WHEN when;
BOOL auto_named; /* we generated name */
AB_FUNC_TYPE func_type;
AB_FUNC_VALUE func_value;
ISTRING func_name_suffix;
/* func_name_prefix is from name */
AB_ARG_TYPE arg_type;
AB_ARG_VALUE arg_value;
ISTRING volume_id; /* Access Help Volume */
ISTRING location; /* Access Help Volume */
} AB_ACTION_INFO;
/*
* Extra information for types: AB_TYPE_ACTION_LIST
*/
typedef struct _AB_ACTION_LIST_INFO
{
char place_holder; /* this thing really is empty */
} AB_ACTION_LIST_INFO;
/*
* Extra info for types: AB_BUTTON
*/
typedef struct _AB_BUTTON_INFO
{
AB_BUTTON_TYPE type;
AB_ALIGNMENT label_alignment;
} AB_BUTTON_INFO;
/*
* Extra info for types: AB_LABEL
*/
typedef struct _AB_LABEL_INFO
{
AB_ALIGNMENT label_alignment;
} AB_LABEL_INFO;
/*
* Extra info for types: AB_TYPE_DRAWING_AREA
*/
typedef struct _AB_DRAWING_AREA_INFO
{
int drawarea_width;
int drawarea_height;
AB_SCROLLBAR_POLICY hscrollbar;
AB_SCROLLBAR_POLICY vscrollbar;
int pane_min;
int pane_max;
ISTRING menu_title;
} AB_DRAWING_AREA_INFO;
/*
* Extra info for types: AB_CONTROL_AREA
*/
typedef struct _AB_CONTAINER_INFO
{
AB_CONTAINER_TYPE type;
BOOL has_border;
AB_PACKING packing;
AB_GROUP_TYPE group_type;
AB_ALIGNMENT col_align;
int num_columns;
int hoffset;
AB_ATTACH_TYPE hattach_type;
int hspacing;
AB_COMPASS_POINT ref_point;
AB_ALIGNMENT row_align;
int num_rows;
int voffset;
AB_ATTACH_TYPE vattach_type;
int vspacing;
int pane_min;
int pane_max;
ISTRING menu_title;
} AB_CONTAINER_INFO;
/*
* Extra info for types: AB_TYPE_COMBO_BOX
*/
typedef struct _AB_COMBOBOX_INFO
{
AB_COMPASS_POINT label_position;
} AB_COMBO_BOX_INFO;
/*
* Extra info for types: AB_TYPE_FILE_CHOOSER
*/
typedef struct _AB_FILE_CHOOSER_INFO
{
ABObj win_parent;
ISTRING filter_pattern_ABOBJPRIVDDDD3579039821;
ISTRING ok_label;
BOOL auto_dismiss;
ISTRING directory;
AB_FILE_TYPE_MASK file_type_mask;
} AB_FILE_CHOOSER_INFO;
/*
* Extra info for types: AB_TYPE_MESSAGE
*/
typedef struct _AB_MESSAGE_INFO
{
AB_MESSAGE_TYPE type;
ISTRING msg_string;
ISTRING action1_label;
ISTRING action2_label;
ISTRING action3_label;
unsigned cancel_button : 1; /* bit field */
unsigned help_button : 1; /* bit field */
AB_DEFAULT_BUTTON default_btn;
} AB_MESSAGE_INFO;
/*
* Extra info for types: AB_TYPE_MODULE
*/
typedef struct _AB_MODULE_INFO
{
ISTRING file_ABOBJPRIVDDDD2382601347;
ISTRING stubs_file_ABOBJPRIVDDDD6123725490;
ISTRING ui_file_ABOBJPRIVDDDD8421231863;
StringList obj_names_list;
BOOL write_me;
} AB_MODULE_INFO;
/*
* Extra info for types: AB_TYPE_MENU_ITEM, AB_TYPE_CHOICE_ITEM,
* AB_TYPE_LIST_ITEM, AB_ITEM_FOR_MENUBAR
*/
typedef struct _AB_ITEM_INFO
{
AB_ITEM_TYPE type;
BOOL is_initially_selected;
BOOL is_help_item;
ISTRING accelerator_ABOBJPRIVDDDD0256230318;
ISTRING mnemonic_ABOBJPRIVDDDD0903052253;
AB_LINE_TYPE line_style;
} AB_ITEM_INFO;
/*
* Extra info for types: AB_MENU
*/
typedef struct _AB_MENU_INFO
{
AB_MENU_TYPE type;
BOOL tear_off;
BOOL exclusive;
} AB_MENU_INFO;
typedef struct _AB_SESSION_MGMT_INFO
{
AB_SESSIONING_METHOD sessioning_method;
} AB_SESSION_MGMT_INFO;
typedef struct _AB_TOOLTALK_INFO
{
AB_TOOLTALK_LEVEL level;
} AB_TOOLTALK_INFO;
typedef struct _AB_I18N_INFO
{
BOOL enabled;
} AB_I18N_INFO;
/*
* Extra info for types: AB_TYPE_PROJECT
*/
typedef struct _AB_PROJECT_INFO
{
ISTRING file_ABOBJPRIVDDDD2192049045;
ISTRING stubs_file_ABOBJPRIVDDDD1280681372;
ISTRING vendor;
ISTRING version;
ABObj root_window;
StringList obj_names_list;
void *browsers; /* List of browsers for this project */
AB_SESSION_MGMT_INFO session_mgmt;
AB_TOOLTALK_INFO tooltalk;
AB_I18N_INFO i18n;
AB_ARG_CLASS_FLAGS res_file_arg_classes;
BOOL is_default; /* TRUE if not user-specified */
} AB_PROJECT_INFO;
/*
* Extra info for types: AB_TYPE_CHOICE
*/
typedef struct _AB_CHOICE_INFO
{
AB_CHOICE_TYPE type;
AB_ORIENTATION orientation;
int num_columns;
BOOL selection_required;
int value_x;
int value_y;
AB_COMPASS_POINT label_position;
} AB_CHOICE_INFO;
/*
* Extra info for types: AB_TYPE_SEPARATOR
*/
typedef struct _AB_SEPARATOR_INFO
{
AB_LINE_TYPE line_style;
AB_ORIENTATION orientation;
} AB_SEPARATOR_INFO;
/*
* Extra info for types: AB_TYPE_SPIN_BOX
*/
typedef struct _AB_SPIN_BOX_INFO
{
AB_TEXT_TYPE type;
AB_ARROW_STYLE arrow_style;
int min_value;
int max_value;
int increment;
int decimal_points;
int initial_value;
AB_COMPASS_POINT label_position;
} AB_SPIN_BOX_INFO;
/*
* Extra information for types: AB_SCALE
*/
typedef struct _AB_SCALE_INFO
{
AB_ORIENTATION orientation;
AB_DIRECTION direction;
int min_value;
int max_value;
int increment;
int decimal_points;
int initial_value;
BOOL show_value;
AB_COMPASS_POINT label_position;
} AB_SCALE_INFO;
/*
* Exra info for types: AB_TYPE_LIST
*/
typedef struct _AB_LIST_INFO
{
AB_SELECT_TYPE selection_mode;
BOOL selection_required;
int num_rows;
AB_SCROLLBAR_POLICY hscrollbar;
AB_SCROLLBAR_POLICY vscrollbar;
AB_COMPASS_POINT label_position;
ISTRING menu_title;
} AB_LIST_INFO;
/*
* Extra info for types: AB_TEXT_FIELD, AB_TEXT_PANE
*/
typedef struct _AB_TEXT_INFO
{
AB_TEXT_TYPE type;
int num_rows;
int num_columns;
int textpane_width;
int textpane_height;
int max_length;
ISTRING initial_value_string_ABOBJPRIVDDDD2521740590;
int initial_value_int;
BOOL word_wrap;
BOOL has_border;
AB_COMPASS_POINT label_position;
AB_SCROLLBAR_POLICY hscrollbar;
AB_SCROLLBAR_POLICY vscrollbar;
int pane_min;
int pane_max;
ISTRING menu_title;
} AB_TEXT_INFO;
/*
* Extra info for types: AB_TERM_PANE
*/
typedef struct _AB_TERM_INFO
{
int num_rows;
int num_columns;
AB_SCROLLBAR_POLICY vscrollbar;
ISTRING process_string_ABOBJPRIVDDDD3271493068;
int pane_min;
int pane_max;
ISTRING menu_title;
} AB_TERM_INFO;
/*
* Extra info for types: AB_BASE_WINDOW, AB_POPUP_WINDOW
*/
typedef struct _AB_WINDOW_INFO
{
ABObj win_parent;
ABObj default_act_button;
ABObj help_act_button;
BOOL resizable;
BOOL is_initially_iconic;
ISTRING icon_ABOBJPRIVDDDD3403707469;
ISTRING icon_mask_ABOBJPRIVDDD93883729879;
ISTRING icon_label_ABOBJPRIVDDDD4898216273;
} AB_WINDOW_INFO;
typedef struct _AB_LAYER_INFO
{
int pane_min;
int pane_max;
} AB_LAYER_INFO;
/*
* Extra information for all of the object types.
*/
typedef union _AB_OBJ_EXTRA_INFO
{
AB_ACTION_INFO action;
AB_ACTION_LIST_INFO action_list;
AB_BUTTON_INFO button;
AB_CHOICE_INFO choice;
AB_COMBO_BOX_INFO combo_box; /* combo box */
AB_CONTAINER_INFO container;
AB_DRAWING_AREA_INFO drawing_area;
AB_ITEM_INFO item; /* choice,list,menu item */
AB_LABEL_INFO label;
AB_LIST_INFO list; /* scrolling list info */
AB_MENU_INFO menu; /* menu info */
AB_MODULE_INFO module; /* module node */
AB_PROJECT_INFO project; /* project node (only one!) */
AB_SEPARATOR_INFO separator; /* separator */
AB_SPIN_BOX_INFO spin_box; /* spin box */
AB_SCALE_INFO scale; /* scale/gauge */
AB_TERM_INFO term; /* term pane */
AB_TEXT_INFO text;
AB_WINDOW_INFO window;
AB_FILE_CHOOSER_INFO file_chooser;
AB_MESSAGE_INFO message;
AB_LAYER_INFO layer;
} AB_OBJ_EXTRA_INFO;
/*
* Structure for an AB object containing info about one ui object.
*/
typedef struct _AB_OBJ
{
/*
* Tree structure
*/
ABObj parent;
ABObj next_sibling;
ABObj prev_sibling;
ABObj first_child;
/*
* Info common to all objects
*/
AB_OBJECT_TYPE type;
ISTRING name_ABOBJPRIVDDDD6281986324; /* PRIVATE! */
#ifdef DEBUG
STRING debug_name; /* read-only debugging field */
unsigned long debug_last_verify_time; /* read-only debugging field */
#endif
unsigned int impl_flags_ABOBJPRIVDDDD5707803418; /* PRIVATE! */
unsigned long impl_dnd_flags_ABOBJPRIVDDD7849439167;
ISTRING user_data_ABOBJPRIVDDDD1031984606;
int x;
int y;
int width;
int width_max;
int height;
int height_max;
ISTRING help_volume_ABOBJPRIVDDDD3479759502;
ISTRING help_location_ABOBJPRIVDDDD1652183835;
ISTRING help_text_ABOBJPRIVDDDD3129281507;
ISTRING drag_cursor_ABOBJPRIVDDDD9147148353;
ISTRING drag_cursor_mask_ABOBJPRIVDDDD7624768024;
ISTRING bg_color_ABOBJPRIVDDDD7609528164;
ISTRING fg_color_ABOBJPRIVDDDD6392057630;
ISTRING label_ABOBJPRIVDDDD8127856367;
AB_LABEL_TYPE label_type;
AB_LINE_TYPE border_frame;
ISTRING menu_name_ABOBJPRIVDDDD8412670921;
ABAttachListPtr attachments;
ABObj part_of;
ABObj ref_to; /*this is a reference to another obj*/
/*
* These "fields" exist, only through set/get functions:
*
* height_is_resizable;
* is_defined
* is_read_only
* is_initially_active
* is_initially_iconic
* is_initially_selected
* is_initially_visible
* is_selected;
* was_written
* width_is_resizable
* drag_initially_enabled
* drag_ops
* drag_to_root_allowed
* drag_types
* drop_initially_enabled
* drop_ops
* drop_types
*/
/*
* Front-end-specific data (set to null when created)
*/
unsigned int flags;
void *ui_handle; /*xv_handle, Widget, ... */
ISTRING class_name_ABOBJPRIVDDDD9513018430;
void *ui_args;
/*
* Code-generator specific data
*/
CGenFlags cgen_flags;
CGenAnyData cgen_data;
/*
* Handle to browser related data
*/
void *browser_data;
/*
* Handle to project window related data
*/
void *projwin_data;
/*
* Handle to test mode related data (defined in ab/tmodeP.h)
*/
TestModeFlags test_mode_flags;
TestModeAnyData test_mode_data;
/*
* Type-specific information
*/
AB_OBJ_EXTRA_INFO info;
} AB_OBJ;
/*
* This is necessary because some of the methods to return ABObjList
*/
#include <ab_private/obj_list.h>
/*
* Object methods that deal with lifecycle.
*/
ABObj obj_create(AB_OBJECT_TYPE obj_type, ABObj parent); /*alloc. and init*/
int obj_destroy(ABObj obj); /* deallocate tree */
int obj_construct(ABObj obj,
AB_OBJECT_TYPE type, ABObj parent); /* init to defaults*/
int obj_destruct(ABObj obj); /*release data (strings, etc)*/
int obj_destroy_one(ABObj obj); /* deallocate one obj */
int obj_destroy_if_flagged(ABObj obj); /* check DestroyFlag */
int obj_tree_destroy_flagged(ABObj tree); /* check DestroyFlag */
int obj_init_attachments(ABObj obj); /* alloc & init attachments */
ABObj obj_dup(ABObj); /* returns orphan duplicate */
ABObj obj_tree_dup(ABObj);
int obj_dup_child_trees(ABObj to_root, ABObj from_root);
/*
* Methods dealing with objects that are actually references to other
* objects.
*
* ** Note: these functions allow any parameter to be NULL.
*/
ABObj obj_create_ref(ABObj actual_obj); /*create ref to obj*/
ABObj obj_tree_create_ref(ABObj actual_tree); /* create tree of refs */
int obj_create_ref_subtrees(ABObj to_root, ABObj from_root_actual);
int obj_cvt_to_ref(ABObj, ABObj actual_obj); /*make this obj a ref*/
ABObj obj_get_actual_obj(ABObj); /* could be same obj */
BOOL obj_is_ref(ABObj); /* is it */
/*
* Miscellaneous Object methods
*/
int obj_update_clients(ABObj); /* sends update msg */
int obj_tree_update_clients(ABObj);
int obj_update_clients_with_data(ABObj,
int update_code,
void *update_data,
UpdateDataFreeFunc update_data_free_func);
int obj_tree_update_clients_with_data(ABObj,
int update_code,
void *update_data,
UpdateDataFreeFunc update_data_free_func);
int obj_get_child_num(ABObj); /* what child am I? */
int obj_set_file(ABObj obj, STRING file);
STRING obj_get_file(ABObj obj);
ABObj obj_get_project(ABObj obj);
ABObj obj_get_module(ABObj obj);
ABObj obj_get_window(ABObj obj);
int obj_get_item_num(ABObj); /* which item am I? */
int obj_set_type(ABObj obj, AB_OBJECT_TYPE obj_type);
int obj_set_subtype(ABObj obj, int subtype);
AB_OBJECT_TYPE obj_get_type(ABObj obj);
int obj_get_subtype(ABObj obj);
int obj_set_write_me(ABObj, BOOL write_me);
BOOL obj_get_write_me(ABObj);
int obj_move_children(ABObj to, ABObj from);
int obj_tree_ensure_unique_names_in_modules(ABObj root,
int maxnamelen);
int obj_tree_ensure_unique_names(ABObj root, int maxnamelen);
int obj_ensure_unique_name(ABObj, ABObj root, int maxnamelen);
STRING obj_alloc_unique_name(
ABObj obj,
STRING name,
int maxNameLen
);
ISTRING obj_alloc_unique_name_istr(
ABObj obj,
ISTRING name,
int maxNameLen
);
STRING obj_get_unique_name(
ABObj obj,
STRING name,
int maxnamelen,
STRING nameOutBuf
);
STRING obj_alloc_unique_name_for_child(
ABObj obj,
STRING name,
int maxNameLen
);
ISTRING obj_alloc_unique_name_istr_for_child(
ABObj obj,
ISTRING name,
int maxnamelen
);
STRING obj_get_unique_name_for_child(
ABObj obj,
STRING name,
int maxnamelen,
STRING nameOutBuf
);
int obj_set_name_from_label(ABObj, STRING parent_name);
int obj_set_name_from_parent(ABObj, STRING suffix);
ABObj obj_get_parent_of_type(ABObj, AB_OBJECT_TYPE parent_type);
int obj_get_x(ABObj obj);
int obj_get_y(ABObj obj);
int obj_get_width(ABObj obj);
int obj_get_height(ABObj obj);
int obj_set_label_type(ABObj, AB_LABEL_TYPE label_type);
AB_LABEL_TYPE obj_get_label_type(ABObj obj);
int obj_resize(ABObj, int width, int height);
ABObj obj_get_root(ABObj); /* get composite root */
int obj_move(ABObj, int x, int y);
int obj_set_geometry(ABObj, int x, int y, int width, int height);
int obj_get_size(ABObj, int *ptr_x, int *ptr_y);
int obj_get_position(ABObj, int *ptr_width, int *ptr_height);
int obj_get_geometry(ABObj,
int *ptr_x, int *ptr_y, int *ptr_width, int *ptr_height);
STRING obj_get_safe_name(ABObj, STRING name, int name_size);
ABObj obj_get_menubar_help_item(ABObj menubar);
/*
* "test" queries to see if an operation will be allowed
*
* All returns >=0 if allowed, or a negative error code from util_err.h
*/
int obj_test_resize(ABObj, int width, int height);
int obj_test_move(ABObj, int x, int y);
int obj_test_set_geometry(ABObj,
int x, int y, int width, int height);
int obj_test_reparent(ABObj, ABObj new_parent);
/*
* "Initial" attributes (values when the user's application starts up)
* (note that boolean values don't use obj_get_... - they use obj_is_... )
*/
int obj_set_is_initially_active(ABObj, BOOL isit);
BOOL obj_is_initially_active(ABObj);
int obj_set_is_initially_iconic(ABObj, BOOL isit);
BOOL obj_is_initially_iconic(ABObj);
int obj_set_is_initially_selected(ABObj, BOOL isit);
BOOL obj_is_initially_selected(ABObj obj);
int obj_set_is_initially_visible(ABObj, BOOL isit);
BOOL obj_is_initially_visible(ABObj);
int obj_get_initial_value_int(ABObj obj);
int obj_set_initial_value_int(ABObj obj, int ival);
int obj_set_initial_value_string(ABObj, STRING initial_value);
STRING obj_get_initial_value_string(ABObj);
/*
* UI attributes
*/
int obj_clear_flag(ABObj, unsigned flag);
int obj_comp_set_flag(ABObj, unsigned flag);
int obj_comp_clear_flag(ABObj, unsigned flag);
int obj_set_accelerator(ABObj, STRING accel);
STRING obj_get_accelerator(ABObj);
int obj_set_arg_type(ABObj, AB_ARG_TYPE arg_type);
AB_ARG_TYPE obj_get_arg_type(ABObj);
/* REMIND: removed these methods
int obj_set_arg_value(ABObj, AB_ARG_VALUE arg_value);
AB_ARG_VALUE obj_get_arg_value(ABObj);
*/
int obj_set_arg_float(ABObj, double value);
double obj_get_arg_float(ABObj obj);
int obj_set_arg_int(ABObj, int value);
int obj_get_arg_int(ABObj);
int obj_set_arg_string(ABObj, STRING value);
STRING obj_get_arg_string(ABObj);
int obj_set_bg_color(ABObj, STRING bg_color);
STRING obj_get_bg_color(ABObj);
int obj_set_class_name(ABObj, STRING class_name);
STRING obj_get_class_name(ABObj);
int obj_set_col_align(ABObj, AB_ALIGNMENT col_align);
AB_ALIGNMENT obj_get_col_align(ABObj);
int obj_set_container_type(ABObj, AB_CONTAINER_TYPE type);
AB_CONTAINER_TYPE obj_get_container_type(ABObj);
int obj_set_decimal_points(ABObj, int dec_points);
int obj_get_decimal_points(ABObj);
int obj_set_default_act_button(ABObj, ABObj default_b);
ABObj obj_get_default_act_button(ABObj);
int obj_set_direction(ABObj, AB_DIRECTION dir);
AB_DIRECTION obj_get_direction(ABObj);
int obj_set_drag_cursor(ABObj, STRING filename);
STRING obj_get_drag_cursor_mask(ABObj);
int obj_set_drag_cursor_mask(ABObj, STRING filename);
STRING obj_get_drag_cursor(ABObj);
int obj_set_drag_initially_enabled(ABObj, BOOL enabled);
BOOL obj_get_drag_initially_enabled(ABObj);
int obj_set_drag_ops(ABObj, BYTE ops);
BYTE obj_get_drag_ops(ABObj);
int obj_set_drag_to_root_allowed(ABObj, BOOL allowed);
BOOL obj_get_drag_to_root_allowed(ABObj);
int obj_set_drag_types(ABObj, BYTE ops);
BYTE obj_get_drag_types(ABObj);
int obj_set_drawarea_width(ABObj, int width);
int obj_get_drawarea_width(ABObj);
int obj_set_drawarea_height(ABObj, int height);
int obj_get_drawarea_height(ABObj);
int obj_set_textpane_width(ABObj obj, int width);
int obj_set_textpane_height(ABObj obj, int height);
int obj_set_drop_initially_enabled(ABObj, BOOL enabled);
BOOL obj_get_drop_initially_enabled(ABObj);
int obj_set_drop_on_children_is_allowed(ABObj, BOOL allowed);
BOOL obj_drop_on_children_is_allowed(ABObj);
int obj_set_drop_ops(ABObj, BYTE ops);
BYTE obj_get_drop_ops(ABObj);
int obj_set_drop_types(ABObj, BYTE ops);
BYTE obj_get_drop_types(ABObj);
int obj_set_fg_color(ABObj, STRING fg_color);
STRING obj_get_fg_color(ABObj);
int obj_get_flag(ABObj, unsigned flag);
int obj_set_flag(ABObj, unsigned flag);
int obj_set_func_builtin(ABObj, AB_BUILTIN_ACTION act);
AB_BUILTIN_ACTION obj_get_func_builtin(ABObj);
int obj_set_func_name(ABObj, STRING func_name);
STRING obj_get_func_name(ABObj);
int obj_set_func_code(ABObj, STRING code_frag);
STRING obj_get_func_code(ABObj);
int obj_set_func_name_suffix(ABObj, STRING func_name_suffix);
STRING obj_get_func_name_suffix(ABObj);
int obj_set_func_type(ABObj, AB_FUNC_TYPE func_type);
AB_FUNC_TYPE obj_get_func_type(ABObj);
STRING obj_get_func_help_location(ABObj obj);
int obj_set_func_help_location(ABObj obj, STRING location);
STRING obj_get_func_help_volume(ABObj obj);
int obj_set_func_help_volume(ABObj obj, STRING volume);
int obj_set_has_border(ABObj, BOOL has_border);
BOOL obj_has_border(ABObj);
int obj_set_height_is_resizable(ABObj, BOOL height_is_resizable);
BOOL obj_get_height_is_resizable(ABObj);
int obj_set_help_act_button(ABObj, ABObj default_b);
ABObj obj_get_help_act_button(ABObj);
BOOL obj_has_help_data(ABObj);
int obj_set_help_data(ABObj,
STRING help_volume,
STRING help_location,
STRING help_text);
int obj_set_help_volume(ABObj,
STRING help_volume);
int obj_set_help_location(ABObj,
STRING help_location);
int obj_set_help_text(ABObj,
STRING help_text);
int obj_get_help_data(ABObj,
STRING *help_volume,
STRING *help_location,
STRING *help_text);
STRING obj_get_help_volume(ABObj);
STRING obj_get_help_location(ABObj);
STRING obj_get_help_text(ABObj);
int obj_set_icon(ABObj, STRING icon);
STRING obj_get_icon(ABObj);
int obj_set_icon_label(ABObj, STRING icon_label);
STRING obj_get_icon_label(ABObj);
int obj_set_icon_mask(ABObj, STRING icon_mask);
STRING obj_get_icon_mask(ABObj);
int obj_set_increment(ABObj, int increment);
int obj_get_increment(ABObj);
int obj_set_is_default(ABObj, BOOL is_default);
BOOL obj_is_default(ABObj);
int obj_set_is_defined(ABObj, BOOL is_defined);
BOOL obj_is_defined(ABObj);
int obj_set_is_help_item(ABObj, BOOL is_help_item);
BOOL obj_is_help_item(ABObj);
int obj_select(ABObj); /* == obj_set_is_selected(TRUE); */
int obj_unselect(ABObj); /* == obj_set_is_selected(FALSE); */
int obj_set_is_selected(ABObj, BOOL is_selected);
BOOL obj_is_selected(ABObj);
int obj_set_was_written(ABObj, BOOL was_written);
BOOL obj_was_written(ABObj);
int obj_set_item_type(ABObj, AB_ITEM_TYPE type);
AB_ITEM_TYPE obj_get_item_type(ABObj);
int obj_set_label(ABObj, STRING label);
STRING obj_get_label(ABObj);
int obj_set_label_alignment(ABObj, AB_ALIGNMENT align);
AB_ALIGNMENT obj_get_label_alignment(ABObj);
int obj_set_label_position(ABObj, AB_COMPASS_POINT pos);
AB_COMPASS_POINT
obj_get_label_position(ABObj);
int obj_set_group_type(ABObj, AB_GROUP_TYPE type);
AB_GROUP_TYPE obj_get_group_type(ABObj);
int obj_set_max_value(ABObj, int max_value);
int obj_get_max_value(ABObj);
ABObj obj_get_menu(ABObj);
AB_MENU_TYPE obj_get_menu_type(ABObj);
int obj_set_menu_name(ABObj, STRING menu_name);
STRING obj_get_menu_name(ABObj);
int obj_set_menu_title(ABObj, STRING menu_title);
STRING obj_get_menu_title(ABObj);
int obj_set_min_value(ABObj, int min_value);
int obj_get_min_value(ABObj);
int obj_set_mnemonic(ABObj, STRING mnemonic);
STRING obj_get_mnemonic(ABObj);
int obj_set_name(ABObj, STRING name);
int obj_set_name_istr(ABObj, ISTRING name);
int obj_set_res_file_arg_classes(ABObj, AB_ARG_CLASS_FLAGS);
AB_ARG_CLASS_FLAGS obj_get_res_file_arg_classes(ABObj);
int obj_set_unique_name(ABObj obj, STRING name);
int obj_set_unique_name_istr(ABObj obj, ISTRING name);
STRING obj_get_name(ABObj);
ISTRING obj_get_name_istr(ABObj);
int obj_set_num_columns(ABObj, int num_columns);
int obj_get_num_columns(ABObj);
int obj_set_num_rows(ABObj, int num_rows);
int obj_get_num_rows(ABObj);
int obj_set_orientation(ABObj, AB_ORIENTATION orientation);
AB_ORIENTATION obj_get_orientation(ABObj);
int obj_set_process_string(ABObj obj, STRING proc);
STRING obj_get_process_string(ABObj obj);
int obj_set_selection_mode(ABObj obj, AB_SELECT_TYPE sel);
AB_SELECT_TYPE obj_get_selection_mode(ABObj obj);
int obj_set_selection_required(ABObj, BOOL selection_req);
BOOL obj_get_selection_required(ABObj);
int obj_set_parent(ABObj, ABObj parent);
ABObj obj_get_parent(ABObj);
int obj_set_read_only(ABObj, BOOL read_only);
BOOL obj_get_read_only(ABObj);
int obj_set_resizable(ABObj, BOOL resizable);
BOOL obj_get_resizable(ABObj);
int obj_set_user_data(ABObj, STRING user_data);
STRING obj_get_user_data(ABObj);
int obj_set_value_x(ABObj, int value_x);
int obj_get_value_x(ABObj);
int obj_set_value_y(ABObj, int value_y);
int obj_get_value_y(ABObj);
int obj_set_root_window(ABObj obj, ABObj root_window);
ABObj obj_get_root_window(ABObj obj);
int obj_set_vendor(ABObj obj, STRING vendor);
STRING obj_get_vendor(ABObj obj);
int obj_set_version(ABObj obj, STRING version);
STRING obj_get_version(ABObj obj);
int obj_set_hoffset(ABObj obj, int hoffset);
int obj_get_hoffset(ABObj obj);
int obj_set_voffset(ABObj obj, int voffset);
int obj_get_voffset(ABObj obj);
int obj_set_hspacing(ABObj obj, int hspacing);
int obj_get_hspacing(ABObj obj);
int obj_set_vspacing(ABObj obj, int vspacing);
int obj_get_vspacing(ABObj obj);
int obj_set_hattach_type(ABObj obj, AB_ATTACH_TYPE type);
AB_ATTACH_TYPE obj_get_hattach_type(ABObj obj);
int obj_set_vattach_type(ABObj obj, AB_ATTACH_TYPE type);
AB_ATTACH_TYPE obj_get_vattach_type(ABObj obj);
int obj_set_ref_point(ABObj obj, AB_COMPASS_POINT ref_point);
AB_COMPASS_POINT obj_get_ref_point(ABObj obj);
AB_BUTTON_TYPE obj_get_button_type(ABObj obj);
int obj_set_button_type(ABObj obj, AB_BUTTON_TYPE type);
AB_SCROLLBAR_POLICY obj_get_hscrollbar_policy(ABObj obj);
int obj_set_hscrollbar_policy(ABObj obj, AB_SCROLLBAR_POLICY hscrollbar);
AB_SCROLLBAR_POLICY obj_get_vscrollbar_policy(ABObj obj);
int obj_set_vscrollbar_policy(ABObj obj, AB_SCROLLBAR_POLICY vscrollbar);
int obj_get_max_length(ABObj obj);
int obj_set_max_length(ABObj obj, int max_len);
AB_TEXT_TYPE obj_get_text_type(ABObj obj);
int obj_set_text_type(ABObj obj, AB_TEXT_TYPE type);
AB_PACKING obj_get_packing(ABObj obj);
int obj_set_row_align(ABObj obj, AB_ALIGNMENT row_align);
AB_ALIGNMENT obj_get_row_align(ABObj obj);
AB_CHOICE_TYPE obj_get_choice_type(ABObj obj);
BOOL obj_get_tearoff(ABObj obj);
int obj_set_tearoff(ABObj obj, BOOL tearoff);
BOOL obj_get_exclusive(ABObj obj);
int obj_set_from(ABObj, ABObj from);
ABObj obj_get_from(ABObj);
int obj_set_to(ABObj, ABObj to);
ABObj obj_get_to(ABObj);
int obj_set_when(ABObj, AB_WHEN when);
AB_WHEN obj_get_when(ABObj);
int obj_set_width_is_resizable(ABObj, BOOL width_is_resizable);
BOOL obj_get_width_is_resizable(ABObj);
int obj_set_win_parent(ABObj obj, ABObj wparent);
ABObj obj_get_win_parent(ABObj obj);
BOOL obj_has_hscrollbar(ABObj obj);
BOOL obj_has_vscrollbar(ABObj obj);
BOOL obj_has_scrollbar(ABObj obj);
int obj_set_filter_pattern(ABObj obj, STRING filter_pattern);
STRING obj_get_filter_pattern(ABObj obj);
int obj_set_ok_label(ABObj obj, STRING label);
STRING obj_get_ok_label(ABObj obj);
int obj_set_directory(ABObj obj, STRING dir);
STRING obj_get_directory(ABObj obj);
int obj_set_auto_dismiss(ABObj obj, BOOL dismiss);
BOOL obj_get_auto_dismiss(ABObj obj);
int obj_set_file_type_mask(ABObj obj, AB_FILE_TYPE_MASK ftm);
AB_FILE_TYPE_MASK obj_get_file_type_mask(ABObj obj);
int obj_set_msg_string(ABObj obj, STRING msg);
STRING obj_get_msg_string(ABObj obj);
int obj_set_msg_type(ABObj obj, AB_MESSAGE_TYPE msg_type);
AB_MESSAGE_TYPE obj_get_msg_type(ABObj obj);
int obj_set_action1_label(ABObj obj, STRING label);
STRING obj_get_action1_label(ABObj obj);
int obj_set_action2_label(ABObj obj, STRING label);
STRING obj_get_action2_label(ABObj obj);
int obj_set_action3_label(ABObj obj, STRING label);
STRING obj_get_action3_label(ABObj obj);
int obj_set_sessioning_method(ABObj obj,
AB_SESSIONING_METHOD sessioning_method);
AB_SESSIONING_METHOD obj_get_sessioning_method(ABObj obj);
int obj_set_default_btn(ABObj obj, AB_DEFAULT_BUTTON button);
AB_DEFAULT_BUTTON obj_get_default_btn(ABObj obj);
int obj_set_tooltalk_level(ABObj obj, AB_TOOLTALK_LEVEL level);
AB_TOOLTALK_LEVEL obj_get_tooltalk_level(ABObj obj);
int obj_set_pane_min( ABObj obj, int val);
int obj_get_pane_min( ABObj obj);
int obj_set_pane_max( ABObj obj, int val);
int obj_get_pane_max( ABObj obj);
int obj_set_i18n_enabled(ABObj obj, BOOL i18n_enabled);
BOOL obj_get_i18n_enabled(ABObj obj);
int obj_get_num_win_children( ABObj obj);
BOOL obj_is_defined_module(ABObj obj);
ABAttachment *obj_get_attachment(ABObj obj, AB_COMPASS_POINT dir);
AB_ATTACH_TYPE obj_get_attach_type(ABObj obj, AB_COMPASS_POINT dir);
void *obj_get_attach_value(ABObj obj, AB_COMPASS_POINT dir);
int obj_get_attach_offset(ABObj obj, AB_COMPASS_POINT dir);
int obj_set_attachment(ABObj obj, AB_COMPASS_POINT dir,
AB_ATTACH_TYPE type, void *value, int offset);
int obj_set_attach_type(ABObj obj, AB_COMPASS_POINT dir,
AB_ATTACH_TYPE type);
int obj_set_attach_value(ABObj obj, AB_COMPASS_POINT dir,
void *value);
int obj_set_attach_offset(ABObj obj, AB_COMPASS_POINT dir,
int offset);
int obj_tree_set_flag(ABObj, unsigned flag);
int obj_tree_clear_flag(ABObj, unsigned flag);
int obj_set_word_wrap(ABObj obj, BOOL word_wrap);
BOOL obj_get_word_wrap(ABObj obj);
AB_LINE_TYPE obj_get_line_style(ABObj obj);
int obj_set_line_style(ABObj obj, AB_LINE_TYPE line_style);
AB_ARROW_STYLE obj_get_arrow_style(ABObj obj);
int obj_set_arrow_style(ABObj obj, AB_ARROW_STYLE arrow_style);
int obj_set_show_value( ABObj obj, BOOL val);
BOOL obj_get_show_value( ABObj obj);
int obj_set_show_range_labels( ABObj obj, BOOL val);
BOOL obj_get_show_range_labels( ABObj obj);
int obj_set_show_endboxes( ABObj obj, BOOL val);
BOOL obj_get_show_endboxes( ABObj obj);
BOOL obj_has_action1_button(ABObj obj);
BOOL obj_has_action2_button(ABObj obj);
BOOL obj_has_action3_button(ABObj obj);
BOOL obj_has_cancel_button(ABObj obj);
int obj_set_cancel_button(ABObj obj, BOOL has_button);
BOOL obj_has_help_button(ABObj obj);
int obj_set_help_button(ABObj obj, BOOL has_button);
/*
* Name/object scoping methods (obj_scoped.c)
*
* A scoped name can be <name>, <module>::<name>, or <module>.<name>, with
* spaces allowed around the . or :: .
* The search_first obj is normally a module or a project.
*
* *** SEE COMMENTS IN obj_scoped.c FOR MORE DETAILS! *****
*/
ABObj obj_scoped_find_by_name(ABObj search_first, STRING scoped_name);
/*
* "Isa" relationships (isa.c)
*/
BOOL obj_is_action(ABObj obj);
BOOL obj_is_action_list(ABObj obj);
BOOL obj_is_action_target(ABObj);
BOOL obj_is_base_win(ABObj obj);
BOOL obj_is_button(ABObj obj);
BOOL obj_is_cross_module(ABObj obj);
BOOL obj_is_drawing_area(ABObj obj);
BOOL obj_is_sub(ABObj obj);
BOOL obj_is_root(ABObj obj);
BOOL obj_is_combo_box(ABObj obj);
BOOL obj_is_control(ABObj obj);
BOOL obj_is_control_panel(ABObj obj);
BOOL obj_is_container(ABObj obj);
BOOL obj_is_file_chooser(ABObj obj);
BOOL obj_is_group(ABObj obj);
BOOL obj_is_group_member(ABObj obj);
BOOL obj_is_module(ABObj obj);
BOOL obj_is_intra_module(ABObj obj); /* affects only one module? */
BOOL obj_is_item(ABObj obj);
BOOL obj_is_label(ABObj obj);
BOOL obj_is_layers(ABObj obj);
BOOL obj_is_list(ABObj obj);
BOOL obj_is_menu(ABObj obj);
BOOL obj_is_menubar(ABObj obj);
BOOL obj_is_menu_button(ABObj obj);
BOOL obj_is_menu_ref(ABObj obj);
BOOL obj_is_message(ABObj obj);
BOOL obj_is_numeric_field(ABObj obj);
BOOL obj_is_option_menu(ABObj obj);
BOOL obj_is_pane(ABObj obj);
BOOL obj_is_paned_win(ABObj obj);
BOOL obj_is_popup(ABObj obj);
BOOL obj_is_popup_win(ABObj obj);
BOOL obj_is_project(ABObj);
BOOL obj_is_project_action_target(ABObj);
BOOL obj_is_push_button(ABObj);
BOOL obj_is_choice(ABObj obj);
BOOL obj_is_separator(ABObj obj);
BOOL obj_is_spin_box(ABObj obj);
BOOL obj_is_scale(ABObj obj);
BOOL obj_is_term_pane(ABObj obj);
BOOL obj_is_text(ABObj obj);
BOOL obj_is_text_field(ABObj obj);
BOOL obj_is_text_pane(ABObj obj);
BOOL obj_is_top_level(ABObj obj);
BOOL obj_is_ui(ABObj obj);
BOOL obj_is_salient(ABObj); /* can be manipulated by user */
BOOL obj_is_salient_ui(ABObj); /* salient && ui */
BOOL obj_is_virtual(ABObj obj);
BOOL obj_is_window(ABObj obj);
BOOL obj_is_xmconfiged(ABObj obj);
BOOL obj_is_descendant_of(ABObj obj, ABObj ancestor);
BOOL obj_is_sibling(ABObj obj, ABObj sibling);
/*
* Object tree manipulations
*
* Note: salient objects are those that can be manipulated directly
* by the user (e.g., atomic objects, composite roots)
*/
int obj_ensure_num_children(ABObj obj, int min_children);
int obj_append_child(ABObj obj, ABObj child);
int obj_append_sibling(ABObj obj, ABObj sibling);
int obj_prepend_sibling(ABObj obj, ABObj sibling);
int obj_swap_siblings(ABObj child1, ABObj child2);
ABObj obj_find_action(ABObj root, ABObj action_template);
ABObj obj_find_by_name(ABObj root, STRING name);
ABObj obj_find_by_name_and_type(ABObj root, STRING, AB_OBJECT_TYPE);
ABObj obj_find_by_type(ABObj root, AB_OBJECT_TYPE type);
ABObj obj_find_child_by_label(ABObj, STRING label);
ABObj obj_find_child_by_name(ABObj, STRING child_name);
ABObj obj_find_child_by_type(ABObj, AB_OBJECT_TYPE);
ABObj obj_find_menu_by_name(ABObj root, STRING menu_name);
ABObj obj_find_module_by_name(ABObj root, STRING moduleName);
ABObj obj_scoped_find_or_create_undef(ABObj parent,
STRING scoped_name, AB_OBJECT_TYPE type);
ABObj obj_get_container_child(ABObj);
ABObj obj_get_child(ABObj obj, int which_child);
ABObj obj_get_child_cond(ABObj obj, int which_child,
BOOL (*fn)(ABObj));
ABObj obj_get_item(ABObj obj, int which_item);
int obj_get_num_children(ABObj obj);
int obj_get_num_children_cond(ABObj obj, BOOL (*fn)(ABObj));
int obj_get_num_comp_subobjs(ABObj obj);
int obj_get_num_items(ABObj obj);
int obj_get_num_siblings(ABObj obj);
int obj_get_num_salient_children(ABObj);
int obj_get_num_salient_ui_children(ABObj);
ABObj obj_get_pane_child(ABObj);
ABObj obj_get_salient_child(ABObj, int child_num);
ABObj obj_get_salient_ui_child(ABObj, int child_num);
BOOL obj_has_child(ABObj obj);
BOOL obj_has_menu(ABObj obj);
BOOL obj_has_parent(ABObj obj);
BOOL obj_has_popup_child(ABObj obj);
int obj_insert_child(ABObj obj,
ABObj newchild, int newchildnum);
int obj_prepend_child(ABObj obj);
int obj_unparent(ABObj obj);
int obj_reparent(ABObj obj, ABObj new_parent);
int obj_replace(ABObj obj, ABObj replacement);
int obj_tree_replace(ABObj obj, ABObj replacement);
int obj_unlink(ABObj obj);
ABObjList obj_get_refs_to(ABObj obj);
/*
* General utility functions
*/
AB_OBJECT_TYPE ab_get_proper_subobj_type(AB_OBJECT_TYPE type);
AB_ITEM_TYPE ab_get_proper_item_type(AB_OBJECT_TYPE type);
STRING ab_make_valid_c_ident(STRING name);
BOOL ab_c_ident_is_ok(STRING ident);
BOOL ab_ident_is_ok(STRING ident);
STRING ab_ident_from_file_name(STRING file_name);
STRING ab_ident_from_name_and_label(STRING name, STRING label);
STRING obj_scoped_name_get_module_name(STRING scoped_name);
STRING obj_scoped_name_get_obj_name(STRING scoped_name);
int obj_scoped_name_split( /* _buf params may be NULL */
STRING scoped_name,
STRING module_name_buf,
int module_name_buf_size,
STRING obj_name_buf,
int obj_name_buf_size);
/*
* Actions
*/
int obj_add_action(ABObj obj, ABObj action);
/*
* Debugging functions
*/
int obj_print(ABObj obj);
int obj_print_indented(ABObj obj, int spaces, int verbosity);
int obj_tree_print(ABObj obj);
int obj_verify(ABObj); /* < 0 if corrupted */
int obj_tree_verify(ABObj tree); /* < 0 if corrupted */
/*************************************************************************
**************************************************************************
** **
** Inline definitions **
** **
**************************************************************************
*************************************************************************/
#define obj_is_action(obj) ((obj)->type == AB_TYPE_ACTION)
#define obj_is_action_list(obj) ((obj)->type == AB_TYPE_ACTION_LIST)
#define obj_is_module(obj) ((obj)->type == AB_TYPE_MODULE)
#define obj_is_project(obj) ((obj)->type == AB_TYPE_PROJECT)
#define obj_is_salient_ui(obj) (obj_is_ui(obj) && (obj_is_salient(obj)))
#define obj_is_menu_ref(obj) (obj_is_menu(obj) && (obj_is_ref(obj)))
#define obj_is_choice_item(obj) (obj->type == AB_TYPE_ITEM && \
obj->info.item.type == AB_ITEM_FOR_CHOICE)
#define obj_is_combo_box_item(obj) (obj->type == AB_TYPE_ITEM && \
obj->info.item.type == AB_ITEM_FOR_COMBO_BOX)
#define obj_is_list_item(obj) (obj->type == AB_TYPE_ITEM && \
obj->info.item.type == AB_ITEM_FOR_LIST)
#define obj_is_menu_item(obj) (obj->type == AB_TYPE_ITEM && \
obj->info.item.type == AB_ITEM_FOR_MENU)
#define obj_is_menubar_item(obj) (obj->type == AB_TYPE_ITEM && \
obj->info.item.type == AB_ITEM_FOR_MENUBAR)
#define obj_is_spin_box_item(obj) (obj->type == AB_TYPE_ITEM && \
obj->info.item.type == AB_ITEM_FOR_SPIN_BOX)
/* #define obj_get_label(obj) \
(istr_string((obj)->label_ABOBJPRIVDDDD8127856367)) */
/* #define obj_get_name(obj) \
(istr_string((obj)->name_ABOBJPRIVDDDD6281986324)) */
/* #define obj_get_parent(obj) ((obj)->parent) */
#define obj_set_parent(obj,par) (obj_reparent(obj, par))
#define obj_get_type(obj) ((obj)->type)
#define obj_has_child(obj) (obj_get_num_children(obj) > 0)
#define obj_has_parent(obj) ((obj)->parent != NULL)
#define obj_prepend_child(obj, child) (obj_insert_child(obj, child, 0))
#define obj_get_root(obj) (ABObj)((obj)->part_of == NULL? (obj):(obj)->part_of)
#define obj_select(obj) (obj_set_is_selected(obj, TRUE))
#define obj_unselect(obj) (obj_set_is_selected(obj, FALSE))
/*
* These 4 set macros only set the obj fields, period. If the object is
* already created, then you should use obj_set_geometry().
*/
#define obj_set_x(obj,newx) ((obj)->x=(newx))
#define obj_set_y(obj,newy) ((obj)->y=(newy))
#define obj_set_width(obj,newwidth) ((obj)->width=(newwidth))
#define obj_set_height(obj,newheight) ((obj)->height=(newheight))
#define obj_get_x(obj) ((obj)->x)
#define obj_get_y(obj) ((obj)->y)
#define obj_get_width(obj) ((obj)->width)
#define obj_get_height(obj) ((obj)->height)
#define obj_get_ref_to(obj) ((obj)->ref_to)
#define obj_set_ref_to(obj,ref) ((obj)->ref_to = (ref))
/* #define obj_get_label_type(obj) ((obj)->label_type) */
#define obj_get_width_resizable(obj) ((obj)->width_resizable)
#define obj_get_height_resizable(obj) ((obj)->height_resizable)
#define obj_get_border_frame(obj) ((obj)->border_frame)
#define obj_set_border_frame(obj,b) ((obj)->border_frame=(b))
#define obj_has_border_frame(obj) (obj_get_border_frame((obj)) != AB_LINE_NONE)
#define obj_has_label(obj) (!util_strempty(obj_get_label((obj))))
#define obj_has_scrollbar(obj) \
(obj_has_hscrollbar(obj) || obj_has_vscrollbar(obj))
#define obj_set_flag(obj, f) \
( ((obj)->flags) |= ((unsigned int)(f)))
#define obj_clear_flag(obj, f) \
( ((obj)->flags) &= ~((unsigned int)(f)) )
#define obj_has_flag(obj, f) \
( (((obj)->flags) & ((unsigned int)(f))) != 0 )
/*
* destroy! (these functions set the client pointer to NULL).
* Major problems have occurred because references to old objects
* were kept around, and not set to NULL. So, please don't mess.
*/
int obj_destroy_impl(ABObj *objPtr);
int obj_destroy_one_impl(ABObj *objPtr);
int obj_destroy_if_flagged_impl(ABObj *objPtr);
int obj_tree_destroy_flagged_impl(ABObj *treePtr);
#define obj_destroy(obj) (obj_destroy_impl(&(obj)))
#define obj_destroy_one(obj) (obj_destroy_one_impl(&(obj)))
#define obj_destroy_if_flagged(obj) (obj_destroy_if_flagged_impl(&(obj)))
#define obj_tree_destroy_flagged(tree) (obj_tree_destroy_flagged_impl(&(tree)))
#endif /* _ABOBJ_OBJ_H_ */