… | |
… | |
10 | use Gtk2 -init; |
10 | use Gtk2 -init; |
11 | |
11 | |
12 | use Crossfire; |
12 | use Crossfire; |
13 | use Crossfire::Tilecache; |
13 | use Crossfire::Tilecache; |
14 | |
14 | |
15 | my $VARDIR = "$ENV{HOME}/.gcfedit"; |
15 | our $VARDIR = "$ENV{HOME}/.gcfedit"; |
16 | |
16 | |
17 | mkdir $VARDIR; |
17 | mkdir $VARDIR; |
18 | our $PICKDIR = "$Crossfire::LIB/maps/editor/picks"; |
18 | our $PICKDIR = "$Crossfire::LIB/maps/editor/picks"; |
|
|
19 | our $CFG; |
19 | |
20 | |
20 | use GCE::MainWindow; |
21 | use GCE::MainWindow; |
21 | use GCE::PickWindow; |
22 | use Data::Dumper; |
22 | |
23 | |
|
|
24 | read_cfg ($VARDIR . '/config'); |
23 | my $w = GCE::MainWindow->new; |
25 | my $w = GCE::MainWindow->new; |
24 | |
26 | |
25 | $w->set_default_size (800, 600); |
27 | $w->load_layout; |
26 | |
28 | |
27 | $w->show_all; |
29 | $w->show_all; |
28 | |
30 | |
29 | Gtk2->main; |
31 | Gtk2->main; |
|
|
32 | |
|
|
33 | sub read_cfg { |
|
|
34 | my ($file) = @_; |
|
|
35 | |
|
|
36 | open CFG, $file |
|
|
37 | or return; |
|
|
38 | |
|
|
39 | $CFG = eval join '', <CFG>; |
|
|
40 | |
|
|
41 | close CFG; |
|
|
42 | } |
|
|
43 | |
|
|
44 | sub write_cfg { |
|
|
45 | my ($file) = @_; |
|
|
46 | |
|
|
47 | open CFG, ">$file" |
|
|
48 | or return; |
|
|
49 | |
|
|
50 | { |
|
|
51 | local $Data::Dumper::Purity = 1; |
|
|
52 | print CFG Data::Dumper->Dump ([$CFG], [qw/CFG/]); |
|
|
53 | } |
|
|
54 | |
|
|
55 | close CFG; |
|
|
56 | } |
|
|
57 | |
|
|
58 | # following 2 functions are taken from CV :) |
|
|
59 | sub find_rcfile($) { |
|
|
60 | my $path; |
|
|
61 | |
|
|
62 | for (@INC) { |
|
|
63 | |
|
|
64 | $path = "$_/GCE/$_[0]"; |
|
|
65 | return $path if -r $path; |
|
|
66 | } |
|
|
67 | |
|
|
68 | die "FATAL: can't find required file $_[0]\n"; |
|
|
69 | } |
|
|
70 | |
|
|
71 | sub require_image($) { |
|
|
72 | new_from_file Gtk2::Gdk::Pixbuf find_rcfile "images/$_[0]"; |
|
|
73 | } |
|
|
74 | |
|
|
75 | sub get_pos_and_size { |
|
|
76 | my ($window) = @_; |
|
|
77 | |
|
|
78 | my ($x, $y) = $window->get_position; |
|
|
79 | my ($w, $h) = $window->get_size; |
|
|
80 | |
|
|
81 | return [$x, $y, $w, $h]; |
|
|
82 | } |
|
|
83 | |
|
|
84 | sub set_pos_and_size { |
|
|
85 | my ($window, $p_and_s) = @_; |
|
|
86 | |
|
|
87 | $window->set_default_size ($p_and_s->[2], $p_and_s->[3]); |
|
|
88 | |
|
|
89 | # FIXME: This sucks, moving it after showing it can't be a good thing. |
|
|
90 | $window->show_all; |
|
|
91 | $window->move ($p_and_s->[0], $p_and_s->[1]); |
|
|
92 | } |
30 | |
93 | |
31 | =head1 AUTHOR |
94 | =head1 AUTHOR |
32 | |
95 | |
33 | Marc Lehmann <schmorp@schmorp.de> |
96 | Marc Lehmann <schmorp@schmorp.de> |
34 | http://home.schmorp.de/ |
97 | http://home.schmorp.de/ |