On Thu, 2006-03-16 at 02:13 -0500, Tristan Van Berkom wrote:
> Well I didnt get to look at your patch (actually I lost the link from
> irc :-o )
>
> but I managed to fix the dialog load/save bug along with the
> get_children/get_all_children
> madness... try it out ;-)
Great!!!
PD: this is the changelog for catalog_init_function.patch
2006-03-16 Juan Pablo Ugarte <[EMAIL PROTECTED]>
* src/glade-catalog.c: Added GladeCatalogInitFunc so you could define a
function
to be executed before instantiating any catalog's object.
* src/glade-project-view.c: glade_project_view_populate_model now shows
toplevels
in the right order.
* src/glade-property.c: fixed a bug in glade_property_write_impl which
prevented
properties with an empty string as value being saved.
* src/glade-utils.[c/h]: new function glade_util_load_library() moved
from
glade_widget_class_load_library()
* src/glade-widget-class.c: glade_widget_class_load_library() replaced
with
glade_util_load_library()
* src/glade.h: added tag GLADE_TAG_INIT_FUNCTION.
Index: src/glade-editor-property.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-editor-property.c,v
retrieving revision 1.20
diff -u -p -r1.20 glade-editor-property.c
--- src/glade-editor-property.c 16 Mar 2006 06:59:01 -0000 1.20
+++ src/glade-editor-property.c 16 Mar 2006 20:51:17 -0000
@@ -2322,6 +2322,162 @@ glade_eprop_objects_create_input (GladeE
/*******************************************************************************
+ GladeEditorPropertyAdjustmentClass
+ *******************************************************************************/
+typedef struct {
+ GladeEditorProperty parent_instance;
+
+ GtkWidget *value, *lower, *upper, *step_increment, *page_increment, *page_size;
+} GladeEPropAdjustment;
+
+GLADE_MAKE_EPROP (GladeEPropAdjustment, glade_eprop_adjustment)
+#define GLADE_TYPE_EPROP_ADJUSTMENT (glade_eprop_adjustment_get_type())
+#define GLADE_EPROP_ADJUSTMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_EPROP_ADJUSTMENT, GladeEPropAdjustment))
+#define GLADE_EPROP_ADJUSTMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_EPROP_ADJUSTMENT, GladeEPropAdjustmentClass))
+#define GLADE_IS_EPROP_ADJUSTMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_EPROP_ADJUSTMENT))
+#define GLADE_IS_EPROP_ADJUSTMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_EPROP_ADJUSTMENT))
+#define GLADE_EPROP_ADJUSTMENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GLADE_EPROP_ADJUSTMENT, GladeEPropAdjustmentClass))
+
+static void
+glade_eprop_adjustment_finalize (GObject *object)
+{
+ /* Chain up */
+ G_OBJECT_CLASS (editor_property_class)->finalize (object);
+}
+
+static void
+glade_eprop_adjustment_load (GladeEditorProperty *eprop, GladeProperty *property)
+{
+ GladeEPropAdjustment *eprop_adj = GLADE_EPROP_ADJUSTMENT (eprop);
+ GObject *object;
+ GtkAdjustment *adj;
+
+ /* Chain up first */
+ editor_property_class->load (eprop, property);
+
+ if (property == NULL) return;
+ printf ("glade_eprop_adjustment_load\n");
+ object = g_value_get_object (property->value);
+ if (object)
+ {
+ adj = GTK_ADJUSTMENT (object);
+ }
+ else
+ {/*
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->value), 0);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->lower), 0);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->upper), 0);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->step_increment), 0);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->page_increment), 0);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->page_size), 0);
+ */
+ return;
+ }
+ printf ("\t %lf %lf %lf %lf %lf %lf\n", adj->value, adj->lower, adj->upper, adj->step_increment, adj->page_increment, adj->page_size);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->value), adj->value);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->lower), adj->lower);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->upper), adj->upper);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->step_increment), adj->step_increment);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->page_increment), adj->page_increment);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->page_size), adj->page_size);
+}
+
+static void
+glade_eprop_adjustment_property_changed_common (GladeEditorProperty *eprop,
+ GtkAdjustment *adj)
+{
+ GValue value = {0, };
+ GtkObject *new_adj;
+
+ new_adj = gtk_adjustment_new (adj->value,
+ adj->lower,
+ adj->upper,
+ adj->step_increment,
+ adj->page_increment,
+ adj->page_size);
+
+ g_value_init (&value, GTK_TYPE_ADJUSTMENT);
+
+ g_value_set_object (&value, G_OBJECT (new_adj));
+ printf ("glade_eprop_adjustment_property_changed_common\n");
+ printf ("\t %lf %lf %lf %lf %lf %lf\n", adj->value, adj->lower, adj->upper, adj->step_increment, adj->page_increment, adj->page_size);
+ glade_editor_property_commit (eprop, &value);
+
+ g_value_unset (&value);
+}
+
+#define GLADE_EPROP_ADJUSTMENT_DEFINE_VALUE_CHANGED_FUNC(p) \
+static void \
+glade_eprop_adjustment_ ## p ## _changed (GtkSpinButton *spinbutton, \
+ GladeEditorProperty *eprop) \
+{ \
+ GObject *object; \
+ GtkAdjustment *adj; \
+ \
+ object = g_value_get_object (eprop->property->value); \
+ if (object == NULL) return; \
+ adj = GTK_ADJUSTMENT (object); \
+ printf ("glade_eprop_adjustment_" #p "_changed %lf %lf\n", adj->p, gtk_spin_button_get_value (spinbutton)); \
+ if (adj->p == gtk_spin_button_get_value (spinbutton)) return; \
+ adj->p = gtk_spin_button_get_value (spinbutton); \
+ glade_eprop_adjustment_property_changed_common (eprop, adj); \
+}
+
+GLADE_EPROP_ADJUSTMENT_DEFINE_VALUE_CHANGED_FUNC (value)
+GLADE_EPROP_ADJUSTMENT_DEFINE_VALUE_CHANGED_FUNC (lower)
+GLADE_EPROP_ADJUSTMENT_DEFINE_VALUE_CHANGED_FUNC (upper)
+GLADE_EPROP_ADJUSTMENT_DEFINE_VALUE_CHANGED_FUNC (step_increment)
+GLADE_EPROP_ADJUSTMENT_DEFINE_VALUE_CHANGED_FUNC (page_increment)
+GLADE_EPROP_ADJUSTMENT_DEFINE_VALUE_CHANGED_FUNC (page_size)
+
+#define GLADE_EPROP_ADJUSTMENT_CONNECT(object, prop) \
+g_signal_connect (object, "value_changed", \
+G_CALLBACK (glade_eprop_adjustment_ ## prop ## _changed), eprop);
+
+static GtkWidget *
+glade_eprop_adjustment_create_input (GladeEditorProperty *eprop)
+{
+ GladeEPropAdjustment *eprop_adj = GLADE_EPROP_ADJUSTMENT (eprop);
+ GtkWidget *vbox;
+
+ vbox = gtk_vbox_new (FALSE, 0);
+
+ eprop_adj->value = gtk_spin_button_new_with_range (0, G_MAXDOUBLE, 1);
+ gtk_spin_button_set_digits (GTK_SPIN_BUTTON (eprop_adj->value), 2);
+ GLADE_EPROP_ADJUSTMENT_CONNECT (eprop_adj->value, value);
+
+ eprop_adj->lower = gtk_spin_button_new_with_range (0, G_MAXDOUBLE, 1);
+ gtk_spin_button_set_digits (GTK_SPIN_BUTTON (eprop_adj->lower), 2);
+ GLADE_EPROP_ADJUSTMENT_CONNECT (eprop_adj->lower, lower);
+
+ eprop_adj->upper = gtk_spin_button_new_with_range (0, G_MAXDOUBLE, 1);
+ gtk_spin_button_set_digits (GTK_SPIN_BUTTON (eprop_adj->upper), 2);
+ GLADE_EPROP_ADJUSTMENT_CONNECT (eprop_adj->upper, upper);
+
+ eprop_adj->step_increment = gtk_spin_button_new_with_range (0, G_MAXDOUBLE, 1);
+ gtk_spin_button_set_digits (GTK_SPIN_BUTTON (eprop_adj->step_increment), 2);
+ GLADE_EPROP_ADJUSTMENT_CONNECT (eprop_adj->step_increment, step_increment);
+
+ eprop_adj->page_increment = gtk_spin_button_new_with_range (0, G_MAXDOUBLE, 1);
+ gtk_spin_button_set_digits (GTK_SPIN_BUTTON (eprop_adj->page_increment), 2);
+ GLADE_EPROP_ADJUSTMENT_CONNECT (eprop_adj->page_increment, page_increment);
+
+ eprop_adj->page_size = gtk_spin_button_new_with_range (0, G_MAXDOUBLE, 1);
+ gtk_spin_button_set_digits (GTK_SPIN_BUTTON (eprop_adj->page_size), 2);
+ GLADE_EPROP_ADJUSTMENT_CONNECT (eprop_adj->page_size, page_size);
+
+ gtk_box_pack_start (GTK_BOX (vbox), eprop_adj->value, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), eprop_adj->lower, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), eprop_adj->upper, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), eprop_adj->step_increment, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), eprop_adj->page_increment, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), eprop_adj->page_size, FALSE, FALSE, 0);
+
+ return vbox;
+}
+
+
+/*******************************************************************************
Misc static stuff
*******************************************************************************/
static GType
@@ -2360,7 +2516,10 @@ glade_editor_property_type (GParamSpec *
{
if (pspec->value_type == GDK_TYPE_PIXBUF)
type = GLADE_TYPE_EPROP_RESOURCE;
- else
+ else
+ if (pspec->value_type == GTK_TYPE_ADJUSTMENT)
+ type = GLADE_TYPE_EPROP_ADJUSTMENT;
+ else
type = GLADE_TYPE_EPROP_OBJECT;
}
else if (GLADE_IS_PARAM_SPEC_OBJECTS(pspec))
Index: src/glade-gtk.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-gtk.c,v
retrieving revision 1.106
diff -u -p -r1.106 glade-gtk.c
--- src/glade-gtk.c 16 Mar 2006 06:59:01 -0000 1.106
+++ src/glade-gtk.c 16 Mar 2006 20:51:23 -0000
@@ -154,59 +154,20 @@ glade_gtk_progress_bar_set_format (GObje
gtk_progress_set_format_string (GTK_PROGRESS (bar), format);
}
-void GLADEGTK_API
-glade_gtk_spin_button_set_max (GObject *object, GValue *value)
-{
- GtkAdjustment *adjustment;
-
- adjustment = GTK_ADJUSTMENT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (object)));
-
- adjustment->upper = g_value_get_float (value);
- gtk_adjustment_changed (adjustment);
-}
+/* GtkSpinButton */
void GLADEGTK_API
-glade_gtk_spin_button_set_min (GObject *object, GValue *value)
+glade_gtk_spin_button_set_adjustment (GObject *object, GValue *value)
{
- GtkAdjustment *adjustment;
-
- adjustment = GTK_ADJUSTMENT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (object)));
-
- adjustment->lower = g_value_get_float (value);
- gtk_adjustment_changed (adjustment);
-}
-
-void GLADEGTK_API
-glade_gtk_spin_button_set_step_increment (GObject *object, GValue *value)
-{
- GtkAdjustment *adjustment;
-
- adjustment = GTK_ADJUSTMENT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (object)));
-
- adjustment->step_increment = g_value_get_float (value);
- gtk_adjustment_changed (adjustment);
-}
-
-void GLADEGTK_API
-glade_gtk_spin_button_set_page_increment (GObject *object, GValue *value)
-{
- GtkAdjustment *adjustment;
-
- adjustment = GTK_ADJUSTMENT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (object)));
-
- adjustment->page_increment = g_value_get_float (value);
- gtk_adjustment_changed (adjustment);
-}
-
-void GLADEGTK_API
-glade_gtk_spin_button_set_page_size (GObject *object, GValue *value)
-{
- GtkAdjustment *adjustment;
-
- adjustment = GTK_ADJUSTMENT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (object)));
-
- adjustment->page_size = g_value_get_float (value);
- gtk_adjustment_changed (adjustment);
+ GObject *adjustment;
+
+ g_return_if_fail (GTK_IS_SPIN_BUTTON (object));
+
+ adjustment = g_value_get_object (value);
+
+ if (adjustment)
+ gtk_spin_button_set_adjustment (GTK_SPIN_BUTTON (object),
+ GTK_ADJUSTMENT (adjustment));
}
/* GtkBox */
Index: src/glade-property-class.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-property-class.c,v
retrieving revision 1.94
diff -u -p -r1.94 glade-property-class.c
--- src/glade-property-class.c 14 Mar 2006 14:58:30 -0000 1.94
+++ src/glade-property-class.c 16 Mar 2006 20:51:27 -0000
@@ -287,6 +287,15 @@ glade_property_class_make_string_from_ob
if ((filename = g_object_get_data (object, "GladeFileName")) != NULL)
string = g_path_get_basename (filename);
}
+ else if (property_class->pspec->value_type == GTK_TYPE_ADJUSTMENT)
+ {
+ GtkAdjustment *adj = GTK_ADJUSTMENT (object);
+ string = g_strdup_printf ("%lf %lf %lf %lf %lf %lf",
+ adj->value, adj->lower, adj->upper,
+ adj->step_increment,
+ adj->page_increment,
+ adj->page_size);
+ }
else if ((gwidget = glade_widget_get_from_gobject (object)) != NULL)
string = g_strdup (gwidget->name);
else
@@ -538,34 +547,40 @@ glade_property_class_make_object_from_st
GObject *object = NULL;
gchar *fullpath;
+ if (string == NULL) return NULL;
+
if (property_class->pspec->value_type == GDK_TYPE_PIXBUF && project)
{
GdkPixbuf *pixbuf;
- if (string)
- {
- fullpath = glade_project_resource_fullpath (project, string);
+ fullpath = glade_project_resource_fullpath (project, string);
- if ((pixbuf = gdk_pixbuf_new_from_file
- (fullpath, NULL)) != NULL)
- {
- g_object_set_data_full (G_OBJECT(pixbuf),
- "GladeFileName",
- g_strdup (string),
- g_free);
+ if ((pixbuf = gdk_pixbuf_new_from_file (fullpath, NULL)) != NULL)
+ {
+ g_object_set_data_full (G_OBJECT(pixbuf),
+ "GladeFileName",
+ g_strdup (string),
+ g_free);
- object = G_OBJECT(pixbuf);
- }
- g_free (fullpath);
+ object = G_OBJECT(pixbuf);
}
+ g_free (fullpath);
+ }
+ if (property_class->pspec->value_type == GTK_TYPE_ADJUSTMENT)
+ {
+ gdouble value, lower, upper, step_increment, page_increment, page_size;
+
+ sscanf (string, "%lf %lf %lf %lf %lf %lf", &value, &lower, &upper, &step_increment, &page_increment, &page_size);
+ object = G_OBJECT (gtk_adjustment_new (value, lower, upper, step_increment, page_increment, page_size));
}
else
{
GladeWidget *gwidget;
- if (string && (gwidget = glade_project_get_widget_by_name
+ if ((gwidget = glade_project_get_widget_by_name
(project, string)) != NULL)
object = gwidget->object;
}
+
return object;
}
@@ -925,7 +940,8 @@ glade_property_class_is_object (GladePro
{
g_return_val_if_fail (GLADE_IS_PROPERTY_CLASS (class), FALSE);
return (G_IS_PARAM_SPEC_OBJECT(class->pspec) &&
- class->pspec->value_type != GDK_TYPE_PIXBUF);
+ class->pspec->value_type != GDK_TYPE_PIXBUF &&
+ class->pspec->value_type != GTK_TYPE_ADJUSTMENT);
}
@@ -1078,9 +1094,9 @@ glade_property_class_make_adjustment (Gl
} else if (G_IS_PARAM_SPEC_DOUBLE(property_class->pspec))
{
float_range = TRUE;
- min = (gdouble)((GParamSpecFloat *) property_class->pspec)->minimum;
- max = (gdouble)((GParamSpecFloat *) property_class->pspec)->maximum;
- def = (gdouble)((GParamSpecFloat *) property_class->pspec)->default_value;
+ min = (gdouble)((GParamSpecDouble *) property_class->pspec)->minimum;
+ max = (gdouble)((GParamSpecDouble *) property_class->pspec)->maximum;
+ def = (gdouble)((GParamSpecDouble *) property_class->pspec)->default_value;
} else
{
g_critical ("Can't make adjustment for pspec type %s",
Index: widgets/gtk+.xml.in
===================================================================
RCS file: /cvs/gnome/glade3/widgets/gtk+.xml.in,v
retrieving revision 1.35
diff -u -p -r1.35 gtk+.xml.in
--- widgets/gtk+.xml.in 16 Mar 2006 06:59:02 -0000 1.35
+++ widgets/gtk+.xml.in 16 Mar 2006 20:51:29 -0000
@@ -432,6 +432,12 @@
<glade-widget-class name="GtkSpinButton" generic-name="spinbutton" _title="Spin Button">
<properties>
+ <property id="text" disabled="True"/>
+ <property id="value" disabled="True"/>
+ <property id="can-focus" default="True"/>
+ <property id="adjustment" _name="Value" default="0 0 100 1 10 10">
+ <set-function>glade_gtk_spin_button_set_adjustment</set-function>
+ </property>
<property id="update-policy">
<displayable-values>
<value id="GTK_UPDATE_ALWAYS" _name="Always"/>
@@ -853,6 +859,8 @@
<glade-widget-class name="GtkViewport" generic-name="viewport" _title="Viewport">
<properties>
+ <property id="hadjustment" disabled="True"/>
+ <property id="vadjustment" disabled="True"/>
<property id="shadow-type">
<displayable-values>
<value id="GTK_SHADOW_NONE" _name="None"/>
@@ -867,6 +875,8 @@
<glade-widget-class name="GtkScrolledWindow" generic-name="scrolledwindow" _title="Scrolled Window">
<properties>
+ <property id="hadjustment" disabled="True"/>
+ <property id="vadjustment" disabled="True"/>
<property id="shadow-type">
<displayable-values>
<value id="GTK_SHADOW_NONE" _name="None"/>
Index: src/glade-catalog.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-catalog.c,v
retrieving revision 1.29
diff -u -p -r1.29 glade-catalog.c
--- src/glade-catalog.c 24 Jan 2006 05:37:29 -0000 1.29
+++ src/glade-catalog.c 16 Mar 2006 20:46:46 -0000
@@ -37,6 +37,7 @@
#include "glade-catalog.h"
#include "glade-widget-class.h"
+typedef void (*GladeCatalogInitFunc) (void);
struct _GladeCatalog
{
@@ -57,6 +58,11 @@ struct _GladeCatalog
GladeXmlContext *context;/* Xml context is stored after open
* before classes are loaded */
+
+ GModule *module;
+
+ gchar *init_function_name;/* Catalog's init function name */
+ GladeCatalogInitFunc init_function;
};
struct _GladeWidgetGroup
@@ -80,6 +86,20 @@ void widget_group_free
*/
static GList *loaded_catalogs = NULL;
+static gboolean
+catalog_get_function (GladeCatalog *catalog,
+ const gchar *symbol_name,
+ gpointer *symbol_ptr)
+{
+ if (catalog->module == NULL)
+ catalog->module = glade_util_load_library (catalog->library);
+
+ if (catalog->module)
+ return g_module_symbol (catalog->module, symbol_name, symbol_ptr);
+
+ return FALSE;
+}
+
static GladeCatalog *
catalog_open (const gchar *filename)
{
@@ -88,7 +108,7 @@ catalog_open (const gchar *filename)
GladeXmlDoc *doc;
GladeXmlNode *root;
- g_debug ("Loading catalog: %s\n", filename);
+ g_debug ("Opening catalog: %s\n", filename);
/* get the context & root node of the catalog file */
context = glade_xml_context_new_from_path (filename,
@@ -130,7 +150,13 @@ catalog_open (const gchar *filename)
glade_xml_get_property_string (root, GLADE_TAG_DEPENDS);
catalog->domain =
glade_xml_get_property_string (root, GLADE_TAG_DOMAIN);
-
+ catalog->init_function_name =
+ glade_xml_get_value_string (root, GLADE_TAG_INIT_FUNCTION);
+
+ if (catalog->init_function_name)
+ catalog_get_function (catalog, catalog->init_function_name,
+ (gpointer) &catalog->init_function);
+
g_debug ("Successfully parsed catalog: %s\n", catalog->name);
return catalog;
@@ -146,6 +172,15 @@ catalog_load (GladeCatalog *catalog)
g_return_if_fail (catalog->context != NULL);
+ g_debug ("Loading catalog: %s\n", catalog->name);
+
+ if (catalog->init_function)
+ {
+ g_debug ("Executing catalog's init function. (%s)\n",
+ catalog->init_function_name);
+ catalog->init_function ();
+ }
+
doc = glade_xml_context_get_doc (catalog->context);
root = glade_xml_doc_get_root (doc);
node = glade_xml_node_get_children (root);
@@ -171,7 +206,7 @@ catalog_load (GladeCatalog *catalog)
catalog->context =
(glade_xml_context_free (catalog->context), NULL);
- g_debug ("Successfully parsed catalog: %s\n", catalog->name);
+ g_debug ("Successfully loaded catalog: %s\n", catalog->name);
return;
}
Index: src/glade-project-view.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-project-view.c,v
retrieving revision 1.55
diff -u -p -r1.55 glade-project-view.c
--- src/glade-project-view.c 16 Mar 2006 06:59:01 -0000 1.55
+++ src/glade-project-view.c 16 Mar 2006 20:46:46 -0000
@@ -192,7 +192,7 @@ glade_project_view_populate_model (Glade
g_assert (gwidget);
if (gwidget->parent == NULL)
- toplevels = g_list_append (toplevels, object);
+ toplevels = g_list_prepend (toplevels, object);
}
/* add the widgets and recurse */
Index: src/glade-property.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-property.c,v
retrieving revision 1.82
diff -u -p -r1.82 glade-property.c
--- src/glade-property.c 1 Mar 2006 19:59:12 -0000 1.82
+++ src/glade-property.c 16 Mar 2006 20:46:48 -0000
@@ -315,8 +315,9 @@ glade_property_write_impl (GladeProperty
* the opening and the closing of the property tag */
tmp = glade_property_class_make_string_from_gvalue (property->class,
property->value);
- if (!tmp || !tmp[0])
- return FALSE;
+
+ /* an empty string is a valid value (a flag set to 0) */
+ if (tmp == NULL) return FALSE;
if (property->class->orig_def == NULL)
{
Index: src/glade-widget-class.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-widget-class.c,v
retrieving revision 1.88
diff -u -p -r1.88 glade-widget-class.c
--- src/glade-widget-class.c 16 Mar 2006 06:59:01 -0000 1.88
+++ src/glade-widget-class.c 16 Mar 2006 20:46:49 -0000
@@ -929,55 +929,6 @@ glade_widget_class_merge (GladeWidgetCla
(&widget_class->children, parent_class->children, widget_class);
}
-/**
- * glade_widget_class_load_library:
- * @library_name: name of the library
- *
- * Loads the named library from the Glade modules directory, or failing that
- * from the standard platform specific directories.
- *
- * The @library_name should not include any platform specifix prefix or suffix,
- * those are automatically added, if needed, by g_module_build_path()
- *
- * Returns: a #GModule on success, or %NULL on failure.
- */
-static GModule *
-glade_widget_class_load_library (const gchar *library_name)
-{
- gchar *path;
- GModule *module;
-
- path = g_module_build_path (glade_modules_dir, library_name);
- if (!path)
- {
- g_warning (_("Not enough memory."));
- return NULL;
- }
-
- module = g_module_open (path, G_MODULE_BIND_LAZY);
- g_free (path);
-
- if (!module)
- {
- path = g_module_build_path (NULL, library_name);
- if (!path)
- {
- g_warning (_("Not enough memory."));
- return NULL;
- }
-
- module = g_module_open (path, G_MODULE_BIND_LAZY);
- g_free (path);
- }
-
- if (!module)
- {
- g_warning (_("Unable to open the module %s."), library_name);
- }
-
- return module;
-}
-
GladeWidgetClass *
glade_widget_class_new (GladeXmlNode *class_node,
const gchar *catname,
@@ -1028,7 +979,7 @@ glade_widget_class_new (GladeXmlNode *cl
module = NULL;
if (library)
{
- module = glade_widget_class_load_library (library);
+ module = glade_util_load_library (library);
if (!module)
{
g_warning ("Failed to load external library '%s'",
Index: src/glade-utils.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-utils.c,v
retrieving revision 1.68
diff -u -p -r1.68 glade-utils.c
--- src/glade-utils.c 16 Mar 2006 05:29:37 -0000 1.68
+++ src/glade-utils.c 16 Mar 2006 20:46:56 -0000
@@ -1416,3 +1416,53 @@ glade_util_copy_file (const gchar *src_
}
return success;
}
+
+
+/**
+ * glade_util_load_library:
+ * @library_name: name of the library
+ *
+ * Loads the named library from the Glade modules directory, or failing that
+ * from the standard platform specific directories.
+ *
+ * The @library_name should not include any platform specifix prefix or suffix,
+ * those are automatically added, if needed, by g_module_build_path()
+ *
+ * Returns: a #GModule on success, or %NULL on failure.
+ */
+GModule *
+glade_util_load_library (const gchar *library_name)
+{
+ gchar *path;
+ GModule *module;
+
+ path = g_module_build_path (glade_modules_dir, library_name);
+ if (!path)
+ {
+ g_warning (_("Not enough memory."));
+ return NULL;
+ }
+
+ module = g_module_open (path, G_MODULE_BIND_LAZY);
+ g_free (path);
+
+ if (!module)
+ {
+ path = g_module_build_path (NULL, library_name);
+ if (!path)
+ {
+ g_warning (_("Not enough memory."));
+ return NULL;
+ }
+
+ module = g_module_open (path, G_MODULE_BIND_LAZY);
+ g_free (path);
+ }
+
+ if (!module)
+ {
+ g_warning (_("Unable to open the module %s."), library_name);
+ }
+
+ return module;
+}
Index: src/glade-utils.h
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-utils.h,v
retrieving revision 1.42
diff -u -p -r1.42 glade-utils.h
--- src/glade-utils.h 24 Feb 2006 02:04:38 -0000 1.42
+++ src/glade-utils.h 16 Mar 2006 20:46:56 -0000
@@ -115,6 +115,8 @@ LIBGLADEUI_API
gboolean glade_util_copy_file (const gchar *src_path,
const gchar *dest_path);
+LIBGLADEUI_API
+GModule *glade_util_load_library (const gchar *library_name);
G_END_DECLS
Index: src/glade.h
===================================================================
RCS file: /cvs/gnome/glade3/src/glade.h,v
retrieving revision 1.58
diff -u -p -r1.58 glade.h
--- src/glade.h 16 Mar 2006 06:59:01 -0000 1.58
+++ src/glade.h 16 Mar 2006 20:46:56 -0000
@@ -132,6 +132,7 @@ typedef struct _GladeProject GladeP
#define GLADE_TAG_VISIBLE_LINES "visible-lines"
#define GLADE_TAG_RESOURCE "resource"
#define GLADE_TAG_ATK_RELATION "atk-relation"
+#define GLADE_TAG_INIT_FUNCTION "init-function"
#define GLADE_NUMERICAL_STEP_INCREMENT 1
#define GLADE_FLOATING_STEP_INCREMENT 0.01F
_______________________________________________
Glade-devel maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/glade-devel