Goffice Reference Manual | ||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
Synopsis
#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
);
Properties
"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
Signals
"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
Description
Abstract base class that objects in the graph hierarchy are based on. This class handles manipulation of the object hierarchy, and positioning of objects in the graph.
Every object has a name that is unique in the graph. It can have a parent and a list of children in specific roles (see GogObjectRole). There can generally be several children in each role.
If built with GTK+ support, each object also knows how to populate a widget that allows one to manipulate the attributes of that object. This can be used by GOEditor to present a widget that allows manipulation of the whole graph.
Details
GogObjectClass
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;
GOG_PARAM_FORCE_SAVE
#define GOG_PARAM_FORCE_SAVE (1 << (G_PARAM_USER_SHIFT+1)) /* even if the value == default */
GOG_PARAM_POSITION
#define GOG_PARAM_POSITION (1 << (G_PARAM_USER_SHIFT+2)) /* position parameters */
GogDataDuplicator ()
void (*GogDataDuplicator) (GogDataset const *src
,GogDataset *dst
);
|
|
|
enum GogObjectNamingConv
typedef enum { GOG_OBJECT_NAME_BY_ROLE = 1, GOG_OBJECT_NAME_BY_TYPE = 2, GOG_OBJECT_NAME_MANUALLY = 3 } GogObjectNamingConv;
GogObjectRole
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;
gog_object_dup ()
GogObject * gog_object_dup (GogObject const *src
,GogObject *new_parent
,GogDataDuplicator datadup
);
Create a deep copy of obj
using new_parent
as its parent.
gog_object_get_parent_typed ()
GogObject * gog_object_get_parent_typed (GogObject const *obj
,GType t
);
gog_object_get_graph ()
GogGraph * gog_object_get_graph (GogObject const *obj
);
|
const * GogObject |
Returns : |
the parent graph. |
gog_object_get_name ()
char const * gog_object_get_name (GogObject const *obj
);
No need to free the result
|
a GogObject |
Returns : |
a name. |
gog_object_set_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
gog_object_get_children ()
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.
|
gog_object_get_child_by_role ()
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 : |
NULL and spews an error if there is more than one.
|
gog_object_get_child_by_name ()
GogObject * gog_object_get_child_by_name (GogObject const *obj
,char const *name
);
A convenience routine to find a unique child with role == name
gog_object_get_editor ()
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 |
gog_object_new_view ()
GogView * gog_object_new_view (GogObject const *obj
,GogView *parent
);
Creates a new GogView associated to obj
, and sets its parent to parent
.
gog_object_possible_additions ()
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 |
gog_object_register_roles ()
void gog_object_register_roles (GogObjectClass *klass
,GogObjectRole const *roles
,unsigned int n_roles
);
|
GogObjectClass |
|
GogObjectRole |
|
number of roles |
gog_object_add_by_role ()
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 : |
child or a newly created object with role . Callers do _not_ own
the reference.
|
gog_object_add_by_name ()
GogObject * gog_object_add_by_name (GogObject *parent
,char const *role
,GogObject *child
);
gog_object_can_reorder ()
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
gog_object_reorder ()
GogObject * gog_object_reorder (GogObject const *obj
,gboolean inc
,gboolean goto_max
);
|
GogObject |
Returns : |
the object just before obj in the new ordering.
|
gog_object_get_position_flags ()
GogObjectPosition gog_object_get_position_flags (GogObject const *obj
,GogObjectPosition mask
);
|
GogObject |
|
GogObjectPosition |
Returns : |
obj 's position flags, masked by mask .
|
gog_object_set_position_flags ()
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. |
gog_object_is_default_position_flags ()
gboolean gog_object_is_default_position_flags (GogObject const *obj
,char const *name
);
|
|
|
|
Returns : |
gog_object_get_manual_position ()
void gog_object_get_manual_position (GogObject *obj
,GogViewAllocation *pos
);
FIXME
|
GogObject |
|
GogViewAllocation |
gog_object_set_manual_position ()
void gog_object_set_manual_position (GogObject *obj
,GogViewAllocation const *pos
);
set manual position of given object, in points.
|
GogObject |
|
GogViewAllocation |
gog_object_get_manual_allocation ()
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. |
gog_object_find_role_by_name ()
GogObjectRole const * gog_object_find_role_by_name (GogObject const *obj
,char const *role
);
|
|
|
|
Returns : |
gog_object_emit_changed ()
void gog_object_emit_changed (GogObject *obj
,gboolean size
);
|
|
|
gog_object_clear_parent ()
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.
gog_object_set_parent ()
gboolean gog_object_set_parent (GogObject *child
,GogObject *parent
,GogObjectRole const *role
,unsigned int id
);
Absorbs a ref to child
gog_object_request_editor_update ()
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 |
gog_object_document_changed ()
void gog_object_document_changed (GogObject *obj
,GODoc *doc
);
|
|
|
gog_object_set_invisible ()
void gog_object_set_invisible (GogObject *obj
,gboolean invisible
);
|
GogObject |
enum GogObjectPosition
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;
GOG_POSITION_IS_PADDING()
#define GOG_POSITION_IS_PADDING(pos) (((pos) & GOG_POSITION_PADDING)&&(!((pos) & GOG_POSITION_MANUAL)))
|
GOG_POSITION_IS_SPECIAL()
#define GOG_POSITION_IS_SPECIAL(pos) (((pos) & GOG_POSITION_SPECIAL)&&(!((pos) & GOG_POSITION_MANUAL)))
|
enum GogDimType
typedef enum { GOG_DIM_INVALID = -1, GOG_DIM_LABEL = 0, GOG_DIM_INDEX, GOG_DIM_VALUE, GOG_DIM_MATRIX, GOG_DIM_TYPES } GogDimType;
enum GogMSDimType
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;
Property Details
The "anchor"
property
"anchor" gchar* : Read / Write
Anchor for manual position.
Default value: "top-left"
The "compass"
property
"compass" gchar* : Read / Write
Compass auto position flags.
Default value: "top"
The "id"
property
"id" guint : Read / Write
Object numerical ID.
Allowed values: <= G_MAXLONG
Default value: 0
The "invisible"
property
"invisible" gboolean : Read / Write
Should the object be hidden.
Default value: FALSE
The "is-position-manual"
property
"is-position-manual" gboolean : Read / Write
Is position manual.
Default value: FALSE
The "position"
property
"position" gchar* : Read / Write
Position and size of object, in percentage of parent size.
Default value: "0 0 1 1"
Signal Details
The "changed"
signal
void 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. |
The "child-added"
signal
void 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. |
The "child-name-changed"
signal
void 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. |
The "child-removed"
signal
void 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. |
The "children-reordered"
signal
void user_function (GogObject *gogobject, gpointer user_data) : Run Last
|
the object which received the signal. |
|
user data set when the signal handler was connected. |
The "name-changed"
signal
void user_function (GogObject *gogobject, gpointer user_data) : Run Last
|
the object which received the signal. |
|
user data set when the signal handler was connected. |