see plug-ins/perl/Changes

This commit is contained in:
Marc Lehmann 1999-03-03 15:14:45 +00:00
parent 39f9e9ae3d
commit ca41c2609a
4 changed files with 45 additions and 16 deletions

View File

@ -13,6 +13,8 @@ Revision history for Gimp-Perl extension.
collisions. CGI-scripts should use either tcp or specify the path collisions. CGI-scripts should use either tcp or specify the path
directly using GIMP_HOST (see Gimp::Net for details). directly using GIMP_HOST (see Gimp::Net for details).
- use _much_ saner defaults for the Scale types in Gimp::Fu. - use _much_ saner defaults for the Scale types in Gimp::Fu.
- Gimp::Fu's optionmenus didn't work in net()-mode.
- implemented PF_CUSTOM (untested).
1.055 Mon Feb 22 22:38:44 CET 1999 1.055 Mon Feb 22 22:38:44 CET 1999
- applied seth's script changes. - applied seth's script changes.

View File

@ -80,6 +80,7 @@ sub PF_BRUSH () { PARAM_END+6 };
sub PF_PATTERN () { PARAM_END+7 }; sub PF_PATTERN () { PARAM_END+7 };
sub PF_GRADIENT () { PARAM_END+8 }; sub PF_GRADIENT () { PARAM_END+8 };
sub PF_RADIO () { PARAM_END+9 }; sub PF_RADIO () { PARAM_END+9 };
sub PF_CUSTOM () { PARAM_END+10 };
sub PF_BOOL () { PF_TOGGLE }; sub PF_BOOL () { PF_TOGGLE };
sub PF_INT () { PF_INT32 }; sub PF_INT () { PF_INT32 };
@ -103,6 +104,7 @@ sub Gimp::RUN_FULLINTERACTIVE (){ Gimp::RUN_INTERACTIVE+100 }; # you don't want
&PF_SPINNER => 'integer', &PF_SPINNER => 'integer',
&PF_ADJUSTMENT => 'integer', &PF_ADJUSTMENT => 'integer',
&PF_RADIO => 'string', &PF_RADIO => 'string',
&PF_CUSTOM => 'string',
&PF_IMAGE => 'NYI', &PF_IMAGE => 'NYI',
&PF_LAYER => 'NYI', &PF_LAYER => 'NYI',
&PF_CHANNEL => 'NYI', &PF_CHANNEL => 'NYI',
@ -113,7 +115,7 @@ sub Gimp::RUN_FULLINTERACTIVE (){ Gimp::RUN_INTERACTIVE+100 }; # you don't want
PF_STRING PF_COLOR PF_COLOUR PF_TOGGLE PF_IMAGE PF_STRING PF_COLOR PF_COLOUR PF_TOGGLE PF_IMAGE
PF_DRAWABLE PF_FONT PF_LAYER PF_CHANNEL PF_BOOL PF_DRAWABLE PF_FONT PF_LAYER PF_CHANNEL PF_BOOL
PF_SLIDER PF_INT PF_SPINNER PF_ADJUSTMENT PF_SLIDER PF_INT PF_SPINNER PF_ADJUSTMENT
PF_BRUSH PF_PATTERN PF_GRADIENT PF_RADIO); PF_BRUSH PF_PATTERN PF_GRADIENT PF_RADIO PF_CUSTOM);
@EXPORT = (qw(register main),@_params); @EXPORT = (qw(register main),@_params);
@EXPORT_OK = qw(interact $run_mode save_image); @EXPORT_OK = qw(interact $run_mode save_image);
@ -313,7 +315,7 @@ sub interact($$$@) {
my $res; my $res;
$a=new Gtk::HBox (0,5); $a=new Gtk::HBox (0,5);
my $b=new Gtk::OptionMenu; my $b=new Gtk::OptionMenu;
$b->set_menu(new Gimp::UI::ImageMenu(sub {1},-1,$res)); $b->set_menu(new Gimp::UI::ImageMenu(sub {1},-1,\$res));
$a->pack_start ($b,1,1,0); $a->pack_start ($b,1,1,0);
push(@setvals,sub{}); push(@setvals,sub{});
push(@getvals,sub{$res}); push(@getvals,sub{$res});
@ -328,21 +330,21 @@ sub interact($$$@) {
} elsif($type == PF_LAYER) { } elsif($type == PF_LAYER) {
my $res; my $res;
$a=new Gtk::OptionMenu; $a=new Gtk::OptionMenu;
$a->set_menu(new Gimp::UI::LayerMenu(sub {1},-1,$res)); $a->set_menu(new Gimp::UI::LayerMenu(sub {1},-1,\$res));
push(@setvals,sub{}); push(@setvals,sub{});
push(@getvals,sub{$res}); push(@getvals,sub{$res});
} elsif($type == PF_CHANNEL) { } elsif($type == PF_CHANNEL) {
my $res; my $res;
$a=new Gtk::OptionMenu; $a=new Gtk::OptionMenu;
$a->set_menu(new Gimp::UI::ChannelMenu(sub {1},-1,$res)); $a->set_menu(new Gimp::UI::ChannelMenu(sub {1},-1,\$res));
push(@setvals,sub{}); push(@setvals,sub{});
push(@getvals,sub{$res}); push(@getvals,sub{$res});
} elsif($type == PF_DRAWABLE) { } elsif($type == PF_DRAWABLE) {
my $res; my $res=13;
$a=new Gtk::OptionMenu; $a=new Gtk::OptionMenu;
$a->set_menu(new Gimp::UI::DrawableMenu(sub {1},-1,$res)); $a->set_menu(new Gimp::UI::DrawableMenu(sub {1},-1,\$res));
push(@setvals,sub{}); push(@setvals,sub{});
push(@getvals,sub{$res}); push(@getvals,sub{$res});
@ -373,6 +375,11 @@ sub interact($$$@) {
push(@getvals,sub{$a->get('active')}); push(@getvals,sub{$a->get('active')});
} }
} elsif($type == PF_CUSTOM) {
$a=$extra->[0];
push(@setvals,$extra->[1]);
push(@getvals,$extra->[2]);
} else { } else {
$label="Unsupported argumenttype $type"; $label="Unsupported argumenttype $type";
push(@setvals,sub{}); push(@setvals,sub{});
@ -472,6 +479,7 @@ sub string2pf($$) {
|| $type==PF_FONT || $type==PF_FONT
|| $type==PF_PATTERN || $type==PF_PATTERN
|| $type==PF_BRUSH || $type==PF_BRUSH
|| $type==PF_CUSTOM
|| $type==PF_RADIO # for now! #d# || $type==PF_RADIO # for now! #d#
|| $type==PF_GRADIENT) { || $type==PF_GRADIENT) {
$s; $s;
@ -588,6 +596,7 @@ sub query {
$_->[0]=PARAM_STRING if $_->[0] == PF_BRUSH; $_->[0]=PARAM_STRING if $_->[0] == PF_BRUSH;
$_->[0]=PARAM_STRING if $_->[0] == PF_PATTERN; $_->[0]=PARAM_STRING if $_->[0] == PF_PATTERN;
$_->[0]=PARAM_STRING if $_->[0] == PF_GRADIENT; $_->[0]=PARAM_STRING if $_->[0] == PF_GRADIENT;
$_->[0]=PARAM_STRING if $_->[0] == PF_CUSTOM;
$_; $_;
} @$params], } @$params],
$results); $results);
@ -762,6 +771,24 @@ In older Gimp-Versions a user-supplied string is returned.
Lets the user select a brush/pattern/gradient whose name is returned as a Lets the user select a brush/pattern/gradient whose name is returned as a
string. The default brush/pattern/gradient-name can be preset. string. The default brush/pattern/gradient-name can be preset.
=item PF_CUSTOM
PF_CUSTOM is for those of you requiring some non-standard-widget. Just supply an array reference
with three elements as extra argument:
[widget, settor, gettor]
C<widget> is Gtk widget that should be used.
C<settor> is a function that takes a single argument, the new value for
the widget (the widget should be updated accordingly).
C<gettor> is a function that should return the current value of the widget.
While the values can be of any type (as long as it fits into a scalar),
you should be prepared to get a string when the script is started from the
commandline.
=back =back
=cut =cut

