| Top |
| void | changed | Run Last |
| void | child-added | Run Last |
| void | child-name-changed | Run Last |
| void | child-removed | Run Last |
| void | children-reordered | Run Last |
| void | name-changed | Run Last |
| void | update-editor | Run Last |
| GogObject | |
| GogObjectClass | |
| #define | GOG_PARAM_FORCE_SAVE |
| #define | GOG_PARAM_POSITION |
| enum | GogObjectNamingConv |
| GogObjectRole | |
| enum | GogObjectPosition |
| enum | GogDataType |
| enum | GogDimType |
| enum | GogMSDimType |
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.
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);
obj
's parent, potentially NULL if 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);
obj
's parent of type type
, potentially NULL if it has not been
added to a hierarchy yet or none of the parents are of type type
.
char const *
gog_object_get_name (GogObject const *obj);
No need to free the result
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);
GogObject * gog_object_get_child_by_role (GogObject const *obj,GogObjectRole const *role);
A convenience routine to find a unique child with role
.
GogObject * gog_object_get_child_by_name (GogObject const *obj,char const *name);
A convenience routine to find a unique child with role == name
gpointer gog_object_get_editor (GogObject *obj,GogDataAllocator *dalloc,GOCmdContext *cc);
Builds an object property editor, by calling GogObject::populate_editor virtual functions.
GogView * gog_object_new_view (GogObject const *obj,GogView *parent);
Creates a new GogView associated to obj
, and sets its parent to 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);
Absorb a ref to child
if it is non-NULL.
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 * 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);
Attempts to set the position flags of obj
to flags
.
gboolean gog_object_is_default_position_flags (GogObject const *obj,char const *name);
void gog_object_get_manual_position (GogObject *obj,GogViewAllocation *pos);
FIXME
void gog_object_set_manual_position (GogObject *obj,GogViewAllocation const *pos);
set manual position of given object, in points.
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);
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.
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.
#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 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 */
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;
“alignment” property“alignment” gchar *
Alignment flag.
Flags: Read / Write
Default value: "fill"
“anchor” property“anchor” gchar *
Anchor for manual position.
Flags: Read / Write
Default value: "top-left"
“compass” property“compass” gchar *
Compass auto position flags.
Flags: Read / Write
Default value: "top"
“id” property“id” guint
Object numerical ID.
Flags: Read / Write
Allowed values: <= G_MAXINT
Default value: 0
“invisible” property“invisible” gboolean
Should the object be hidden.
Flags: Read / Write
Default value: FALSE
“is-position-manual” property“is-position-manual” gboolean
Is position manual.
Flags: Read / Write
Default value: FALSE
“position” property“position” gchar *
Position and size of object, in percentage of parent size.
Flags: Read / Write
Default value: "0 0 1 1"
“changed” signalvoid user_function (GogObject *gogobject, gboolean arg1, gpointer user_data)
gogobject |
the object which received the signal. |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“child-added” signalvoid user_function (GogObject *object, GObject *child, gpointer user_data)
The ::child-added signal is emitted AFTER the child has been added and AFTER the parent-changed signal has been called for it.
object |
the object on which the signal is emitted |
|
child |
The new GogObject whose parent is |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“child-name-changed” signalvoid user_function (GogObject *gogobject, GObject *arg1, gpointer user_data)
gogobject |
the object which received the signal. |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“child-removed” signalvoid user_function (GogObject *object, GObject *child, gpointer user_data)
The ::child-removed signal is emitted BEFORE the child has been added and BEFORE the parent-changed signal has been called for it.
object |
the object on which the signal is emitted |
|
child |
The new GogObject whose parent is |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“children-reordered” signalvoid user_function (GogObject *gogobject, gpointer user_data)
gogobject |
the object which received the signal. |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“name-changed” signalvoid user_function (GogObject *gogobject, gpointer user_data)
gogobject |
the object which received the signal. |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last