Ask
view release on metacpan or search on metacpan
lib/Ask/Zenity.pm view on Meta::CPAN
use 5.008008;
use strict;
use warnings;
package Ask::Zenity;
our $AUTHORITY = 'cpan:TOBYINK';
our $VERSION = '0.015';
use Moo;
use File::Which qw(which);
use System::Command;
use Path::Tiny qw( path );
use namespace::autoclean;
has zenity_path => (
is => 'ro',
default => sub { which( 'zenity' ) || '/usr/bin/zenity' },
);
has system_wrapper => (
is => 'ro',
default => sub { 'System::Command' },
);
with 'Ask::API';
sub is_usable {
my ( $self ) = @_;
return unless !!$ENV{'DISPLAY'};
return unless -x $self->zenity_path;
return 1;
}
sub quality {
return 40;
}
sub _optionize {
my $opt = shift;
$opt =~ s/_/-/g;
return "--$opt";
}
sub _zenity {
my ( $self, $cmd, %o ) = @_;
my $zen = $self->system_wrapper->new(
$self->zenity_path,
_optionize( $cmd ),
map sprintf( '%s="%s"', _optionize( $_ ), $o{$_} ), keys %o,
);
# warn join q[ ], $zen->cmdline;
return $zen;
} #/ sub _zenity
sub entry {
my $self = shift;
my $text = readline( $self->_zenity( entry => @_ )->stdout );
chomp $text;
return $text;
}
sub info {
my $self = shift;
$self->_zenity( info => @_ )->close;
}
sub warning {
my $self = shift;
$self->_zenity( warning => @_ )->close;
}
sub error {
( run in 0.697 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )