2002-08-09 Kristian Rietveld <kris@gtk.org>

* parser/Gtk.metadata: add a bunch of out arg rules, add
       a vararg rule for the ListStore constructor, change method names of
       TreeModel's signal emission methods, remove opaque rule of
       GtkTreeIter, remove null_ok rules of TreeModel.IterNChildren
       and TreeModel.IterNthChild.

       * parser/Metadata.pm: add some code to be able to filter on
       parameter names.

       * generator/Method.cs: a method with accessor args and a non-void
       return value cannot be written as property.

       * sample/Makefile.in, sample/TreeViewDemo.cs: add a simple TreeView
       demo app.

       * gtk/ListStore.custom, gtk/TreeModel.custom, gtk/TreeModelSort.custom,
       gtk/TreeStore.custom, gtk/TreeView.custom: customizations.

svn path=/trunk/gtk-sharp/; revision=6576
This commit is contained in:
Mike Kestner 2002-08-10 19:15:58 +00:00
parent 6365d4113b
commit 8896672938
8 changed files with 288 additions and 115 deletions

View File

@ -1,3 +1,23 @@
2002-08-09 Kristian Rietveld <kris@gtk.org>
* parser/Gtk.metadata: add a bunch of out arg rules, add
a vararg rule for the ListStore constructor, change method names of
TreeModel's signal emission methods, remove opaque rule of
GtkTreeIter, remove null_ok rules of TreeModel.IterNChildren
and TreeModel.IterNthChild.
* parser/Metadata.pm: add some code to be able to filter on
parameter names.
* generator/Method.cs: a method with accessor args and a non-void
return value cannot be written as property.
* sample/Makefile.in, sample/TreeViewDemo.cs: add a simple TreeView
demo app.
* gtk/ListStore.custom, gtk/TreeModel.custom, gtk/TreeModelSort.custom,
gtk/TreeStore.custom, gtk/TreeView.custom: customizations.
2002-08-09 Mike Kestner <mkestner@speakeasy.net>
* generator/ObjectGen.cs (GenerateMapper): guard against IntPtr.Zero

View File

