]> www.fi.muni.cz Git - slotcarman.git/blob - SCX/GUI.pm
9190fe39a328a4660dcb2e612d65893751aeea24
[slotcarman.git] / SCX / GUI.pm
1 #!/usr/bin/perl -w
2
3 package SCX::GUI;
4
5 use strict;
6 use utf8;
7
8 use Gtk2 '-init';
9 use Glib qw(TRUE FALSE);
10
11 use SCX::Reader;
12
13 sub new {
14         my ($class, $args) = @_;
15
16         my $self = {
17                 throttle_images => [ 
18                         load_image_set('img/throttle%d.svg', 13, 100)
19                 ],
20                 fuel_images => [
21                         load_image_set('img/fuel%d.svg', 8, 100)
22                 ],
23                 builder => Gtk2::Builder->new,
24         };
25
26         bless $self, $class;
27
28         $self->{builder}->add_from_file('slotcarman.glade');
29
30         $self->{builder}->connect_signals(undef);
31
32         return $self;
33 }
34
35 sub show {
36         my ($self) = @_;
37
38         my $window = $self->{builder}->get_object('slotcarman');
39         $window->show();
40 }
41
42 sub get_object { return shift->{builder}->get_object(@_); }
43
44 sub load_image_set {
45         my ($pattern, $limit, $height) = @_;
46
47         my @rv;
48         for my $i (0..$limit) {
49                 my $file = sprintf($pattern, $i);
50                 
51                 my $dummy = Gtk2::Gdk::Pixbuf->new_from_file($file);
52                 my $width = $dummy->get_width * $height / $dummy->get_height;
53                 push @rv, Gtk2::Gdk::Pixbuf->new_from_file_at_scale(
54                         $file, $width, $height, TRUE
55                 );
56         }
57         return @rv;
58 }
59
60 sub set_throttle {
61         my ($self, $row, $val) = @_;
62
63         $row++;
64         $val = 13 if !defined $val;
65
66         my $image = $self->get_object("image_throttle$row");
67         $image->set_from_pixbuf($self->{throttle_images}->[$val]);
68 }
69
70 sub set_fuel {
71         my ($self, $row, $val) = @_;
72
73         $row++;
74         $val = 0 if !defined $val;
75
76         my $image = $self->get_object("image_fuel$row");
77         $image->set_from_pixbuf($self->{fuel_images}->[$val]);
78 }
79
80 1;
81