[gtk/expand-margin-cleanup: 1/4] builder-tool: replace some properties
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/expand-margin-cleanup: 1/4] builder-tool: replace some properties
- Date: Wed, 26 Feb 2020 02:00:51 +0000 (UTC)
commit 77ce55b9ac67926c3e61ca1e2a1a2ff4a0a680d4
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Feb 25 17:50:57 2020 -0500
builder-tool: replace some properties
Replace expand by hexpand and vexpand and
margin by margin-left, -right, -top, -bottom.
gtk/tools/gtk-builder-tool-simplify.c | 41 +++++++++++++++++++++++++++--------
1 file changed, 32 insertions(+), 9 deletions(-)
---
diff --git a/gtk/tools/gtk-builder-tool-simplify.c b/gtk/tools/gtk-builder-tool-simplify.c
index 449a367aff..4287c1631a 100644
--- a/gtk/tools/gtk-builder-tool-simplify.c
+++ b/gtk/tools/gtk-builder-tool-simplify.c
@@ -721,15 +721,19 @@ maybe_rename_property (Element *element, MyParserData *data)
struct _Prop {
const char *class;
const char *property;
+ GType type;
PropKind kind;
const char *new_name;
+ const char *alt_names[3];
} props[] = {
- { "GtkPopover", "modal", PROP_KIND_OBJECT, "autohide" },
+ { "GtkPopover", "modal", GTK_TYPE_POPOVER, PROP_KIND_OBJECT, "autohide", { NULL, NULL, NULL } },
+ { "GtkWidget", "expand", GTK_TYPE_WIDGET, PROP_KIND_OBJECT, "hexpand", { "vexpand", NULL, NULL } },
+ { "GtkWidget", "margin", GTK_TYPE_WIDGET, PROP_KIND_OBJECT, "margin-left", { "margin-top",
"margin-right", "margin-bottom" } },
};
- char *canonical_name;
- int i, k;
+ int i, k, l;
PropKind kind;
int prop_name_index = 0;
+ GParamSpec *pspec;
kind = get_prop_kind (element);
@@ -748,22 +752,41 @@ maybe_rename_property (Element *element, MyParserData *data)
if (property_name == NULL)
return;
- canonical_name = g_strdup (property_name);
- g_strdelimit (canonical_name, "_", '-');
+ pspec = get_property_pspec (data, class_name, property_name, kind);
+ if (pspec == NULL)
+ return;
for (k = 0; k < G_N_ELEMENTS (props); k++)
{
- if (strcmp (class_name, props[k].class) == 0 &&
- strcmp (canonical_name, props[k].property) == 0 &&
+ if (pspec->owner_type == props[k].type &&
+ strcmp (pspec->name, props[k].property) == 0 &&
kind == props[k].kind)
{
g_free (element->attribute_values[prop_name_index]);
element->attribute_values[prop_name_index] = g_strdup (props[k].new_name);
+ for (l = 0; l < 3 && props[k].alt_names[l]; l++)
+ {
+ Element *elt;
+ GList *sibling;
+
+ elt = g_new0 (Element, 1);
+ elt->parent = element->parent;
+ elt->element_name = g_strdup (element->element_name);
+ elt->attribute_names = g_strdupv ((char **)element->attribute_names);
+ elt->attribute_values = g_strdupv ((char **)element->attribute_values);
+ elt->data = g_strdup (element->data);
+
+ g_free (elt->attribute_values[prop_name_index]);
+ elt->attribute_values[prop_name_index] = g_strdup (props[k].alt_names[l]);
+
+ sibling = g_list_find (element->parent->children, element);
+ element->parent->children = g_list_insert_before (element->parent->children,
+ sibling,
+ elt);
+ }
break;
}
}
-
- g_free (canonical_name);
}
static Element *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]