|  |  |  | Goffice Reference Manual |  | 
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Properties | Signals | ||||
#include <goffice/graph/gog-object.h>
                    GogObject;
                    GogObjectClass;
#define             GOG_PARAM_FORCE_SAVE
#define             GOG_PARAM_POSITION
void                (*GogDataDuplicator)                (GogDataset const *src,
                                                         GogDataset *dst);
enum                GogObjectNamingConv;
                    GogObjectRole;
GogObject *         gog_object_dup                      (GogObject const *src,
                                                         GogObject *new_parent,
                                                         GogDataDuplicator datadup);
GogObject *         gog_object_get_parent               (GogObject const *obj);
GogObject *         gog_object_get_parent_typed         (GogObject const *obj,
                                                         GType t);
GogGraph *          gog_object_get_graph                (GogObject const *obj);
GogTheme *          gog_object_get_theme                (GogObject const *obj);
unsigned            gog_object_get_id                   (GogObject const *obj);
char const  *       gog_object_get_name                 (GogObject const *obj);
void                gog_object_set_name                 (GogObject *obj,
                                                         char *name,
                                                         GError **err);
GSList *            gog_object_get_children             (GogObject const *obj,
                                                         GogObjectRole const *filter);
GogObject *         gog_object_get_child_by_role        (GogObject const *obj,
                                                         GogObjectRole const *role);
GogObject *         gog_object_get_child_by_name        (GogObject const *obj,
                                                         char const *name);
gpointer            gog_object_get_editor               (GogObject *obj,
                                                         GogDataAllocator *dalloc,
                                                         GOCmdContext *cc);
GogView *           gog_object_new_view                 (GogObject const *obj,
                                                         GogView *parent);
gboolean            gog_object_is_deletable             (GogObject const *obj);
GSList *            gog_object_possible_additions       (GogObject const *parent);
void                gog_object_register_roles           (GogObjectClass *klass,
                                                         GogObjectRole const *roles,
                                                         unsigned int n_roles);
GogObject *         gog_object_add_by_role              (GogObject *parent,
                                                         GogObjectRole const *role,
                                                         GogObject *child);
GogObject *         gog_object_add_by_name              (GogObject *parent,
                                                         char const *role,
                                                         GogObject *child);
void                gog_object_can_reorder              (GogObject const *obj,
                                                         gboolean *inc_ok,
                                                         gboolean *dec_ok);
GogObject *         gog_object_reorder                  (GogObject const *obj,
                                                         gboolean inc,
                                                         gboolean goto_max);
GogObjectPosition   gog_object_get_position_flags       (GogObject const *obj,
                                                         GogObjectPosition mask);
gboolean            gog_object_set_position_flags       (GogObject *obj,
                                                         GogObjectPosition flags,
                                                         GogObjectPosition mask);
gboolean            gog_object_is_default_position_flags
                                                        (GogObject const *obj,
                                                         char const *name);
void                gog_object_get_manual_position      (GogObject *obj,
                                                         GogViewAllocation *pos);
void                gog_object_set_manual_position      (GogObject *obj,
                                                         GogViewAllocation const *pos);
GogViewAllocation   gog_object_get_manual_allocation    (GogObject *gobj,
                                                         GogViewAllocation const *parent_allocation,
                                                         GogViewRequisition const *requisition);
GogObjectRole const * gog_object_find_role_by_name      (GogObject const *obj,
                                                         char const *role);
void                gog_object_update                   (GogObject *obj);
gboolean            gog_object_request_update           (GogObject *obj);
void                gog_object_emit_changed             (GogObject *obj,
                                                         gboolean size);
gboolean            gog_object_clear_parent             (GogObject *obj);
gboolean            gog_object_set_parent               (GogObject *child,
                                                         GogObject *parent,
                                                         GogObjectRole const *role,
                                                         unsigned int id);
void                gog_object_request_editor_update    (GogObject *obj);
void                gog_object_document_changed         (GogObject *obj,
                                                         GODoc *doc);
#define             gog_object_is_visible               (obj)
void                gog_object_set_invisible            (GogObject *obj,
                                                         gboolean invisible);
enum                GogObjectPosition;
#define             GOG_POSITION_IS_PADDING             (pos)
#define             GOG_POSITION_IS_SPECIAL             (pos)
enum                GogDataType;
enum                GogDimType;
enum                GogMSDimType;
void                (*GogEnumFunc)                      (unsigned  i,
                                                         gpointer style,
                                                         char const *name,
                                                         gpointer data);
"alignment" gchar* : Read / Write "anchor" gchar* : Read / Write "compass" gchar* : Read / Write "id" guint : Read / Write "invisible" gboolean : Read / Write "is-position-manual" gboolean : Read / Write "position" gchar* : Read / Write
"changed" : Run Last "child-added" : Run Last "child-name-changed" : Run Last "child-removed" : Run Last "children-reordered" : Run Last "name-changed" : Run Last "update-editor" : Run Last
typedef struct {
	GObjectClass	base;
	GHashTable *roles;
	GType	    view_type;
	/* using some Private/Public statements to make gtk-doc happy since it does not like the ":1"*/
	/* Virtuals */
	void	     (*update)		(GogObject *obj);
	void	     (*parent_changed)	(GogObject *obj, gboolean was_set);
	char const  *(*type_name)	(GogObject const *obj);
	void	     (*populate_editor)	(GogObject *obj,
					 GOEditor *editor,
					 GogDataAllocator *dalloc,
					 GOCmdContext *cc);
	void	     (*document_changed)(GogObject *obj, GODoc *doc);
	/* signals */
	void (*changed)		(GogObject *obj, gboolean size);
	void (*name_changed)	(GogObject *obj);
	void (*possible_additions_changed) (GogObject const *obj);
	void (*child_added)	   (GogObject *parent, GogObject *child);
	void (*child_removed)	   (GogObject *parent, GogObject *child);
	void (*child_name_changed) (GogObject const *obj, GogObject const *child);
	void (*children_reordered) (GogObject *obj);
	void (*update_editor)	   (GogObject *obj);
} GogObjectClass;
#define GOG_PARAM_FORCE_SAVE (1 << (G_PARAM_USER_SHIFT+1)) /* even if the value == default */
#define GOG_PARAM_POSITION (1 << (G_PARAM_USER_SHIFT+2)) /* position parameters */
void (*GogDataDuplicator) (GogDataset const *src, GogDataset *dst);
| 
 | |
| 
 | 
typedef enum {
	GOG_OBJECT_NAME_BY_ROLE	 = 1,
	GOG_OBJECT_NAME_BY_TYPE  = 2,
	GOG_OBJECT_NAME_MANUALLY = 3
} GogObjectNamingConv;
typedef struct {
	char const *id;	/* for persistence */
	char const *is_a_typename;
	unsigned    priority;
	guint32		  	allowable_positions;
	GogObjectPosition 	default_position;
	GogObjectNamingConv	naming_conv;
	gboolean   (*can_add)	  (GogObject const *parent);
	gboolean   (*can_remove)  (GogObject const *child);
	GogObject *(*allocate)    (GogObject *parent);
	void	   (*post_add)    (GogObject *parent, GogObject *child);
	void       (*pre_remove)  (GogObject *parent, GogObject *child);
	void       (*post_remove) (GogObject *parent, GogObject *child);
	union { /* allow people to tack some useful tidbits on the end */
		int		i;
		gpointer	p;
	} user;
} GogObjectRole;
GogObject * gog_object_dup (GogObject const *src, GogObject *new_parent, GogDataDuplicator datadup);
Create a deep copy of obj using new_parent as its parent.
GogObject * gog_object_get_parent (GogObject const *obj);
| 
 | a GogObject | 
| Returns : | obj's parent, potentiallyNULLif it has not been added to a
	heirarchy yet.  does not change ref-count in any way. | 
