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.27 by root, Thu Feb 23 14:54:39 2006 UTC vs.
Revision 1.28 by elmex, Fri Mar 10 20:32:47 2006 UTC

21 21
22use GCE::AttrTypemap; 22use GCE::AttrTypemap;
23 23
24use Glib::Object::Subclass 24use Glib::Object::Subclass
25 Gtk2::Window; 25 Gtk2::Window;
26
27use GCE::Util;
26 28
27use strict; 29use strict;
28 30
29# XXX: make a recursive call from save_layout to all (interesting) sub-widgets 31# XXX: make a recursive call from save_layout to all (interesting) sub-widgets
30sub save_layout { 32sub save_layout {
253 my ($self) = @_; 255 my ($self) = @_;
254 256
255 my $tbl = Gtk2::Table->new (2, 2); 257 my $tbl = Gtk2::Table->new (2, 2);
256 my $plcinfo = { width => 1, height => 3, next => [0, 0] }; 258 my $plcinfo = { width => 1, height => 3, next => [0, 0] };
257 259
258 $self->{edit_collection}{pick} = GCE::EditAction::Pick->new; 260 $self->{edit_collection}{pick} = GCE::EditAction::Pick->new;
259 $self->{edit_collection}{place} = GCE::EditAction::Place->new; 261 $self->{edit_collection}{place} = GCE::EditAction::Place->new;
260 $self->{edit_collection}{erase} = GCE::EditAction::Erase->new; 262 $self->{edit_collection}{erase} = GCE::EditAction::Erase->new;
261 263
264 $self->update_edit_tool ($self->{edit_collection}{pick}, "Pick");
265
262 $self->add_button ($tbl, $plcinfo, "Pick", sub { 266 $self->add_button ($tbl, $plcinfo, "Pick", sub {
263 $self->{sel_editaction} = $self->{edit_collection}{pick}; 267 $self->update_edit_tool ($self->{edit_collection}{pick}, "Pick");;
264 $self->{edit_tool}->set_text ("Pick");
265 }); 268 });
266 $self->add_button ($tbl, $plcinfo, "Place", sub { 269 $self->add_button ($tbl, $plcinfo, "Place", sub {
267 $self->{sel_editaction} = $self->{edit_collection}{place}; 270 $self->update_edit_tool ($self->{edit_collection}{place}, "Place");;
268 $self->{edit_tool}->set_text ("Place");
269 }); 271 });
270 $self->add_button ($tbl, $plcinfo, "Erase", sub { 272 $self->add_button ($tbl, $plcinfo, "Erase", sub {
271 $self->{sel_editaction} = $self->{edit_collection}{erase}; 273 $self->update_edit_tool ($self->{edit_collection}{erase}, "Erase");;
272 $self->{edit_tool}->set_text ("Erase");
273 }); 274 });
274 275
275 return $tbl; 276 return $tbl;
276} 277}
277 278
279sub update_edit_tool {
280 my ($self, $tool, $name) = @_;
281
282 $self->{edit_tool}->set_text ($name);
283 $self->{sel_editaction} = $tool;
284
285 my $widget = $tool->tool_widget;
286
287 for ($self->{edit_tool_cont}->get_children) {
288 $_->hide;
289 $self->{edit_tool_cont}->remove ($_);
290 }
291
292 defined $widget or return;
293
294 $self->{edit_tool_cont}->add ($widget);
295 $widget->show_all;
296}
297
298sub update_pick_view {
299 my ($self, $arch) = @_;
300
301 defined $arch->{_face}
302 or $arch = $Crossfire::ARCH{$arch->{_name}};
303
304 $arch->{_face}
305 or warn "Arch $arch->{_name} has no face!";
306 $arch->{_face}
307 or return;
308
309 fill_pb_from_arch ($self->{pick_view_pb}, $arch);
310 $self->{pick_view_img}->set_from_pixbuf ($self->{pick_view_pb});
311
312 $self->{pick_view_lbl}->set_text ($arch->{_name});
313}
314
278 315
279sub INIT_INSTANCE { 316sub INIT_INSTANCE {
280 my ($self) = @_; 317 my ($self) = @_;
281 318
282 $::MAINWIN = $self; 319 $::MAINWIN = $self;
283 320
284 $self->set_title ("gce - main window"); 321 $self->set_title ("gce - main window");
322
323 $self->{edit_tool} = Gtk2::Label->new;
324 $self->{edit_tool_cont} = Gtk2::VBox->new;
285 325
286 $self->add (my $vb = Gtk2::VBox->new); 326 $self->add (my $vb = Gtk2::VBox->new);
287 $vb->pack_start ($self->build_menu, 0, 1, 0); 327 $vb->pack_start ($self->build_menu, 0, 1, 0);
328
329 $vb->pack_start (my $hb = $self->{pick_view_hb} = Gtk2::HBox->new, 0, 1, 0);
330 $hb->pack_start ($self->{pick_view_img} = Gtk2::Image->new, 0, 1, 0);
331 $hb->pack_start ($self->{pick_view_lbl} = Gtk2::Label->new, 0, 1, 0);
332 $self->{pick_view_pb} = new_arch_pb ();
333
334 $vb->pack_start (Gtk2::HSeparator->new, 0, 1, 0);
288 $vb->pack_start (my $tbl = $self->build_buttons, 1, 1, 0); 335 $vb->pack_start (my $tbl = $self->build_buttons, 0, 1, 0);
336
337 $vb->pack_start (Gtk2::HSeparator->new, 0, 1, 0);
289 $vb->pack_start ($self->{edit_tool} = Gtk2::Label->new, 0, 1, 0); 338 $vb->pack_start ($self->{edit_tool}, 0, 1, 0);
290 $vb->pack_start ($self->{pick_view} = Gtk2::Label->new, 0, 1, 0); 339
340 $vb->pack_start (Gtk2::HSeparator->new, 0, 1, 0);
341 $vb->pack_start ($self->{edit_tool_cont}, 0, 1, 0);
291 342
292 # XXX:load $ARGV _cleanly_? 343 # XXX:load $ARGV _cleanly_?
293 $self->open_map_editor ($_) 344 $self->open_map_editor ($_)
294 for @ARGV; 345 for @ARGV;
295 346
337 388
338sub set_pick { 389sub set_pick {
339 my ($self, $arch) = @_; 390 my ($self, $arch) = @_;
340 391
341 $self->{pick_arch} = $arch; 392 $self->{pick_arch} = $arch;
342 $self->{pick_view}->set_text ($arch->{_name}); 393 $self->update_pick_view ($arch);
343} 394}
344 395
345sub get_pick { 396sub get_pick {
346 my ($self) = @_; 397 my ($self) = @_;
347 398

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines