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

Comparing deliantra/gde/GCE/PickWindow.pm (file contents):
Revision 1.5 by elmex, Thu Feb 9 15:45:52 2006 UTC vs.
Revision 1.6 by root, Thu Feb 9 19:59:37 2006 UTC

35 my $w = $self->{w} = Gtk2::Window->new ('toplevel'); 35 my $w = $self->{w} = Gtk2::Window->new ('toplevel');
36 $w->set_title ("gce - picker"); 36 $w->set_title ("gce - picker");
37 37
38 $w->add (my $hb = Gtk2::VBox->new); 38 $w->add (my $hb = Gtk2::VBox->new);
39 39
40 $hb->pack_start (my $cb = Gtk2::ComboBox->new_text, 0, 1, 0); 40 $hb->pack_start (my $cb = Gtk2::ComboBox->new_text, 0, 1, 0);
41 41
42 for (sort keys %{$self->{toplevel_archs}}) { 42 for (sort keys %{$self->{toplevel_archs}}) {
43 43
44 $cb->append_text ($_); 44 $cb->append_text ($_);
45 } 45 }
46 46
47 $cb->signal_connect (changed => sub { 47 $cb->signal_connect (changed => sub {
48 48
49 my $arch = $cb->get_active_text; 49 my $arch = $cb->get_active_text;
50 $self->{map}->set_map ( 50 $self->{map}->set_map (
51 arch2pickmap 51 new_pickmap Crossfire::Map $self->{toplevel_archs}->{$arch});
52 sort {
53 ${$a}->{_name} cmp ${$b}->{_name}
54 } $self->{toplevel_archs}->{$arch}
55 );
56 52
57 $self->{map}->enable_tooltip; 53 $self->{map}->enable_tooltip;
58 }); 54 });
59 55
60 $hb->pack_start (my $map = $self->{map} = new Crossfire::MapWidget, 1, 1, 0); 56 $hb->pack_start (my $map = $self->{map} = new Crossfire::MapWidget, 1, 1, 0);
61 $map->signal_connect (button_press_event => sub {
62 my ($f, $event) = @_;
63 57
64 if ($event->button == 1 && $event->state & "shift-mask") { 58 $map->set_size_request (TILESIZE * 10, TILESIZE * 10);
65 59
66 my ($mx, $my) = $map->coord ($event->x, $event->y); 60 $map->signal_connect (button_press_event => sub {
67 my $s = map_get_tile_stack ($map, $mx, $my); 61 my ($f, $event) = @_;
68 62
69 my $arch = $s->[-1] 63 if ($event->button == 1 && $event->state & "shift-mask") {
70 or return;
71 64
72 $self->{arch_edit_cb} and $self->{arch_edit_cb}->($arch); 65 my ($mx, $my) = $map->coord ($event->x, $event->y);
66 my $s = map_get_tile_stack ($map, $mx, $my);
73 67
74 } elsif ($event->button == 1) { 68 my $arch = $s->[-1]
69 or return;
75 70
76 my ($mx, $my) = $map->coord ($event->x, $event->y); 71 $self->{arch_edit_cb} and $self->{arch_edit_cb}->($arch);
77 my $s = map_get_tile_stack ($map, $mx, $my);
78 72
79 my $arch = $s->[-1] 73 } elsif ($event->button == 1) {
80 or return;
81 74
82 $self->{set_sel_cb} and $self->{set_sel_cb}->($arch); 75 my ($mx, $my) = $map->coord ($event->x, $event->y);
83 } 76 my $s = map_get_tile_stack ($map, $mx, $my);
84 });
85 77
78 my $arch = $s->[-1]
79 or return;
80
81 $self->{set_sel_cb} and $self->{set_sel_cb}->($arch);
82 }
83 });
86 84
87 $w->show_all; 85 $w->show_all;
88} 86}
89 87
90 88

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines