summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gladeui/glade-project.c79
-rw-r--r--gladeui/glade-property-class.c22
-rw-r--r--gladeui/glade-property-class.h1
-rw-r--r--gladeui/glade-signal-class.c26
-rw-r--r--gladeui/glade-signal-class.h3
-rw-r--r--gladeui/glade-widget-adaptor.c8
6 files changed, 114 insertions, 25 deletions
diff --git a/gladeui/glade-project.c b/gladeui/glade-project.c
index b1c71e8c..3a4c4754 100644
--- a/gladeui/glade-project.c
+++ b/gladeui/glade-project.c
@@ -2088,6 +2088,11 @@ glade_project_preview (GladeProject *project, GladeWidget *gwidget)
Verify code here (versioning, incompatability checks)
*******************************************************************/
+/* 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).
+ */
+
/* translators: refers 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")
@@ -2101,11 +2106,6 @@ glade_project_preview (GladeProject *project, GladeWidget *gwidget)
#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).
- */
-
/* translators: refers 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 " \
@@ -2119,22 +2119,33 @@ glade_project_preview (GladeProject *project, GladeWidget *gwidget)
#define PACK_PROP_VERSION_CONFLICT_FMT _("[%s] Packing property '%s' of object class '%s' " \
"was introduced in %s %d.%d\n")
-/* translators: refers 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")
+#define PROP_DEPRECATED_MSG _("This property is deprecated")
+
+/* translators: refers to a property '%s' of widget '[%s]' */
+#define PROP_DEPRECATED_FMT _("[%s] Property '%s' of object class '%s' is deprecated")
/* translators: refers to a signal in toolkit version '%s %d.%d'
* and a project targeting toolkit version '%s %d.%d' */
#define SIGNAL_VERSION_CONFLICT_MSGFMT _("This signal was introduced in %s %d.%d " \
"while project targets %s %d.%d")
+/* translators: refers 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")
+
+#define SIGNAL_DEPRECATED_MSG _("This signal is deprecated")
+
+/* translators: refers to a signal '%s' of widget '[%s]' */
+#define SIGNAL_DEPRECATED_FMT _("[%s] Signal '%s' of object class '%s' is deprecated")
+
static void
glade_project_verify_property_internal (GladeProject *project,
GladeProperty *property,
const gchar *path_name,
GString *string,
- gboolean forwidget)
+ gboolean forwidget,
+ gboolean saving)
{
GladeWidgetAdaptor *adaptor, *prop_adaptor;
GladePropertyClass *pclass;
@@ -2179,6 +2190,17 @@ glade_project_verify_property_internal (GladeProject *project,
glade_property_class_since_major (pclass),
glade_property_class_since_minor (pclass));
}
+ else if (!saving && glade_property_class_deprecated (pclass))
+ {
+ if (forwidget)
+ glade_property_set_support_warning (property, FALSE, PROP_DEPRECATED_MSG);
+ else
+ g_string_append_printf (string,
+ PROP_DEPRECATED_FMT,
+ path_name,
+ glade_property_class_get_name (pclass),
+ glade_widget_adaptor_get_title (adaptor));
+ }
else if (forwidget)
glade_property_set_support_warning (property, FALSE, NULL);
@@ -2189,7 +2211,8 @@ static void
glade_project_verify_properties_internal (GladeWidget *widget,
const gchar *path_name,
GString *string,
- gboolean forwidget)
+ gboolean forwidget,
+ gboolean saving)
{
GList *list;
GladeProperty *property;
@@ -2199,7 +2222,7 @@ glade_project_verify_properties_internal (GladeWidget *widget,
property = list->data;
glade_project_verify_property_internal (glade_widget_get_project (widget),
property, path_name,
- string, forwidget);
+ string, forwidget, saving);
}
/* Sometimes widgets on the clipboard have packing props with no parent */
@@ -2209,7 +2232,7 @@ glade_project_verify_properties_internal (GladeWidget *widget,
{
property = list->data;
glade_project_verify_property_internal (glade_widget_get_project (widget),
- property, path_name, string, forwidget);
+ property, path_name, string, forwidget, saving);
}
}
}
@@ -2219,7 +2242,8 @@ glade_project_verify_signal_internal (GladeWidget *widget,
GladeSignal *signal,
const gchar *path_name,
GString *string,
- gboolean forwidget)
+ gboolean forwidget,
+ gboolean saving)
{
GladeSignalClass *signal_class;
GladeWidgetAdaptor *adaptor;
@@ -2264,6 +2288,17 @@ glade_project_verify_signal_internal (GladeWidget *widget,
glade_signal_class_since_major (signal_class),
glade_signal_class_since_minor (signal_class));
}
+ else if (!saving && glade_signal_class_deprecated (signal_class))
+ {
+ if (forwidget)
+ glade_signal_set_support_warning (signal, SIGNAL_DEPRECATED_MSG);
+ else
+ g_string_append_printf (string,
+ SIGNAL_DEPRECATED_FMT,
+ path_name,
+ glade_signal_get_name (signal),
+ glade_widget_adaptor_get_title (adaptor));
+ }
else if (forwidget)
glade_signal_set_support_warning (signal, NULL);
@@ -2282,20 +2317,21 @@ glade_project_verify_property (GladeProperty *property)
project = glade_widget_get_project (widget);
if (project)
- glade_project_verify_property_internal (project, property, NULL, NULL, TRUE);
+ glade_project_verify_property_internal (project, property, NULL, NULL, TRUE, FALSE);
}
void
glade_project_verify_signal (GladeWidget *widget, GladeSignal *signal)
{
- glade_project_verify_signal_internal (widget, signal, NULL, NULL, TRUE);
+ glade_project_verify_signal_internal (widget, signal, NULL, NULL, TRUE, FALSE);
}
static void
glade_project_verify_signals (GladeWidget *widget,
const gchar *path_name,
GString *string,
- gboolean forwidget)
+ gboolean forwidget,
+ gboolean saving)
{
GladeSignal *signal;
GList *signals, *list;
@@ -2306,7 +2342,7 @@ glade_project_verify_signals (GladeWidget *widget,
{
signal = list->data;
glade_project_verify_signal_internal (widget, signal, path_name,
- string, forwidget);
+ string, forwidget, saving);
}
g_list_free (signals);
}
@@ -2332,8 +2368,8 @@ glade_project_verify_properties (GladeWidget *widget)
if (!project || project->priv->loading)
return;
- glade_project_verify_properties_internal (widget, NULL, NULL, TRUE);
- glade_project_verify_signals (widget, NULL, NULL, TRUE);
+ glade_project_verify_properties_internal (widget, NULL, NULL, TRUE, FALSE);
+ glade_project_verify_signals (widget, NULL, NULL, TRUE, FALSE);
glade_widget_support_changed (widget);
}
@@ -2405,9 +2441,8 @@ glade_project_verify (GladeProject *project, gboolean saving)
glade_project_verify_adaptor (project, glade_widget_get_adaptor (widget),
path_name, string, saving, FALSE, NULL);
- glade_project_verify_properties_internal (widget, path_name, string,
- FALSE);
- glade_project_verify_signals (widget, path_name, string, FALSE);
+ glade_project_verify_properties_internal (widget, path_name, string, FALSE, saving);
+ glade_project_verify_signals (widget, path_name, string, FALSE, saving);
g_free (path_name);
}
diff --git a/gladeui/glade-property-class.c b/gladeui/glade-property-class.c
index 75fcaf7f..00bfa92c 100644
--- a/gladeui/glade-property-class.c
+++ b/gladeui/glade-property-class.c
@@ -176,6 +176,8 @@ struct _GladePropertyClass
* in the project
*/
+ guint deprecated : 1; /* True if this property is deprecated */
+
gdouble weight; /* This will determine the position of this property in
* the editor.
*/
@@ -229,9 +231,10 @@ glade_property_class_new (GladeWidgetAdaptor *adaptor,
property_class->weight = -1.0;
property_class->parentless_widget = FALSE;
- /* Initialize them to the base version */
+ /* Initialize property versions & deprecated to adaptor */
property_class->version_since_major = GWA_VERSION_SINCE_MAJOR (adaptor);
property_class->version_since_minor = GWA_VERSION_SINCE_MINOR (adaptor);
+ property_class->deprecated = GWA_DEPRECATED (adaptor);
return property_class;
}
@@ -1478,6 +1481,13 @@ glade_property_class_since_minor (GladePropertyClass *property_class)
return property_class->version_since_minor;
}
+gboolean
+glade_property_class_deprecated (GladePropertyClass *property_class)
+{
+ g_return_val_if_fail (GLADE_IS_PROPERTY_CLASS (property_class), FALSE);
+
+ return property_class->deprecated;
+}
G_CONST_RETURN gchar *
glade_property_class_id (GladePropertyClass *property_class)
@@ -2089,6 +2099,16 @@ glade_property_class_update_from_node (GladeXmlNode * node,
klass->parentless_widget);
+ glade_xml_get_property_version (node, GLADE_TAG_VERSION_SINCE,
+ &klass->version_since_major,
+ &klass->version_since_minor);
+
+ klass->deprecated =
+ glade_xml_get_property_boolean (node,
+ GLADE_TAG_DEPRECATED,
+ klass->deprecated);
+
+
if ((buf = glade_xml_get_property_string
(node, GLADE_TAG_CREATE_TYPE)) != NULL)
{
diff --git a/gladeui/glade-property-class.h b/gladeui/glade-property-class.h
index 66d9b7dc..a14a8622 100644
--- a/gladeui/glade-property-class.h
+++ b/gladeui/glade-property-class.h
@@ -118,6 +118,7 @@ G_CONST_RETURN gchar *glade_property_class_create_type (GladePropert
guint16 glade_property_class_since_major (GladePropertyClass *property_class);
guint16 glade_property_class_since_minor (GladePropertyClass *property_class);
+gboolean glade_property_class_deprecated (GladePropertyClass *property_class);
GValue *glade_property_class_make_gvalue_from_string (GladePropertyClass *property_class,
const gchar *string,
diff --git a/gladeui/glade-signal-class.c b/gladeui/glade-signal-class.c
index 2f40be53..ce5c8965 100644
--- a/gladeui/glade-signal-class.c
+++ b/gladeui/glade-signal-class.c
@@ -38,6 +38,8 @@ struct _GladeSignalClass
const gchar *name; /* Name of the signal, eg clicked */
const gchar *type; /* Name of the object class that this signal
* belongs to eg GtkButton */
+
+ guint deprecated : 1; /* True if this signal is deprecated */
};
GladeSignalClass *
@@ -66,9 +68,10 @@ glade_signal_class_new (GladeWidgetAdaptor *adaptor,
class->name = (class->query.signal_name);
class->type = g_type_name (for_type);
- /* Initialize signal versions to adaptor version */
+ /* Initialize signal versions & deprecated to adaptor version */
class->version_since_major = GWA_VERSION_SINCE_MAJOR (adaptor);
class->version_since_minor = GWA_VERSION_SINCE_MINOR (adaptor);
+ class->deprecated = GWA_DEPRECATED (adaptor);
return class;
}
@@ -90,6 +93,11 @@ glade_signal_class_update_from_node (GladeSignalClass *signal_class,
glade_xml_get_property_version (node, GLADE_TAG_VERSION_SINCE,
&signal_class->version_since_major,
&signal_class->version_since_minor);
+
+ signal_class->deprecated =
+ glade_xml_get_property_boolean (node,
+ GLADE_TAG_DEPRECATED,
+ signal_class->deprecated);
}
GladeWidgetAdaptor *
@@ -151,3 +159,19 @@ glade_signal_class_since_minor (GladeSignalClass *signal_class)
return signal_class->version_since_minor;
}
+void
+glade_signal_class_set_deprecated (GladeSignalClass *signal_class,
+ gboolean deprecated)
+{
+ g_return_if_fail (signal_class != NULL);
+
+ signal_class->deprecated = deprecated;
+}
+
+gboolean
+glade_signal_class_deprecated (GladeSignalClass *signal_class)
+{
+ g_return_val_if_fail (signal_class != NULL, FALSE);
+
+ return signal_class->deprecated;
+}
diff --git a/gladeui/glade-signal-class.h b/gladeui/glade-signal-class.h
index 5f86f451..46e2a537 100644
--- a/gladeui/glade-signal-class.h
+++ b/gladeui/glade-signal-class.h
@@ -66,6 +66,9 @@ void glade_signal_class_set_since (GladeSignalCl
guint16 glade_signal_class_since_major (GladeSignalClass *signal_class);
guint16 glade_signal_class_since_minor (GladeSignalClass *signal_class);
+void glade_signal_class_set_deprecated (GladeSignalClass *signal_class,
+ gboolean deprecated);
+gboolean glade_signal_class_deprecated (GladeSignalClass *signal_class);
G_END_DECLS
diff --git a/gladeui/glade-widget-adaptor.c b/gladeui/glade-widget-adaptor.c
index 363a444a..adf4f098 100644
--- a/gladeui/glade-widget-adaptor.c
+++ b/gladeui/glade-widget-adaptor.c
@@ -532,7 +532,11 @@ gwa_inherit_signals (GladeWidgetAdaptor *adaptor)
{
parent_signal = node->data;
- /* Reset versioning in derived catalogs just once */
+ /* XXX FIXME: This is questionable, why should derived catalogs
+ * reset the derived signal versions ???
+ *
+ * Reset versioning in derived catalogs just once
+ */
if (strcmp (adaptor->priv->catalog,
parent_adaptor->priv->catalog))
glade_signal_class_set_since (signal, 0, 0);
@@ -540,6 +544,8 @@ gwa_inherit_signals (GladeWidgetAdaptor *adaptor)
glade_signal_class_set_since (signal,
glade_signal_class_since_major (parent_signal),
glade_signal_class_since_minor (parent_signal));
+
+ glade_signal_class_set_deprecated (signal, glade_signal_class_deprecated (parent_signal));
}
}
}