On Thu, Aug 2, 2012 at 12:51 PM, Torsten Schoenfeld <kaffeeti...@gmx.de> wrote:
> On 28.07.2012 01:42, Dave M wrote:
>>
>> I've attached a diff which seems to work.  How best to handle the
>> GtkResponseType part?  I just arranged it as a hash with a lookup...
>> if it's needed in any other overrides though, we probably need a
>> better solution.
>
>
> Looking good in general.  A few specific comments:
>
> • +    croak 'Usage: Gtk2::FileChooserDialog->new_with_backend'
>
> 'new' instead of 'new_with_backend'.
Oops... :) Fixed.
>
> • +    $result->add_button( $varargs[$i], $response_codes{$varargs[$i+1]});
>
> This fails for user-defined (i.e., positive) response codes.  I think it
> should be
>
>   exists $response_codes{$varargs[$i+1]}
>     ? $response_codes{$varargs[$i+1]}
>     : $varargs[$i+1]
>
> • We need unit tests for the override.
See attached.  It's not very robust but very similar to Gtk2 version.
There's no new_with_backend anymore, I think.  Did you want to see
more extensive tests?  What about the ginterfaces_ok you used to have?
 I just included it as a local sub.
>
> Now for the general GtkResponseType problem.  Unfortunately, I don't see an
> easy way to solve the problem nicely in one go.  The issue is that all
> arguments and return values that conceptually are of type GtkResponseType,
> are actually marked as a plain gint so that C users can pass in values that
> are not actually in the pre-defined enum.  So we would have to go through
> each occurrence of GtkResponseType and add an override that does the
> %reponse_code dance like above.  I think these are all cases:
>
> ◦ gtk_dialog_new_with_buttons, gtk_dialog_run, gtk_dialog_response,
> gtk_dialog_add_button, gtk_dialog_add_buttons, gtk_dialog_add_action_widget,
> gtk_dialog_set_default_response, gtk_dialog_set_response_sensitive,
> gtk_dialog_get_response_for_widget, gtk_dialog_get_widget_for_response,
> gtk_dialog_set_alternative_button_order,
> gtk_dialog_set_alternative_button_order_from_array (these last two probably
> also need some annotation work first)
> ◦ GtkDialog's "response" signal
> ◦ gtk_file_chooser_dialog_new
> ◦ gtk_recent_chooser_dialog_new, gtk_recent_chooser_dialog_new_for_manager
> ◦ gtk_info_bar_new_with_buttons, gtk_info_bar_add_action_widget,
> gtk_info_bar_add_button, gtk_info_bar_add_buttons,
> gtk_info_bar_set_response_sensitive, gtk_info_bar_set_default_response,
> gtk_info_bar_response
> ◦ GtkInfoBar's "response" signal
>
> It would probably be best to change all of these in one go. Unfortunately, I
> don't know yet how to handle the "response" signal problem with Perl code
> only (and I'm very reluctant to add XS code).  I have some rough ideas, but
> their implementation would require additional code in
> Glib::Object::Introspection.
>
> So maybe it's better to postpone the general solution of this problem for
> now, i.e. disable the %response_codes stuff in your patch?
>
I understand, but don't have a good solution yet either.  What sticks
out is that we'll have to (correct me if I'm wrong) use a series of
"use constant $FOO => XX" then, right?  See the attached diffs, test,
and chooser.pl example program.  Kind of weird but could suffice for
now.

Also, I wasn't sure if you meant disable as in "comment out" or
delete, so I have attached both versions.

Let me know what you think.

Thanks,
Dave M

Attachment: filechooser2.tar.gz
Description: GNU Zip compressed data

_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to