hoping for pilot error, but is confronted with bad airframe design
I avoid win32 like the plaque, but have seen complaints about filedialog on xp being buggy. See groups.google search or you may ask this on comp.lang.perl.tk where more win32 tk users may see you question. Or you could post a small snippet demonstrating the problem, and we can report what we see on other platforms.
| [reply] |
zentara - thanks for the reply. if you avoid win32, is there something else you use for gui on windows? i'm new to perl on windows and need a gui. i chose cygwin's perl 'cause i'm lazy and more familiar with unix. i know about activestate but haven't work with it at all. does activestate have some gui interface? i was hoping this would be a quick and easy project... should this question be in the chatterbox?
thanks.
| [reply] |
#!/usr/bin/perl
use strict;
use Tk;
require Tk::DirTree;
require Tk::Adjuster;
require Tk::TList;
# The initial directory
my $initial_dir = '/';
# The main window...
my $main = new MainWindow( -title => 'Explorer)' );
# A frame for the tree, adjuster and tlist
my $tree_adj_tablist = $main->Frame();
$tree_adj_tablist->pack(
-expand => 'yes',
-fill => 'both',
-side => 'top'
);
# A scrolled directory tree
my $tree = $tree_adj_tablist->Scrolled(
'DirTree',
-width => 35,
-height => 25,
-scrollbars => 'osoe',
-background => 'White',
-selectmode => 'single',
-selectbackground => 'DarkBlue',
-selectforeground => 'White',
-showhidden => 1,
-directory => $initial_dir
);
$tree->pack(
-expand => 'yes',
-fill => 'both',
-padx => 2,
-pady => 2,
-side => 'left'
);
# An adjuster
my $adjuster = $tree_adj_tablist->Adjuster(
-widget => $tree,
-side => 'left'
);
$adjuster->pack( -side => 'left', -fill => 'y' );
# A scrolled tab_list widget
my $tab_list = $tree_adj_tablist->Scrolled(
'TList',
-background => 'White',
-orient => 'vertical',
-selectmode => 'extended',
-scrollbars => 'os'
);
$tab_list->pack(
-expand => 'yes',
-fill => 'both',
-padx => 2,
-pady => 2,
-side => 'right'
);
# Ok button
my $ok = $main->Button(
-text => 'Ok',
-underline => 0,
-width => 4,
-command => sub { my $selected = $tab_list->info('selection');
#print "@{$selected}\n";
foreach( @{$selected} ){
print $tab_list->entrycget($_, '-text'),"\n";
}
})->pack( -side => 'right', -padx => 10, -pady => 10 );
# A Quit button (will be suppressed???...)
my $quit = $main->Button(
-text => 'Quit',
-underline => 0,
-width => 6,
-command => sub { exit }
);
$quit->pack( -side => 'right', -padx => 10, -pady => 10 );
# Configuring tree and tab_list widgets...
$tree->configure( -browsecmd => sub { list_dir( $tab_list, @_ ); } );
# We list the content of the initial dir inside the tab_list
list_dir( $tab_list, $initial_dir );
MainLoop();
#---------------------------------------------------------------------
+-------
# Displays Dirs and files in TList widget
sub list_dir {
my ( $tab_list, $path ) = @_;
# Erase the TList content
$tab_list->delete( 0, 'end' );
opendir MY_DIR, $path or return;
foreach my $file ( sort readdir(MY_DIR) ) {
# Do not display '.' and '..'
next if ( $file eq '.' or $file eq '..' );
# Insert the files in the TList
$tab_list->insert( 'end', -text => $file );
}
closedir MY_DIR;
}
| [reply] [d/l] |