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