4 typedef GtkWidget *(*GDoDemoFunc) (GtkWidget *do_widget);
6 typedef struct _Demo Demo;
22 ($basename = $file) =~ s/\.c$//;
24 open INFO_FILE, $file or die "Cannot open '$file'\n";
26 $title =~ s@^\s*/\*\s*@@;
31 print "GtkWidget *do_$basename (GtkWidget *do_widget);\n";
33 push @demos, {"name" => $basename, "title" => $title, "file" => $file,
34 "func" => "do_$basename"};
37 # generate a list of 'parent names'
38 foreach $href (@demos) {
39 if ($href->{"title"} =~ m|^([-\w\s]+)/[-\w\s]+$|) {
45 foreach $foo (@parents) {
46 if ($foo eq $parent_name) {
56 push @parents, $parent_name;
58 $tmp = (@child_arrays)?($#child_arrays + 1):0;
59 push @child_arrays, "child$tmp";
61 push @demos, {"name" => "NULL", "title" => $parent_name, "file" => "NULL",
68 for ($i = 0; $i <= $#parents; $i++) {
71 print "\nDemo ", $child_arrays[$i], "[] = {\n";
74 for ($j = 0; $j <= $#demos; $j++) {
81 if ($demos[$j]{"title"} =~ m|^$parents[$i]/([-\w\s]+)$|) {
88 print qq ( { "$demos[$j]{name}", "$1", "$demos[$j]{file}", $demos[$j]{func}, NULL });
91 $demos[$j]{"title"} = "foo";
96 print qq ( { NULL } );
105 $a->{"title"} cmp $b->{"title"};
108 # sort the child arrays
110 for ($i = 0; $i <= $#child_arrays; $i++) {
111 @foo_old = @{$child_arrays[$i]};
113 @{$child_arrays[$i]} = sort {
114 $a->{"title"} cmp $b->{"title"};
120 print "\nDemo gtk_demos[] = {\n";
123 foreach $href (@demos) {
127 if ($href->{title} eq "foo") {
138 for ($i = 0; $i <= $#parents; $i++) {
139 if ($parents[$i] eq $href->{title}) {
141 if ($href->{file} eq 'NULL') {
142 print qq ( { NULL, "$href->{title}", NULL, $href->{func}, $child_arrays[$i] });
144 print qq ( { "$href->{name}", "$href->{title}", "$href->{file}", $href->{func}, $child_arrays[$i] });
157 print qq ( { "$href->{name}", "$href->{title}", "$href->{file}", $href->{func}, NULL });
161 print qq ( { NULL } );