10 use Glib qw(TRUE FALSE);
15 my ($class, $args) = @_;
19 load_image_set('img/throttle%d.svg', 13, 100)
22 load_image_set('img/fuel%d.svg', 8, 60)
24 car_images => load_image_dir('img/SCXCars', 100),
25 builder => Gtk2::Builder->new,
30 $self->{builder}->add_from_file('slotcarman.glade');
32 $self->{builder}->connect_signals(undef);
40 my $window = $self->{builder}->get_object('slotcarman');
41 $window->signal_connect(delete_event => \&delete_event);
45 sub delete_event { Gtk2->main_quit; }
47 sub get_object { return shift->{builder}->get_object(@_); }
50 my ($pattern, $limit, $height) = @_;
53 for my $i (0..$limit) {
54 my $file = sprintf($pattern, $i);
56 my $dummy = Gtk2::Gdk::Pixbuf->new_from_file($file);
57 my $width = $dummy->get_width * $height / $dummy->get_height;
58 push @rv, Gtk2::Gdk::Pixbuf->new_from_file_at_scale(
59 $file, $width, $height, TRUE
66 my ($dir, $height) = @_;
69 for my $file (<$dir/*>) {
70 $file = Encode::decode('utf-8', $file);
78 my $dummy = Gtk2::Gdk::Pixbuf->new_from_file($file)
81 my $width = $dummy->get_width * $height / $dummy->get_height;
82 $rv{$name} = Gtk2::Gdk::Pixbuf->new_from_file_at_scale(
83 $file, $width, $height, TRUE
90 my ($self, $row, $val) = @_;
93 $val = 13 if !defined $val;
95 my $image = $self->get_object("image_throttle$row");
96 $image->set_from_pixbuf($self->{throttle_images}->[$val]);
100 my ($self, $row, $val) = @_;
103 $val = 0 if !defined $val;
105 my $image = $self->get_object("image_fuel$row");
106 $image->set_from_pixbuf($self->{fuel_images}->[$val]);
110 my ($self, $row, $name) = @_;
113 my $pixbuf = $self->{car_images}->{$name};
115 print "No car image for $name.\n";
119 my $image = $self->get_object("image_car$row");
120 $image->set_from_pixbuf($pixbuf);
124 my ($self, $row, $text) = @_;
127 my $label = $self->get_object("label_lap$row")
128 or die "Can't get label_lap$row";
129 $label->set_markup('<span font_desc="24" weight="bold">'.$text.'</span>');
133 my ($self, $row, $text) = @_;
136 my $label = $self->get_object("label_laptime$row")
137 or die "Can't get label_laptime$row";
138 $label->set_markup('<span font_desc="18" weight="bold">'.$text.'</span>');
142 my ($self, $row, $text) = @_;
145 my $label = $self->get_object("label_best_lap$row")
146 or die "Can't get label_best_lap$row";
147 $label->set_markup('<span font_desc="18" weight="bold">'.$text.'</span>');
151 my ($self, $row, $text) = @_;
154 my $label = $self->get_object("label_name$row")
155 or die "Can't get label_lap$row";
156 $label->set_markup('<span font_desc="18" weight="bold">'.$text.'</span>');
160 my ($self, $row) = @_;
161 $self->set_laptime($row, 'PIT');
165 my ($self, $row) = @_;
166 $self->set_laptime($row, '--');