ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/gde/GCE/AttrEdit.pm
(Generate patch)

Comparing deliantra/gde/GCE/AttrEdit.pm (file contents):
Revision 1.2 by elmex, Tue Feb 7 14:28:23 2006 UTC vs.
Revision 1.3 by elmex, Thu Feb 9 15:45:52 2006 UTC

8 8
9use Gtk2; 9use Gtk2;
10use Gtk2::Gdk::Keysyms; 10use Gtk2::Gdk::Keysyms;
11use Gtk2::SimpleList; 11use Gtk2::SimpleList;
12 12
13use Glib::Object::Subclass Gtk2::VBox; 13use Glib::Object::Subclass Gtk2::Notebook;
14
15use GCE::AttrList;
16
17use Crossfire;
14 18
15sub INIT_INSTANCE { 19sub INIT_INSTANCE {
16 my ($self) = @_; 20 my ($self) = @_;
17 21
18 my $sl = $self->{sl} = Gtk2::SimpleList->new ('Attr' => 'text', 'Value' => 'text'); 22 my $al = $self->{al} = GCE::AttrList->new (editable => 1, raw => 0);
23 $self->append_page ($al, "obj attrs");
24 $al->set_arch_cb (sub { $self->update_arch (@_) });
19 25
20 $sl->set_column_editable (1, 1); 26 $al = $self->{raw_al} = GCE::AttrList->new (editable => 1);
27 $self->append_page ($al, "raw attrs");
28 $al->set_arch_cb (sub { $self->update_arch (@_) });
21 29
22 $self->pack_start ($sl, 1, 1, 0); 30 $al = $self->{al_arch} = GCE::AttrList->new (editable => 0);
31 $self->append_page ($al, "arch attrs");
32 $al->set_arch_cb (sub { $self->update_arch (@_) });
33}
34
35sub update_arch {
36 my ($self, $arch, $key, $value) = @_;
37
38
39 if ($value ne '') {
40
41 $arch->{$key} = $value;
42
43 } else {
44
45 delete $arch->{$key};
46
47 }
48
49 $self->set_arch ($arch);
23} 50}
24 51
25sub set_arch { 52sub set_arch {
26 my ($self, $arch) = @_; 53 my ($self, $arch, $ro) = @_;
27 54
28 @{$self->{sl}->{data}} = 55 if ($ro) {
29 sort { $a->[0] cmp $b->[0] } 56
30 map { my $c = $arch->{$_}; 57 $self->{al}->set (editable => 0);
31 if (ref $c eq 'ARRAY') { 58 $self->{raw_al}->set (editable => 0);
32 [$_, join (',', map { $_->{_name} } @$c)]; 59
33 } else { 60 } else {
34 [$_, $c]; 61
35 } 62 $self->{al}->set (editable => 1);
36 } keys %$arch; 63 $self->{raw_al}->set (editable => 1);
64 }
65
66 $self->{al}->set_arch ($arch);
67 $self->{raw_al}->set_arch ($arch);
68 my $al_arch = $Crossfire::ARCH->{$arch->{_name}};
69
70 if ($al_arch) {
71
72 $self->{al_arch}->set_arch ($al_arch);
73
74 } else {
75
76 $self->{al_arch}->set_arch ({ noarch => 'noarch' });
77 }
37} 78}
38 79
39 80
40=head1 AUTHOR 81=head1 AUTHOR
41 82

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines