… | |
… | |
43 | if ($self->{last_map_window}) { |
43 | if ($self->{last_map_window}) { |
44 | $main::CFG->{map_window} = main::get_pos_and_size ($self->{last_map_window}); |
44 | $main::CFG->{map_window} = main::get_pos_and_size ($self->{last_map_window}); |
45 | $self->{last_map_window}->save_layout (); |
45 | $self->{last_map_window}->save_layout (); |
46 | } |
46 | } |
47 | |
47 | |
48 | $self->{worldmap_coord_query_}->save_layout () |
48 | $self->{worldmap_coord_query}->save_layout () |
49 | if $self->{worldmap_coord_query_}; |
49 | if $self->{worldmap_coord_query}; |
50 | $self->{worldmap_coord_query_overlay}->save_layout () |
|
|
51 | if $self->{worldmap_coord_query_overlay}; |
|
|
52 | |
50 | |
53 | $main::CFG->{last_folders} = $self->{fc_last_folders}; |
51 | $main::CFG->{last_folders} = $self->{fc_last_folders}; |
54 | |
52 | |
55 | $main::CFG->{open_pickers} = []; |
53 | $main::CFG->{open_pickers} = []; |
56 | |
54 | |
… | |
… | |
287 | item_type => '<Branch>', |
285 | item_type => '<Branch>', |
288 | children => [ |
286 | children => [ |
289 | "world map at"=> { |
287 | "world map at"=> { |
290 | callback => sub { $self->open_worldmap_cb }, |
288 | callback => sub { $self->open_worldmap_cb }, |
291 | }, |
289 | }, |
292 | "world overlay map at (CF+);"=> { |
|
|
293 | callback => sub { $self->open_worldmap_cb ('overlay') }, |
|
|
294 | }, |
|
|
295 | ] |
290 | ] |
296 | }, |
291 | }, |
297 | "_Save Layout" => { |
292 | "_Save Layout" => { |
298 | callback => sub { $self->save_layout }, |
293 | callback => sub { $self->save_layout }, |
299 | accelerator => '<ctrl>L' |
294 | accelerator => '<ctrl>L' |
… | |
… | |
524 | |
519 | |
525 | $fc |
520 | $fc |
526 | } |
521 | } |
527 | |
522 | |
528 | sub new_coord_query { |
523 | sub new_coord_query { |
529 | my ($self, $mode, $finishcb) = @_; |
524 | my ($self, $finishcb) = @_; |
530 | |
525 | |
531 | my $coordhash = { x => 105, y => 115 }; |
526 | my $coordhash = { x => 105, y => 115, worldmap => 1, overlay => 0 }; |
532 | my $diag = GCE::HashDialogue->new; |
527 | my $diag = GCE::HashDialogue->new; |
533 | $self->{"worldmap_coord_query_$mode"} = $diag; |
528 | $self->{"worldmap_coord_query"} = $diag; |
534 | $diag->signal_connect (destroy => sub { |
529 | $diag->signal_connect (destroy => sub { |
535 | delete $self->{"worldmap_coord_query_$mode"}; |
530 | delete $self->{"worldmap_coord_query"}; |
536 | }); |
531 | }); |
537 | $diag->init ( |
532 | $diag->init ( |
538 | layout_name => 'worldmap_coord_query_'.$mode, |
533 | layout_name => 'worldmap_coord_query', |
539 | info => "Open $mode worldmap at ...", |
534 | info => "Open worldmap at ...", |
540 | dialog_default_size => [ 200, 200, 200, 0 ], |
535 | dialog_default_size => [ 200, 200, 200, 0 ], |
541 | title => 'Worldmap coordinate entry', |
536 | title => 'Worldmap coordinate entry', |
542 | ref_hash => $coordhash, |
537 | ref_hash => $coordhash, |
543 | dialog => [ |
538 | dialog => [ |
544 | [x => 'X Coordinate' => 'string'], |
539 | [x => 'X Coordinate' => 'spin', sub { (100, 129, 1) }], |
545 | [y => 'Y Coordinate' => 'string'], |
540 | [y => 'Y Coordinate' => 'spin', sub { (100, 129, 1) }], |
|
|
541 | [worldmap => 'Open worldmap' => 'check'], |
|
|
542 | [overlay => 'Open overlay (CF+)' => 'check'], |
546 | ], |
543 | ], |
547 | save_button_label => 'open', |
544 | save_button_label => 'open', |
548 | save_cb => sub { |
545 | save_cb => sub { |
549 | $finishcb->($mode, $_[0]->{x}, $_[0]->{y}); |
546 | $finishcb->($_[0]); |
550 | } |
547 | } |
551 | ); |
548 | ); |
552 | $diag->show_all; |
549 | $diag->show_all; |
553 | } |
550 | } |
554 | |
551 | |
555 | sub open_worldmap_cb { |
552 | sub open_worldmap_cb { |
556 | my ($self, $mode) = @_; |
553 | my ($self) = @_; |
557 | |
554 | |
558 | $self->new_coord_query ($mode, sub { |
555 | $self->new_coord_query (sub { |
559 | my ($mode, $x, $y) = @_; |
556 | my ($info) = @_; |
560 | my $map = $::CFG->{MAPDIR} |
557 | my ($x, $y) = ($info->{x}, $info->{y}); |
561 | . "/world" . ($mode eq 'overlay' ? '-overlay' : '') |
558 | my ($worldmap, $overlay) = ($info->{worldmap}, $info->{overlay}); |
562 | . "/world_$x\_$y"; |
559 | $self->open_map_editor ($::CFG->{MAPDIR} . "/world/world_$x\_$y") |
563 | $self->open_map_editor ($map); |
560 | if $worldmap; |
|
|
561 | $self->open_map_editor ($::CFG->{MAPDIR} . "/world-overlay/world_$x\_$y") |
|
|
562 | if $overlay; |
564 | }); |
563 | }); |
565 | } |
564 | } |
566 | |
565 | |
567 | sub open_cb { |
566 | sub open_cb { |
568 | my ($self) = @_; |
567 | my ($self) = @_; |