--- git/perl-Gtk3/lib/Gtk3.pm	2012-07-14 06:12:20.220517394 -0500
+++ Gtk3.pm	2012-07-27 18:40:12.926434020 -0500
@@ -551,6 +551,45 @@
     $_GTK_BASENAME, 'CheckMenuItem', 'new', @_);
 }
 
+sub Gtk3::FileChooserDialog::new {
+  my ($class, $title, $parent, $action, @varargs) = @_;
+
+  if( @varargs % 2 ) {
+    croak 'Usage: Gtk2::FileChooserDialog->new_with_backend'
+    . ' (title, parent, action, backend, button-text =>' 
+    . " response-id, ...)\n";
+  }
+
+  my $result = Glib::Object::new ($class, 
+    title => $title,
+    action => $action,
+  );
+
+  if( $parent ) {
+    $result->set_transient_for($parent);
+  }
+
+  my %response_codes = (
+    none => -1,
+    reject => -2,
+    accept => -3,
+    delete_event => 4,
+    ok => -5,
+    cancel => -6,
+    close => -7,
+    yes => -8,
+    no => -9,
+    apply => -10,
+    help => -11,
+  );
+
+  for ( my $i = 0; $i < @varargs; $i += 2 ) {
+    $result->add_button( $varargs[$i], $response_codes{$varargs[$i+1]});
+  }
+
+  return $result;
+}
+
 sub Gtk3::HBox::new {
   my ($class, $homogeneous, $spacing) = @_;
   $homogeneous = 5 unless defined $homogeneous;
