use strict; use warnings; use Prima; use Prima::Buttons; use Prima::ComboBox; use Prima::Edit; use Prima::ImageViewer; use Prima::Label; use Prima::Sliders; use Prima::Image::TransparencyControl; package Prima::Image::gif; use vars qw(@ISA); @ISA = qw(Prima::Dialog); sub profile_default { my $def = $_[ 0]-> SUPER::profile_default; my %prf = ( width => 480, text => 'Gif89a filter', height => 300, centered => 1, designScale => [ 7, 16], ); @$def{keys %prf} = values %prf; return $def; } sub init { my $self = shift; my %profile = $self-> SUPER::init(@_); my $a = $self-> insert( qq(Prima::CheckBox) => origin => [ 4, 261], name => 'Transparent', size => [ 133, 36], text => '~Transparent', delegations => ['Check'], ); my $b = $self-> insert( qq(Prima::CheckBox) => origin => [ 144, 261], name => 'Interlaced', size => [ 100, 36], text => '~Interlaced', ); $self-> insert( qq(Prima::Image::TransparencyControl) => origin => [ 4, 100], size => [ 364, 158], text => '', name => 'TC', ); my $se = $self-> insert( qq(Prima::Edit) => origin => [ 10, 10], name => 'Comment', size => [ 350, 71], vScroll => 1, text => '', ); $self-> insert( qq(Prima::Label) => origin => [ 10, 85], size => [ 100, 20], text => '~Comment', focusLink => $se, ); $self-> insert( qq(Prima::Button) => origin => [ 380, 259], name => 'OK', size => [ 96, 36], text => '~OK', default => 1, modalResult => mb::OK, delegations => ['Click'], ); $self-> insert( qq(Prima::Button) => origin => [ 380, 213], size => [ 96, 36], text => 'Cancel', modalResult => mb::Cancel, ); return %profile; } sub transparent { my $self = $_[0]; $self-> Transparent-> checked( $_[1]); $self-> TC-> enabled( $_[1]); } sub Transparent_Check { my ( $self, $tr) = @_; $self-> transparent( $tr-> checked); } sub on_change { my ( $self, $codec, $image) = @_; $self-> {image} = $image; return unless $image; $self-> Interlaced-> checked( exists( $image-> {extras}-> {interlaced}) ? $image-> {extras}-> {interlaced} : $codec-> {saveInput}-> {interlaced}); $self-> transparent( $image-> {extras}-> {transparentColorIndex} ? 1 : 0); $self-> TC-> image( $image); $self-> TC-> index( exists( $image-> {extras}-> {transparentColorIndex}) ? $image-> {extras}-> {transparentColorIndex} : 0); $self-> Comment-> text( exists( $image-> {extras}-> {comment}) ? $image-> {extras}-> {comment} : ($codec-> {saveInput}-> {comment})); } sub OK_Click { my $self = $_[0]; if ( $self-> Transparent-> checked) { $self-> {image}-> {extras}-> {transparentColorIndex} = $self-> TC-> index; } else { delete $self-> {image}-> {extras}-> {transparentColorIndex}; } $self-> {image}-> {extras}-> {interlaced} = $self-> Interlaced-> checked; my $x = $self-> Comment-> text; if ( length $x) { $self-> {image}-> {extras}-> {comment} = $x; } else { delete $self-> {image}-> {extras}-> {comment}; } delete $self-> {image}; $self-> TC-> image( undef); } sub save_dialog { Prima::Image::gif-> create } 1;