GogObject * gog_object_get_parent_typed (GogObject const *obj, GType t);
GogGraph * gog_object_get_graph (GogObject const *obj);
| 
 | const * GogObject | 
| Returns : | the parent graph. | 
char const * gog_object_get_name (GogObject const *obj);
No need to free the result
| 
 | a GogObject | 
| Returns : | a name. | 
void gog_object_set_name (GogObject *obj, char *name, GError **err);
Assign the new name and signals that it has changed.
NOTE : it _absorbs_ name rather than copying it, and generates a new name
if name == NULL
GSList * gog_object_get_children (GogObject const *obj, GogObjectRole const *filter);
| 
 | a GogObject | 
| 
 | an optional GogObjectRole to use as a filter | 
| Returns : | A list of obj's Children.  Caller must free the list, but not the
		children. | 
GogObject * gog_object_get_child_by_role (GogObject const *obj, GogObjectRole const *role);
A convenience routine to find a unique child with role.
| 
 | a GogObject | 
| 
 | a GogObjectRole to use as a filter | 
| Returns : | NULLand spews an error if there is more than one. | 
GogObject * gog_object_get_child_by_name (GogObject const *obj, char const *name);
A convenience routine to find a unique child with role == name
| 
 | a GogObject | 
| 
 | a char to use as a role name filter | 
| Returns : | NULLand spews an error if there is more than one. | 
gpointer gog_object_get_editor (GogObject *obj, GogDataAllocator *dalloc, GOCmdContext *cc);
Builds an object property editor, by calling GogObject::populate_editor virtual functions.
| 
 | a GogObject | 
| 
 | a GogDataAllocator | 
| 
 | a GOCmdContext | 
| Returns : | a GtkNotebook widget | 
GogView * gog_object_new_view (GogObject const *obj, GogView *parent);
Creates a new GogView associated to obj, and sets its parent to parent.
gboolean gog_object_is_deletable (GogObject const *obj);
| 
 | a GogObject | 
| Returns : | TRUEifobjcan be deleted. | 
GSList * gog_object_possible_additions (GogObject const *parent);
| 
 | a GogObject | 
| Returns : | a list of GogObjectRoles that could be added. The resulting list needs to be freed | 
void gog_object_register_roles (GogObjectClass *klass, GogObjectRole const *roles, unsigned int n_roles);
| 
 | GogObjectClass | 
| 
 | GogObjectRole | 
| 
 | number of roles | 
GogObject * gog_object_add_by_role (GogObject *parent, GogObjectRole const *role, GogObject *child);
Absorb a ref to child if it is non-NULL.
| 
 | GogObject | 
| 
 | GogObjectRole | 
| 
 | GogObject | 
| Returns : | childor a newly created object withrole.  Callers do _not_ own
	the reference. | 
GogObject * gog_object_add_by_name (GogObject *parent, char const *role, GogObject *child);
void gog_object_can_reorder (GogObject const *obj, gboolean *inc_ok, gboolean *dec_ok);
If obj can move forward or backward in its parents child list
| 
 | GogObject | 
| 
 | optionally NULLpointer for result. | 
| 
 | optionally NULLpointer for result. | 
GogObject * gog_object_reorder (GogObject const *obj, gboolean inc, gboolean goto_max);
| 
 | GogObject | 
| 
 | |
| 
 | |
| Returns : | the object just before objin the new ordering. | 
GogObjectPosition gog_object_get_position_flags (GogObject const *obj, GogObjectPosition mask);
| 
 | GogObject | 
| 
 | GogObjectPosition | 
| Returns : | obj's position flags, masked bymask. | 
gboolean gog_object_set_position_flags (GogObject *obj, GogObjectPosition flags, GogObjectPosition mask);
Attempts to set the position flags of obj to flags.
| 
 | GogObject | 
| 
 | GogObjectPosition | 
| 
 | GogObjectPosition | 
| Returns : | TRUE the new flags are permitted. | 
gboolean gog_object_is_default_position_flags (GogObject const *obj, char const *name);
| 
 | |
| 
 | |
| Returns : | 
void gog_object_get_manual_position (GogObject *obj, GogViewAllocation *pos);
FIXME
| 
 | GogObject | 
| 
 | GogViewAllocation | 
void gog_object_set_manual_position (GogObject *obj, GogViewAllocation const *pos);
set manual position of given object, in points.
| 
 | GogObject | 
| 
 | GogViewAllocation | 
GogViewAllocation gog_object_get_manual_allocation (GogObject *gobj, GogViewAllocation const *parent_allocation, GogViewRequisition const *requisition);
| 
 | GogObject | 
| 
 | GogViewAllocation | 
| 
 | GogViewRequisition | 
| Returns : | manual allocation of a GogObject given its parent allocation and its size request. | 
GogObjectRole const * gog_object_find_role_by_name (GogObject const *obj, char const *role);
| 
 | |
| 
 | |
| Returns : | 
void gog_object_emit_changed (GogObject *obj, gboolean size);
| 
 | |
| 
 | 
gboolean gog_object_clear_parent (GogObject *obj);
Does _not_ unref the child, which in effect adds a ref by freeing up the ref previously associated with the parent.
| 
 | GogObject | 
| Returns : | TRUEon success. | 
gboolean gog_object_set_parent (GogObject *child, GogObject *parent, GogObjectRole const *role, unsigned int id);
Absorbs a ref to child
void gog_object_request_editor_update (GogObject *obj);
Emits a update-editor signal. This signal should be used by object editors in order to refresh their states.
| 
 | GogObject | 
void gog_object_document_changed (GogObject *obj, GODoc *doc);
| 
 | |
| 
 | 
void gog_object_set_invisible (GogObject *obj, gboolean invisible);
| 
 | GogObject | 
| 
 | 
typedef enum {
	GOG_POSITION_AUTO	= 0,
	GOG_POSITION_N		= 1 << 0,	/* can be used with E or W */
	GOG_POSITION_S		= 1 << 1,	/* can be used with E or W */
	GOG_POSITION_E		= 1 << 2,
	GOG_POSITION_W		= 1 << 3,
	GOG_POSITION_COMPASS	= 0x0f,
	/* modifiers for compass */
	GOG_POSITION_ALIGN_FILL	  = 0 << 4,
	GOG_POSITION_ALIGN_START  = 1 << 4,
	GOG_POSITION_ALIGN_END	  = 2 << 4,
	GOG_POSITION_ALIGN_CENTER = 3 << 4,
	GOG_POSITION_ALIGNMENT	  = 0x30,
	GOG_POSITION_SPECIAL	= 1 << 6,
	GOG_POSITION_MANUAL	  = 1 << 7,
	GOG_POSITION_MANUAL_X_ABS = 1 << 8, /* abs vs relative pos */
	GOG_POSITION_MANUAL_Y_ABS = 1 << 9,
	GOG_POSITION_MANUAL_X_END = 1 << 10, /* pos relative to start or end */
	GOG_POSITION_MANUAL_Y_END = 1 << 11,
	/* modifiers for manual */
	GOG_POSITION_ANCHOR_NW       = 0 << 12,
	GOG_POSITION_ANCHOR_N	     = 1 << 12,
	GOG_POSITION_ANCHOR_NE	     = 2 << 12,
	GOG_POSITION_ANCHOR_E        = 3 << 12,
	GOG_POSITION_ANCHOR_SE       = 4 << 12,
	GOG_POSITION_ANCHOR_S        = 5 << 12,
	GOG_POSITION_ANCHOR_SW       = 6 << 12,
	GOG_POSITION_ANCHOR_W        = 7 << 12,
	GOG_POSITION_ANCHOR_CENTER   = 8 << 12,
	GOG_POSITION_ANCHOR          = 0xf000,
	GOG_POSITION_ANY_MANUAL      = 0xff80,
	GOG_POSITION_PADDING	     = 1 << 16
} GogObjectPosition;
#define GOG_POSITION_IS_PADDING(pos) (((pos) & GOG_POSITION_PADDING)&&(!((pos) & GOG_POSITION_MANUAL)))
| 
 | 
#define GOG_POSITION_IS_SPECIAL(pos) (((pos) & GOG_POSITION_SPECIAL)&&(!((pos) & GOG_POSITION_MANUAL)))
| 
 | 
typedef enum {
	GOG_DIM_INVALID = -1,
	GOG_DIM_LABEL = 0,
	GOG_DIM_INDEX,
	GOG_DIM_VALUE,
	GOG_DIM_MATRIX,
	GOG_DIM_TYPES
} GogDimType;
typedef enum {
	GOG_MS_DIM_LABELS	= 0,
	GOG_MS_DIM_VALUES	= 1,
	GOG_MS_DIM_CATEGORIES	= 2,
	GOG_MS_DIM_BUBBLES	= 3, /* undocumented */
	GOG_MS_DIM_TYPES,
	GOG_MS_DIM_ERR_plus1,	/* we made it up */
	GOG_MS_DIM_ERR_minus1,	/* we made it up */
	GOG_MS_DIM_ERR_plus2,	/* we made it up */
	GOG_MS_DIM_ERR_minus2,	/* we made it up */
	GOG_MS_DIM_START,	/* we made it up for dropbars*/
	GOG_MS_DIM_END,	/* we made it up for dropbars */
	GOG_MS_DIM_LOW,	/* we made it up for hi-lo*/
	GOG_MS_DIM_HIGH,	/* we made it up for hi-lo */
	GOG_MS_DIM_EXTRA1,	/* we made it up for other uses */
	GOG_MS_DIM_EXTRA2	/* we made it up for other uses */
} GogMSDimType;
"anchor" property"anchor" gchar* : Read / Write
Anchor for manual position.
Default value: "top-left"
"compass" property"compass" gchar* : Read / Write
Compass auto position flags.
Default value: "top"
"id" property"id" guint : Read / Write
Object numerical ID.
Allowed values: <= G_MAXINT
Default value: 0
"invisible" property"invisible" gboolean : Read / Write
Should the object be hidden.
Default value: FALSE
"is-position-manual" property"is-position-manual" gboolean : Read / Write
Is position manual.
Default value: FALSE
"position" property"position" gchar* : Read / Write
Position and size of object, in percentage of parent size.
Default value: "0 0 1 1"
"changed" signalvoid user_function (GogObject *gogobject, gboolean arg1, gpointer user_data) : Run Last
| 
 | the object which received the signal. | 
| 
 | |
| 
 | user data set when the signal handler was connected. | 
"child-added" signalvoid user_function (GogObject *object, GObject *child, gpointer user_data) : Run Last
The ::child-added signal is emitted AFTER the child has been added and AFTER the parent-changed signal has been called for it.
| 
 | the object on which the signal is emitted | 
| 
 | The new GogObject whose parent is object | 
| 
 | user data set when the signal handler was connected. | 
"child-name-changed" signalvoid user_function (GogObject *gogobject, GObject *arg1, gpointer user_data) : Run Last
| 
 | the object which received the signal. | 
| 
 | |
| 
 | user data set when the signal handler was connected. | 
"child-removed" signalvoid user_function (GogObject *object, GObject *child, gpointer user_data) : Run Last
The ::child-removed signal is emitted BEFORE the child has been added and BEFORE the parent-changed signal has been called for it.
| 
 | the object on which the signal is emitted | 
| 
 | The new GogObject whose parent is object | 
| 
 | user data set when the signal handler was connected. | 
"children-reordered" signalvoid user_function (GogObject *gogobject, gpointer user_data) : Run Last
| 
 | the object which received the signal. | 
| 
 | user data set when the signal handler was connected. | 
"name-changed" signalvoid user_function (GogObject *gogobject, gpointer user_data) : Run Last
| 
 | the object which received the signal. | 
| 
 | user data set when the signal handler was connected. |