[gimp-perl] Font-select crashes if Gimp::Net - use Gtk2 then.



commit 45f67e45906c7465677333a6072a84427fe377e5
Author: Ed J <edj src gnome org>
Date:   Mon May 5 07:13:37 2014 +0100

    Font-select crashes if Gimp::Net - use Gtk2 then.

 UI/UI.pm            |   73 +++++++++++++++++++++++----------------------------
 examples/example-fu |    1 +
 2 files changed, 34 insertions(+), 40 deletions(-)
---
diff --git a/UI/UI.pm b/UI/UI.pm
index 73709ea..e9c306e 100644
--- a/UI/UI.pm
+++ b/UI/UI.pm
@@ -449,46 +449,39 @@ sub interact($$$$@) {
            &new_PF_STRING;
 
         } elsif ($type == PF_FONT) {
-           $a = new Gtk2::HBox 0,5;
-           $default = 'Arial' unless $default;
-           $value = 'Arial' unless $value;
-           my $b = new Gimp::UI::FontSelectButton $desc, $default;
-           $a->pack_start ($b, 1, 1, 0);
-           push @setvals, sub { $b->set_font($_[0]) };
-           push @getvals, sub { $b->get_font };
-           set_tip $t $b,$desc;
-#         _instrument($b);
-
-if (0) {
-           my $fs = new Gtk2::FontSelectionDialog sprintf __"Font Selection Dialog (%s)", $desc;
-           my $def = __"Helvetica 34";
-           my $val;
-           my $l = new Gtk2::Label "!error!";
-           my $setval = sub {
-             my($words);
-              $val = $_[0];
-             #Append a size to font name string if no size is given so
-             #sample text will be displayed properly in font requester.
-             my @words = split(/ /, $val);
-             if (@words == 0 || $words[ words - 1] <= 0) {
-                $val .= " 24";
-              };
-              unless (defined $val && $fs->set_font_name ($val)) {
-                 warn sprintf __"Illegal default font description for $function: %s\n", $val
-                    if defined $val;
-                 $val = $def;
-                 $fs->set_font_name ($val);
-              }
-              $l->set (label => " $val ");
-           };
-           $fs->ok_button->signal_connect (clicked => sub {$setval->($fs->get_font_name); $fs->hide});
-           $fs->cancel_button->signal_connect (clicked => sub {$fs->hide});
-           push @setvals, $setval;
-           push @getvals, sub { $val };
-           $a = new Gtk2::Button;
-           $a->add ($l);
-           $a->signal_connect (clicked => sub { show $fs });
-}
+           $default = 'Sans' unless $default;
+           $value = 'Sans' unless $value;
+          if ($Gimp::interface_pkg ne 'Gimp::Net') {
+             $a = new Gimp::UI::FontSelectButton $desc, $default;
+             push @setvals, sub { $a->set_font($_[0]) };
+             push @getvals, sub { $a->get_font };
+             set_tip $t $a,$desc;
+#            _instrument($a);
+
+          } else {
+             # no GIMP ui available, use Gtk2 equivalent
+             my $fs = new Gtk2::FontSelectionDialog sprintf __"Font Selection Dialog (%s)", $desc;
+             my $val;
+             my $l = new Gtk2::Label "!error!";
+             my $setval = sub {
+                $val = shift;
+                $val =~ s#\s*(Bold)?\s*(Italic)?\s*\d+$##; # vim highlighter
+                unless (defined $val && $fs->set_font_name ("$val 10")) {
+                   warn sprintf __"Illegal default font description for $function: %s\n", $val
+                      if defined $val;
+                   $val = $default;
+                   $fs->set_font_name ("$val 10");
+                }
+                $l->set (label => " $val ");
+             };
+             $fs->ok_button->signal_connect (clicked => sub {$setval->($fs->get_font_name); $fs->hide});
+             $fs->cancel_button->signal_connect (clicked => sub {$fs->hide});
+             push @setvals, $setval;
+             push @getvals, sub { $val };
+             $a = new Gtk2::Button;
+             $a->add ($l);
+             $a->signal_connect (clicked => sub { show $fs });
+          }
 
         } elsif ($type == PF_SPINNER) {
            my $adj = _new_adjustment ($value, $extra);
diff --git a/examples/example-fu b/examples/example-fu
index d157bab..6e3eefd 100755
--- a/examples/example-fu
+++ b/examples/example-fu
@@ -50,6 +50,7 @@ descriptive help message here!
   [PF_SPINNER  , "height"      , "Image height"        , 100, [100, 200]],
   [PF_STRING   , "text"        , "Message"             , "example text"],
   [PF_TEXT     , "longtext"    , "Longer text"         , "more example text"],
+  [PF_FILE     , "file"        , "File"                , "/tmp"],
   [PF_INT32    , "bordersize"  , "Border size"         , 10],
   [PF_FLOAT    , "borderwidth" , "Border width"        , 1/5],
   [PF_FONT     , "font"        , "Font"],


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]