From 2d3e7d7c9c77ecb39ffb2bc0f91d09515b855cb2 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Sun, 6 Jul 2003 06:33:15 +0000 Subject: [PATCH] 2003-07-06 Mike Kestner * api/gtk-api.xml : regenerated * parser/GAPI/Metadata.pm : add support for property attribute alteration. * sources/Gtk.metadata : rule to mark TextTag.Weight as PangoWeight instead of gint. fixes 45214. svn path=/trunk/gtk-sharp/; revision=15977 --- ChangeLog | 8 ++++++++ api/gtk-api.xml | 2 +- parser/GAPI/Metadata.pm | 28 ++++++++++++++++++++++++++-- sources/Gtk.metadata | 11 +++++++++++ 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index cfb91f497..e276c6582 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-07-06 Mike Kestner + + * api/gtk-api.xml : regenerated + * parser/GAPI/Metadata.pm : add support for property + attribute alteration. + * sources/Gtk.metadata : rule to mark TextTag.Weight as + PangoWeight instead of gint. fixes 45214. + 2003-07-05 Mike Kestner * api/*-api.xml : regenerated diff --git a/api/gtk-api.xml b/api/gtk-api.xml index 585445aee..4d98e0268 100644 --- a/api/gtk-api.xml +++ b/api/gtk-api.xml @@ -6766,7 +6766,7 @@ - + diff --git a/parser/GAPI/Metadata.pm b/parser/GAPI/Metadata.pm index 8e6c8ca80..d7ae5a23d 100644 --- a/parser/GAPI/Metadata.pm +++ b/parser/GAPI/Metadata.pm @@ -25,15 +25,18 @@ sub parseClass { my ($node, $classes) = @_; my %methods = (); my %signals = (); + my %properties = (); my @attrs = $node->attributes; my $class_name = $attrs[0]->value; - ${$classes}{$class_name} = [\%methods, \%signals]; + ${$classes}{$class_name} = [\%methods, \%signals, \%properties]; for ($method_node = $node->firstChild; $method_node != undef; $method_node = $method_node->nextSibling ()) { if ($method_node->nodeName eq "method" or $method_node->nodeName eq "constructor") { $methods{$method_node->firstChild->nodeValue} = 1; } elsif ($method_node->nodeName eq "signal") { $signals{$method_node->firstChild->nodeValue} = 1; + } elsif ($method_node->nodeName eq "property") { + $properties{$method_node->firstChild->nodeValue} = 1; } } } @@ -191,12 +194,13 @@ sub fixupNamespace { my %classes = %$classes_ref; $methods_ref = $classes{$class}[0]; $signals_ref = $classes{$class}[1]; + $properties_ref = $classes{$class}[2]; if ({%$classes_ref}->{$class}) { addClassData ($doc, $node, $class, $data_list_ref); } - next if not ($methods_ref or $signals_ref); + next if not ($methods_ref or $signals_ref or $properties_ref); for ($method_node = $node->firstChild; $method_node; $method_node = $method_node->nextSibling ()) { next if not ($method_node->nodeName eq "method" or $method_node->nodeName eq "constructor"); @@ -226,6 +230,26 @@ sub fixupNamespace { fixupParams ($signal_node, $data_list_ref); } + for ($property_node = $node->firstChild; $property_node; $property_node = $property_node->nextSibling ()) { + next if $property_node->nodeName ne "property"; + my $property; + foreach $attr ($property_node->attributes) { + if ($attr->name eq "name") { + $property = $attr->value; + last; + } + } + next if not ${$properties_ref}{$property}; + + foreach $data (@$data_list_ref) { + if ($$data[1] eq "property") { + $property_node->setAttribute ($$data[5], $$data[6]); + next; + } + } + + } + } } } diff --git a/sources/Gtk.metadata b/sources/Gtk.metadata index 38ebeb521..9ff2af482 100644 --- a/sources/Gtk.metadata +++ b/sources/Gtk.metadata @@ -729,6 +729,17 @@ + + + Weight + + + + type + PangoWeight + + + InsertPixbuf