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.1 by elmex, Sun Feb 5 00:34:36 2006 UTC vs.
Revision 1.2 by elmex, Sun Feb 5 13:26:36 2006 UTC

6 6
7=cut 7=cut
8 8
9use Gtk2; 9use Gtk2;
10use Gtk2::Gdk::Keysyms; 10use Gtk2::Gdk::Keysyms;
11use Gtk2::SimpleMenu;
12use GCE::Map;
13use GCE::AttrEdit;
14use Crossfire;
15use Crossfire::Gtk2;
11 16
12use Glib::Object::Subclass Gtk2::Window; 17use Glib::Object::Subclass
18 Gtk2::Window,
19 signals => {
20 open_pick => { return_type => undef, param_types => [Glib::String] }
21 };
22
23use strict;
24
25sub get_picks {
26 opendir PICKS, $main::PICKDIR
27 or die "Can't open editor picks: $main::pickdir: $!";
28
29 grep { !m/^(\.|\.\.)$/ && -f "$main::PICKDIR/$_" } readdir PICKS
30}
13 31
14sub INIT_INSTANCE { 32sub INIT_INSTANCE {
15 my ($self) = @_; 33 my ($self) = @_;
16 34
17 $self->add (my $b = Gtk2::Label->new ("<stuff here>")); 35 $self->set_title ("gce - main window");
36
37 my @pick;
38 for (get_picks ()) {
39 push @pick, $_ => {
40 callback => sub { $self->signal_emit (open_pick => $_) }
41 };
42 }
43
44 my $menu_tree = [
45 _File => {
46 item_type => '<Branch>',
47 children => [
48 _New => {
49 callback => sub { $self->new_cb },
50 accelerator => '<ctrl>N'
51 },
52 _Open => {
53 callback => sub { $self->open_cb },
54 accelerator => '<ctrl>O'
55 },
56 _Quit => {
57 callback => sub { Gtk2->main_quit },
58 accelerator => '<ctrl>Q'
59 }
60 ]
61 },
62 _Edit => {
63 item_type => '<Branch>',
64 children => [
65 _Fill => {
66 callback => sub { die "NO IMPL" }, accelerator => "<ctrl>F"
67 },
68 "Clear _Top" => {
69 callback => sub { die "NO IMPL" }, accelerator => "<ctrl>T"
70 },
71 "_Clear All" => {
72 callback => sub { die "NO IMPL" }, accelerator => "<ctrl>C"
73 },
74 "_Attributes" => {
75 callback => sub {
76 my $w = Gtk2::Window->new;
77 $w->set_title ("Edit attrs");
78 $w->add (GCE::AttrEdit->new);
79 $w->show_all;
80 },
81 accelerator => "<ctrl>A"
82 },
83 ]
84 },
85 _Pick => {
86 item_type => '<Branch>',
87 children => \@pick
88 },
89 ];
90 my $men = Gtk2::SimpleMenu->new (
91 menu_tree => $menu_tree,
92 default_callback => \&default_cb,
93 );
94
95 $self->add (my $vb = Gtk2::VBox->new);
96 $vb->pack_start ($men->{widget}, 0, 1, 0);
97 $self->add_accel_group ($men->{accel_group});
98
99 my $map = new GCE::Map;
100 # XXX:load $ARGV?
101 $map->{map} = arch2map read_arch "$Crossfire::LIB/maps/mlab/university1";
102 $self->{_map} = $map;
103
104 $vb->pack_start ($map, 1, 1, 0);
105}
106
107sub new_cb {
108 my ($self) = @_;
109 die "NOT IMPLEMENTED YET";
110}
111
112sub open_cb {
113 my ($self) = @_;
114
115 my $fc = Gtk2::FileChooserDialog->new (
116 'Open map', undef, 'open', 'gtk-cancel' => 'cancel', 'gtk-ok' => 'ok'
117 );
118 $fc->add_shortcut_folder ("$Crossfire::LIB/maps");
119
120 if ('ok' eq $fc->run) {
121 my $map = arch2map read_arch $fc->get_filename;
122 # XXX: $self->{_map}->set_map ($map) ...
123 $self->{_map}->{map} = $map;
124 $self->{_map}->hide;
125 $self->{_map}->show;
126 }
127
128 $fc->destroy;
129}
130
131sub open_pick_cb {
132 my ($self, $pick) = @_;
18} 133}
19 134
20=head1 AUTHOR 135=head1 AUTHOR
21 136
22 Marc Lehmann <schmorp@schmorp.de> 137 Marc Lehmann <schmorp@schmorp.de>

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines