summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tvb@src.gnome.org>2008-09-20 23:49:05 +0000
committerTristan Van Berkom <tvb@src.gnome.org>2008-09-20 23:49:05 +0000
commita8a21709c5f2002eafce9ca05a2ce83c98fee583 (patch)
treec88829d78500132d7948bb0c08db1d9707c524b8
parent83c9c86f797d64935a36b0e3281b14f456666c4d (diff)
downloadglade-a8a21709c5f2002eafce9ca05a2ce83c98fee583.tar.gz
Added "supports" catalog element to supply supported formats, added
* gladeui/glade-xml-utils.h, gladeui/glade-catalog.[ch], gladeui/glade-widget-adaptor.[ch], gladeui/glade-property-class.[ch], gladeui/glade-project.c, glade-palette-item.c: Added "supports" catalog element to supply supported formats, added libglade-only and libglade-unsupported properties for widget classes and property classes, those metadata will show up in the editor like versioning info, in the verify logs as well, and the palette will adjust sensitivity according to the new properties. * plugins/gtk+/gtk+.xml.in, plugins/gnome/gnome.xml.in: Added supports elements and marked widgets/properties as libglade-only/libglade-unsupported in the gtk+ catalog. svn path=/trunk/; revision=1945
-rw-r--r--ChangeLog12
-rw-r--r--gladeui/glade-catalog.c91
-rw-r--r--gladeui/glade-catalog.h9
-rw-r--r--gladeui/glade-inspector.c2
-rw-r--r--gladeui/glade-palette-item.c4
-rw-r--r--gladeui/glade-project.c86
-rw-r--r--gladeui/glade-project.h3
-rw-r--r--gladeui/glade-property-class.c8
-rw-r--r--gladeui/glade-property-class.h4
-rw-r--r--gladeui/glade-widget-adaptor.c45
-rw-r--r--gladeui/glade-widget-adaptor.h36
-rw-r--r--gladeui/glade-xml-utils.h9
-rw-r--r--plugins/gnome/gnome.xml.in1
-rw-r--r--plugins/gtk+/gtk+.xml.in33
14 files changed, 258 insertions, 85 deletions
diff --git a/ChangeLog b/ChangeLog
index c3270bcb..bf272d7a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -30,6 +30,18 @@
at load time in both the workspace and inspector
- Sorted objects from widgets in the inspector view.
+ * gladeui/glade-xml-utils.h, gladeui/glade-catalog.[ch],
+ gladeui/glade-widget-adaptor.[ch], gladeui/glade-property-class.[ch],
+ gladeui/glade-project.c, glade-palette-item.c: Added "supports" catalog element
+ to supply supported formats, added libglade-only and libglade-unsupported properties
+ for widget classes and property classes, those metadata will show up in the editor
+ like versioning info, in the verify logs as well, and the palette will adjust
+ sensitivity according to the new properties.
+
+ * plugins/gtk+/gtk+.xml.in, plugins/gnome/gnome.xml.in: Added supports
+ elements and marked widgets/properties as libglade-only/libglade-unsupported in
+ the gtk+ catalog.
+
2008-09-19 Tristan Van Berkom <tvb@gnome.org>
Now we have a conversion routine that is run in the plugin to
diff --git a/gladeui/glade-catalog.c b/gladeui/glade-catalog.c
index 45cf6c93..1dcbac75 100644
--- a/gladeui/glade-catalog.c
+++ b/gladeui/glade-catalog.c
@@ -40,6 +40,9 @@ struct _GladeCatalog
GList *targetable_versions; /* list of suitable version targets */
+ gboolean libglade_supported; /* whether this catalog supports libglade */
+ gboolean builder_supported; /* whether this catalog supports gtkbuilder */
+
gchar *library; /* Library name for backend support */
gchar *name; /* Symbolic catalog name */
@@ -139,7 +142,9 @@ catalog_allocate (void)
catalog->context = NULL;
catalog->adaptors = NULL;
catalog->widget_groups = NULL;
-
+
+ catalog->libglade_supported = FALSE;
+ catalog->builder_supported = TRUE;
return catalog;
}
@@ -207,6 +212,25 @@ catalog_open (const gchar *filename)
catalog->book = glade_xml_get_property_string (root, GLADE_TAG_BOOK);
catalog->icon_prefix = glade_xml_get_property_string (root, GLADE_TAG_ICON_PREFIX);
catalog->init_function_name = glade_xml_get_value_string (root, GLADE_TAG_INIT_FUNCTION);
+
+ if (!catalog->domain)
+ catalog->domain = g_strdup (catalog->library);
+
+ if ((str = glade_xml_get_property_string (root, GLADE_TAG_SUPPORTS)) != NULL)
+ {
+ gchar **split = g_strsplit (str, ",", 0);
+ gint i;
+
+ catalog->builder_supported = FALSE;
+
+ for (i = 0; split[i]; i++)
+ {
+ if (!strcmp (split[i], GLADE_TAG_LIBGLADE))
+ catalog->libglade_supported = TRUE;
+ else if (!strcmp (split[i], GLADE_TAG_GTKBUILDER))
+ catalog->builder_supported = TRUE;
+ }
+ }
/* catalog->icon_prefix defaults to catalog->name */
if (!catalog->icon_prefix)
@@ -358,12 +382,7 @@ catalog_load_classes (GladeCatalog *catalog, GladeXmlNode *widgets_node)
domain = catalog->domain ? catalog->domain : catalog->library;
- adaptor = glade_widget_adaptor_from_catalog (node,
- catalog->name,
- catalog->icon_prefix,
- module,
- domain,
- catalog->book);
+ adaptor = glade_widget_adaptor_from_catalog (catalog, node, module);
catalog->adaptors = g_list_prepend (catalog->adaptors, adaptor);
}
@@ -403,8 +422,7 @@ catalog_load_group (GladeCatalog *catalog, GladeXmlNode *group_node)
group->expanded = TRUE;
/* Translate it */
- translated_title = dgettext (catalog->domain ?
- catalog->domain : catalog->library,
+ translated_title = dgettext (catalog->domain,
title);
if (translated_title != title)
{
@@ -555,18 +573,59 @@ glade_catalog_load_all (void)
return loaded_catalogs;
}
-const gchar *
+G_CONST_RETURN gchar *
glade_catalog_get_name (GladeCatalog *catalog)
{
- g_return_val_if_fail (catalog != NULL, NULL);
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), NULL);
return catalog->name;
}
+G_CONST_RETURN gchar *
+glade_catalog_get_book (GladeCatalog *catalog)
+{
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), NULL);
+
+ return catalog->book;
+}
+
+G_CONST_RETURN gchar *
+glade_catalog_get_domain (GladeCatalog *catalog)
+{
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), NULL);
+
+ return catalog->domain;
+}
+
+G_CONST_RETURN gchar *
+glade_catalog_get_icon_prefix (GladeCatalog *catalog)
+{
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), NULL);
+
+ return catalog->icon_prefix;
+}
+
+gboolean
+glade_catalog_supports_libglade (GladeCatalog *catalog)
+{
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), FALSE);
+
+ return catalog->libglade_supported;
+}
+
+gboolean
+glade_catalog_supports_gtkbuilder (GladeCatalog *catalog)
+{
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), FALSE);
+
+ return catalog->builder_supported;
+}
+
+
gint
glade_catalog_get_major_version (GladeCatalog *catalog)
{
- g_return_val_if_fail (catalog != NULL, 0);
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), 0);
return catalog->major_version;
}
@@ -574,7 +633,7 @@ glade_catalog_get_major_version (GladeCatalog *catalog)
gint
glade_catalog_get_minor_version (GladeCatalog *catalog)
{
- g_return_val_if_fail (catalog != NULL, 0);
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), 0);
return catalog->minor_version;
}
@@ -583,7 +642,7 @@ glade_catalog_get_minor_version (GladeCatalog *catalog)
GList *
glade_catalog_get_targets (GladeCatalog *catalog)
{
- g_return_val_if_fail (catalog != NULL, NULL);
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), NULL);
return catalog->targetable_versions;
}
@@ -591,7 +650,7 @@ glade_catalog_get_targets (GladeCatalog *catalog)
GList *
glade_catalog_get_widget_groups (GladeCatalog *catalog)
{
- g_return_val_if_fail (catalog != NULL, NULL);
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), NULL);
return catalog->widget_groups;
}
@@ -599,7 +658,7 @@ glade_catalog_get_widget_groups (GladeCatalog *catalog)
GList *
glade_catalog_get_adaptors (GladeCatalog *catalog)
{
- g_return_val_if_fail (catalog != NULL, NULL);
+ g_return_val_if_fail (GLADE_IS_CATALOG (catalog), NULL);
return catalog->adaptors;
}
diff --git a/gladeui/glade-catalog.h b/gladeui/glade-catalog.h
index 12c0e8a9..2afbfce1 100644
--- a/gladeui/glade-catalog.h
+++ b/gladeui/glade-catalog.h
@@ -72,7 +72,10 @@ typedef struct {
const GList *glade_catalog_load_all (void);
-const gchar *glade_catalog_get_name (GladeCatalog *catalog);
+G_CONST_RETURN gchar *glade_catalog_get_name (GladeCatalog *catalog);
+G_CONST_RETURN gchar *glade_catalog_get_icon_prefix(GladeCatalog *catalog);
+G_CONST_RETURN gchar *glade_catalog_get_domain (GladeCatalog *catalog);
+G_CONST_RETURN gchar *glade_catalog_get_book (GladeCatalog *catalog);
GList *glade_catalog_get_targets (GladeCatalog *catalog);
@@ -100,6 +103,10 @@ gboolean glade_catalog_convert_project (GladeCatalog *catalog,
GladeProject *project,
GladeProjectFormat new_format);
+
+gboolean glade_catalog_supports_libglade (GladeCatalog *catalog);
+gboolean glade_catalog_supports_gtkbuilder (GladeCatalog *catalog);
+
G_END_DECLS
#endif /* __GLADE_CATALOG_H__ */
diff --git a/gladeui/glade-inspector.c b/gladeui/glade-inspector.c
index e1e7830f..4f500822 100644
--- a/gladeui/glade-inspector.c
+++ b/gladeui/glade-inspector.c
@@ -872,7 +872,7 @@ glade_inspector_new_with_project (GladeProject *project)
/* Make sure we expended to the right path */
project_selection_changed_cb (project, inspector);
- return inspector;
+ return GTK_WIDGET (inspector);
}
diff --git a/gladeui/glade-palette-item.c b/gladeui/glade-palette-item.c
index 131b2c00..90389818 100644
--- a/gladeui/glade-palette-item.c
+++ b/gladeui/glade-palette-item.c
@@ -182,10 +182,10 @@ glade_palette_item_refresh (GladePaletteItem *item)
(warning =
glade_project_verify_widget_adaptor (project, priv->adaptor, &support)) != NULL)
{
-
/* set sensitivity */
gtk_widget_set_sensitive (GTK_WIDGET (item),
- !(support & (GLADE_SUPPORT_BUILDER_UNSUPPORTED |
+ !(support & (GLADE_SUPPORT_LIBGLADE_UNSUPPORTED |
+ GLADE_SUPPORT_LIBGLADE_ONLY |
GLADE_SUPPORT_MISMATCH)));
if (support & GLADE_SUPPORT_DEPRECATED)
diff --git a/gladeui/glade-project.c b/gladeui/glade-project.c
index 14f82397..8c98b9df 100644
--- a/gladeui/glade-project.c
+++ b/gladeui/glade-project.c
@@ -584,7 +584,7 @@ glade_project_verify_adaptor (GladeProject *project,
}
if (project->priv->format == GLADE_PROJECT_FORMAT_GTKBUILDER &&
- GWA_BUILDER_UNSUPPORTED (adaptor_iter))
+ GWA_LIBGLADE_ONLY (adaptor_iter))
{
if (forwidget)
{
@@ -592,7 +592,7 @@ glade_project_verify_adaptor (GladeProject *project,
g_string_append (string, "\n");
g_string_append_printf
(string,
- _("This widget is not supported by GtkBuilder"));
+ _("This widget is only supported in libglade format"));
}
else
/* translators: reffers to a widget '[%s]'
@@ -600,11 +600,34 @@ glade_project_verify_adaptor (GladeProject *project,
g_string_append_printf
(string,
_("[%s] Object class '%s' from %s %d.%d "
- "is not supported by GtkBuilder\n"),
+ "is only supported in libglade format\n"),
path_name, adaptor_iter->title, catalog,
target_major, target_minor);
- support_mask |= GLADE_SUPPORT_BUILDER_UNSUPPORTED;
+ support_mask |= GLADE_SUPPORT_LIBGLADE_ONLY;
+ }
+ else if (project->priv->format == GLADE_PROJECT_FORMAT_LIBGLADE &&
+ GWA_LIBGLADE_UNSUPPORTED (adaptor_iter))
+ {
+ if (forwidget)
+ {
+ if (string->len)
+ g_string_append (string, "\n");
+ g_string_append_printf
+ (string,
+ _("This widget is not supported in libglade format"));
+ }
+ else
+ /* translators: reffers to a widget '[%s]'
+ * loaded from toolkit version '%s %d.%d' */
+ g_string_append_printf
+ (string,
+ _("[%s] Object class '%s' from %s %d.%d "
+ "is not supported in libglade format\n"),
+ path_name, adaptor_iter->title, catalog,
+ target_major, target_minor);
+
+ support_mask |= GLADE_SUPPORT_LIBGLADE_UNSUPPORTED;
}
if (!saving && GWA_DEPRECATED (adaptor_iter))
@@ -1519,7 +1542,8 @@ glade_project_load_from_file (GladeProject *project, const gchar *path)
static void
-glade_project_verify_property (GladeProperty *property,
+glade_project_verify_property (GladeProject *project,
+ GladeProperty *property,
const gchar *path_name,
GString *string,
gboolean forwidget)
@@ -1538,9 +1562,49 @@ glade_project_verify_property (GladeProperty *property,
&target_major,
&target_minor);
- if (target_major < property->klass->version_since_major ||
- (target_major == property->klass->version_since_major &&
- target_minor < property->klass->version_since_minor))
+ if (project->priv->format == GLADE_PROJECT_FORMAT_LIBGLADE &&
+ property->klass->libglade_unsupported)
+ {
+ if (forwidget)
+ glade_property_set_support_warning
+ (property, _("This property is not supported in libglade format"));
+ else
+ /* translators: reffers to a property '%s' of widget '[%s]'
+ * introduced in toolkit version '%s %d.%d' */
+ g_string_append_printf
+ (string,
+ property->klass->packing ?
+ _("[%s] Packing property '%s' of object class '%s' is not "
+ "supported in libglade format\n") :
+ _("[%s] Property '%s' of object class '%s' is not "
+ "supported in libglade format\n"),
+ path_name,
+ property->klass->name,
+ adaptor->title);
+ }
+ else if (project->priv->format == GLADE_PROJECT_FORMAT_GTKBUILDER &&
+ property->klass->libglade_only)
+ {
+ if (forwidget)
+ glade_property_set_support_warning
+ (property, _("This property is only supported in libglade format"));
+ else
+ /* translators: reffers to a property '%s' of widget '[%s]'
+ * introduced in toolkit version '%s %d.%d' */
+ g_string_append_printf
+ (string,
+ property->klass->packing ?
+ _("[%s] Packing property '%s' of object class '%s' is only "
+ "supported in libglade format\n") :
+ _("[%s] Property '%s' of object class '%s' is only "
+ "supported in libglade format\n"),
+ path_name,
+ property->klass->name,
+ adaptor->title);
+ }
+ else if (target_major < property->klass->version_since_major ||
+ (target_major == property->klass->version_since_major &&
+ target_minor < property->klass->version_since_minor))
{
if (forwidget)
{
@@ -1579,7 +1643,6 @@ glade_project_verify_property (GladeProperty *property,
glade_property_set_support_warning (property, NULL);
g_free (catalog);
-
}
@@ -1595,7 +1658,7 @@ glade_project_verify_properties_internal (GladeWidget *widget,
for (list = widget->properties; list; list = list->next)
{
property = list->data;
- glade_project_verify_property (property, path_name, string, forwidget);
+ glade_project_verify_property (widget->project, property, path_name, string, forwidget);
}
for (list = widget->packing_properties; list; list = list->next)
@@ -1604,7 +1667,7 @@ glade_project_verify_properties_internal (GladeWidget *widget,
g_assert (widget->parent);
property = list->data;
- glade_project_verify_property (property, path_name, string, forwidget);
+ glade_project_verify_property (widget->project, property, path_name, string, forwidget);
}
}
@@ -3246,6 +3309,7 @@ glade_project_set_format (GladeProject *project, GladeProjectFormat format)
{
project->priv->format = format;
g_object_notify (G_OBJECT (project), "format");
+ glade_project_verify_project_for_ui (project);
}
}
diff --git a/gladeui/glade-project.h b/gladeui/glade-project.h
index cde70dcb..afbffd36 100644
--- a/gladeui/glade-project.h
+++ b/gladeui/glade-project.h
@@ -25,7 +25,8 @@ typedef enum
GLADE_SUPPORT_OK = 0x00,
GLADE_SUPPORT_DEPRECATED = 0x01,
GLADE_SUPPORT_MISMATCH = 0x02,
- GLADE_SUPPORT_BUILDER_UNSUPPORTED = 0x04
+ GLADE_SUPPORT_LIBGLADE_UNSUPPORTED = 0x04,
+ GLADE_SUPPORT_LIBGLADE_ONLY = 0x08
} GladeSupportMask;
struct _GladeProject
diff --git a/gladeui/glade-property-class.c b/gladeui/glade-property-class.c
index 7f397ee1..89c3a695 100644
--- a/gladeui/glade-property-class.c
+++ b/gladeui/glade-property-class.c
@@ -92,6 +92,9 @@ glade_property_class_new (gpointer handle)
property_class->virt = TRUE;
property_class->transfer_on_paste = FALSE;
property_class->weight = -1.0;
+ property_class->libglade_only = FALSE;
+ property_class->libglade_unsupported = FALSE;
+ property_class->parentless_widget = FALSE;
/* Initialize them to the base version */
property_class->version_since_major = GWA_VERSION_SINCE_MAJOR (handle);
@@ -1508,7 +1511,10 @@ glade_property_class_update_from_node (GladeXmlNode *node,
klass->transfer_on_paste = glade_xml_get_property_boolean (node, GLADE_TAG_TRANSFER_ON_PASTE, klass->transfer_on_paste);
klass->save_always = glade_xml_get_property_boolean (node, GLADE_TAG_SAVE_ALWAYS, klass->save_always);
klass->parentless_widget = glade_xml_get_property_boolean (node, GLADE_TAG_PARENTLESS_WIDGET, klass->parentless_widget);
-
+ klass->libglade_only = glade_xml_get_property_boolean (node, GLADE_TAG_LIBGLADE_ONLY, klass->libglade_only);
+ klass->libglade_unsupported =
+ glade_xml_get_property_boolean (node, GLADE_TAG_LIBGLADE_UNSUPPORTED,
+ klass->libglade_unsupported);
/* Special case pixbuf here.
*/
diff --git a/gladeui/glade-property-class.h b/gladeui/glade-property-class.h
index 9ec05bd9..02d81538 100644
--- a/gladeui/glade-property-class.h
+++ b/gladeui/glade-property-class.h
@@ -37,6 +37,10 @@ struct _GladePropertyClass
*/
gint version_since_minor;
+ /* For catalogs that support libglade: */
+ gboolean libglade_only; /* Mark special libglade virtual properties */
+ gboolean libglade_unsupported;/* Mark properties that are not available in libglade */
+
GParamSpec *pspec; /* The Parameter Specification for this property.
*/
diff --git a/gladeui/glade-widget-adaptor.c b/gladeui/glade-widget-adaptor.c
index 90b40f2b..1f096ade 100644
--- a/gladeui/glade-widget-adaptor.c
+++ b/gladeui/glade-widget-adaptor.c
@@ -1482,9 +1482,13 @@ gwa_derived_class_init (GladeWidgetAdaptorClass *adaptor_class,
glade_xml_get_property_boolean
(node, GLADE_TAG_DEPRECATED, adaptor_class->deprecated);
- adaptor_class->builder_unsupported =
+ adaptor_class->libglade_unsupported =
glade_xml_get_property_boolean
- (node, GLADE_TAG_BUILDER_UNSUPPORTED, adaptor_class->builder_unsupported);
+ (node, GLADE_TAG_LIBGLADE_UNSUPPORTED, adaptor_class->libglade_unsupported);
+
+ adaptor_class->libglade_only =
+ glade_xml_get_property_boolean
+ (node, GLADE_TAG_LIBGLADE_ONLY, adaptor_class->libglade_only);
adaptor_class->fixed =
glade_xml_get_property_boolean
@@ -1999,25 +2003,19 @@ generate_type (const char *name,
/**
* glade_widget_adaptor_from_catalog:
- * @class_node: A #GladeXmlNode
- * @catname: the name of the owning catalog
- * @icon_prefix:
+ * @catalog: A #GladeCatalog
+ * @class_node: the #GladeXmlNode to load
* @module: the plugin GModule.
- * @domain: the domain to translate strings from this plugin from
- * @book: the devhelp search domain for the owning catalog.
*
* Dynamicly creates a subclass of #GladeWidgetAdaptor and subclasses
* the closest parent adaptor (parent class adapters must be creates/registerd
* prior to child classes, otherwise inheritance wont work) and parses in
* the relevent catalog info.
*/
-GladeWidgetAdaptor *
-glade_widget_adaptor_from_catalog (GladeXmlNode *class_node,
- const gchar *catname,
- const gchar *icon_prefix,
- GModule *module,
- const gchar *domain,
- const gchar *book)
+GladeWidgetAdaptor *
+glade_widget_adaptor_from_catalog (GladeCatalog *catalog,
+ GladeXmlNode *class_node,
+ GModule *module)
{
GladeWidgetAdaptor *adaptor = NULL;
gchar *name, *generic_name, *icon_name, *adaptor_icon_name, *adaptor_name, *func_name;
@@ -2105,13 +2103,13 @@ glade_widget_adaptor_from_catalog (GladeXmlNode *class_node,
adaptor_icon_name = create_icon_name_for_object_class (name,
object_type,
icon_name,
- icon_prefix,
+ glade_catalog_get_icon_prefix (catalog),
generic_name);
adaptor = g_object_new (adaptor_type,
"type", object_type,
"name", name,
- "catalog", catname,
+ "catalog", glade_catalog_get_name (catalog),
"generic-name", generic_name,
"icon-name", adaptor_icon_name,
NULL);
@@ -2134,7 +2132,7 @@ glade_widget_adaptor_from_catalog (GladeXmlNode *class_node,
else
{
/* translate */
- translated_title = dgettext (domain, title);
+ translated_title = dgettext (glade_catalog_get_domain (catalog), title);
if (translated_title != title)
{
/* gettext owns translated_title */
@@ -2159,12 +2157,17 @@ glade_widget_adaptor_from_catalog (GladeXmlNode *class_node,
if (adaptor->generic_name == NULL)
adaptor->generic_name = g_strdup ("widget");
- adaptor->priv->catalog = g_strdup (catname);
+ adaptor->priv->catalog = g_strdup (glade_catalog_get_name (catalog));
+
+ if (glade_catalog_get_book (catalog))
+ adaptor->priv->book = g_strdup (glade_catalog_get_book (catalog));
- if (book)
- adaptor->priv->book = g_strdup (book);
+ gwa_extend_with_node (adaptor, class_node, module, glade_catalog_get_domain (catalog));
- gwa_extend_with_node (adaptor, class_node, module, domain);
+ if (!glade_catalog_supports_libglade (catalog))
+ GLADE_WIDGET_ADAPTOR_GET_CLASS (adaptor)->libglade_unsupported = TRUE;
+ if (!glade_catalog_supports_gtkbuilder (catalog))
+ GLADE_WIDGET_ADAPTOR_GET_CLASS (adaptor)->libglade_only = TRUE;
/* Set default weight on properties */
for (parent_type = adaptor->type;
diff --git a/gladeui/glade-widget-adaptor.h b/gladeui/glade-widget-adaptor.h
index 2bc8877e..dc281b4f 100644
--- a/gladeui/glade-widget-adaptor.h
+++ b/gladeui/glade-widget-adaptor.h
@@ -5,6 +5,7 @@
#include <gladeui/glade-xml-utils.h>
#include <gladeui/glade-property-class.h>
#include <gladeui/glade-editor-property.h>
+#include <gladeui/glade-catalog.h>
#include <glib-object.h>
#include <gmodule.h>
#include <gtk/gtk.h>
@@ -42,13 +43,22 @@ typedef struct _GladeWidgetAdaptorClass GladeWidgetAdaptorClass;
((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->deprecated : FALSE)
/**
- * GWA_BUILDER_UNSUPPORTED:
+ * GWA_LIBGLADE_UNSUPPORTED:
* @obj: A #GladeWidgetAdaptor
*
- * Checks whether this widget class unsupported by GtkBuilder
+ * Checks whether this widget class is unsupported by Libglade
*/
-#define GWA_BUILDER_UNSUPPORTED(obj) \
- ((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->builder_unsupported : FALSE)
+#define GWA_LIBGLADE_UNSUPPORTED(obj) \
+ ((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->libglade_unsupported : FALSE)
+
+/**
+ * GWA_LIBGLADE_ONLY:
+ * @obj: A #GladeWidgetAdaptor
+ *
+ * Checks whether this widget class is only supported by libglade
+ */
+#define GWA_LIBGLADE_ONLY(obj) \
+ ((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->libglade_only : FALSE)
/**
* GWA_VERSION_SINCE_MAJOR:
@@ -534,9 +544,12 @@ struct _GladeWidgetAdaptorClass
gboolean deprecated; /* If this widget is currently
* deprecated
*/
- gboolean builder_unsupported; /* If this widget is not supported
- * by gtkbuilder
- */
+ gboolean libglade_unsupported; /* If this widget is not supported
+ * by libglade
+ */
+ gboolean libglade_only; /* If this widget is only supported
+ * by libglade
+ */
gboolean fixed; /* If this is a GtkContainer, use free-form
* placement with drag/resize/paste at mouse...
@@ -644,12 +657,9 @@ GType glade_widget_adaptor_get_type (void) G_GNUC_CONST;
GType glade_create_reason_get_type (void) G_GNUC_CONST;
-GladeWidgetAdaptor *glade_widget_adaptor_from_catalog (GladeXmlNode *class_node,
- const gchar *catname,
- const gchar *icon_prefix,
- GModule *module,
- const gchar *domain,
- const gchar *book);
+GladeWidgetAdaptor *glade_widget_adaptor_from_catalog (GladeCatalog *catalog,
+ GladeXmlNode *class_node,
+ GModule *module);
void glade_widget_adaptor_register (GladeWidgetAdaptor *adaptor);
diff --git a/gladeui/glade-xml-utils.h b/gladeui/glade-xml-utils.h
index c0ba63c9..321b3eee 100644
--- a/gladeui/glade-xml-utils.h
+++ b/gladeui/glade-xml-utils.h
@@ -79,13 +79,18 @@ typedef enum
#define GLADE_XML_TAG_SOURCE "source"
#define GLADE_XML_TAG_FILENAME "filename"
#define GLADE_XML_TAG_STOCK_ID "stock-id"
+#define GLADE_TAG_FACTORY_STOCK_ID "factory-stock-id"
#define GLADE_TAG_VERSION "version"
#define GLADE_TAG_TARGETABLE "targetable"
#define GLADE_TAG_VERSION_SINCE "since"
#define GLADE_TAG_DEPRECATED "deprecated"
-#define GLADE_TAG_BUILDER_UNSUPPORTED "builder-unsupported"
-#define GLADE_TAG_FACTORY_STOCK_ID "factory-stock-id"
+
+#define GLADE_TAG_LIBGLADE_ONLY "libglade-only"
+#define GLADE_TAG_LIBGLADE_UNSUPPORTED "libglade-unsupported"
+#define GLADE_TAG_SUPPORTS "supports"
+#define GLADE_TAG_GTKBUILDER "gtkbuilder"
+#define GLADE_TAG_LIBGLADE "libglade"
#define GLADE_TAG_GLADE_CATALOG "glade-catalog"
#define GLADE_TAG_GLADE_WIDGET_CLASSES "glade-widget-classes"
diff --git a/plugins/gnome/gnome.xml.in b/plugins/gnome/gnome.xml.in
index 267c122f..41df0d93 100644
--- a/plugins/gnome/gnome.xml.in
+++ b/plugins/gnome/gnome.xml.in
@@ -1,5 +1,6 @@
<glade-catalog name="gnome"
library="gladegnome"
+ supports="libglade"
depends="gtk+"
domain="glade3"
book="libgnomeui">
diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in
index e788e758..f8e5175a 100644
--- a/plugins/gtk+/gtk+.xml.in
+++ b/plugins/gtk+/gtk+.xml.in
@@ -1,6 +1,7 @@
<glade-catalog name="gtk+"
version="2.14"
- targetable="2.10,2.8,2.12"
+ targetable="2.12,2.10,2.8"
+ supports="libglade,gtkbuilder"
icon-prefix="gtk"
library="gladegtk"
domain="glade3"
@@ -658,7 +659,7 @@ embedded in another object</_tooltip>
<properties>
<!-- Text of the textview -->
- <property id="text" _name="Text" translatable="True">
+ <property id="text" _name="Text" translatable="True" libglade-only="True">
<_tooltip>Set the text in the view's text buffer</_tooltip>
<spec>glade_standard_string_spec</spec>
<visible-lines>2</visible-lines>
@@ -1542,7 +1543,7 @@ x <property id="buffer"/>
<glade-widget-class name="GtkVRuler" generic-name="vruler" _title="Vertical Ruler"/>
- <glade-widget-class name="GtkCombo" generic-name="combo" _title="Combo" deprecated="True" builder-unsupported="True">
+ <glade-widget-class name="GtkCombo" generic-name="combo" _title="Combo" deprecated="True" libglade-only="True">
<post-create-function>glade_gtk_combo_post_create</post-create-function>
<get-internal-child-function>glade_gtk_combo_get_internal_child</get-internal-child-function>
<get-children-function>glade_gtk_combo_get_children</get-children-function>
@@ -1560,7 +1561,7 @@ x <property id="buffer"/>
</glade-widget-class>
- <glade-widget-class name="GtkOptionMenu" generic-name="optionmenu" _title="Option Menu" deprecated="True" builder-unsupported="True">
+ <glade-widget-class name="GtkOptionMenu" generic-name="optionmenu" _title="Option Menu" deprecated="True" libglade-only="True">
<properties>
<!-- Atk press property -->
<property id="atk-press" _name="Press" ignore="True" atk-property="True" save="False">
@@ -1571,7 +1572,7 @@ x <property id="buffer"/>
</properties>
</glade-widget-class>
- <glade-widget-class name="GtkList" generic-name="list" _title="List" deprecated="True" builder-unsupported="True">
+ <glade-widget-class name="GtkList" generic-name="list" _title="List" deprecated="True" libglade-only="True">
<add-child-function>glade_gtk_listitem_add_child</add-child-function>
<remove-child-function>glade_gtk_listitem_remove_child</remove-child-function>
<properties>
@@ -1587,7 +1588,7 @@ x <property id="buffer"/>
</properties>
</glade-widget-class>
- <glade-widget-class name="GtkListItem" generic-name="listitem" _title="List Item" deprecated="True" builder-unsupported="True">
+ <glade-widget-class name="GtkListItem" generic-name="listitem" _title="List Item" deprecated="True" libglade-only="True">
<post-create-function>glade_gtk_list_item_post_create</post-create-function>
<set-property-function>glade_gtk_list_item_set_property</set-property-function>
<get-property-function>glade_gtk_list_item_get_property</get-property-function>
@@ -1599,7 +1600,7 @@ x <property id="buffer"/>
</properties>
</glade-widget-class>
- <glade-widget-class name="GtkCList" generic-name="clist" _title="Columned List" deprecated="True" builder-unsupported="True">
+ <glade-widget-class name="GtkCList" generic-name="clist" _title="Columned List" deprecated="True" libglade-only="True">
<properties>
<property id="selection-mode">
<displayable-values>
@@ -1646,7 +1647,7 @@ x <property id="buffer"/>
<glade-widget-class name="GtkGammaCurve" generic-name="gammacurve" _title="Gamma Curve"/>
- <glade-widget-class name="GtkFileSelection" generic-name="fileselection" _title="File Selection" deprecated="True" builder-unsupported="True"/>
+ <glade-widget-class name="GtkFileSelection" generic-name="fileselection" _title="File Selection" deprecated="True" libglade-only="True"/>
<glade-widget-class name="Custom" generic-name="custom" _title="Custom widget">
<properties>
<property id="creation-function"/>
@@ -1738,7 +1739,7 @@ x <property id="buffer"/>
</properties>
</glade-widget-class>
- <glade-widget-class name="GtkSizeGroup" generic-name="sizegroup" _title="Size Group">
+ <glade-widget-class name="GtkSizeGroup" generic-name="sizegroup" _title="Size Group" libglade-unsupported="True">
<read-widget-function>glade_gtk_size_group_read_widget</read-widget-function>
<write-widget-function>glade_gtk_size_group_write_widget</write-widget-function>
<set-property-function>glade_gtk_size_group_set_property</set-property-function>
@@ -1749,14 +1750,13 @@ x <property id="buffer"/>
</property>
</properties>
</glade-widget-class>
+ <glade-widget-class name="GtkAdjustment" generic-name="adjustment" _title="Adjustment" libglade-unsupported="True"/>
- <glade-widget-class name="GtkTextBuffer" generic-name="textbuffer" _title="Text Buffer"/>
- <glade-widget-class name="GtkTextTag" generic-name="texttag" _title="Text Tag"/>
- <glade-widget-class name="GtkTextTagTable" generic-name="texttagtable" _title="Text Tag Table"/>
-
- <glade-widget-class name="GtkFileFilter" generic-name="filefilter" _title="File Filter"/>
- <glade-widget-class name="GtkAdjustment" generic-name="adjustment" _title="Adjustment"/>
+ <glade-widget-class name="GtkTextBuffer" generic-name="textbuffer" _title="Text Buffer" libglade-unsupported="True"/>
+ <glade-widget-class name="GtkTextTag" generic-name="texttag" _title="Text Tag" libglade-unsupported="True"/>
+ <glade-widget-class name="GtkTextTagTable" generic-name="texttagtable" _title="Text Tag Table" libglade-unsupported="True"/>
+ <glade-widget-class name="GtkFileFilter" generic-name="filefilter" _title="File Filter" libglade-unsupported="True"/>
</glade-widget-classes>
<glade-widget-group name="gtk-toplevels" _title="Toplevels">
@@ -1844,12 +1844,13 @@ x <property id="buffer"/>
<glade-widget-group name="gtk-objects" title="Objects">
<glade-widget-class-ref name="GtkSizeGroup"/>
+ <glade-widget-class-ref name="GtkAdjustment"/>
+
<glade-widget-class-ref name="GtkTextBuffer"/>
<glade-widget-class-ref name="GtkTextTag"/>
<glade-widget-class-ref name="GtkTextTagTable"/>
<glade-widget-class-ref name="GtkFileFilter"/>
- <glade-widget-class-ref name="GtkAdjustment"/>
</glade-widget-group>
<glade-widget-group name="gtk-specialized" title="Specialized Widgets">