Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/etk-perl/etk_test


Modified Files:
        etk_test.pl 


Log Message:
- implement first event structure, "mouse_up"
- fixes to Etk::Iconbox
- finish iconbox test
- misc cleanups


===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/etk_test/etk_test.pl,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- etk_test.pl 11 Jun 2006 18:59:27 -0000      1.12
+++ etk_test.pl 13 Jun 2006 00:13:44 -0000      1.13
@@ -13,6 +13,9 @@
 use Etk::HPaned;
 use Etk::HSlider;
 use Etk::HSeparator;
+use Etk::Iconbox;
+use Etk::Iconbox::Icon;
+use Etk::Iconbox::Model;
 use Etk::Image;
 use Etk::Label;
 use Etk::Main;
@@ -201,6 +204,27 @@
     }
 );
 
+my $_iconbox_folder = "";
+my %_iconbox_types = (
+    jpg => "mimetypes/image-x-generic_48",
+    jpeg => "mimetypes/image-x-generic_48",
+    png => "mimetypes/image-x-generic_48",
+    bmp => "mimetypes/image-x-generic_48",
+    gif => "mimetypes/image-x-generic_48",
+    mp3 => "mimetypes/audio-x-generic_48",
+    ogg => "mimetypes/audio-x-generic_48",
+    wav => "mimetypes/audio-x-generic_48",
+    avi => "mimetypes/video-x-generic_48",
+    mpg => "mimetypes/video-x-generic_48",
+    mpeg => "mimetypes/video-x-generic_48",
+    gz => "mimetypes/package-x-generic_48",
+    tgz => "mimetypes/package-x-generic_48",
+    bz2 => "mimetypes/package-x-generic_48",
+    tbz2 => "mimetypes/package-x-generic_48",
+    zip => "mimetypes/package-x-generic_48",
+    rar => "mimetypes/package-x-generic_48"    
+);
+
 # Count number of examples per category
 while (my ($key, $value) = each %buttons)
 {
@@ -814,11 +838,77 @@
 sub iconbox_window_show
 {
     my $win = Etk::Window->new("Etk-Perl Iconbox Test");
-    my $label = Etk::Label->new("<b>Etk::Iconbox test is not implemented 
yet.</b>");
+    $win->SizeRequestSet(100, 100);
     
-    $win->Add($label);
-    $win->BorderWidthSet(10);
+    $_iconbox_folder = "";    
+    my $iconbox = Etk::Iconbox->new();
+    my $model = Etk::Iconbox::Model->new($iconbox);
+    $model->GeometrySet(150, 20, 2, 2);
+    $model->IconGeometrySet(20, 0, 130, 16, 0.0, 0.5);
+    _iconbox_folder_set($iconbox, "");
+    
+    $iconbox->SignalConnect("mouse_up", 
+       sub {
+           my $event = shift;
+           my $icon = $iconbox->IconGetAtXY($event->{canvas_x},
+               $event->{canvas_y}, 0, 1, 1);
+           return if($icon == undef);
+           if (-d $_iconbox_folder."/".$icon->LabelGet())
+           {
+               _iconbox_folder_set($iconbox, $icon->LabelGet());
+           }
+       }
+    );    
+        
+    $win->Add($iconbox);
     $win->ShowAll();        
+}
+
+sub _iconbox_folder_set
+{
+    my $iconbox = shift;
+    my $folder = shift;
+    my $file = undef;
+    
+    $folder = %ENV->{HOME} if($folder eq "");
+    return if($folder eq "");      
+    
+    $iconbox->Clear();
+    $iconbox->Append(Etk::Theme::IconThemeGet(), "actions/go-up_48", "..");
+    
+    # Add directories
+    opendir(DIR, $_iconbox_folder."/".$folder) or die "can't opendir $folder: 
$!";
+    while (defined($file = readdir(DIR))) {
+       if (-d "$_iconbox_folder/$folder/$file" && $file  !~ /^\./)
+       {
+           $iconbox->Append(Etk::Theme::IconThemeGet(), 
+               "places/folder_48", $file);
+       }
+    }
+    closedir(DIR);
+    
+    # Add files
+    opendir(DIR, $_iconbox_folder."/".$folder) or die "can't opendir $folder: 
$!";
+    while (defined($file = readdir(DIR))) {
+       if (-f "$_iconbox_folder/$folder/$file" && $file  !~ /^\./)
+       {
+           my @parts = split /\./, $file;
+           $parts[-1] =~ tr [A-Z] [a-z];
+           if($_iconbox_types{$parts[-1]})
+           {
+               $iconbox->Append(Etk::Theme::IconThemeGet(), 
+                   $_iconbox_types{$parts[-1]}, $file);
+           }
+           else
+           {
+               $iconbox->Append(Etk::Theme::IconThemeGet(), 
+                   "mimetypes/text-x-generic_48", $file);
+           }
+       }
+    }
+    closedir(DIR);
+    
+    $_iconbox_folder .= "/".$folder;
 }
 
 sub textview_window_show




_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to