… | |
… | |
140 | "_Map Resize" => { |
140 | "_Map Resize" => { |
141 | callback => sub { $self->open_resize_map }, |
141 | callback => sub { $self->open_resize_map }, |
142 | }, |
142 | }, |
143 | "Close" => { |
143 | "Close" => { |
144 | callback => sub { $self->destroy }, |
144 | callback => sub { $self->destroy }, |
|
|
145 | accelerator => "<ctrl>W", |
145 | }, |
146 | }, |
146 | ] |
147 | ] |
147 | }, |
148 | }, |
148 | _Edit => { |
149 | _Edit => { |
149 | item_type => '<Branch>', |
150 | item_type => '<Branch>', |
… | |
… | |
381 | $self->{mapkey} = $key; |
382 | $self->{mapkey} = $key; |
382 | |
383 | |
383 | if (ref $path) { |
384 | if (ref $path) { |
384 | $self->{map}->set_map ($path); |
385 | $self->{map}->set_map ($path); |
385 | delete $self->{meta_info}; |
386 | delete $self->{meta_info}; |
386 | $self->set_title ('<ram>'); |
387 | $self->set_window_title; |
387 | |
388 | |
388 | } else { |
389 | } else { |
389 | my $ok = 0; |
390 | my $ok = 0; |
390 | if (-e $path && -f $path) { |
391 | if (-e $path && -f $path) { |
391 | $ok = 1; |
392 | $ok = 1; |
… | |
… | |
401 | die "Couldn't open '$path' or find '$path.map': No such file or it is not a file.\n"; |
402 | die "Couldn't open '$path' or find '$path.map': No such file or it is not a file.\n"; |
402 | } |
403 | } |
403 | $self->{path} = $path; |
404 | $self->{path} = $path; |
404 | $self->{map}->set_map (my $m = new_from_file Crossfire::Map $path); |
405 | $self->{map}->set_map (my $m = new_from_file Crossfire::Map $path); |
405 | $self->{meta_info} = load_meta_info ($path); |
406 | $self->{meta_info} = load_meta_info ($path); |
406 | $self->set_title ("gce - map editor - $self->{path}"); |
407 | $self->set_window_title ($self->{path}); |
407 | $::MAINWIN->add_recent($path); |
408 | $::MAINWIN->add_recent($path); |
408 | } |
409 | } |
409 | $self->close_windows; |
410 | $self->close_windows; |
410 | } |
411 | } |
411 | |
412 | |
… | |
… | |
416 | $self->{map}{map}->write_file ($self->{path}); |
417 | $self->{map}{map}->write_file ($self->{path}); |
417 | if ($self->{meta_info}) { |
418 | if ($self->{meta_info}) { |
418 | save_meta_info ($self->{path}, $self->{meta_info}); |
419 | save_meta_info ($self->{path}, $self->{meta_info}); |
419 | } |
420 | } |
420 | quick_msg ($self, "saved to $self->{path}"); |
421 | quick_msg ($self, "saved to $self->{path}"); |
421 | $self->set_title ("gce - map editor - $self->{path}"); |
422 | $self->set_window_title ($self->{path}); |
422 | $::MAINWIN->add_recent($self->{path}); |
423 | $::MAINWIN->add_recent($self->{path}); |
423 | } else { |
424 | } else { |
424 | $self->save_map_as; |
425 | $self->save_map_as; |
425 | } |
426 | } |
|
|
427 | } |
|
|
428 | |
|
|
429 | sub set_window_title { |
|
|
430 | my ($self, $title) = @_; |
|
|
431 | |
|
|
432 | $title = 'Unsaved' |
|
|
433 | unless $title; |
|
|
434 | |
|
|
435 | $self->set_title(File::Basename::basename($title).' - gcrossedit'); |
426 | } |
436 | } |
427 | |
437 | |
428 | sub save_map_as { |
438 | sub save_map_as { |
429 | my ($self) = @_; |
439 | my ($self) = @_; |
430 | |
440 | |
… | |
… | |
702 | ################################################################# |
712 | ################################################################# |
703 | |
713 | |
704 | sub INIT_INSTANCE { |
714 | sub INIT_INSTANCE { |
705 | my ($self) = @_; |
715 | my ($self) = @_; |
706 | |
716 | |
707 | $self->set_title ('gce - map editor'); |
717 | $self->set_window_title; |
708 | $self->add (my $vb = Gtk2::VBox->new); |
718 | $self->add (my $vb = Gtk2::VBox->new); |
709 | |
719 | |
710 | $vb->pack_start (my $menu = $self->build_menu, 0, 1, 0); |
720 | $vb->pack_start (my $menu = $self->build_menu, 0, 1, 0); |
711 | |
721 | |
712 | $vb->pack_start (my $map = $self->{map} = Crossfire::MapWidget->new, 1, 1, 0); |
722 | $vb->pack_start (my $map = $self->{map} = Crossfire::MapWidget->new, 1, 1, 0); |