Bumping gtk+ required version to 2.14

* configure.ac: Bumping gtk+ required version to 2.14

	* gladeui/glade-xml-utils.c, gladeui/glade-widget-adaptor.[ch],
	gladeui/glade-property-class.[ch], gladeui/glade-project.c: Added support
	for "builder-since" versioning (since builder supported this property/widget).

	* plugins/gtk+/gtk+.xml.in: Marked appropriate properties and objects "builder-since"
	and brought up to date new properties and signals introduced in 2.14.

	* gladeui/glade-base-editor.c: Plugged resource leak in finalize().


svn path=/trunk/; revision=2060
This commit is contained in:
Tristan Van Berkom 2008-12-09 18:46:04 +00:00
parent a2a5cd045b
commit 0c97337671
11 changed files with 396 additions and 193 deletions

View File

@ -1,3 +1,16 @@
2008-12-09 Tristan Van Berkom <tvb@gnome.org>
* configure.ac: Bumping gtk+ required version to 2.14
* gladeui/glade-xml-utils.c, gladeui/glade-widget-adaptor.[ch],
gladeui/glade-property-class.[ch], gladeui/glade-project.c: Added support
for "builder-since" versioning (since builder supported this property/widget).
* plugins/gtk+/gtk+.xml.in: Marked appropriate properties and objects "builder-since"
and brought up to date new properties and signals introduced in 2.14.
* gladeui/glade-base-editor.c: Plugged resource leak in finalize().
2008-11-28 Juan Pablo Ugarte <juanpablougarte@gmail.com> 2008-11-28 Juan Pablo Ugarte <juanpablougarte@gmail.com>
* gladeui/glade-inspector.c: added explanation string in the search entry. * gladeui/glade-inspector.c: added explanation string in the search entry.

View File

@ -116,7 +116,7 @@ GTK_DOC_CHECK(1.9)
dnl ================================================================ dnl ================================================================
dnl Check for gtk+ dnl Check for gtk+
dnl ================================================================ dnl ================================================================
PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.12.0 gthread-2.0 libxml-2.0 >= 2.4.0]) PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.14.0 gthread-2.0 libxml-2.0 >= 2.4.0])
AC_SUBST(GTK_LIBS) AC_SUBST(GTK_LIBS)
AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_CFLAGS)

View File

@ -113,6 +113,24 @@ static void glade_base_editor_set_container (GladeBaseEditor *editor,
static void glade_base_editor_block_callbacks (GladeBaseEditor *editor, static void glade_base_editor_block_callbacks (GladeBaseEditor *editor,
gboolean block); gboolean block);
static void
reset_child_types (GladeBaseEditor *editor)
{
GList *l;
ChildTypeTab *tab;
for (l = editor->priv->child_types; l; l = l->next)
{
tab = l->data;
g_object_unref (tab->children);
g_free (tab);
}
g_list_free (editor->priv->child_types);
editor->priv->child_types = NULL;
}
static gint static gint
sort_type_by_hierarchy (ChildTypeTab *a, ChildTypeTab *b) sort_type_by_hierarchy (ChildTypeTab *a, ChildTypeTab *b)
{ {
@ -1153,7 +1171,7 @@ glade_base_editor_set_container (GladeBaseEditor *editor,
if (container == NULL) if (container == NULL)
{ {
/* XXX Destroy childtypetabs ...*/ reset_child_types (editor);
e->gcontainer = NULL; e->gcontainer = NULL;
e->project = NULL; e->project = NULL;
@ -1203,14 +1221,13 @@ glade_base_editor_set_container (GladeBaseEditor *editor,
} }
/*************************** GladeBaseEditor Class ****************************/ /*************************** GladeBaseEditor Class ****************************/
static void static void
glade_base_editor_finalize (GObject *object) glade_base_editor_finalize (GObject *object)
{ {
GladeBaseEditor *cobj = GLADE_BASE_EDITOR (object); GladeBaseEditor *cobj = GLADE_BASE_EDITOR (object);
/* XXX Free up ChildTypeTabs here... */ reset_child_types (cobj);
/* Free private members, etc. */ /* Free private members, etc. */
glade_base_editor_project_disconnect (cobj); glade_base_editor_project_disconnect (cobj);

View File

@ -1548,6 +1548,88 @@ glade_project_save (GladeProject *project, const gchar *path, GError **error)
/******************************************************************* /*******************************************************************
Verify code here (versioning, incompatability checks) Verify code here (versioning, incompatability checks)
*******************************************************************/ *******************************************************************/
/* translators: reffers to a widget in toolkit version '%s %d.%d' and a project targeting toolkit version '%s %d.%d' */
#define WIDGET_VERSION_CONFLICT_MSGFMT _("This widget was introduced in %s %d.%d while project targets %s %d.%d")
/* translators: reffers to a widget '[%s]' introduced in toolkit version '%s %d.%d' */
#define WIDGET_VERSION_CONFLICT_FMT _("[%s] Object class '%s' was introduced in %s %d.%d\n")
/* translators: reffers to a widget in toolkit version '%s %d.%d' and a project targeting toolkit version '%s %d.%d' */
#define WIDGET_BUILDER_VERSION_CONFLICT_MSGFMT _("This widget was made available in GtkBuilder format in %s %d.%d " \
"while project targets %s %d.%d")
/* translators: reffers to a widget '[%s]' introduced in toolkit version '%s %d.%d' */
#define WIDGET_BUILDER_VERSION_CONFLICT_FMT _("[%s] Object class '%s' was made available in GtkBuilder format " \
"in %s %d.%d\n")
#define WIDGET_LIBGLADE_ONLY_MSG _("This widget is only supported in libglade format")
/* translators: reffers to a widget '[%s]' loaded from toolkit version '%s %d.%d' */
#define WIDGET_LIBGLADE_ONLY_FMT _("[%s] Object class '%s' from %s %d.%d " \
"is only supported in libglade format\n")
#define WIDGET_LIBGLADE_UNSUPPORTED_MSG _("This widget is not supported in libglade format")
/* translators: reffers to a widget '[%s]' loaded from toolkit version '%s %d.%d' */
#define WIDGET_LIBGLADE_UNSUPPORTED_FMT _("[%s] Object class '%s' from %s %d.%d " \
"is not supported in libglade format\n")
#define WIDGET_DEPRECATED_MSG _("This widget is deprecated")
/* translators: reffers to a widget '[%s]' loaded from toolkit version '%s %d.%d' */
#define WIDGET_DEPRECATED_FMT _("[%s] Object class '%s' from %s %d.%d is deprecated\n")
/* Defined here for pretty translator comments (bug in intl tools, for some reason
* you can only comment about the line directly following, forcing you to write
* ugly messy code with comments in line breaks inside function calls).
*/
#define PROP_LIBGLADE_UNSUPPORTED_MSG _("This property is not supported in libglade format")
/* translators: reffers to a property '%s' of widget '[%s]' */
#define PROP_LIBGLADE_UNSUPPORTED_FMT _("[%s] Property '%s' of object class '%s' is not " \
"supported in libglade format\n")
/* translators: reffers to a property '%s' of widget '[%s]' */
#define PACK_PROP_LIBGLADE_UNSUPPORTED_FMT _("[%s] Packing property '%s' of object class '%s' is not " \
"supported in libglade format\n")
#define PROP_LIBGLADE_ONLY_MSG _("This property is only supported in libglade format")
/* translators: reffers to a property '%s' of widget '[%s]' */
#define PROP_LIBGLADE_ONLY_FMT _("[%s] Property '%s' of object class '%s' is only " \
"supported in libglade format\n")
/* translators: reffers to a property '%s' of widget '[%s]' */
#define PACK_PROP_LIBGLADE_ONLY_FMT _("[%s] Packing property '%s' of object class '%s' is only " \
"supported in libglade format\n")
/* translators: reffers to a property in toolkit version '%s %d.%d'
* and a project targeting toolkit version '%s %d.%d' */
#define PROP_VERSION_CONFLICT_MSGFMT _("This property was introduced in %s %d.%d while project targets %s %d.%d")
/* translators: reffers to a property '%s' of widget '[%s]' in toolkit version '%s %d.%d' */
#define PROP_VERSION_CONFLICT_FMT _("[%s] Property '%s' of object class '%s' was introduced in %s %d.%d\n")
/* translators: reffers to a property '%s' of widget '[%s]' in toolkit version '%s %d.%d' */
#define PACK_PROP_VERSION_CONFLICT_FMT _("[%s] Packing property '%s' of object class '%s' " \
"was introduced in %s %d.%d\n")
/* translators: reffers to a property in toolkit version '%s %d.%d' and a project targeting toolkit version '%s %d.%d' */
#define PROP_BUILDER_VERSION_CONFLICT_MSGFMT _("This property was made available in GtkBuilder format in %s %d.%d " \
"while project targets %s %d.%d")
/* translators: reffers to a property '%s' of widget '[%s]' in toolkit version '%s %d.%d' */
#define PROP_BUILDER_VERSION_CONFLICT_FMT _("[%s] Property '%s' of object class '%s' was " \
"made available in GtkBuilder format in %s %d.%d\n")
/* translators: reffers to a property '%s' of widget '[%s]' in toolkit version '%s %d.%d' */
#define PACK_PROP_BUILDER_VERSION_CONFLICT_FMT _("[%s] Packing property '%s' of object class '%s' " \
"was made available in GtkBuilder format in %s %d.%d\n")
/* translators: reffers to a signal '%s' of widget '[%s]' in toolkit version '%s %d.%d' */
#define SIGNAL_VERSION_CONFLICT_FMT _("[%s] Signal '%s' of object class '%s' was introduced in %s %d.%d\n")
static void static void
glade_project_verify_property (GladeProject *project, glade_project_verify_property (GladeProject *project,
GladeProperty *property, GladeProperty *property,
@ -1575,40 +1657,30 @@ glade_project_verify_property (GladeProject *project,
{ {
if (forwidget) if (forwidget)
glade_property_set_support_warning glade_property_set_support_warning
(property, TRUE, _("This property is not supported in libglade format")); (property, TRUE, PROP_LIBGLADE_UNSUPPORTED_MSG);
else else
/* translators: reffers to a property '%s' of widget '[%s]' g_string_append_printf (string,
* introduced in toolkit version '%s %d.%d' */ property->klass->packing ?
g_string_append_printf PACK_PROP_LIBGLADE_UNSUPPORTED_FMT :
(string, PROP_LIBGLADE_UNSUPPORTED_FMT,
property->klass->packing ? path_name,
_("[%s] Packing property '%s' of object class '%s' is not " property->klass->name,
"supported in libglade format\n") : adaptor->title);
_("[%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 && else if (project->priv->format == GLADE_PROJECT_FORMAT_GTKBUILDER &&
property->klass->libglade_only) property->klass->libglade_only)
{ {
if (forwidget) if (forwidget)
glade_property_set_support_warning glade_property_set_support_warning
(property, TRUE, _("This property is only supported in libglade format")); (property, TRUE, PROP_LIBGLADE_ONLY_MSG);
else else
/* translators: reffers to a property '%s' of widget '[%s]' g_string_append_printf (string,
* introduced in toolkit version '%s %d.%d' */ property->klass->packing ?
g_string_append_printf PACK_PROP_LIBGLADE_ONLY_FMT :
(string, PROP_LIBGLADE_ONLY_FMT,
property->klass->packing ? path_name,
_("[%s] Packing property '%s' of object class '%s' is only " property->klass->name,
"supported in libglade format\n") : adaptor->title);
_("[%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 || else if (target_major < property->klass->version_since_major ||
(target_major == property->klass->version_since_major && (target_major == property->klass->version_since_major &&
@ -1616,36 +1688,54 @@ glade_project_verify_property (GladeProject *project,
{ {
if (forwidget) if (forwidget)
{ {
/* translators: reffers to a property introduced in toolkit tooltip = g_strdup_printf (PROP_VERSION_CONFLICT_MSGFMT,
* version '%s %d.%d' and a project targeting toolkit catalog,
* version '%s %d.%d' */ property->klass->version_since_major,
tooltip = g_strdup_printf property->klass->version_since_minor,
(_("This property was introduced in %s %d.%d, " catalog,
"project targets %s %d.%d"), target_major, target_minor);
catalog,
property->klass->version_since_major,
property->klass->version_since_minor,
catalog,
target_major, target_minor);
glade_property_set_support_warning (property, FALSE, tooltip); glade_property_set_support_warning (property, FALSE, tooltip);
g_free (tooltip); g_free (tooltip);
} }
else else
/* translators: reffers to a property '%s' of widget '[%s]' g_string_append_printf (string,
* introduced in toolkit version '%s %d.%d' */ property->klass->packing ?
g_string_append_printf PACK_PROP_VERSION_CONFLICT_FMT :
(string, PROP_VERSION_CONFLICT_FMT,
property->klass->packing ? path_name,
_("[%s] Packing property '%s' of object class '%s' was " property->klass->name,
"introduced in %s %d.%d\n") : adaptor->title, catalog,
_("[%s] Property '%s' of object class '%s' was " property->klass->version_since_major,
"introduced in %s %d.%d\n"), property->klass->version_since_minor);
path_name, }
property->klass->name, else if (project->priv->format == GLADE_PROJECT_FORMAT_GTKBUILDER &&
adaptor->title, catalog, (target_major < property->klass->builder_since_major ||
property->klass->version_since_major, (target_major == property->klass->builder_since_major &&
property->klass->version_since_minor); target_minor < property->klass->builder_since_minor)))
{
if (forwidget)
{
tooltip = g_strdup_printf (PROP_BUILDER_VERSION_CONFLICT_MSGFMT,
catalog,
property->klass->builder_since_major,
property->klass->builder_since_minor,
catalog,
target_major, target_minor);
glade_property_set_support_warning (property, FALSE, tooltip);
g_free (tooltip);
}
else
g_string_append_printf (string,
property->klass->packing ?
PACK_PROP_BUILDER_VERSION_CONFLICT_FMT :
PROP_BUILDER_VERSION_CONFLICT_FMT,
path_name,
property->klass->name,
adaptor->title, catalog,
property->klass->builder_since_major,
property->klass->builder_since_minor);
} }
else if (forwidget) else if (forwidget)
glade_property_set_support_warning (property, FALSE, NULL); glade_property_set_support_warning (property, FALSE, NULL);
@ -1722,18 +1812,14 @@ glade_project_verify_signal (GladeWidget *widget,
if (target_major < signal_class->version_since_major || if (target_major < signal_class->version_since_major ||
(target_major == signal_class->version_since_major && (target_major == signal_class->version_since_major &&
target_minor < signal_class->version_since_minor)) target_minor < signal_class->version_since_minor))
/* translators: reffers to a signal '%s' of widget '[%s]' g_string_append_printf (string,
* introduced in toolkit version '%s %d.%d' */ SIGNAL_VERSION_CONFLICT_FMT,
g_string_append_printf path_name,
(string, signal->name,
_("[%s] Signal '%s' of object class '%s' was " signal_class->adaptor->title,
"introduced in %s %d.%d\n"), catalog,
path_name, signal_class->version_since_major,
signal->name, signal_class->version_since_minor);
signal_class->adaptor->title,
catalog,
signal_class->version_since_major,
signal_class->version_since_minor);
g_free (catalog); g_free (catalog);
} }
@ -1862,7 +1948,7 @@ glade_project_verify_adaptor (GladeProject *project,
gint target_major, target_minor; gint target_major, target_minor;
gchar *catalog = NULL; gchar *catalog = NULL;
for (adaptor_iter = adaptor; adaptor_iter; for (adaptor_iter = adaptor; adaptor_iter && support_mask == GLADE_SUPPORT_OK;
adaptor_iter = glade_widget_adaptor_get_parent_adaptor (adaptor_iter)) adaptor_iter = glade_widget_adaptor_get_parent_adaptor (adaptor_iter))
{ {
@ -1871,37 +1957,52 @@ glade_project_verify_adaptor (GladeProject *project,
&target_major, &target_major,
&target_minor); &target_minor);
/* Only one versioning message (builder or otherwise)...
*/
if (target_major < GWA_VERSION_SINCE_MAJOR (adaptor_iter) || if (target_major < GWA_VERSION_SINCE_MAJOR (adaptor_iter) ||
(target_major == GWA_VERSION_SINCE_MAJOR (adaptor_iter) && (target_major == GWA_VERSION_SINCE_MAJOR (adaptor_iter) &&
target_minor < GWA_VERSION_SINCE_MINOR (adaptor_iter))) target_minor < GWA_VERSION_SINCE_MINOR (adaptor_iter)))
{ {
if (forwidget) if (forwidget)
{ g_string_append_printf (string,
/* translators: reffers to a widget WIDGET_VERSION_CONFLICT_MSGFMT,
* introduced in toolkit version '%s %d.%d', catalog,
* and a project targeting toolkit verion '%s %d.%d' */ GWA_VERSION_SINCE_MAJOR (adaptor_iter),
g_string_append_printf GWA_VERSION_SINCE_MINOR (adaptor_iter),
(string, catalog, target_major, target_minor);
_("This widget was introduced in %s %d.%d "
"project targets %s %d.%d"),
catalog,
GWA_VERSION_SINCE_MAJOR (adaptor_iter),
GWA_VERSION_SINCE_MINOR (adaptor_iter),
catalog, target_major, target_minor);
}
else else
/* translators: reffers to a widget '[%s]' g_string_append_printf (string,
* introduced in toolkit version '%s %d.%d' */ WIDGET_VERSION_CONFLICT_FMT,
g_string_append_printf path_name, adaptor_iter->title, catalog,
(string, GWA_VERSION_SINCE_MAJOR (adaptor_iter),
_("[%s] Object class '%s' was introduced in %s %d.%d\n"), GWA_VERSION_SINCE_MINOR (adaptor_iter));
path_name, adaptor_iter->title, catalog,
GWA_VERSION_SINCE_MAJOR (adaptor_iter), support_mask |= GLADE_SUPPORT_MISMATCH;
GWA_VERSION_SINCE_MINOR (adaptor_iter)); }
else if (project->priv->format == GLADE_PROJECT_FORMAT_GTKBUILDER &&
(target_major < GWA_BUILDER_SINCE_MAJOR (adaptor_iter) ||
(target_major == GWA_BUILDER_SINCE_MAJOR (adaptor_iter) &&
target_minor < GWA_BUILDER_SINCE_MINOR (adaptor_iter))))
{
if (forwidget)
g_string_append_printf (string,
WIDGET_BUILDER_VERSION_CONFLICT_MSGFMT,
catalog,
GWA_BUILDER_SINCE_MAJOR (adaptor_iter),
GWA_BUILDER_SINCE_MINOR (adaptor_iter),
catalog, target_major, target_minor);
else
g_string_append_printf (string,
WIDGET_BUILDER_VERSION_CONFLICT_FMT,
path_name, adaptor_iter->title, catalog,
GWA_BUILDER_SINCE_MAJOR (adaptor_iter),
GWA_BUILDER_SINCE_MINOR (adaptor_iter));
support_mask |= GLADE_SUPPORT_MISMATCH; support_mask |= GLADE_SUPPORT_MISMATCH;
} }
/* Now accumulate some more messages...
*/
if (project->priv->format == GLADE_PROJECT_FORMAT_GTKBUILDER && if (project->priv->format == GLADE_PROJECT_FORMAT_GTKBUILDER &&
GWA_LIBGLADE_ONLY (adaptor_iter)) GWA_LIBGLADE_ONLY (adaptor_iter))
{ {
@ -1909,19 +2010,13 @@ glade_project_verify_adaptor (GladeProject *project,
{ {
if (string->len) if (string->len)
g_string_append (string, "\n"); g_string_append (string, "\n");
g_string_append_printf g_string_append_printf (string, WIDGET_LIBGLADE_ONLY_MSG);
(string,
_("This widget is only supported in libglade format"));
} }
else else
/* translators: reffers to a widget '[%s]' g_string_append_printf (string,
* loaded from toolkit version '%s %d.%d' */ WIDGET_LIBGLADE_ONLY_FMT,
g_string_append_printf path_name, adaptor_iter->title, catalog,
(string, target_major, target_minor);
_("[%s] Object class '%s' from %s %d.%d "
"is only supported in libglade format\n"),
path_name, adaptor_iter->title, catalog,
target_major, target_minor);
support_mask |= GLADE_SUPPORT_LIBGLADE_ONLY; support_mask |= GLADE_SUPPORT_LIBGLADE_ONLY;
} }
@ -1932,19 +2027,13 @@ glade_project_verify_adaptor (GladeProject *project,
{ {
if (string->len) if (string->len)
g_string_append (string, "\n"); g_string_append (string, "\n");
g_string_append_printf
(string, g_string_append_printf (string, WIDGET_LIBGLADE_UNSUPPORTED_MSG);
_("This widget is not supported in libglade format"));
} }
else else
/* translators: reffers to a widget '[%s]' g_string_append_printf (string, WIDGET_LIBGLADE_UNSUPPORTED_FMT,
* loaded from toolkit version '%s %d.%d' */ path_name, adaptor_iter->title, catalog,
g_string_append_printf target_major, target_minor);
(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; support_mask |= GLADE_SUPPORT_LIBGLADE_UNSUPPORTED;
} }
@ -1955,18 +2044,13 @@ glade_project_verify_adaptor (GladeProject *project,
{ {
if (string->len) if (string->len)
g_string_append (string, "\n"); g_string_append (string, "\n");
g_string_append_printf
(string, _("This widget is deprecated")); g_string_append_printf (string, WIDGET_DEPRECATED_MSG);
} }
else else
/* translators: reffers to a widget '[%s]' g_string_append_printf (string, WIDGET_DEPRECATED_FMT,
* loaded from toolkit version '%s %d.%d' */ path_name, adaptor_iter->title, catalog,
g_string_append_printf target_major, target_minor);
(string,
_("[%s] Object class '%s' from %s %d.%d "
"is deprecated\n"),
path_name, adaptor_iter->title, catalog,
target_major, target_minor);
support_mask |= GLADE_SUPPORT_DEPRECATED; support_mask |= GLADE_SUPPORT_DEPRECATED;
} }
@ -1974,6 +2058,7 @@ glade_project_verify_adaptor (GladeProject *project,
} }
if (mask) if (mask)
*mask = support_mask; *mask = support_mask;
} }
/** /**

View File

@ -104,6 +104,10 @@ glade_property_class_new (gpointer handle)
/* Initialize them to the base version */ /* Initialize them to the base version */
property_class->version_since_major = GWA_VERSION_SINCE_MAJOR (handle); property_class->version_since_major = GWA_VERSION_SINCE_MAJOR (handle);
property_class->version_since_minor = GWA_VERSION_SINCE_MINOR (handle); property_class->version_since_minor = GWA_VERSION_SINCE_MINOR (handle);
property_class->builder_since_major = GWA_BUILDER_SINCE_MAJOR (handle);
property_class->builder_since_minor = GWA_BUILDER_SINCE_MINOR (handle);
return property_class; return property_class;
} }
@ -1581,6 +1585,11 @@ glade_property_class_update_from_node (GladeXmlNode *node,
&klass->version_since_major, &klass->version_since_major,
&klass->version_since_minor); &klass->version_since_minor);
glade_xml_get_property_version
(node, GLADE_TAG_BUILDER_SINCE,
&klass->builder_since_major,
&klass->builder_since_minor);
/* Get the Parameters */ /* Get the Parameters */
if ((child = glade_xml_search_child (node, GLADE_TAG_PARAMETERS)) != NULL) if ((child = glade_xml_search_child (node, GLADE_TAG_PARAMETERS)) != NULL)
klass->parameters = glade_parameter_list_new_from_node (klass->parameters, child); klass->parameters = glade_parameter_list_new_from_node (klass->parameters, child);

View File

@ -46,10 +46,12 @@ struct _GladePropertyClass
* was created for. * was created for.
*/ */
gint version_since_major; /* Version in which this property was
* introduced guint16 version_since_major; /* Version in which this property was */
*/ guint16 version_since_minor; /* introduced. */
gint version_since_minor;
guint16 builder_since_major; /* Version in which this property became */
guint16 builder_since_minor; /* available in GtkBuilder format */
/* For catalogs that support libglade: */ /* For catalogs that support libglade: */
gboolean libglade_only; /* Mark special libglade virtual properties */ gboolean libglade_only; /* Mark special libglade virtual properties */

View File

@ -43,9 +43,6 @@ struct _GladeProperty
GValue *value; /* The value of the property GValue *value; /* The value of the property
*/ */
gboolean sensitive; /* Whether this property is sensitive (if the
* property is "optional" this takes precedence).
*/
gchar *insensitive_tooltip; /* Tooltip to display when in insensitive state gchar *insensitive_tooltip; /* Tooltip to display when in insensitive state
* (used to explain why the property is * (used to explain why the property is
* insensitive) * insensitive)
@ -56,34 +53,37 @@ struct _GladeProperty
* (used to explain why the property is * (used to explain why the property is
* insensitive) * insensitive)
*/ */
gboolean support_disabled; /* Whether this property is disabled due guint support_disabled : 1; /* Whether this property is disabled due
* to format conflicts * to format conflicts
*/ */
gboolean enabled; /* Enabled is a flag that is used for GladeProperties guint sensitive : 1; /* Whether this property is sensitive (if the
* that have the optional flag set to let us know * property is "optional" this takes precedence).
* if this widget has this setting enabled or */
* not. (Like default size, it can be specified or
* unspecified). This flag also sets the state
* of the property->input state for the loaded
* widget.
*/
gboolean save_always; /* Used to make a special case exception and always guint enabled : 1; /* Enabled is a flag that is used for GladeProperties
* save this property regardless of what the default * that have the optional flag set to let us know
* value is (used for some special cases like properties * if this widget has this setting enabled or
* that are assigned initial values in composite widgets * not. (Like default size, it can be specified or
* or derived widget code). * unspecified). This flag also sets the state
*/ * of the property->input state for the loaded
* widget.
*/
guint save_always : 1; /* Used to make a special case exception and always
* save this property regardless of what the default
* value is (used for some special cases like properties
* that are assigned initial values in composite widgets
* or derived widget code).
*/
/* Used only for translatable strings. */ /* Used only for translatable strings. */
gboolean i18n_translatable; guint i18n_translatable : 1;
gboolean i18n_has_context; guint i18n_has_context : 1;
gchar *i18n_context; gchar *i18n_context;
gchar *i18n_comment; gchar *i18n_comment;
gint syncing; /* Avoid recursion while synchronizing object with value. gint syncing; /* Avoid recursion while synchronizing object with value */
*/
gint sync_tolerance; gint sync_tolerance;
}; };