@ -158,7 +158,7 @@ namespace GtkSharp.Generation {
else
safety = "";
is_get = ((parms != null && (parms.IsAccessor || (parms.Count == 0 && s_ret != "void")) || (parms == null && s_ret != "void")) && Name.Length > 3 && Name.Substring(0, 3) == "Get");
is_get = ((parms != null && ((parms.IsAccessor && s_ret == "void") || (parms.Count == 0 && s_ret != "void")) || (parms == null && s_ret != "void")) && Name.Length > 3 && Name.Substring(0, 3) == "Get");
is_set = ((parms != null && (parms.IsAccessor || (parms.Count == 1 && s_ret == "void"))) && (Name.Length > 3 && Name.Substring(0, 3) == "Set"));
if (parms != null) {

View File

@ -5128,20 +5128,20 @@
<method name="GetIter" cname="gtk_tree_model_get_iter">
<return-type type="gboolean"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreePath*" name="path"/>
</parameters>
</method>
<method name="GetIterFirst" cname="gtk_tree_model_get_iter_first">
<return-type type="gboolean"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
</parameters>
</method>
<method name="GetIterFromString" cname="gtk_tree_model_get_iter_from_string">
<return-type type="gboolean"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="const-gchar*" name="path_string"/>
</parameters>
</method>
@ -5175,7 +5175,7 @@
<method name="IterChildren" cname="gtk_tree_model_iter_children">
<return-type type="gboolean"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="parent"/>
</parameters>
</method>
@ -5188,27 +5188,27 @@
<method name="IterNChildren" cname="gtk_tree_model_iter_n_children">
<return-type type="gint"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter" null_ok="1"/>
<parameter type="GtkTreeIter*" name="iter"/>
</parameters>
</method>
<method name="IterNext" cname="gtk_tree_model_iter_next">
<return-type type="gboolean"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
</parameters>
</method>
<method name="IterNthChild" cname="gtk_tree_model_iter_nth_child">
<return-type type="gboolean"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter" null_ok="1"/>
<parameter type="GtkTreeIter*" name="parent" null_ok="1"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="parent"/>
<parameter type="gint" name="n"/>
</parameters>
</method>
<method name="IterParent" cname="gtk_tree_model_iter_parent">
<return-type type="gboolean"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="child"/>
</parameters>
</method>
@ -5218,34 +5218,34 @@
<parameter type="GtkTreeIter*" name="iter"/>
</parameters>
</method>
<method name="ChangeRow" cname="gtk_tree_model_row_changed">
<method name="EmitRowChanged" cname="gtk_tree_model_row_changed">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreePath*" name="path"/>
<parameter type="GtkTreeIter*" name="iter"/>
</parameters>
</method>
<method name="DeleteRow" cname="gtk_tree_model_row_deleted">
<method name="EmitRowDeleted" cname="gtk_tree_model_row_deleted">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreePath*" name="path"/>
</parameters>
</method>
<method name="ToggleRowHasChild" cname="gtk_tree_model_row_has_child_toggled">
<method name="EmitRowHasChildToggled" cname="gtk_tree_model_row_has_child_toggled">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreePath*" name="path"/>
<parameter type="GtkTreeIter*" name="iter"/>
</parameters>
</method>
<method name="InsertRow" cname="gtk_tree_model_row_inserted">
<method name="EmitRowInserted" cname="gtk_tree_model_row_inserted">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreePath*" name="path"/>
<parameter type="GtkTreeIter*" name="iter"/>
</parameters>
</method>
<method name="ReorderRows" cname="gtk_tree_model_rows_reordered">
<method name="EmitRowsReordered" cname="gtk_tree_model_rows_reordered">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreePath*" name="path"/>
@ -8324,7 +8324,7 @@
<method name="Append" cname="gtk_list_store_append">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
</parameters>
</method>
<method name="Clear" cname="gtk_list_store_clear">
@ -8336,21 +8336,21 @@
<method name="Insert" cname="gtk_list_store_insert">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="gint" name="position"/>
</parameters>
</method>
<method name="InsertAfter" cname="gtk_list_store_insert_after">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="sibling"/>
</parameters>
</method>
<method name="InsertBefore" cname="gtk_list_store_insert_before">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="sibling"/>
</parameters>
</method>
@ -8361,7 +8361,7 @@
</parameters>
</constructor>
<constructor cname="gtk_list_store_newv">
<parameters>
<parameters va_type="length_param">
<parameter type="gint" name="n_columns"/>
<parameter type="GType*" name="types"/>
</parameters>
@ -8369,13 +8369,13 @@
<method name="Prepend" cname="gtk_list_store_prepend">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
</parameters>
</method>
<method name="Remove" cname="gtk_list_store_remove">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
</parameters>
</method>
<method name="Set" cname="gtk_list_store_set">
@ -11815,7 +11815,7 @@
<method name="ConvertChildIterToIter" cname="gtk_tree_model_sort_convert_child_iter_to_iter">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="sort_iter"/>
<parameter type="GtkTreeIter*" name="sort_iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="child_iter"/>
</parameters>
</method>
@ -11828,7 +11828,7 @@
<method name="ConvertIterToChildIter" cname="gtk_tree_model_sort_convert_iter_to_child_iter">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="child_iter"/>
<parameter type="GtkTreeIter*" name="child_iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="sorted_iter"/>
</parameters>
</method>
@ -11872,7 +11872,7 @@
<return-type type="gboolean"/>
<parameters>
<parameter type="GtkTreeModel**" name="model"/>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
</parameters>
</method>
<method name="GetTreeView" cname="gtk_tree_selection_get_tree_view">
@ -11977,7 +11977,7 @@
<method name="Append" cname="gtk_tree_store_append">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="parent"/>
</parameters>
</method>
@ -11990,7 +11990,7 @@
<method name="Insert" cname="gtk_tree_store_insert">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="parent"/>
<parameter type="gint" name="position"/>
</parameters>
@ -11998,7 +11998,7 @@
<method name="InsertAfter" cname="gtk_tree_store_insert_after">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="parent"/>
<parameter type="GtkTreeIter*" name="sibling"/>
</parameters>
@ -12006,7 +12006,7 @@
<method name="InsertBefore" cname="gtk_tree_store_insert_before">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="parent"/>
<parameter type="GtkTreeIter*" name="sibling"/>
</parameters>
@ -12039,14 +12039,14 @@
<method name="Prepend" cname="gtk_tree_store_prepend">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
<parameter type="GtkTreeIter*" name="parent"/>
</parameters>
</method>
<method name="Remove" cname="gtk_tree_store_remove">
<return-type type="void"/>
<parameters>
<parameter type="GtkTreeIter*" name="iter"/>
<parameter type="GtkTreeIter*" name="iter" pass_as="out"/>
</parameters>
</method>
<method name="Set" cname="gtk_tree_store_set">
@ -15552,7 +15552,7 @@
</parameters>
</method>
</struct>
<boxed name="TreeIter" cname="GtkTreeIter" opaque="1">
<boxed name="TreeIter" cname="GtkTreeIter">
<field cname="stamp" type="gint"/>
<field cname="user_data" type="gpointer"/>
<field cname="user_data2" type="gpointer"/>

View File

@ -116,15 +116,24 @@ sub fixupParams {
for ($node = $params_node->firstChild; $node; $node = $node->nextSibling ()) {
my $param_type;
my $param_name;
foreach $attr ($node->attributes) {
if ($attr->name eq "type") {
$param_type = $attr->value;
last;
} elsif ($attr->name eq "name") {
$param_name = $attr->value;
}
}
if ($param_type eq $$data[4]) {
$node->setAttribute ($$data[5], $$data[6]);
if ($$data[3] eq "type") {
if ($param_type eq $$data[4]) {
$node->setAttribute ($$data[5], $$data[6]);
}
} elsif ($$data[3] eq "name") {
if ($param_name eq $$data[4]) {
$node->setAttribute ($$data[5], $$data[6]);
}
}
}
}

View File

@ -42,6 +42,94 @@
</attribute>
</data>
</rule>
<rule>
<class name="GtkListStore">
<method>Append</method>
<method>Insert</method>
<method>InsertAfter</method>
<method>InsertBefore</method>
<method>Prepend</method>
<method>Remove</method>
</class>
<data>
<attribute target="param">
<filter level="name">iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModelSort">
<method>ConvertChildIterToIter</method>
</class>
<data>
<attribute target="param">
<filter level="name">sort_iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModel">
<method>GetIter</method>
<method>GetIterFirst</method>
<method>GetIterFromString</method>
<method>IterChildren</method>
<method>IterNext</method>
<method>IterNthChild</method>
<method>IterParent</method>
</class>
<data>
<attribute target="param">
<filter level="name">iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModelSort">
<method>ConvertIterToChildIter</method>
</class>
<data>
<attribute target="param">
<filter level="name">child_iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeSelection">
<method>GetSelected</method>
</class>
<data>
<attribute target="param">
<filter level="name">iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeStore">
<method>Append</method>
<method>Insert</method>
<method>InsertAfter</method>
<method>InsertBefore</method>
<method>Prepend</method>
<method>Remove</method>
</class>
<data>
<attribute target="param">
<filter level="name">iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<!-- variable arguments -->
<rule>
@ -55,6 +143,17 @@
</attribute>
</data>
</rule>
<rule>
<class name="GtkListStore">
<constructor>gtk_list_store_newv</constructor>
</class>
<data>
<attribute target="parameters">
<name>va_type</name>
<value>length_param</value>
</attribute>
</data>
</rule>
<!-- misc -->
<rule>
@ -944,7 +1043,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>DeleteRow</value>
<value>EmitRowDeleted</value>
</attribute>
</data>
</rule>
@ -955,7 +1054,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>ToggleRowHasChild</value>
<value>EmitRowHasChildToggled</value>
</attribute>
</data>
</rule>
@ -966,7 +1065,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>InsertRow</value>
<value>EmitRowInserted</value>
</attribute>
</data>
</rule>
@ -977,7 +1076,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>ChangeRow</value>
<value>EmitRowChanged</value>
</attribute>
</data>
</rule>
@ -988,7 +1087,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>ReorderRows</value>
<value>EmitRowsReordered</value>
</attribute>
</data>
</rule>
@ -1535,39 +1634,6 @@
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeIter"/>
<data>
<attribute target="class">
<name>opaque</name>
<value>1</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModel">
<method>IterNChildren</method>
</class>
<data>
<attribute target="param">
<filter level="type">GtkTreeIter*</filter>
<name>null_ok</name>
<value>1</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModel">
<method>IterNthChild</method>
</class>
<data>
<attribute target="param">
<filter level="type">GtkTreeIter*</filter>
<name>null_ok</name>
<value>1</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeView">
<constructor>gtk_tree_view_new_with_model</constructor>

View File

@ -116,15 +116,24 @@ sub fixupParams {
for ($node = $params_node->firstChild; $node; $node = $node->nextSibling ()) {
my $param_type;
my $param_name;
foreach $attr ($node->attributes) {
if ($attr->name eq "type") {
$param_type = $attr->value;
last;
} elsif ($attr->name eq "name") {
$param_name = $attr->value;
}
}
if ($param_type eq $$data[4]) {
$node->setAttribute ($$data[5], $$data[6]);
if ($$data[3] eq "type") {
if ($param_type eq $$data[4]) {
$node->setAttribute ($$data[5], $$data[6]);
}
} elsif ($$data[3] eq "name") {
if ($param_name eq $$data[4]) {
$node->setAttribute ($$data[5], $$data[6]);
}
}
}
}

View File

@ -14,7 +14,7 @@ windows:
$(CSC) /unsafe /out:gtk-hello-world.exe /r:../glib/glib-sharp.dll /r:../gtk/gtk-sharp.dll /r:../gdk/gdk-sharp.dll HelloWorld.cs
$(CSC) /unsafe /out:button.exe /r:../glib/glib-sharp.dll /r:../gtk/gtk-sharp.dll ButtonApp.cs
linux: gtk-hello-world.exe button.exe menu.exe size.exe scribble.exe $(GNOME_TARGETS)
linux: gtk-hello-world.exe button.exe menu.exe size.exe scribble.exe treeviewdemo.exe $(GNOME_TARGETS)
gtk-hello-world.exe: HelloWorld.cs
$(MCS) --unsafe -o gtk-hello-world.exe $(local_paths) $(all_assemblies) HelloWorld.cs
@ -40,6 +40,9 @@ size.exe: Size.cs
scribble.exe: Scribble.cs
$(MCS) --unsafe -o scribble.exe $(local_paths) $(all_assemblies) Scribble.cs
treeviewdemo.exe: TreeViewDemo.cs
$(MCS) --unsafe -o treeviewdemo.exe $(local_paths) $(all_assemblies) TreeViewDemo.cs
clean:
rm -f *.exe

View File

@ -42,6 +42,94 @@
</attribute>
</data>
</rule>
<rule>
<class name="GtkListStore">
<method>Append</method>
<method>Insert</method>
<method>InsertAfter</method>
<method>InsertBefore</method>
<method>Prepend</method>
<method>Remove</method>
</class>
<data>
<attribute target="param">
<filter level="name">iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModelSort">
<method>ConvertChildIterToIter</method>
</class>
<data>
<attribute target="param">
<filter level="name">sort_iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModel">
<method>GetIter</method>
<method>GetIterFirst</method>
<method>GetIterFromString</method>
<method>IterChildren</method>
<method>IterNext</method>
<method>IterNthChild</method>
<method>IterParent</method>
</class>
<data>
<attribute target="param">
<filter level="name">iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModelSort">
<method>ConvertIterToChildIter</method>
</class>
<data>
<attribute target="param">
<filter level="name">child_iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeSelection">
<method>GetSelected</method>
</class>
<data>
<attribute target="param">
<filter level="name">iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeStore">
<method>Append</method>
<method>Insert</method>
<method>InsertAfter</method>
<method>InsertBefore</method>
<method>Prepend</method>
<method>Remove</method>
</class>
<data>
<attribute target="param">
<filter level="name">iter</filter>
<name>pass_as</name>
<value>out</value>
</attribute>
</data>
</rule>
<!-- variable arguments -->
<rule>
@ -55,6 +143,17 @@
</attribute>
</data>
</rule>
<rule>
<class name="GtkListStore">
<constructor>gtk_list_store_newv</constructor>
</class>
<data>
<attribute target="parameters">
<name>va_type</name>
<value>length_param</value>
</attribute>
</data>
</rule>
<!-- misc -->
<rule>
@ -944,7 +1043,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>DeleteRow</value>
<value>EmitRowDeleted</value>
</attribute>
</data>
</rule>
@ -955,7 +1054,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>ToggleRowHasChild</value>
<value>EmitRowHasChildToggled</value>
</attribute>
</data>
</rule>
@ -966,7 +1065,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>InsertRow</value>
<value>EmitRowInserted</value>
</attribute>
</data>
</rule>
@ -977,7 +1076,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>ChangeRow</value>
<value>EmitRowChanged</value>
</attribute>
</data>
</rule>
@ -988,7 +1087,7 @@
<data>
<attribute target="method">
<name>name</name>
<value>ReorderRows</value>
<value>EmitRowsReordered</value>
</attribute>
</data>
</rule>
@ -1535,39 +1634,6 @@
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeIter"/>
<data>
<attribute target="class">
<name>opaque</name>
<value>1</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModel">
<method>IterNChildren</method>
</class>
<data>
<attribute target="param">
<filter level="type">GtkTreeIter*</filter>
<name>null_ok</name>
<value>1</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeModel">
<method>IterNthChild</method>
</class>
<data>
<attribute target="param">
<filter level="type">GtkTreeIter*</filter>
<name>null_ok</name>
<value>1</value>
</attribute>
</data>
</rule>
<rule>
<class name="GtkTreeView">
<constructor>gtk_tree_view_new_with_model</constructor>