diff options
-rw-r--r-- | perl-install/install_steps_gtk.pm | 32 | ||||
-rw-r--r-- | perl-install/my_gtk.pm | 14 |
2 files changed, 39 insertions, 7 deletions
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm index f3edb9923..1d4d7a58c 100644 --- a/perl-install/install_steps_gtk.pm +++ b/perl-install/install_steps_gtk.pm @@ -532,7 +532,37 @@ sub installPackages { $change_time = time(); my $f = $install_any::advertising_images[$i++ % @install_any::advertising_images]; log::l("advertising $f"); - eval { gtkpack($box, $advertising = gtkpng($f)) }; + eval { my $pl = $f; $pl =~ s/\.png$/\.pl/; + my ($width, $height, @data); + eval(cat_($pl)); + my ($pix, undef) = gtkcreate_png($f); + my $dbl_area; + my $darea = new Gtk::DrawingArea + gtkpack($box, $advertising = gtksignal_connect(gtkset_usize($darea, $width, eight), expose_event => sub { + if (!defined($dbl_area)) { + $dbl_area = new Gtk::Gdk::Pixmap($darea->window, $width, $height); + $dbl_area->draw_pixmap($darea->style->bg_gc('normal'), + $pix, 0, 0, $width, $height); + my $font = $darea->style->font; + my $style= new Gtk::Style; + $style->font(Gtk::Gdk::Font->fontset_load($font)); + my $gc_text = new Gtk::Gdk::GC($darea->window); + $gc_text->set_foreground(gtkcolor(255, 255, 255)); + foreach (@data) { + my ($width, $height, $lines, $widths, $heights, $ascents, $descents) = get_text_coord ( + $_->[0], $style, $_->[3], $_->[4], 0, 1, 0); + my $i = 0; + foreach (@{$lines}) { + $dbl_area->draw_string($style->font, $gc_text, ${$widths}[$i], ${$ascents}[$i] + ${$heights}[$i], $_); + $i++; + } + } + } else { + $darea->window->draw_pixmap($darea->style->bg_gc('normal'), + $dbl_area, 0, 0, 0, 0, $width, $height); + } + })); + } } else { $advertising = undef; } diff --git a/perl-install/my_gtk.pm b/perl-install/my_gtk.pm index c83d5db97..547c18848 100644 --- a/perl-install/my_gtk.pm +++ b/perl-install/my_gtk.pm @@ -10,7 +10,7 @@ use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK $border); @ISA = qw(Exporter); %EXPORT_TAGS = ( helpers => [ qw(create_okcancel createScrolledWindow create_menu create_notebook create_packtable create_hbox create_vbox create_adjustment create_box_with_title create_treeitem) ], - wrappers => [ qw(gtksignal_connect gtkradio gtkpack gtkpack_ gtkpack__ gtkpack2 gtkpack3 gtkpack2_ gtkpack2__ gtkset_editable gtksetstyle gtkset_tip gtkappenditems gtkappend gtkset_shadow_type gtkset_layout gtkset_relief gtkadd gtkput gtktext_insert gtkset_usize gtksize gtkset_justify gtkset_active gtkset_sensitive gtkset_modal gtkset_border_width gtkmove gtkresize gtkshow gtkhide gtkdestroy gtkset_mousecursor gtkset_mousecursor_normal gtkset_mousecursor_wait gtkset_background gtkset_default_fontset gtkctree_children gtkxpm gtkpng create_pix_text fill_tiled gtkicons_labels_widget write_on_pixmap gtkcreate_xpm gtkcreate_png gtkbuttonset) ], + wrappers => [ qw(gtksignal_connect gtkradio gtkpack gtkpack_ gtkpack__ gtkpack2 gtkpack3 gtkpack2_ gtkpack2__ gtkset_editable gtksetstyle gtkset_tip gtkappenditems gtkappend gtkset_shadow_type gtkset_layout gtkset_relief gtkadd gtkput gtktext_insert gtkset_usize gtksize gtkset_justify gtkset_active gtkset_sensitive gtkset_modal gtkset_border_width gtkmove gtkresize gtkshow gtkhide gtkdestroy gtkset_mousecursor gtkset_mousecursor_normal gtkset_mousecursor_wait gtkset_background gtkset_default_fontset gtkctree_children gtkxpm gtkpng create_pix_text get_text_coord fill_tiled gtkicons_labels_widget write_on_pixmap gtkcreate_xpm gtkcreate_png gtkbuttonset) ], ask => [ qw(ask_warn ask_okcancel ask_yesorno ask_from_entry) ], ); $EXPORT_TAGS{all} = [ map { @$_ } values %EXPORT_TAGS ]; @@ -385,8 +385,8 @@ sub create_pix_text { my $style= new Gtk::Style; $style->font(Gtk::Gdk::Font->fontset_load($font)); - my ($width, $height, $lines, $heights, $ascents, $descents) = get_text_coord ( - $text, $style, $max_width, $max_height, $correction, $can_be_greater, $can_be_smaller); + my ($width, $height, $lines, $widths, $heights, $ascents, $descents) = get_text_coord ( + $text, $style, $max_width, $max_height, $correction, $can_be_greater, $can_be_smaller, 1); my $pix = new Gtk::Gdk::Pixmap($w->window, $width, $height); if ($backpix) { @@ -402,7 +402,7 @@ sub create_pix_text { $gc_text->set_foreground($color_text); my $i = 0; foreach (@{$lines}) { - $pix->draw_string($style->font, $gc_text, 0, ${$ascents}[$i] + ${$heights}[$i], $_); + $pix->draw_string($style->font, $gc_text, ${$widths}[$i], ${$ascents}[$i] + ${$heights}[$i], $_); $i++; } ($pix, $width, $height, ${$ascents}[0], ${$descents}[0]); @@ -417,6 +417,7 @@ sub get_text_coord { my $real_width = 0; my $real_height = 0; my @lines; + my @widths; my @heights; my @ascents; my @descents; @@ -430,11 +431,12 @@ sub get_text_coord { my $l = $style->font->string_width($_ . if_(!$flag, " ")); if ($width + $l > $max_width2 && !$flag) { $flag = 1; - $width = 0; $height += $style->font->string_height($lines[$idx]); (undef, undef, undef, $ascents[$idx], $descents[$idx]) = $style->font->string_extents($lines[$idx]); $height -= $correction; $heights[$idx+1] = $height; + $widths[$idx] = ($max_width2-$width)/2; + $width = 0; $idx++; } $lines[$idx] = $flag ? "$_" : $lines[$idx] . " $_"; @@ -455,7 +457,7 @@ sub get_text_coord { $real_height < $max_height && $can_be_smaller and $height = $real_height; $real_height > $max_height && $can_be_greater and $height = $real_height; - ($width, $height, \@lines, \@heights, \@ascents, \@descents) + ($width, $height, \@lines, \@widths, \@heights, \@ascents, \@descents) } sub fill_tiled { |