View File

@ -23,10 +23,10 @@ reimplement all of it in perl.
=over 4 =over 4
$option_menu = new Gimp::UI::ImageMenu; $option_menu = new Gimp::UI::ImageMenu
$option_menu = new Gimp::UI::LayerMenu; $option_menu = new Gimp::UI::LayerMenu
$option_menu = new Gimp::UI::ChannelMenu; $option_menu = new Gimp::UI::ChannelMenu
$option_menu = new Gimp::UI::DrawableMenu; $option_menu = new Gimp::UI::DrawableMenu (constraint_func, active_element, \var);
$button = new Gimp::UI::PatternSelect; $button = new Gimp::UI::PatternSelect;
$button = new Gimp::UI::BrushSelect; $button = new Gimp::UI::BrushSelect;
@ -67,24 +67,24 @@ sub Gimp::UI::DrawableMenu::_items {
} }
sub new($$$$) { sub new($$$$) {
my($class,$constraint,$active)=@_; my($class,$constraint,$active,$var)=@_;
my(@items)=$class->_items; my(@items)=$class->_items;
my $menu = new Gtk::Menu; my $menu = new Gtk::Menu;
for(@items) { for(@items) {
my($constraints,$result,$name)=@$_; my($constraints,$result,$name)=@$_;
next unless $constraint->(@{$constraints}); next unless $constraint->(@{$constraints});
my $item = new Gtk::MenuItem $name; my $item = new Gtk::MenuItem $name;
$item->show; $item->signal_connect(activate => sub { $$var=$result });
$item->signal_connect(activate => sub { $_[3]=$result });
$menu->append($item); $menu->append($item);
} }
if (@items) { if (@items) {
$_[3]=$items[0]->[1]; $$var=$items[0]->[1];
} else { } else {
my $item = new Gtk::MenuItem "(none)"; my $item = new Gtk::MenuItem "(none)";
$item->show;
$menu->append($item); $menu->append($item);
$$var=undef;
} }
$menu->show_all;
$menu; $menu;
} }

View File

@ -1,4 +1,4 @@
require 5.004_04; require 5.004;
use ExtUtils::MakeMaker; use ExtUtils::MakeMaker;
use Config; use Config;