Gtk2-Ex-Dialogs
view release on metacpan or search on metacpan
lib/Gtk2/Ex/Dialogs/ChooseDirectory.pm view on Meta::CPAN
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
###############################################################################
use strict;
BEGIN {
use vars qw( $VERSION $parent_window $title $destroy_with_parent
$modal $path $must_exist $_action );
$VERSION = '0.11';
}
use Carp;
use Cwd qw( abs_path getcwd );
use Gtk2;
use Gtk2::Ex::Constants qw( :truth :pad :pack :align :justify );
use File::Basename;
sub import {
my $class = shift();
my $cfg = undef;
if ( @_ % 2 == 0 ) {
$cfg = { @_ };
} elsif ( @_ % 2 >= 1 ) {
croak( $class . " class received an uneven argument list." );
} else {
$cfg = {};
}
#: documented:
$Gtk2::Ex::Dialogs::ChooseDirectory::title =
$cfg->{title} || '';
$Gtk2::Ex::Dialogs::ChooseDirectory::path =
$cfg->{path} || getcwd();
$Gtk2::Ex::Dialogs::ChooseDirectory::modal =
$cfg->{modal} || FALSE;
$Gtk2::Ex::Dialogs::ChooseDirectory::parent_window =
$cfg->{parent_window} || undef;
$Gtk2::Ex::Dialogs::ChooseDirectory::destroy_with_parent =
$cfg->{destroy_with_parent} || FALSE;
$Gtk2::Ex::Dialogs::ChooseDirectory::must_exist =
$cfg->{must_exist} || FALSE;
#: undocumented:
$Gtk2::Ex::Dialogs::ChooseDirectory::_action =
$cfg->{_action} || 'select-folder';
}
=head1 NAME
Gtk2::Ex::Dialogs::ChooseDirectory - Provides a file selection dialog.
=head1 SYNOPSIS
use Gtk2::Ex::Dialogs::ChooseDirectory ( destroy_with_parent => TRUE,
modal => TRUE );
# do some stuff like creating your app's main $window then,
# to ensure that all messages use the right parent, set it:
$Gtk2::Ex::Dialogs::ChooseDirectory::parent_window = $window;
# now popup a new dialog for selecting an existing directory
my $dir = select Gtk2::Ex::Dialogs::ChooseDirectory ( "/path/to/somewhere" );
# ok, now we need to create a new directory (doesn't actually make
# the directory), returns a dir that does not exist.
my $dir = create Gtk2::Ex::Dialogs::ChooseDirectory ( "/path/to/somewhere" );
=head1 DESCRIPTION
This module provides a simple file chooser api that wraps Gtk2::FileChooser
objectively. The objective is a simple ways to prompt a user to open or save
a file.
=head1 OPTIONS
All public methods (and the entire class) support the following options:
=over
=item B<title> => STRING
The text string to use as the title of the dialog window. Defaults to either
"Select" or "Create" based on the action context.
=item B<path> => STRING
The path to a file or directory to initialize the dialog with. Defaults to the
current working directory.
=item B<parent_window> => Gtk2::Window
Reference to the main application window.
=item B<destroy_with_parent> => BOOL
When the B<parent_window> is destroyed, what do we do? Defaults to FALSE.
=item B<modal> => BOOL
Does this dialog make the B<parent_window> freeze while the dialog exists.
Defaults to FALSE.
=item B<must_exist> => BOOL
The end-user must supply a path to an existing file or directory. Should the
end-user provide a non-existant path, the dialog will be respawned until an
existing file is chosen. Defaults to FALSE.
=back
=head1 PUBLIC METHODS
=over
=item OBJECT = B<new> ( OPTIONS | PATH )
Create a Gtk2::FileChooserDialog with the options given and show it to the
end-user. Once the user has selected a directory return only the path to
the directoy and clean up. In the special case of being passed only one
argument, all options are set to defaults and the one argument is used as
the B<path> argument.
( run in 2.383 seconds using v1.01-cache-2.11-cpan-364913b4093 )