Perl Tk::FBox and filter argument
Perl Tk::FBox and filter argument
am 30.01.2007 20:40:29 von Andy
Does anyone know what the file pattern format is for the -filter
argument of the perl tk::fbox module? The CPAN documentation for the
module says filter is to be documented at a later date.
The following code doesn't crash, however, the fileselector that is
displayed isn't showing any .xls files even though I know they are in
the directory. And, the "Files of Type" droplist in the fileselector
is greyed out and disabled even though the filter specifies two
choices. If I remove the -filter argument, the fileselector shows all
files in the directory:
use Tk;
use Tk::FBox;
my $mw = MainWindow->new;
$spreadsheetfilename = $mw->FBox(
-type => "open",
-filter =>[
['Excel Files',['*.xls']],
['All Files','*.*']
]
)->Show;
I'm running Perl on windows XP.
Andy
Re: Perl Tk::FBox and filter argument
am 30.01.2007 21:01:52 von Andy
Sorry folks,
oops! brackets are out of balance: the code really is (but it still
doesn't work):
$spreadsheetfilename = $mw->FBox(-type => "open",
-filter =>[
['Excel Files',['*.xls']],
['All Files',['*.*']]
]
)->Show;
Re: Perl Tk::FBox and filter argument
am 30.01.2007 21:37:45 von Ch Lamprecht
Andy wrote:
> Does anyone know what the file pattern format is for the -filter
> argument of the perl tk::fbox module? The CPAN documentation for the
> module says filter is to be documented at a later date.
>
> The following code doesn't crash, however, the fileselector that is
> displayed isn't showing any .xls files even though I know they are in
> the directory. And, the "Files of Type" droplist in the fileselector
> is greyed out and disabled even though the filter specifies two
> choices. If I remove the -filter argument, the fileselector shows all
> files in the directory:
>
> use Tk;
> use Tk::FBox;
>
> my $mw = MainWindow->new;
> $spreadsheetfilename = $mw->FBox(
> -type => "open",
> -filter =>[
> ['Excel Files',['*.xls']],
> ['All Files','*.*']
> ]
> )->Show;
>
> I'm running Perl on windows XP.
>
> Andy
>
Maybe you want to use the -filetypes option??
-filter takes a glob expression. - or a coderef?
It is used internally, so you can't mix these.
my $spreadsheetfilename = $mw->FBox(
-type => "open",
#-filetypes =>[
#['Excel Files',['*.xls']],
#['All Files','*.*']
#],
-filter => '*.x++'
)->Show;
But why don't you use $mw->getOpenFile()?
Christoph
--
use Tk;package Tk::_;@ISA=('Tk::Frame');Tk::Widget->Construct
qw|_|,@?=qw'Just another Perl Hacker';sub Populate{($j)=@_;
$j->SUPER::Populate;$j->configure(-label=>shift@?)}
main::tkinit->_->$_->_->$_->_->$_->_->$_->update for 'pack';sleep 5;
Re: Perl Tk::FBox and filter argument
am 30.01.2007 22:17:30 von Andy
you are right! getOpenFile pops up the native windows file selector.
Don't know why I didn't use it before... I tried several different
Perl fileselectors and the fbox one looked closest to windows - I
never got the native windows selector in my experimentation before.
For those using fbox, the -filter function accepts a Perl glob()
function which holds a file mask:
$spreadsheetfilename = $mw->FBox(-type => "open",
-filter =>glob('*.xls'),
)->Show;
I found the missing documentation for fbox's -filter argument:
-filter => $val
A filter to restrict the directories and files in the icon
list. If
specified as a glob pattern, then only files will be
filtered by
the pattern. If specified as a subroutine, then this
subroutine
will be called for every file and directory and should
return a
true value, if the argument should be accepted for the icon
list.
The arguments of this subroutine are: FBox widget
reference, base-
name of file, and directory name.
The subroutine form of this option is experimental.
thanks for the help,
Andy