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 )