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