From d7bb052fb6bfaf780d65bed9968b4e7ead1e5629 Mon Sep 17 00:00:00 2001 From: Marc Lehmann Date: Fri, 10 Dec 1999 23:21:51 +0000 Subject: [PATCH] see plug-ins/perl/Changes --- plug-ins/perl/TODO | 2 ++ plug-ins/perl/examples/gap-vcr | 60 ++++++++++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/plug-ins/perl/TODO b/plug-ins/perl/TODO index f1d5a1bca6..658f4b3661 100644 --- a/plug-ins/perl/TODO +++ b/plug-ins/perl/TODO @@ -10,6 +10,8 @@ make test TEST_VERBOSE=1 put under LGPL: +/usr/app/lib/perl5/Gtk.pm:107 (method call -> goto) + gimpenv.c, gimpmodule.h, color_selector.h, color_display.h API generalization diff --git a/plug-ins/perl/examples/gap-vcr b/plug-ins/perl/examples/gap-vcr index f055f75c90..5e0f94b04e 100755 --- a/plug-ins/perl/examples/gap-vcr +++ b/plug-ins/perl/examples/gap-vcr @@ -5,42 +5,88 @@ use Gimp ('__','N_'); use Gimp::Fu; use Gtk; -$VERSION=0.0; +$VERSION=0.1; + +# possible TODO +# - improve last/first frame finding +# - implement autoplay my $image; +my $f; # current frame adjustment +my $s; # slider sub drawable { ($image->get_layers)[0]; } +sub get_index { + (($image->get_filename) =~ /(\d+)\.[^\.]+$/g)[0]; +} + +sub upd { + $f->set_value(get_index); + Gimp->displays_flush; +} + sub create_main { my $w = new Gtk::Window; $w->set_title("VCR Console -- ". $image->get_filename); $w->signal_connect("destroy",sub {main_quit Gtk}); - my $h = new Gtk::HBox (1,5); - $w->add ($h); + my $v = new Gtk::VBox (0,5); + $w->add ($v); + + my $h = new Gtk::HBox (1,0); + $v->add($h); + + my $current = get_index; + drawable->gap_last; my $last = get_index; + drawable->gap_first; my $first = get_index; + drawable->gap_goto($current); + + $f = new Gtk::Adjustment $current, $first, $last+1, 1, 10, 1; + $f->signal_connect(value_changed => sub { + my $n = $_[0]->value; + if ($n != get_index) { + drawable->gap_goto($n); + upd; + } + }); + + $s = new Gtk::HScale $f; + $s->set_update_policy('delayed'); + $s->set_digits(0); + $s->set_value_pos('left'); + $s->grab_focus; + $v->add($s); + + $w->set_focus($s); $h->add(Gtk::Object::new Gtk::Button label => '|<<', + can_focus => 0, signal::clicked => sub { - drawable->gap_first; + drawable->gap_first; upd; }); $h->add(Gtk::Object::new Gtk::Button label => '<', + can_focus => 0, signal::clicked => sub { - drawable->gap_prev; + drawable->gap_prev; upd; }); $h->add(Gtk::Object::new Gtk::Button label => '>', + can_focus => 0, signal::clicked => sub { - drawable->gap_next; + drawable->gap_next; upd; }); $h->add(Gtk::Object::new Gtk::Button label => '>>|', + can_focus => 0, signal::clicked => sub { - drawable->gap_last; + drawable->gap_last; upd; + }); show_all $w; }