View File

@ -387,9 +387,14 @@ gwa_clone_parent_properties (GladeWidgetAdaptor *adaptor, gboolean is_packing)
/* Reset versioning in derived catalogs just once */ /* Reset versioning in derived catalogs just once */
if (strcmp (adaptor->priv->catalog, if (strcmp (adaptor->priv->catalog,
parent_adaptor->priv->catalog)) parent_adaptor->priv->catalog))
{
pclass->version_since_major = pclass->version_since_major =
pclass->version_since_major = 0; pclass->version_since_major = 0;
pclass->builder_since_major =
pclass->builder_since_major = 0;
}
properties = g_list_prepend (properties, pclass); properties = g_list_prepend (properties, pclass);
} }
} }
@ -602,9 +607,14 @@ glade_widget_adaptor_constructor (GType type,
/* Reset version numbering if we're in a new catalog just once */ /* Reset version numbering if we're in a new catalog just once */
if (parent_adaptor && if (parent_adaptor &&
strcmp (adaptor->priv->catalog, parent_adaptor->priv->catalog)) strcmp (adaptor->priv->catalog, parent_adaptor->priv->catalog))
{
GLADE_WIDGET_ADAPTOR_GET_CLASS(adaptor)->version_since_major = GLADE_WIDGET_ADAPTOR_GET_CLASS(adaptor)->version_since_major =
GLADE_WIDGET_ADAPTOR_GET_CLASS(adaptor)->version_since_minor = 0; GLADE_WIDGET_ADAPTOR_GET_CLASS(adaptor)->version_since_minor = 0;
GLADE_WIDGET_ADAPTOR_GET_CLASS(adaptor)->builder_since_major =
GLADE_WIDGET_ADAPTOR_GET_CLASS(adaptor)->builder_since_minor = 0;
}
/* Copy parent actions */ /* Copy parent actions */
if (parent_adaptor) if (parent_adaptor)
{ {
@ -1488,6 +1498,11 @@ gwa_derived_class_init (GladeWidgetAdaptorClass *adaptor_class,
/* Load catalog symbols from module */ /* Load catalog symbols from module */
if (module) gwa_extend_with_node_load_sym (adaptor_class, node, module); if (module) gwa_extend_with_node_load_sym (adaptor_class, node, module);
glade_xml_get_property_version
(node, GLADE_TAG_BUILDER_SINCE,
&adaptor_class->builder_since_major,
&adaptor_class->builder_since_minor);
glade_xml_get_property_version glade_xml_get_property_version
(node, GLADE_TAG_VERSION_SINCE, (node, GLADE_TAG_VERSION_SINCE,
&adaptor_class->version_since_major, &adaptor_class->version_since_major,

View File

@ -67,8 +67,8 @@ typedef struct _GladeWidgetAdaptorClass GladeWidgetAdaptorClass;
* *
* Checks major version in which this widget was introduced * Checks major version in which this widget was introduced
*/ */
#define GWA_VERSION_SINCE_MAJOR(obj) \ #define GWA_VERSION_SINCE_MAJOR(obj) \
((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->version_since_major : FALSE) ((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->version_since_major : 0)
/** /**
* GWA_VERSION_SINCE_MINOR: * GWA_VERSION_SINCE_MINOR:
@ -76,8 +76,27 @@ typedef struct _GladeWidgetAdaptorClass GladeWidgetAdaptorClass;
* *
* Checks minor version in which this widget was introduced * Checks minor version in which this widget was introduced
*/ */
#define GWA_VERSION_SINCE_MINOR(obj) \ #define GWA_VERSION_SINCE_MINOR(obj) \
((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->version_since_minor : FALSE) ((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->version_since_minor : 0)
/**
* GWA_BUILDER_SINCE_MAJOR:
* @obj: A #GladeWidgetAdaptor
*
* Checks major version in which this widget introduced gtkbuilder support
*/
#define GWA_BUILDER_SINCE_MAJOR(obj) \
((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->builder_since_major : 0)
/**
* GWA_BUILDER_SINCE_MINOR:
* @obj: A #GladeWidgetAdaptor
*
* Checks minor version in which this widget introduced gtkbuilder support
*/
#define GWA_BUILDER_SINCE_MINOR(obj) \
((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->builder_since_minor : 0)
/** /**
* GWA_IS_TOPLEVEL: * GWA_IS_TOPLEVEL:
@ -590,29 +609,31 @@ struct _GladeWidgetAdaptorClass
{ {
GObjectClass parent_class; GObjectClass parent_class;
gint version_since_major; /* Version in which this widget was guint16 version_since_major; /* Version in which this widget was */
* introduced guint16 version_since_minor; /* introduced. */
*/
gint version_since_minor;
gboolean deprecated; /* If this widget is currently guint16 builder_since_major; /* Version in which this widget became */
* deprecated guint16 builder_since_minor; /* available in GtkBuilder format */
*/
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...
*/
gboolean toplevel; /* If this class is toplevel */
gboolean use_placeholders; /* Whether or not to use placeholders guint deprecated : 1; /* If this widget is currently
* to interface with child widgets. * deprecated
*/ */
guint libglade_unsupported : 1; /* If this widget is not supported
* by libglade
*/
guint libglade_only : 1; /* If this widget is only supported
* by libglade
*/
guint fixed : 1; /* If this is a Container, use free-form
* placement with drag/resize/paste at mouse...
*/
guint toplevel : 1; /* If this class is toplevel */
guint use_placeholders : 1; /* Whether or not to use placeholders
* to interface with child widgets.
*/
gint default_width; /* Default width in GladeDesignLayout */ gint default_width; /* Default width in GladeDesignLayout */
gint default_height; /* Default height in GladeDesignLayout */ gint default_height; /* Default height in GladeDesignLayout */
@ -673,12 +694,12 @@ struct _GladeWidgetAdaptorClass
GladeChildSetPropertyFunc child_set_property; /* Sets/Gets a packing property */ GladeChildSetPropertyFunc child_set_property; /* Sets/Gets a packing property */
GladeChildGetPropertyFunc child_get_property; /* for this child */ GladeChildGetPropertyFunc child_get_property; /* for this child */
GladeReplaceChildFunc replace_child; /* This method replaces a GladeReplaceChildFunc replace_child; /* This method replaces a
* child widget with * child widget with
* another one: it's used to * another one: it's used to
* replace a placeholder with * replace a placeholder with
* a widget and viceversa. * a widget and viceversa.
*/ */
GladeActionActivateFunc action_activate; /* This method is used to catch actions */ GladeActionActivateFunc action_activate; /* This method is used to catch actions */
GladeChildActionActivateFunc child_action_activate; /* This method is used to catch packing actions */ GladeChildActionActivateFunc child_action_activate; /* This method is used to catch packing actions */

View File

@ -89,6 +89,7 @@ typedef enum {
#define GLADE_TAG_VERSION "version" #define GLADE_TAG_VERSION "version"
#define GLADE_TAG_TARGETABLE "targetable" #define GLADE_TAG_TARGETABLE "targetable"
#define GLADE_TAG_VERSION_SINCE "since" #define GLADE_TAG_VERSION_SINCE "since"
#define GLADE_TAG_BUILDER_SINCE "gtkbuilder-since"
#define GLADE_TAG_DEPRECATED "deprecated" #define GLADE_TAG_DEPRECATED "deprecated"
#define GLADE_TAG_LIBGLADE_ONLY "libglade-only" #define GLADE_TAG_LIBGLADE_ONLY "libglade-only"

View File

@ -1,6 +1,6 @@
<glade-catalog name="gtk+" <glade-catalog name="gtk+"
version="2.14" version="2.16"
targetable="2.12,2.10,2.8" targetable="2.14,2.12,2.10,2.8"
supports="libglade,gtkbuilder" supports="libglade,gtkbuilder"
icon-prefix="gtk" icon-prefix="gtk"
library="gladegtk" library="gladegtk"
@ -26,6 +26,7 @@
<signal id="drag-failed" since="2.12"/> <signal id="drag-failed" since="2.12"/>
<signal id="keynav-failed" since="2.12"/> <signal id="keynav-failed" since="2.12"/>
<signal id="query-tooltip" since="2.12"/> <signal id="query-tooltip" since="2.12"/>
<signal id="damage-event" since="2.14"/>
</signals> </signals>
<actions> <actions>
@ -104,6 +105,7 @@
</displayable-values> </displayable-values>
</property> </property>
<property id="window" disabled="True" since="2.14"/>
<property id="name" disabled="True"/> <property id="name" disabled="True"/>
<property id="parent" disabled="True"/> <property id="parent" disabled="True"/>
<property id="style" disabled="True"/> <property id="style" disabled="True"/>
@ -412,7 +414,7 @@ embedded in another object</_tooltip>
</properties> </properties>
</glade-widget-class> </glade-widget-class>
<glade-widget-class name="GtkMenuShell" _title="Menu Shell" use-placeholders="False"> <glade-widget-class name="GtkMenuShell" _title="Menu Shell" use-placeholders="False" gtkbuilder-since="2.16">
<post-create-function>empty</post-create-function> <post-create-function>empty</post-create-function>
<add-child-function>glade_gtk_menu_shell_add_child</add-child-function> <add-child-function>glade_gtk_menu_shell_add_child</add-child-function>
<remove-child-function>glade_gtk_menu_shell_remove_child</remove-child-function> <remove-child-function>glade_gtk_menu_shell_remove_child</remove-child-function>
@ -435,7 +437,8 @@ embedded in another object</_tooltip>
</packing-properties> </packing-properties>
</glade-widget-class> </glade-widget-class>
<glade-widget-class name="GtkMenuItem" generic-name="menuitem" _title="Menu Item" use-placeholders="False"> <glade-widget-class name="GtkMenuItem" generic-name="menuitem" _title="Menu Item" use-placeholders="False"
gtkbuilder-since="2.16">
<constructor-function>glade_gtk_menu_item_constructor</constructor-function> <constructor-function>glade_gtk_menu_item_constructor</constructor-function>
<post-create-function>glade_gtk_menu_item_post_create</post-create-function> <post-create-function>glade_gtk_menu_item_post_create</post-create-function>
<get-children-function>glade_gtk_menu_item_get_children</get-children-function> <get-children-function>glade_gtk_menu_item_get_children</get-children-function>
@ -450,6 +453,9 @@ embedded in another object</_tooltip>
<action id="launch_editor" _name="Edit&#8230;" stock="gtk-edit" important="True"/> <action id="launch_editor" _name="Edit&#8230;" stock="gtk-edit" important="True"/>
</actions> </actions>
<properties> <properties>
<property id="accel-path" since="2.14"/>
<property id="right-justified" since="2.14"/>
<property id="width-chars" since="2.14"/>
<property id="label" _name="Label" translatable="True"> <property id="label" _name="Label" translatable="True">
<parameter-spec> <parameter-spec>
<type>GParamString</type> <type>GParamString</type>
@ -730,7 +736,8 @@ embedded in another object</_tooltip>
<property id="label" default="label" translatable="True" custom-layout="True"> <property id="label" default="label" translatable="True" custom-layout="True">
<visible-lines>2</visible-lines> <visible-lines>2</visible-lines>
</property> </property>
<property id="glade-attributes" _name="Attributes" save="False" custom-layout="True"> <property id="glade-attributes" _name="Attributes" save="False" custom-layout="True"
libglade-unsupported="True" gtkbuilder-since="2.16">
<parameter-spec> <parameter-spec>
<type>GParamBoxed</type> <type>GParamBoxed</type>
<value-type>GladeAttrGList</value-type> <value-type>GladeAttrGList</value-type>
@ -958,14 +965,18 @@ embedded in another object</_tooltip>
</properties> </properties>
</glade-widget-class> </glade-widget-class>
<glade-widget-class name="GtkScaleButton" generic-name="scalebutton" _title="Scale Button" since="2.12"/> <glade-widget-class name="GtkScaleButton" generic-name="scalebutton" _title="Scale Button" since="2.12">
<properties>
<property id="orientation" since="2.14"/>
</properties>
</glade-widget-class>
<glade-widget-class name="GtkVolumeButton" generic-name="volumebutton" _title="Volume Button"/> <glade-widget-class name="GtkVolumeButton" generic-name="volumebutton" _title="Volume Button"/>
<glade-widget-class name="GtkFileChooserWidget" generic-name="filechooserwidget" _title="File Chooser Widget"> <glade-widget-class name="GtkFileChooserWidget" generic-name="filechooserwidget" _title="File Chooser Widget">
<post-create-function>glade_gtk_file_chooser_widget_post_create</post-create-function> <post-create-function>glade_gtk_file_chooser_widget_post_create</post-create-function>
<properties> <properties>
<property id="size" default="1" query="False" /> <property id="size" default="1" query="False" />
<property id="extra-widget" parentless-widget="True" libglade-unsupported="True"/> <property id="extra-widget" parentless-widget="True" libglade-unsupported="True"/>
<property id="preview-widget" parentless-widget="True" libglade-unsupported="True"/> <property id="preview-widget" parentless-widget="True" libglade-unsupported="True"/>
<property id="filter" libglade-unsupported="True"/> <property id="filter" libglade-unsupported="True"/>
@ -1076,6 +1087,10 @@ embedded in another object</_tooltip>
<value id="GTK_PROGRESS_DISCRETE" _name="Discrete"/> <value id="GTK_PROGRESS_DISCRETE" _name="Discrete"/>
</displayable-values> </displayable-values>
</property> </property>
<property id="min-horizontal-bar-height" since="2.14"/>
<property id="min-horizontal-bar-width" since="2.14"/>
<property id="min-vertical-bar-height" since="2.14"/>
<property id="min-vertical-bar-width" since="2.14"/>
</properties> </properties>
</glade-widget-class> </glade-widget-class>
@ -1290,7 +1305,13 @@ embedded in another object</_tooltip>
<glade-widget-class name="GtkVScale" generic-name="vscale" _title="Vertical Scale"/> <glade-widget-class name="GtkVScale" generic-name="vscale" _title="Vertical Scale"/>
<glade-widget-class name="GtkCalendar" generic-name="calendar" _title="Calendar"/> <glade-widget-class name="GtkCalendar" generic-name="calendar" _title="Calendar">
<properties>
<property id="detail-height-rows" since="2.14"/>
<property id="detail-width-chars" since="2.14"/>
<property id="show-details" since="2.14"/>
</properties>
</glade-widget-class>
<glade-widget-class name="GtkMenu" generic-name="menu" _title="Popup Menu" toplevel="True"> <glade-widget-class name="GtkMenu" generic-name="menu" _title="Popup Menu" toplevel="True">
<constructor-function>glade_gtk_menu_constructor</constructor-function> <constructor-function>glade_gtk_menu_constructor</constructor-function>
@ -1301,7 +1322,16 @@ embedded in another object</_tooltip>
<actions> <actions>
<action id="launch_editor" _name="Edit&#8230;" stock="gtk-edit" important="True"/> <action id="launch_editor" _name="Edit&#8230;" stock="gtk-edit" important="True"/>
</actions> </actions>
</glade-widget-class>
<properties>
<property id="accel-group" since="2.14"/>
<property id="accel-path" since="2.14"/>
<property id="active" disabled="True" since="2.14"/>
<property id="attach-widget" disabled="True" since="2.14"/>
<property id="monitor" disabled="True" since="2.14"/>
</properties>
</glade-widget-class>
<glade-widget-class name="GtkHScrollbar" generic-name="hscrollbar" _title="Horizontal Scrollbar"/> <glade-widget-class name="GtkHScrollbar" generic-name="hscrollbar" _title="Horizontal Scrollbar"/>
@ -1692,9 +1722,10 @@ embedded in another object</_tooltip>
<glade-widget-class name="GtkLinkButton" generic-name="linkbutton" _title="Link Button"> <glade-widget-class name="GtkLinkButton" generic-name="linkbutton" _title="Link Button">
<properties> <properties>
<!-- The pspec of this prop says that the default is http://www.gtk.org but gtk_link_button_init() does not set it up <!-- The pspec of this prop says that the default is http://www.gtk.org but gtk_link_button_init() does
do we need to override it to avoid seting a NULL value. --> not set it up... do we need to override it to avoid seting a NULL value ? -->
<property id="uri" default="http://glade.gnome.org" since="2.10"/> <property id="uri" default="http://glade.gnome.org" since="2.10"/>
<property id="visited" since="2.14"/>
</properties> </properties>
</glade-widget-class> </glade-widget-class>
@ -2606,6 +2637,11 @@ embedded in another object</_tooltip>
<glade-widget-class name="GtkCellRendererCombo" generic-name="cellrenderercombo" _title="Combo Renderer" <glade-widget-class name="GtkCellRendererCombo" generic-name="cellrenderercombo" _title="Combo Renderer"
libglade-unsupported="True"> libglade-unsupported="True">
<signals>
<signal id="changed" since="2.14"/>
</signals>
<properties> <properties>
<property id="has-entry" save="False" custom-layout="True"/> <property id="has-entry" save="False" custom-layout="True"/>
<property id="attr-has-entry" _name="Has Entry column" save="False" default="-1" custom-layout="True"> <property id="attr-has-entry" _name="Has Entry column" save="False" default="-1" custom-layout="True">
@ -2989,7 +3025,11 @@ embedded in another object</_tooltip>
<glade-widget-class name="GtkStatusIcon" generic-name="statusicon" _title="Status Icon" <glade-widget-class name="GtkStatusIcon" generic-name="statusicon" _title="Status Icon"
libglade-unsupported="True" toplevel="True"/> libglade-unsupported="True" toplevel="True">
<properties>
<property id="gicon" disabled="True" since="2.14"/>
</properties>
</glade-widget-class>
<glade-widget-class name="GtkTextBuffer" generic-name="textbuffer" _title="Text Buffer" <glade-widget-class name="GtkTextBuffer" generic-name="textbuffer" _title="Text Buffer"
libglade-unsupported="True" toplevel="True"> libglade-unsupported="True" toplevel="True">