ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/UI/Inventory.pm
Revision: 1.4
Committed: Wed Dec 26 21:03:21 2007 UTC (16 years, 5 months ago) by root
Branch: MAIN
CVS Tags: rel-0_9965, rel-0_9964, rel-0_9963, rel-0_9968, rel-0_9967, rel-0_9966
Changes since 1.3: +5 -5 lines
Log Message:
initial module hiding

File Contents

# User Rev Content
1 root 1.4 package DC::UI::Inventory;
2 root 1.1
3     use strict;
4     use utf8;
5    
6 root 1.4 use DC::Macro;
7     use DC::Item;
8 root 1.1
9 root 1.4 our @ISA = DC::UI::Table::;
10 root 1.1
11     sub new {
12     my $class = shift;
13    
14     my $self = $class->SUPER::new (
15     col_expand => [0, 1, 0],
16     items => [],
17     @_,
18     );
19    
20     $self->set_sort_order (undef);
21    
22     $self
23     }
24    
25     sub update_items {
26     my ($self) = @_;
27    
28     $self->clear;
29    
30     my @item = $self->{sort}->(@{ $self->{items} });
31    
32     my @adds;
33     my $row = 0;
34     for my $item ($self->{sort}->(@{ $self->{items} })) {
35 root 1.4 DC::Item::update_widgets $item;
36 root 1.1
37     push @adds, 0, $row, $item->{face_widget};
38     push @adds, 1, $row, $item->{desc_widget};
39     push @adds, 2, $row, $item->{weight_widget};
40    
41     $row++;
42     }
43    
44 root 1.2 $self->add_at (@adds);
45 root 1.1 }
46    
47     sub set_sort_order {
48     my ($self, $order) = @_;
49    
50     $self->{sort} = $order ||= sub {
51     sort {
52     $a->{type} <=> $b->{type}
53     or $a->{name} cmp $b->{name}
54     } @_
55     };
56    
57     $self->update_items;
58     }
59    
60     sub set_items {
61     my ($self, $items) = @_;
62    
63     $self->{items} = [$items ? values %$items : ()];
64     $self->update_items;
65     }
66