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

Comparing deliantra/gde/GCE/MainWindow.pm (file contents):
Revision 1.14 by elmex, Thu Feb 9 15:45:52 2006 UTC vs.
Revision 1.15 by elmex, Sat Feb 11 01:23:07 2006 UTC

13use Crossfire; 13use Crossfire;
14use Crossfire::MapWidget; 14use Crossfire::MapWidget;
15 15
16use GCE::AttrEdit; 16use GCE::AttrEdit;
17use GCE::MapEditor; 17use GCE::MapEditor;
18use GCE::StackView;
18 19
19use GCE::AttrTypemap; 20use GCE::AttrTypemap;
20 21
21use Glib::Object::Subclass 22use Glib::Object::Subclass
22 Gtk2::Window; 23 Gtk2::Window;
23 24
24use strict; 25use strict;
26
27our $MAINWIN;
28
29sub test_stack_view {
30 my ($self) = @_;
31
32 return if defined $self->{sv};
33
34 my $w = Gtk2::Window->new ('toplevel');
35 $w->set_title ('gce - stack view');
36 $w->signal_connect ('delete-event' => sub { $self->{sv} = undef; });
37 $w->add ($self->{sv} = GCE::StackView->new);
38 $w->show_all;
39}
40
41sub show_attr_editor {
42 my ($self) = @_;
43
44 my $w = $self->{attr_edit_win} = Gtk2::Window->new;
45 $w->set_title ("gce - edit attrs");
46 $w->add ($self->{attr_edit} = GCE::AttrEdit->new);
47 $w->signal_connect ('delete-event' => sub { delete $self->{attr_edit}; 0 });
48 $w->show_all;
49}
50
51sub update_attr_editor {
52 my ($self, $arch, $ro) = @_;
53
54 return unless $self->{attr_edit};
55
56 $self->{attr_edit}->set_arch ($arch, $ro);
57 $self->{attr_edit_win}->set_title ("gce - edit $arch->{_name}");
58}
59
60sub update_stack_view {
61 my ($self, $mapedit, $stack, $x, $y) = @_;
62
63 return unless $self->{sv};
64
65 $self->{sv}->set_stack ($mapedit, $stack, $x, $y);
66}
67
68#XXX: Soon we want to handle multiple maps!
69#XXX: Refactor this to MapEditor??
70sub change_map_tile {
71 my ($self, $mapedit, $x, $y, $newstack, $oldstack) = @_;
72
73 $mapedit->{map}{map}{map}[$x][$y] = $newstack;
74 $mapedit->{map}->update_map ($x, $y, 1, 1);
75}
25 76
26sub open_pick_window { 77sub open_pick_window {
27 my ($self) = @_; 78 my ($self) = @_;
28 79
29 my $p = GCE::PickWindow->new ( 80 my $p = GCE::PickWindow->new (
31 82
32 $self->{mapedit}->update_pick ($_[0]) 83 $self->{mapedit}->update_pick ($_[0])
33 }, 84 },
34 arch_edit_cb => sub { 85 arch_edit_cb => sub {
35 86
36 $self->{mapedit}->update_attr_editor ($_[0], 1) 87 $self->update_attr_editor ($_[0], 1)
37 } 88 }
38 ); 89 );
39 $p->init; 90 $p->init;
40} 91}
41 92
73 }, 124 },
74 "_Clear All" => { 125 "_Clear All" => {
75 callback => sub { die "NO IMPL" }, 126 callback => sub { die "NO IMPL" },
76 accelerator => "<ctrl>X" 127 accelerator => "<ctrl>X"
77 }, 128 },
129 "Open _Attr Editor" => {
130 callback => sub { $self->show_attr_editor },
131 accelerator => "<ctrl>A"
132 },
78 "Open _Picker" => { 133 "Open _Picker" => {
79 callback => sub { $self->open_pick_window }, 134 callback => sub { $self->open_pick_window },
80 accelerator => "<ctrl>P" 135 accelerator => "<ctrl>P"
81 }, 136 },
137 "Open _Stack View" => {
138 callback => sub { $self->test_stack_view },
139 accelerator => "<ctrl>V"
140 },
141
82 ] 142 ]
83 } 143 }
84 ]; 144 ];
85 145
86 my $men = 146 my $men =
97 157
98 158
99sub INIT_INSTANCE { 159sub INIT_INSTANCE {
100 my ($self) = @_; 160 my ($self) = @_;
101 161
162 $MAINWIN = $self;
163
102 $self->set_title ("gce - main window"); 164 $self->set_title ("gce - main window");
103 165
104 $self->add (my $vb = Gtk2::VBox->new); 166 $self->add (my $vb = Gtk2::VBox->new);
105 $vb->pack_start ($self->build_menu, 0, 1, 0); 167 $vb->pack_start ($self->build_menu, 0, 1, 0);
168
106 $vb->pack_start (my $mapedit = $self->{mapedit} = new GCE::MapEditor, 1, 1, 0); 169 $vb->pack_start (my $mapedit = $self->{mapedit} = new GCE::MapEditor, 1, 1, 0);
107 170
108 # XXX:load $ARGV _cleanly_? 171 # XXX:load $ARGV _cleanly_?
109 $mapedit->open_map ($ARGV[0] || "$Crossfire::LIB/maps/dragonisland/advguild3"); 172 $mapedit->open_map ($ARGV[0] || "$Crossfire::LIB/maps/dragonisland/advguild3");
110 173

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines