Enlightenment CVS committal

Author  : leviathan
Project : e17
Module  : proto

Dir     : e17/proto/etk-perl/lib/Etk


Modified Files:
        Box.pm Button.pm Combobox.pm Iconbox.pm Menu.pm Object.pm 
        ProgressBar.pm Tree.pm Widget.pm 


Log Message:
Big fat changes. Breakage ahead!
Many changes to the API (it's now kind of unstable and very in-development)
take a look at test.pl for new access methods. I'm porting etk_test.pl
as I implement stuff.

===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/Box.pm,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- Box.pm      11 Jun 2006 00:26:32 -0000      1.2
+++ Box.pm      18 Jul 2006 22:14:34 -0000      1.3
@@ -3,6 +3,9 @@
 use vars qw(@ISA);
 require Etk::Container;
 @ISA = ("Etk::Container");
+
+use AutoLoader;
+
 sub new
 {
     my $class = shift;
@@ -15,6 +18,10 @@
 {
     my $self = shift;
     my $child = shift;
+    if (!$child && ref $self->{PARENT} && $self->{PARENT}->isa("Etk::Box")) {
+           $self->{PARENT}->PackStart($self, @_);
+           return $self;
+    }
     my $expand = 1;
     $expand = shift if(@_ > 0);
     my $fill = 1;
@@ -23,6 +30,7 @@
     $padding = shift if(@_ > 0);
     Etk::etk_box_pack_start($self->{WIDGET}, $child->{WIDGET}, $expand,
        $fill, $padding);
+    return $self;
 }
 
 sub PackEnd
@@ -51,16 +59,29 @@
        $expand, $fill, $pack_end);
 }
 
+=item ChildPackingGet($child)
+
+Get packing information about the child.
+If $child is numerical then it is the nth child added, otherwise it's the 
widget itself.
+
+Returns: ($padding, $expand, $fill, $pack_end) or undef if child is not found.
+
+=cut
+
 sub ChildPackingGet
 {
     my $self = shift;
     my $child = shift;
-    # RETURNS:
-    # padding 
-    # expand
-    # fill
-    # pack_end
-    return Etk::etk_box_child_packing_get($self->{WIDGET}, $child->{WIDGET});
+    my $child_widget;
+    if ($child + 0 eq $child) {
+        $child_widget = $self->children()->[$child];
+    } else {
+       $child_widget = $child;
+    }
+    if ($child_widget->isa("Etk::Widget")) {
+           return Etk::etk_box_child_packing_get($self->{WIDGET}, 
$child_widget->{WIDGET});
+    }
+    return undef;
 }
 
 sub SpacingSet
@@ -89,4 +110,37 @@
     return Etk::etk_box_homogenous_Get($self->{WIDGET});
 }
 
+sub children
+{
+    my $self = shift;
+    return $self->{CHILDREN};
+}
+
+sub AUTOLOAD
+{
+    our $AUTOLOAD;
+
+    my $package;
+    ($package = $AUTOLOAD) =~ s/.*:://;
+
+    if ($package =~ /^Add(.+)/) 
+    {
+       my $self = shift;
+       my $p = $1;
+       my $return;
+
+       eval("use Etk::$p");
+       die("Cannot load package Etk::$p - $@") if $@;
+       eval("\$return = Etk::${p}->new([EMAIL PROTECTED]);");
+
+       push @{$self->{CHILDREN}}, $return;
+       $return->{PARENT} = $self;
+
+       return $return;
+    }
+}
+
 1;
+
+__END__
+
===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/Button.pm,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- Button.pm   15 Jul 2006 19:19:05 -0000      1.3
+++ Button.pm   18 Jul 2006 22:14:34 -0000      1.4
@@ -54,12 +54,26 @@
     my $self = shift;
     return Etk::etk_button_label_get($self->{WIDGET});
 }
+       
+=item ImageSet($image)
+
+Set the image of a button.
+If $image is a string, a new Etk::Image object is created.
+
+=cut 
 
 sub ImageSet
 {
     my $self = shift;
-    my $image = shift;
+    my $im = shift;
+    my $image;
+    if (ref $im && $im->isa("Etk::Image")) {
+           $image = $im;
+    } else {
+           $image = Etk::Image->new($im);
+    }
     Etk::etk_button_image_set($self->{WIDGET}, $image->{WIDGET});
+    return $self;
 }
 
 sub ImageGet
