diff --git a/anjuta/hedera/src/form.vala b/anjuta/hedera/src/form.vala index f3eccfa..178be8a 100644 --- a/anjuta/hedera/src/form.vala +++ b/anjuta/hedera/src/form.vala @@ -14,8 +14,7 @@ public class Vn.[+FormClassName+] : Vn.Form } - // Main routine of the [+FormClassName+] Form. - public override void open (Gtk.Builder builder) + public override void open () { } diff --git a/anjuta/hedera/src/mod.vala b/anjuta/hedera/src/mod.vala index 1db86d8..ead89c4 100644 --- a/anjuta/hedera/src/mod.vala +++ b/anjuta/hedera/src/mod.vala @@ -14,7 +14,6 @@ public class Vn.[+ClassName+] : Vn.Mod } - // Main routine of the [+ClassName+] Module. public override void activate () { diff --git a/glade/Makefile.am b/glade/Makefile.am index 9a48bd9..df17d6a 100644 --- a/glade/Makefile.am +++ b/glade/Makefile.am @@ -15,7 +15,7 @@ libgladevn_la_LDFLAGS = -avoid-version libgladevn_la_SOURCES = \ glade-vn.h \ glade-vn.c \ - glade-vn-batch.c \ + glade-vn-set.c \ glade-db-model.c \ glade-db-model-editor.h \ glade-db-model-editor.c \ diff --git a/glade/glade-db-model.c b/glade/glade-db-model.c index 95966e7..2a2648c 100644 --- a/glade/glade-db-model.c +++ b/glade/glade-db-model.c @@ -683,6 +683,7 @@ static void glade_list_eprop_create_input (GladeListEProp * obj, GtkWidget * box gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + g_object_set (G_OBJECT (scroll), "height-request", 50, NULL); gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0); obj->view = GTK_TREE_VIEW (gtk_tree_view_new ()); @@ -747,7 +748,7 @@ void glade_db_model_write_widget (GladeWidgetAdaptor * adaptor, glade_property_write (prop, context, node); GWA_GET_CLASS (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node); -//FIXME + prop = glade_widget_get_property (widget, "links"); // Custom tag for the "links" property, e.g.: // @@ -794,7 +795,7 @@ void glade_db_model_write_widget (GladeWidgetAdaptor * adaptor, } prop = glade_widget_get_property (widget, "batch"); -// Custom tag for the "links" property, e.g.: +// Custom tag for the "batch" property, e.g.: // // // diff --git a/glade/glade-eprop-model.c b/glade/glade-eprop-model.c index c2a6126..52bbf05 100644 --- a/glade/glade-eprop-model.c +++ b/glade/glade-eprop-model.c @@ -55,18 +55,18 @@ static void glade_eprop_model_name_changed (GladeProject * project, static GladeWidget * glade_model_create (GladeProperty * prop) { gboolean use = FALSE; - VnBatch * batch; + VnSet * batch; GladeWidget * batch_w; GladeProject * project = glade_widget_get_project (glade_property_get_widget (prop)); const GList * l, * n, * objects = glade_project_get_objects (project); for (n = objects; n; n = n->next) - if (VN_IS_BATCH (n->data)) + if (VN_IS_SET (n->data)) { batch = n->data; use = TRUE; - for (l = vn_batch_get_objects (batch); l; l = l->next) + for (l = vn_set_get_objects (batch); l; l = l->next) if (!DB_IS_MODEL (l->data)) { use = FALSE; @@ -80,7 +80,7 @@ static GladeWidget * glade_model_create (GladeProperty * prop) if (!use) { batch_w = glade_command_create - (glade_widget_adaptor_get_by_type (VN_TYPE_BATCH), NULL, NULL, project); + (glade_widget_adaptor_get_by_type (VN_TYPE_SET), NULL, NULL, project); glade_widget_set_name (batch_w, "models"); } else @@ -92,72 +92,59 @@ static GladeWidget * glade_model_create (GladeProperty * prop) /* * glade_eprop_model_show_dialog: - * @button:(allow-none): a #GtkButton or @NULL - * @object: a #GladeEditorPropery or a #GladeWidget + * @button:(allow-none): a #GtkButton + * @eprop: a #GladeEditorPropery * - * Opens a dialog to edit a #DbModel. - * Can be called by a #GladeEditorProperty or by the "edit" action of a - * #GladeWidgetAdaptor directly (in which case @button is %NULL and @obj is a - * #GladeWidget). + * Opens the dialog to edit the properties of a #DbModel. **/ -static void glade_eprop_model_show_dialog (GtkButton * button, GObject * object) +static void glade_eprop_model_show_dialog (GtkButton * button, GladeEditorProperty * eprop) { gboolean created = FALSE; - GObject * o; GtkWidget * box; GtkDialog * dialog; GladeWidget * widget; GladeWidgetAdaptor * adaptor; GladeEditable * editor; - GladeProperty * p = NULL; - GladeEditorProperty * eprop = NULL; + GladeProperty * p = glade_editor_property_get_property (eprop); + GObject * o = g_value_get_object (glade_property_inline_value (p)); - if (GLADE_IS_EDITOR_PROPERTY (object)) + if (o && DB_IS_MODEL (o)) + widget = glade_widget_get_from_gobject (o); + else { - eprop = GLADE_EDITOR_PROPERTY (object); - p = glade_editor_property_get_property (eprop); - o = g_value_get_object (glade_property_inline_value (p)); + GValue val = G_VALUE_INIT; - if (o && DB_IS_MODEL (o)) - widget = glade_widget_get_from_gobject (o); - else + glade_command_push_group + (_("Create and set a model for a DbModelHolder")); + + widget = glade_model_create (p); + created = TRUE; + g_value_init (&val, DB_TYPE_MODEL); + g_value_set_object (&val, glade_widget_get_object (widget)); + glade_command_set_property_value (p, &val); + g_value_unset (&val); + + glade_command_pop_group (); + + glade_project_selection_set (glade_widget_get_project (widget), + glade_widget_get_object (glade_property_get_widget (p)), + TRUE); + + if (!GLADE_EPROP_MODEL (eprop)->connected) { - GValue val = G_VALUE_INIT; - - glade_command_push_group - (_("Create and set a model for a DbModelHolder")); - - widget = glade_model_create (p); - created = TRUE; - g_value_init (&val, DB_TYPE_MODEL); - g_value_set_object (&val, glade_widget_get_object (widget)); - glade_command_set_property_value (p, &val); - g_value_unset (&val); - - glade_command_pop_group (); - - glade_project_selection_set (glade_widget_get_project (widget), - glade_widget_get_object (glade_property_get_widget (p)), - TRUE); - - if (!GLADE_EPROP_MODEL (eprop)->connected) - { - g_signal_connect (glade_widget_get_project - (glade_property_get_widget (p)), "widget-name-changed", - G_CALLBACK (glade_eprop_model_name_changed), eprop); - GLADE_EPROP_MODEL (eprop)->connected = TRUE; - } + g_signal_connect (glade_widget_get_project + (glade_property_get_widget (p)), "widget-name-changed", + G_CALLBACK (glade_eprop_model_name_changed), eprop); + GLADE_EPROP_MODEL (eprop)->connected = TRUE; } } - else - widget = GLADE_WIDGET (object); adaptor = glade_widget_get_adaptor (widget); editor = glade_widget_adaptor_create_editable (adaptor, GLADE_PAGE_GENERAL); glade_editable_load (editor, widget); dialog = GTK_DIALOG (gtk_dialog_new_with_buttons - (eprop ? _("Model configuration") : _("Model properties configuration") + (_("Model configuration") ,GTK_WINDOW (glade_app_get_window ()) ,GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT ,_("OK"), GTK_RESPONSE_OK @@ -166,11 +153,7 @@ static void glade_eprop_model_show_dialog (GtkButton * button, GObject * object) ,NULL )); gtk_dialog_set_default_response (dialog, GTK_RESPONSE_OK); - gtk_window_set_default_size (GTK_WINDOW (dialog), 400, 300); - - if (!eprop) - gtk_widget_hide (gtk_dialog_get_widget_for_response - (dialog, GTK_RESPONSE_REJECT)); + gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500); box = gtk_alignment_new (0,0,1,1); gtk_alignment_set_padding (GTK_ALIGNMENT (box), 8, 8, 8, 8); @@ -183,23 +166,15 @@ static void glade_eprop_model_show_dialog (GtkButton * button, GObject * object) { case GTK_RESPONSE_OK: { - if (eprop) - { - gtk_entry_set_text (GTK_ENTRY (GLADE_EPROP_MODEL (eprop)->entry), - glade_widget_get_name (widget)); - GLADE_EPROP_MODEL (eprop)->widget = widget; - } - + gtk_entry_set_text (GTK_ENTRY (GLADE_EPROP_MODEL (eprop)->entry), + glade_widget_get_name (widget)); + GLADE_EPROP_MODEL (eprop)->widget = widget; break; } case GTK_RESPONSE_REJECT: { - if (eprop) - { - glade_command_set_property (p, NULL); - GLADE_EPROP_MODEL (eprop)->widget = NULL; - } - + glade_command_set_property (p, NULL); + GLADE_EPROP_MODEL (eprop)->widget = NULL; break; } case GTK_RESPONSE_CANCEL: @@ -209,8 +184,8 @@ static void glade_eprop_model_show_dialog (GtkButton * button, GObject * object) GList * list = g_list_append (NULL, widget); GladeWidget * batch = glade_widget_get_parent (widget); - if (vn_batch_get_length - VN_BATCH (glade_widget_get_object (batch)) == 1) + if (vn_set_get_length + VN_SET (glade_widget_get_object (batch)) == 1) list = g_list_prepend (list, batch); glade_command_delete (list); diff --git a/glade/glade-vn-batch.c b/glade/glade-vn-batch.c index 98d7200..8203e9d 100644 --- a/glade/glade-vn-batch.c +++ b/glade/glade-vn-batch.c @@ -17,36 +17,36 @@ #include "glade-vn.h" -void glade_vn_batch_add_child (GladeWidgetAdaptor * adaptor, - VnBatch * group, GObject * child) +void glade_vn_set_add_child (GladeWidgetAdaptor * adaptor, + VnSet * group, GObject * child) { if (G_IS_OBJECT (child)) - vn_batch_add (group, child); + vn_set_add (group, child); } -void glade_vn_batch_remove_child (GladeWidgetAdaptor * adaptor, - VnBatch * group, GObject * child) +void glade_vn_set_remove_child (GladeWidgetAdaptor * adaptor, + VnSet * group, GObject * child) { if (G_IS_OBJECT (child)) - vn_batch_remove (group, child); + vn_set_remove (group, child); } -void glade_vn_batch_replace_child (GladeWidgetAdaptor * adaptor, +void glade_vn_set_replace_child (GladeWidgetAdaptor * adaptor, GObject * container, GObject * current, GObject * new) { - VnBatch * group = VN_BATCH (container); - glade_vn_batch_remove_child (adaptor, group, current); - glade_vn_batch_add_child (adaptor, group, new); + VnSet * group = VN_SET (container); + glade_vn_set_remove_child (adaptor, group, current); + glade_vn_set_add_child (adaptor, group, new); } -GList * glade_vn_batch_get_children (GladeWidgetAdaptor * adaptor, - VnBatch * group) +GList * glade_vn_set_get_children (GladeWidgetAdaptor * adaptor, + VnSet * group) { - return vn_batch_get_objects_list (group); + return vn_set_get_objects_list (group); } -gboolean glade_vn_batch_add_verify (GladeWidgetAdaptor * adaptor, - VnBatch * container, GObject * child, gboolean user_feedback) +gboolean glade_vn_set_add_verify (GladeWidgetAdaptor * adaptor, + VnSet * container, GObject * child, gboolean user_feedback) { if (G_IS_OBJECT (child)) return TRUE; diff --git a/glade/glade-vn-set.c b/glade/glade-vn-set.c new file mode 100644 index 0000000..8203e9d --- /dev/null +++ b/glade/glade-vn-set.c @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2013 - Juan Ferrer Toribio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "glade-vn.h" + +void glade_vn_set_add_child (GladeWidgetAdaptor * adaptor, + VnSet * group, GObject * child) +{ + if (G_IS_OBJECT (child)) + vn_set_add (group, child); +} + +void glade_vn_set_remove_child (GladeWidgetAdaptor * adaptor, + VnSet * group, GObject * child) +{ + if (G_IS_OBJECT (child)) + vn_set_remove (group, child); +} + +void glade_vn_set_replace_child (GladeWidgetAdaptor * adaptor, + GObject * container, GObject * current, GObject * new) +{ + VnSet * group = VN_SET (container); + glade_vn_set_remove_child (adaptor, group, current); + glade_vn_set_add_child (adaptor, group, new); +} + +GList * glade_vn_set_get_children (GladeWidgetAdaptor * adaptor, + VnSet * group) +{ + return vn_set_get_objects_list (group); +} + +gboolean glade_vn_set_add_verify (GladeWidgetAdaptor * adaptor, + VnSet * container, GObject * child, gboolean user_feedback) +{ + if (G_IS_OBJECT (child)) + return TRUE; + + if (user_feedback) + { + GladeWidgetAdaptor * object_adaptor = + glade_widget_adaptor_get_by_type (G_TYPE_OBJECT); + + glade_util_ui_message (glade_app_get_window () + ,GLADE_UI_INFO + ,NULL + ,"Only objects of type %s can be added to objects of type %s." + ,glade_widget_adaptor_get_name (object_adaptor) + ,glade_widget_adaptor_get_name (adaptor) + ); + } + + return FALSE; +} diff --git a/glade/vn.xml b/glade/vn.xml index 338a9c6..74d333f 100644 --- a/glade/vn.xml +++ b/glade/vn.xml @@ -193,12 +193,12 @@ - - glade_vn_batch_add_child - glade_vn_batch_remove_child - glade_vn_batch_replace_child - glade_vn_batch_get_children - glade_vn_batch_add_verify + + glade_vn_set_add_child + glade_vn_set_remove_child + glade_vn_set_replace_child + glade_vn_set_get_children + glade_vn_set_add_verify @@ -221,7 +221,7 @@ - + diff --git a/vn/Makefile.am b/vn/Makefile.am index b854054..ad61648 100644 --- a/vn/Makefile.am +++ b/vn/Makefile.am @@ -16,6 +16,7 @@ vn_include_HEADERS = \ vn-grid-model.h \ vn-grid.h \ vn-handler.h \ + vn-set.h \ vn-batch.h \ field/field.h \ column/column.h @@ -42,7 +43,7 @@ libvn_files = \ vn-grid-model.c \ vn-grid.c \ vn-handler.c \ - vn-batch.c + vn-set.c glade_files = \ $(top_srcdir)/vn/glade/vn-iterator.h \ $(top_srcdir)/vn/glade/vn-iterator.c \ diff --git a/vn/vn-batch.c b/vn/glade/vn-batch.c similarity index 100% rename from vn/vn-batch.c rename to vn/glade/vn-batch.c diff --git a/vn/vn-batch.h b/vn/glade/vn-batch.h similarity index 100% rename from vn/vn-batch.h rename to vn/glade/vn-batch.h diff --git a/vn/vn-form.c b/vn/vn-form.c index 4808173..ef4d042 100644 --- a/vn/vn-form.c +++ b/vn/vn-form.c @@ -16,7 +16,7 @@ */ #include "vn-form.h" -#include "vn-batch.h" +#include "vn-set.h" G_DEFINE_ABSTRACT_TYPE (VnForm, vn_form, GTK_TYPE_ALIGNMENT); @@ -43,15 +43,15 @@ void vn_form_open (VnForm * obj) if (gtk_builder_add_from_file (obj->builder, file, &err)) { const GList * m; - VnBatch * models = VN_BATCH (gtk_builder_get_object (obj->builder, "models")); + VnSet * models = VN_SET (gtk_builder_get_object (obj->builder, "models")); if (models) - for (m = vn_batch_get_objects (models); m; m = m->next) + for (m = vn_set_get_objects (models); m; m = m->next) db_model_set_conn (m->data, obj->conn); gtk_builder_connect_signals (obj->builder, obj); - VN_FORM_GET_CLASS (obj)->open (obj, obj->builder, NULL); + VN_FORM_GET_CLASS (obj)->open (obj); gtk_container_add (GTK_CONTAINER (obj), vn_form_get (obj, "main")); gtk_widget_show_all (GTK_WIDGET (obj)); diff --git a/vn/vn-form.h b/vn/vn-form.h index ff9b2ae..a5c43f4 100644 --- a/vn/vn-form.h +++ b/vn/vn-form.h @@ -32,8 +32,8 @@ typedef struct _VnFormClass VnFormClass; typedef GType (* VnFormGetTypeFunc) (); typedef void (* VnFormOpenFunc) (VnForm * obj, GtkBuilder * builder, gpointer user_data); -/*typedef void (* VnFormActivateFunc) (VnForm * obj); -typedef void (* VnFormDeactivateFunc) (VnForm * obj);*/ +typedef void (* VnFormActivateFunc) (VnForm * obj); +typedef void (* VnFormDeactivateFunc) (VnForm * obj); struct _VnForm { @@ -57,10 +57,10 @@ struct _VnFormClass { GtkAlignmentClass parent; /*< public >*/ - void (* open) (VnForm * obj, GtkBuilder * builder, gpointer user_data); + void (* open) (VnForm * obj); const GActionEntry * (* get_actions) (VnForm * obj, gint * size); -/* void (* activate) (VnForm * obj); - void (* deactivate) (VnForm * obj);*/ + void (* activate) (VnForm * obj); + void (* deactivate) (VnForm * obj); }; GType vn_form_get_type (); diff --git a/vn/vn-set.c b/vn/vn-set.c new file mode 100644 index 0000000..5cbba4a --- /dev/null +++ b/vn/vn-set.c @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2012 - Juan Ferrer Toribio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "vn-set.h" + +/** + * SECTION: vn-set + * @Short_description: a group of objects + * @Title: VnSet + * + * A group of GObjects. + */ + +static void vn_set_buildable_interface_init (GtkBuildableIface * iface); + +G_DEFINE_TYPE_WITH_CODE (VnSet, vn_set, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + vn_set_buildable_interface_init) +); + +//+++++++++++++++++++++++++++++++++++++++++++++++++++ Methods + +/** + * vn_set_add: + * @obj: a #VnSet + * @child: a #GObject + * + * Adds a child identified whith @id to the group. + **/ +void vn_set_add (VnSet * obj, GObject * child) +{ + g_return_if_fail (VN_IS_SET (obj)); + g_return_if_fail (G_IS_OBJECT (child)); + + obj->objects = g_list_prepend (obj->objects, child); + obj->count++; +} + +/** + * vn_set_remove: + * @obj: a #VnSet + * @child: a #GObject contained by @obj + * + * Removes a child from the group. + **/ +void vn_set_remove (VnSet * obj, GObject * child) +{ + g_return_if_fail (VN_IS_SET (obj)); + + obj->objects = g_list_remove (obj->objects, child); + obj->count--; +} + +/** + * vn_set_get_objects_list: + * @obj: a #VnSet + * + * Returns all the #GObjects in @obj, copying the list. This method is + * mainly for internal use, use vn_set_get_objects() instead if you don't need + * to do further use of the list of objects. + * + * Return value: (transfer container) (element-type GObject): a #GList with all + * the objects, that must be freed with #g_list_free + **/ +GList * vn_set_get_objects_list (VnSet * obj) +{ + g_return_val_if_fail (VN_IS_SET (obj), NULL); + + return g_list_copy (obj->objects); +} + +/** + * vn_set_get_objects: + * @obj: a #VnSet + * + * Returns all the #GObjects in @obj. + * + * Return value: (transfer none) (element-type GObject): a #GList with all + * the objects, that must not be freed + **/ +const GList * vn_set_get_objects (VnSet * obj) +{ + g_return_val_if_fail (VN_IS_SET (obj), NULL); + + return obj->objects; +} + +/** + * vn_set_get_length: + * @obj: a #VnSet + * + * Returns the number of childs currently contained in @obj. + * + * Return value: the number of childs + **/ +guint vn_set_get_length (VnSet * obj) +{ + g_return_val_if_fail (VN_IS_SET (obj), 0); + + return obj->count; +} + +static void vn_set_buildable_add_child (GtkBuildable * obj, + GtkBuilder * builder, GObject * child, const gchar * type) +{ + vn_set_add (VN_SET (obj), child); +} + +//+++++++++++++++++++++++++++++++++++++++++++++++++++ Class + +static void vn_set_init (VnSet * obj) +{ + obj->objects = NULL; + obj->count = 0; +} + +static void vn_set_finalize (VnSet * obj) +{ + GObjectClass * parent = g_type_class_peek_parent (VN_SET_GET_CLASS (obj)); + + g_list_free (obj->objects); + + parent->finalize (G_OBJECT (obj)); +} + +static void vn_set_class_init (VnSetClass * klass) +{ + GObjectClass * k = G_OBJECT_CLASS (klass); + k->finalize = (GObjectFinalizeFunc) vn_set_finalize; +} + +static void vn_set_buildable_interface_init (GtkBuildableIface * iface) +{ + iface->add_child = vn_set_buildable_add_child; +} diff --git a/vn/vn-set.h b/vn/vn-set.h new file mode 100644 index 0000000..45c0101 --- /dev/null +++ b/vn/vn-set.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2012 - Juan Ferrer Toribio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef VN_SET_H +#define VN_SET_H + +#include +#include + +#define VN_TYPE_SET (vn_set_get_type ()) +#define VN_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj, VN_TYPE_SET, VnSet)) +#define VN_IS_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, VN_TYPE_SET)) +#define VN_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (klass, VN_TYPE_SET, VnSetClass)) +#define VN_IS_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE (klass, VN_TYPE_SET)) +#define VN_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS (obj, VN_TYPE_SET, VnSetClass)) + +typedef struct _VnSet VnSet; +typedef struct _VnSetClass VnSetClass; + +/** + * VnSet: + * @objects: (element-type GObject): + **/ +struct _VnSet +{ + GObject parent; + GList * objects; + guint count; +}; + +struct _VnSetClass +{ + GObjectClass parent; +}; + +GType vn_set_get_type (); + +void vn_set_add (VnSet * obj + ,GObject * child); +void vn_set_remove (VnSet * obj + ,GObject * child); +const GList * vn_set_get_objects (VnSet * obj); +GList * vn_set_get_objects_list (VnSet * obj); +guint vn_set_get_length (VnSet * obj); + +#endif \ No newline at end of file diff --git a/vn/vn.h b/vn/vn.h index 8e1c125..2d9a0b9 100644 --- a/vn/vn.h +++ b/vn/vn.h @@ -27,7 +27,7 @@ #include "vn-gui.h" #include "vn-mod.h" #include "vn-form.h" -#include "vn-batch.h" +#include "vn-set.h" #include "vn-field.h" #include "vn-column.h" #include "field/field.h"