===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/Combobox.pm,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- Combobox.pm 1 Jul 2006 20:20:22 -0000       1.3
+++ Combobox.pm 18 Jul 2006 22:14:34 -0000      1.4
@@ -4,6 +4,8 @@
 require Etk::Widget;
 @ISA = ("Etk::Widget");
 
+use Etk::Combobox::Item;
+
 use constant
 {
     ColumnTypeLabel => 0,
===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/Iconbox.pm,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- Iconbox.pm  15 Jul 2006 19:19:05 -0000      1.3
+++ Iconbox.pm  18 Jul 2006 22:14:34 -0000      1.4
@@ -3,6 +3,10 @@
 use vars qw(@ISA);
 require Etk::Widget;
 @ISA = ("Etk::Widget");
+
+use Etk::Iconbox::Icon;
+use Etk::Iconbox::Model;
+
 sub new
 {
     my $class = shift;
===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/Menu.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Menu.pm     7 Jun 2006 11:58:34 -0000       1.1
+++ Menu.pm     18 Jul 2006 22:14:34 -0000      1.2
@@ -1,8 +1,17 @@
 package Etk::Menu;
 use strict;
 use vars qw(@ISA);
-require Etk::Menu;
+require Etk::Menu::Shell;
 @ISA = ("Etk::Menu::Shell");
+
+use Etk::Menu::Bar;
+use Etk::Menu::Item;
+
+use Etk::Menu::Item::Check;
+use Etk::Menu::Item::Image;
+use Etk::Menu::Item::Radio;
+use Etk::Menu::Item::Separator;
+
 sub new
 {
     my $class = shift;
===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/Object.pm,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- Object.pm   15 Jul 2006 19:19:05 -0000      1.7
+++ Object.pm   18 Jul 2006 22:14:34 -0000      1.8
@@ -12,65 +12,55 @@
 sub SignalConnect
 {
     my $self = shift;
-    my ($type, $mem) = split /=/, $self->{WIDGET};
     my $signal_name = shift;
     my $callback = shift;
     my $data = undef;
     $data = shift if (@_ > 0);
-    Etk::etk_signal_connect($signal_name, 
-       bless($self->{WIDGET}, "Etk_WidgetPtr"), $callback, $data);
-    bless($self->{WIDGET}, $type);
+    Etk::etk_signal_connect($signal_name, $self, $callback, $data);
+    return $self;
 }
 
 sub SignalConnectAfter
 {
     my $self = shift;
-    my ($type, $mem) = split /=/, $self->{WIDGET};
     my $signal_name = shift;
     my $callback = shift;
     my $data = undef;
     $data = shift if (@_ > 0);
-    Etk::etk_signal_connect_after($signal_name, 
-       bless($self->{WIDGET}, "Etk_WidgetPtr"), $callback, $data);
-    bless($self->{WIDGET}, $type);
+    Etk::etk_signal_connect_after($signal_name, $self, $callback, $data);
+    return $self;
 }
 
 sub SignalConnectSwapped
 {
     my $self = shift;
-    my ($type, $mem) = split /=/, $self->{WIDGET};
     my $signal_name = shift;
     my $callback = shift;
     my $data = undef;
     $data = shift if (@_ > 0);
-    Etk::etk_signal_connect_swapped($signal_name, 
-       bless($self->{WIDGET}, "Etk_WidgetPtr"), $callback, $data);
-    bless($self->{WIDGET}, $type);
+    Etk::etk_signal_connect_swapped($signal_name, $self, $callback, $data);
+    return $self;
 }
 
 sub SignalConnectFull
 {
     my $self = shift;
-    my ($type, $mem) = split /=/, $self->{WIDGET};
     my $signal_name = shift;
     my $callback = shift;
     my $data = shift;
     my $swapped = shift;
     my $after = shift;
-    Etk::etk_signal_connect_full($signal_name, 
-       bless($self->{WIDGET}, "Etk_WidgetPtr"), $callback, $data, $swapped, 
$after);
-    bless($self->{WIDGET}, $type);
+    Etk::etk_signal_connect_full($signal_name, $self, $callback, $data, 
$swapped, $after);
+    return $self;
 }
 
 sub SignalDisconnect
 {
     my $self = shift;
-    my ($type, $mem) = split /=/, $self->{WIDGET};
     my $signal_name = shift;
     my $callback = shift;
-    Etk::etk_signal_disconnect($signal_name, 
-       bless($self->{WIDGET}, "Etk_WidgetPtr"), $callback);
-    bless($self->{WIDGET}, $type);
+    Etk::etk_signal_disconnect($signal_name, $self, $callback);
+    return $self;
 }
 
 sub NotificationCallbackAdd
===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/ProgressBar.pm,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ProgressBar.pm      7 Jun 2006 17:37:21 -0000       1.2
+++ ProgressBar.pm      18 Jul 2006 22:14:34 -0000      1.3
@@ -63,6 +63,7 @@
     my $self = shift;
     my $pulse_step = shift;
     Etk::etk_progress_bar_pulse_step_set($self->{WIDGET}, $pulse_step);
+    return $self;
 }
 
 sub PulseStepGet
===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/Tree.pm,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- Tree.pm     11 Jun 2006 18:59:27 -0000      1.2
+++ Tree.pm     18 Jul 2006 22:14:34 -0000      1.3
@@ -1,10 +1,21 @@
 package Etk::Tree;
 use strict;
 use vars qw(@ISA);
-use Etk::Tree::Row;
 require Etk::Widget;
 @ISA = ("Etk::Widget");
 
+use Etk::Tree::Col;
+use Etk::Tree::Row;
+use Etk::Tree::Model;
+
+use Etk::Tree::Model::Checkbox;
+use Etk::Tree::Model::Double;
+use Etk::Tree::Model::IconText;
+use Etk::Tree::Model::Image;
+use Etk::Tree::Model::Int;
+use Etk::Tree::Model::ProgressBar;
+use Etk::Tree::Model::Text;
+
 use constant
 {
    ModeList => 0,
@@ -207,6 +218,64 @@
 {
    my $self = shift;
    # TODO: pending list implementation
-}                                           
+}
+
+sub AddCol
+{
+    my $self = shift;
+    my ($title, $model, $width) = @_;
+
+    my $model_widget;
+    if ($model eq "Text") { 
+           $model_widget = Etk::Tree::Model::Text->new($self);
+    } elsif ($model eq "ProgressBar") {
+           $model_widget = Etk::Tree::Model::ProgressBar->new($self);
+    } # etc...
+
+    my $widget = Etk::Tree::Col->new($self, $title, $model_widget, $width);
+    $widget->{MODEL} = $model;
+    
+    push @{$self->{COLS}}, $widget;
+    return $widget;
+
+}
+
+sub AddCols
+{
+    my $self = shift;
+    my @cols = @_;
+    foreach (@cols) {
+           $self->AddCol(@$_);
+    }
+    return $self;
+}
+
+sub AddRow
+{
+    my $self = shift;
+    my @data = @_;
+    my @cols = @{$self->{COLS}};
+    my $row = $self->Append();
+    foreach my $col (@cols) {
+       if ($col->{MODEL} eq "Text") {
+               my $text = shift @data;
+               $row->FieldTextSet($col, $text);
+       } elsif ($col->{MODEL} eq "ProgressBar") {
+               my $prog = shift @data;
+               $row->FieldProgressBarSet($col, $prog->[0], $prog->[1]);
+       }
+    }
+    return $row;
+}
+   
+sub AddRows
+{
+    my $self = shift;
+    my @rows = @_;
+    foreach (@rows) {
+           $self->AddRow(@$_);
+    }
+    return $self;
+}
    
 1;
===================================================================
RCS file: /cvs/e/e17/proto/etk-perl/lib/Etk/Widget.pm,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- Widget.pm   17 Jul 2006 23:26:17 -0000      1.7
+++ Widget.pm   18 Jul 2006 22:14:34 -0000      1.8
@@ -439,18 +439,33 @@
     my $package;
     ($package = $AUTOLOAD) =~ s/.*:://;
 
-    if ($package =~ /^Add(.*)/) 
+    if ($package =~ /^Add(.+)/) 
     {
-       shift;
+       my $self = shift;
        my $p = $1;
        my $return;
 
        eval("use Etk::$p");
        die("Cannot load package Etk::$p - $@") if $@;
        eval("\$return = Etk::${p}->new([EMAIL PROTECTED]);");
+
+       $self->Add($return);
+       
        return $return;
     }
 }
+
+sub PackStart
+{
+    my $self = shift;
+    if ($self->{PARENT}->isa("Etk::Box")) {
+           $self->{PARENT}->PackStart($self, @_);
+    } else {
+           warn("Parent is not a Box\n");
+    }
+    return $self;
+}
+
 
 1;
 



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to