summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install')
-rwxr-xr-xperl-install/standalone/draksplash603
1 files changed, 301 insertions, 302 deletions
diff --git a/perl-install/standalone/draksplash b/perl-install/standalone/draksplash
index e5840b568..f678c94ed 100755
--- a/perl-install/standalone/draksplash
+++ b/perl-install/standalone/draksplash
@@ -3,33 +3,24 @@
use lib qw(/usr/lib/libDrakX);
use standalone;
use common;
-use Gtk;
use interactive;
use ugtk qw(:helpers :wrappers);
-init Gtk;
+use my_gtk qw(:helpers :wrappers);
#- convenience variables for true and false
-my $false = 0;
my $true = 1;
-#- this part is embedded management
-$::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~/--embedded (\S*) (\S*)/;
-if ($::isEmbedded) {
- print "EMBED\n";
- print "XID : $::XID\n";
- print "CCPID : $::CCPID\n";
-}
my $in = 'interactive'->vnew('su', 'default');
-my $window = $::isEmbedded ? new Gtk::Plug ($::XID) : new Gtk::Window ("toplevel");
-$window->signal_connect(delete_event => sub { $::isEmbedded ? kill(USR1, $::CCPID) : &CloseAppWindow });
+my $window = my_gtk->new();
+$window->{rwindow}->signal_connect(delete_event => &CloseAppWindow);
#- verification of package image magik
-if(!$in->do_pkgs->is_installed('ImageMagick')){
- $in->ask_okcancel(N("Error"),N("package 'ImageMagick' is required for correct working.\nClick \"Ok\" to install 'ImageMagick' or \"Cancel\" to quit"))
- and $in->do_pkgs->install('ImageMagick')
- or $::isEmbedded ? kill(USR1, $::CCPID) : &CloseAppWindow ;
+unless ($in->do_pkgs->is_installed('ImageMagick')) {
+ $in->ask_okcancel(N("Error"), N("package 'ImageMagick' is required for correct working.\nClick \"Ok\" to install 'ImageMagick' or \"Cancel\" to quit"))
+ and $in->do_pkgs->install('ImageMagick')
+ or &CloseAppWindow;
}
#- application vars
@@ -42,221 +33,227 @@ my $prev_window;
my $pix;
my $boot_conf_path = '/etc/bootsplash/themes/';
-my %font_size = ('h'=>16,'w'=>8);
-my %theme = ('name'=>'new_theme',
- 'res' =>{'res'=>'800x600',
- 'h'=>'600',
- 'w'=>'800'
- },
- 'boot_conf'=>{ 'tx' => 0 ,
- 'ty' => 0 ,
- 'tw' => 0 ,
- 'th' => 0 ,
- 'px' => 0 ,
- 'py' => 0 ,
- 'pw' => 0 ,
- 'ph' => 0 ,
- 'pc' => '0x21459d',
- },
- 'boot_img'=> '',
- );
-
-my %scale_size = ('tx'=> ($theme{'res'}{'w'} / $font_size{'w'}),
- 'ty'=> ($theme{'res'}{'h'} / $font_size{'h'}),
- 'tw'=> ($theme{'res'}{'w'} / $font_size{'w'}),
- 'th'=> ($theme{'res'}{'h'} / $font_size{'h'}),
- 'px'=> $theme{'res'}{'w'},
- 'py'=> $theme{'res'}{'h'},
- 'pw'=> $theme{'res'}{'w'},
- 'ph'=> $theme{'res'}{'h'},
- );
-
-my %first = ('frame'=>new Gtk::Frame(N("first step creation")),
- 'widget'=>{ 'label'=> { 'res'=>N("final resolution"),
- 'file'=>N("choose image file"),
- 'name'=>N("Theme name")
- },
- 'button'=>{ #'boot_conf'=>N("Make bootsplash step 2"),
- #'lilo_conf'=>N("Go to lilosplash configuration"),
- 'file'=>N("Browse"),
- },
- 'combo'=> {'res'=>['800x600', '1024x768', '1280x1024'],
- 'name'=>[ $theme{'name'} , &giv_exist_thm]
- },
- ,},
- 'pos'=>[ 'name',
- 'res',
- 'file',
- 'boot_conf',
- #'save',
- #'kill'
+my %font_size = ('h' =>16, 'w' =>8);
+my %theme = ('name' => 'new_theme',
+ 'res' => {
+ 'res' => '800x600',
+ 'h' => '600',
+ 'w' => '800',
+ },
+ 'boot_conf' => {
+ 'tx' => 0 ,
+ 'ty' => 0 ,
+ 'tw' => 0 ,
+ 'th' => 0 ,
+ 'px' => 0 ,
+ 'py' => 0 ,
+ 'pw' => 0 ,
+ 'ph' => 0 ,
+ 'pc' => '0x21459d',
+ },
+ 'boot_img' => ''
+ );
+
+my %scale_size = ('tx' => ($theme{res}{w} / $font_size{w}),
+ 'ty' => ($theme{res}{h} / $font_size{h}),
+ 'tw' => ($theme{res}{w} / $font_size{w}),
+ 'th' => ($theme{res}{h} / $font_size{h}),
+ 'px' => $theme{res}{w},
+ 'py' => $theme{res}{h},
+ 'pw' => $theme{res}{w},
+ 'ph' => $theme{res}{h},
+ );
+
+my %first = ('frame' => new Gtk::Frame(N("first step creation")),
+ 'widget' => {
+ 'label' => {
+ 'res' => N("final resolution"),
+ 'file' => N("choose image file"),
+ 'name' => N("Theme name")
+ },
+ 'button' => {
+ #'boot_conf' => N("Make bootsplash step 2"),
+ #'lilo_conf' => N("Go to lilosplash configuration"),
+ 'file' => N("Browse"),
+ },
+ 'combo' => {
+ 'res' => ['800x600', '1024x768', '1280x1024'],
+ 'name' => [ $theme{name} , &giv_exist_thm]
+ }
+ },
+ 'pos' => [ 'name', 'res', 'file', 'boot_conf', #'save', #'kill'
],
- );
-my %boot_conf_frame = ('frame' => new Gtk::Frame( N("Configure bootsplash picture") ),
- 'widget'=> { 'label' => { 'tx'=> N("x coordinate of text box\nin number of character"),
- 'ty'=> N("y coordinate of text box\nin number of character"),
- 'tw'=> N("text width"),
- 'th'=> N("text box height"),
- 'px'=> N("the progress bar x coordinate\nof its upper left corner"),
- 'py'=> N("the progress bar y coordinate\nof its upper left corner"),
- 'pw'=> N("the width of the progress bar"),
- 'ph'=> N("the heigth of the progress bar"),
- 'pc'=> N("the color of the progress bar")
- },
- #- must set scale values to true to get them created by mk_frame
- 'scale' => {'tx'=> 1,
- 'ty'=> 1,
- 'tw'=> 1,
- 'th'=> 1,
- 'px'=> 1,
- 'py'=> 1,
- 'pw'=> 1,
- 'ph'=> 1,
- },
- 'button' => { #'annul'=> N("Go back"),
- 'prev'=>N("Preview"),
- 'kill'=>N("Quit"),
- 'save'=>N("Save theme"),
- 'pc'=> N("Choose color"),
-
- },
- 'check' => { 'logo' => N("Display logo on Console" ),
- 'quiet'=> N("Make kernel message quiet by default"),
- },
- },
- 'pos'=> [ 'tx 1' ,
- 'ty 1' ,
- 'tw 1' ,
- 'th 1' ,
- 'px 1' ,
- 'py 1' ,
- 'pw 1' ,
- 'ph 1' ,
- 'pc' ,
- 'logo',
- 'quiet',
- 'annul',
- 'prev',
- 'save' ,
- 'kill',
- ],
- );
+ );
+my %boot_conf_frame = ('frame' => new Gtk::Frame(N("Configure bootsplash picture")),
+ 'widget' => {
+ 'label' => {
+ 'tx' => N("x coordinate of text box\nin number of character"),
+ 'ty' => N("y coordinate of text box\nin number of character"),
+ 'tw' => N("text width"),
+ 'th' => N("text box height"),
+ 'px' => N("the progress bar x coordinate\nof its upper left corner"),
+ 'py' => N("the progress bar y coordinate\nof its upper left corner"),
+ 'pw' => N("the width of the progress bar"),
+ 'ph' => N("the heigth of the progress bar"),
+ 'pc' => N("the color of the progress bar")
+ },
+ #- must set scale values to true to get them created by mk_frame
+ 'scale' => {
+ 'tx' => 1,
+ 'ty' => 1,
+ 'tw' => 1,
+ 'th' => 1,
+ 'px' => 1,
+ 'py' => 1,
+ 'pw' => 1,
+ 'ph' => 1,
+ },
+ 'button' => {
+ #'annul' => N("Go back"),
+ 'prev' => N("Preview"),
+ 'kill' => N("Quit"),
+ 'save' => N("Save theme"),
+ 'pc' => N("Choose color"),
+ },
+ 'check' => {
+ 'logo' => N("Display logo on Console"),
+ 'quiet' => N("Make kernel message quiet by default"),
+ },
+ },
+ 'pos' => [ 'tx 1' ,
+ 'ty 1' ,
+ 'tw 1' ,
+ 'th 1' ,
+ 'px 1' ,
+ 'py 1' ,
+ 'pw 1' ,
+ 'ph 1' ,
+ 'pc' ,
+ 'logo',
+ 'quiet',
+ 'annul',
+ 'prev',
+ 'save' ,
+ 'kill',
+ ],
+ );
#- var action is used to hide/show the correct frame
-my @action_frame = ( \%boot_conf_frame ,
- \%first);
-
+my @action_frame = ( \%boot_conf_frame , \%first);
my $VB2 = new Gtk::VBox(0,5);
-&mk_frame(\$VB2,\%first);
+my $first_vbox;
+&mk_frame(\$VB2, \%first);
#****************************- Signal event actions
#- change resolution
-$first{'widgets'}{'combo'}{'res'}->entry->signal_connect( changed => sub {
- $theme{'res'}{'res'} = $first{'widgets'}{'combo'}{'res'}->entry->get_text;
- ($theme{'res'}{'w'},$theme{'res'}{'h'}) = $theme{'res'}{'res'} =~ /([^x]+)x([^x]+)/;
+$first{widgets}{combo}{res}->entry->signal_connect( changed => sub {
+ $theme{res}{res} = $first{widgets}{combo}{res}->entry->get_text;
+ ($theme{res}{w}, $theme{res}{h}) = $theme{res}{res} =~ /([^x]+)x([^x]+)/;
&set_scale_size;
- $boot_conf_frame{'frame'}->destroy ;
- $boot_conf_frame{'frame'} = new Gtk::Frame(N("Configure bootsplash picture") );
+ $boot_conf_frame{frame}->destroy;
+ $boot_conf_frame{frame} = new Gtk::Frame(N("Configure bootsplash picture"));
&make_boot_frame;
- $first_vbox->add($boot_conf_frame{'frame'});
- member( $theme{'name'}, &giv_exist_thm) and &thm_in_this_res and &get_this_thm_res_conf or $in->ask_warn(N("Notice"),N("This theme haven't yet any bootsplash in %s !",$theme{'res'}{'res'}));
+ $first_vbox->add($boot_conf_frame{frame});
+ member($theme{name}, &giv_exist_thm) and &thm_in_this_res and &get_this_thm_res_conf or $in->ask_warn(N("Notice"), N("This theme haven't yet any bootsplash in %s !", $theme{res}{res}));
});
#- go to bootsplash configuration step 2
-#$first{'widgets'}{'button'}{'boot_conf'}->signal_connect( clicked => sub{show_act(\%boot_conf_frame) } );
+#$first{widgets}{button}{boot_conf}->signal_connect(clicked => sub{show_act(\%boot_conf_frame) } );
#- image file selection for new theme
-$first{'widgets'}{'button'}{'file'}->signal_connect( clicked =>sub{
+$first{widgets}{button}{file}->signal_connect(clicked => sub {
my $file_dialog = new Gtk::FileSelection('choose image');
- $file_dialog->set_filename( ( $first{'widgets'}{'label'}{'file'}->get ne N("choose image file") ) ? $first{'widgets'}{'label'}{'file'}->get : '~/' );
- $file_dialog->cancel_button->signal_connect( clicked => sub{ $file_dialog->destroy} );
- $file_dialog->ok_button->signal_connect( clicked => sub{ $first{'widgets'}{'label'}{'file'}->set_text($file_dialog->get_filename) ; $file_dialog->destroy ;});
+ $file_dialog->set_filename($first{widgets}{label}{file}->get ne N("choose image file") ? $first{widgets}{label}{file}->get : '~/');
+ $file_dialog->cancel_button->signal_connect(clicked => sub { $file_dialog->destroy });
+ $file_dialog->ok_button->signal_connect(clicked => sub { $first{widgets}{label}{file}->set_text($file_dialog->get_filename); $file_dialog->destroy });
$file_dialog->show;
});
#- changing theme name
-$first{'widgets'}{'combo'}{'name'}->entry->signal_connect( changed => sub{ &get_this_thm_res_conf; $theme{'name'} = $first{'widgets'}{'combo'}{'name'}->entry->get_text; });
+$first{widgets}{combo}{name}->entry->signal_connect( changed => sub { &get_this_thm_res_conf; $theme{name} = $first{widgets}{combo}{name}->entry->get_text });
#**************************************************
$first_vbox = new Gtk::VBox(0,5);
-$first_vbox->add($first{'frame'});
-$first_vbox->add($boot_conf_frame{'frame'});
+$first_vbox->add($first{frame});
+$first_vbox->add($boot_conf_frame{frame});
&make_boot_frame;
# set window attributes and show it
-$window->border_width( 5 );
-$window->add($first_vbox);
-$window->set_policy( 0, 1, 1 );
-$window->set_position('center');
-$window->show_all();
+
+unless ($::isEmbedded) {
+ $window->{rwindow}->border_width(5);
+ $window->{rwindow}->add($first_vbox);
+ $window->{rwindow}->set_policy(0, 1, 1);
+ $window->{rwindow}->set_position('center');
+ $window->{rwindow}->show_all();
#&show_act(\%first);
+}
# Gtk event loop
-main Gtk;
+$window->main;
# Should never get here
-exit( 0 );
+my_gtk->exit(0);
### Callback function to close the window
-sub CloseAppWindow{
- Gtk->exit( 0 );
- return $false;
+sub CloseAppWindow {
+ my_gtk->exit(0);
}
#- ====## used funtions ##=====
#- Desc => write config file for boot theme and copy image in the right location
-sub write_boot_thm{
- my $w = $in->wait_message('',N("saving Bootsplash theme..."));
+sub write_boot_thm {
+ my $w = $in->wait_message('', N("saving Bootsplash theme..."));
&set_thm_values;
- my $logo = ($boot_conf_frame{'widgets'}{'check'}{'logo'}->get_active)?'yes':'no';
- my $quiet = ($boot_conf_frame{'widgets'}{'check'}{'quiet'}->get_active)?'yes':'no';
- my $globalconf_file = $thm_conf_path.$theme{'name'}.'/global.config';
- my $cfg_file = $thm_conf_path.$theme{'name'}.'/cfg/bootsplash-'.$theme{'res'}{'res'}.'.cfg';
+ my $logo = $boot_conf_frame{widgets}{check}{logo}->get_active ? 'yes' : 'no';
+ my $quiet = $boot_conf_frame{widgets}{check}{quiet}->get_active ? 'yes' : 'no';
+ my $globalconf_file = $thm_conf_path.$theme{name}.'/global.config';
+ my $cfg_file = $thm_conf_path.$theme{name}.'/cfg/bootsplash-'.$theme{res}{res}.'.cfg';
#- verify all dir exists or create them
- -d $thm_conf_path.$theme{'name'}
- or mkdir($thm_conf_path.$theme{'name'});
- -d $thm_conf_path.$theme{'name'}.'/cfg'
- or mkdir($thm_conf_path.$theme{'name'}.'/cfg');
- -d $thm_path.$theme{'name'}
- or mkdir($thm_path.$theme{'name'});
- -d $thm_path.$theme{'name'}.'/images/'
- or mkdir($thm_path.$theme{'name'}.'/images/');
+ -d $thm_conf_path.$theme{name}
+ or mkdir($thm_conf_path.$theme{name});
+ -d $thm_conf_path.$theme{name}.'/cfg'
+ or mkdir($thm_conf_path.$theme{name}.'/cfg');
+ -d $thm_path.$theme{name}
+ or mkdir($thm_path.$theme{name});
+ -d $thm_path.$theme{name}.'/images/'
+ or mkdir($thm_path.$theme{name}.'/images/');
#- copy image to dest by convert
- system('convert -scale '.$theme{'res'}{'res'} .' '.$first{'widgets'}{'label'}{'file'}->get.' '.$thm_path.$theme{'name'}.'/images/bootsplash-'.$theme{'res'}{'res'}.'.jpg');
- system('/usr/share/bootsplash/scripts/rewritejpeg '.$thm_path.$theme{'name'}.'/images/bootsplash-'.$theme{'res'}{'res'}.'.jpg');
+ system('convert -scale '.$theme{res}{res} . ' ' . $first{widgets}{label}{file}->get.' '.$thm_path.$theme{name}.'/images/bootsplash-'.$theme{res}{res}.'.jpg');
+ system('/usr/share/bootsplash/scripts/rewritejpeg '.$thm_path.$theme{name}.'/images/bootsplash-'.$theme{res}{res}.'.jpg');
#- write conf files
- my $cfg_cont = '# This is the configuration file for the '.$theme{'res'}{'res'}.' bootsplash picture
+ my $cfg_cont = '# This is the configuration file for the '.$theme{res}{res}.' bootsplash picture
# this file is necessary to specify the coordinates of the text box on the
# splash screen.
# tx is the x coordinate of the text window in characters. default is 24
# multiply width font width for coordinate in pixels.
-tx='.$theme{'boot_conf'}{'tx'}.'
+tx='.$theme{boot_conf}{tx}.'
# ty is the y coordinate of the text window in characters. default is 14
-ty='.$theme{'boot_conf'}{'ty'}.'
+ty='.$theme{boot_conf}{ty}.'
# tw is the width of the text window in characters. default is 130
# note: this should at least be 80 as on the standard linux text console
-tw='.$theme{'boot_conf'}{'tw'}.'
+tw='.$theme{boot_conf}{tw}.'
# th is the height of the text window in characters. default is 44
# NOTE: this should at least be 25 as on the standard linux text console
-th='.$theme{'boot_conf'}{'th'}.'
+th='.$theme{boot_conf}{th}.'
# px is the progress bar x coordinate of its upper left corner
-px='.$theme{'boot_conf'}{'px'}.'
+px='.$theme{boot_conf}{px}.'
# py is the progress bar y coordinate of its upper left corner
-py='.$theme{'boot_conf'}{'py'}.'
+py='.$theme{boot_conf}{py}.'
# pw is the with of the progress bar
-pw='.$theme{'boot_conf'}{'pw'}.'
+pw='.$theme{boot_conf}{pw}.'
# ph is the heigth of the progress bar
-ph='.$theme{'boot_conf'}{'ph'}.'
+ph='.$theme{boot_conf}{ph}.'
# pc is the color of the progress bar
-pc='.$theme{'boot_conf'}{'pc'}.''
+pc='.$theme{boot_conf}{pc}.''
;
my $globalconf_cont = '# Display logo on console.
LOGO_CONSOLE='.$logo.'
@@ -270,24 +267,24 @@ QUIET='.$quiet
#- Desc => read the current bootsplash theme configuration if exist
-sub get_this_thm_res_conf{
- member($first{'widgets'}{'combo'}{'name'}->entry->get_text , &giv_exist_thm)
- and $theme{'name'} = $first{'widgets'}{'combo'}{'name'}->entry->get_text
+sub get_this_thm_res_conf {
+ member($first{widgets}{combo}{name}->entry->get_text , &giv_exist_thm)
+ and $theme{name} = $first{widgets}{combo}{name}->entry->get_text
and &thm_in_this_res(1)
and &read_boot_conf;
- -f $thm_path.$theme{'name'}."/images/bootsplash-".$theme{'res'}{'res'}.".jpg"
- and $first{'widgets'}{'label'}{'file'}->set_text($thm_path.$theme{'name'}."/images/bootsplash-".$theme{'res'}{'res'}.".jpg");
+ -f $thm_path.$theme{name}."/images/bootsplash-".$theme{res}{res}.".jpg"
+ and $first{widgets}{label}{file}->set_text($thm_path.$theme{name}."/images/bootsplash-".$theme{res}{res}.".jpg");
return 1;
}
sub read_boot_conf {
chdir($thm_conf_path);
my $line;
- if(-f $theme{'name'}.'/cfg/bootsplash-'.$theme{'res'}{'res'}.'.cfg') {
- open CFG , $theme{'name'}.'/cfg/bootsplash-'.$theme{'res'}{'res'}.'.cfg';
- while($line = <CFG>){
+ if (-f $theme{name}.'/cfg/bootsplash-'.$theme{res}{res}.'.cfg') {
+ open CFG , $theme{name}.'/cfg/bootsplash-'.$theme{res}{res}.'.cfg';
+ while ($line = <CFG>) {
$line =~ m/^([a-z][a-z])=([^\n]+)/
- and $theme{'boot_conf'}{$1} = $2;
+ and $theme{boot_conf}{$1} = $2;
}
close CFG;
&set_scale_values;
@@ -296,40 +293,39 @@ sub read_boot_conf {
}
}
-sub set_scale_values{
- foreach (keys %{$theme{'boot_conf'}}){
- ${$_.'_adj'}
- and ${$_.'_adj'}->set_value($theme{'boot_conf'}{$_});
- }
+sub set_scale_values {
+ foreach (keys %{$theme{boot_conf}}) {
+ ${$_.'_adj'} and ${$_.'_adj'}->set_value($theme{boot_conf}{$_});
+ }
}
#- Desc => check if this theme is available in the current resolution else
#- change the current resolution or display a ask_warn box
#- Args => ø
#- return=> (bool)
-sub thm_in_this_res{
+sub thm_in_this_res {
my ($check_res) = @_;
- (-f $thm_path.$theme{'name'}."/images/bootsplash-".$theme{'res'}{'res'}.".jpg")?return 1 : ($check_res == 1)?return &which_res_exist : return 0 ;
+ (-f $thm_path.$theme{name}."/images/bootsplash-".$theme{res}{res}.".jpg") ? return 1 : $check_res == 1 ? return &which_res_exist : return 0;
}
-sub which_res_exist{
- chdir($thm_path.$theme{'name'}."/images/");
+sub which_res_exist {
+ chdir($thm_path.$theme{name}."/images/");
my $is_ok = 0;
- foreach(@{$first{'widget'}{'combo'}{'res'}}){
+ foreach (@{$first{widget}{combo}{res}}) {
-f "bootsplash-$_.jpg"
and $is_ok = 1
- and $first{'widgets'}{'combo'}{'res'}->entry->set_text($_)
+ and $first{widgets}{combo}{res}->entry->set_text($_)
and last;
}
- $is_ok == 1 or $in->ask_warn(N("Notice"),N("This theme haven't yet any bootsplash in %s !",$theme{'res'}{'res'})) and return 0;
+ $is_ok == 1 or $in->ask_warn(N("Notice"), N("This theme haven't yet any bootsplash in %s !", $theme{res}{res})) and return 0;
return 1;
}
#- Desc => retrieve all installed theme
#- Args => ø
#- Return=> @arr of available theme
-sub giv_exist_thm{
+sub giv_exist_thm {
chdir($thm_path);
my @thms_dirs;
foreach (glob("*")) {
@@ -339,79 +335,80 @@ sub giv_exist_thm{
return @thms_dirs;
}
-#- Desc =>show only the right frame
+#- Desc => show only the right frame
#- Args => action(str)
#- Return=> (bool)
-sub show_act{
+sub show_act {
# my ($action) = @_;
# foreach (@action_frame){
# if($_ == $action){
-# $_->{'frame'}->show_all ;
+# $_->{frame}->show_all ;
# }else{
-# $_->{'frame'}->hide;
+# $_->{frame}->hide;
# }
# }
}
#- Desc => just add tooltips
#- Args => name of widget(str) and frame to work on it (\%hash)
-sub tool_tip{
- my ( $name , $ref ) = @_;
- foreach (keys %{$ref->{'widget'}}){
+sub tool_tip {
+ my ($name , $ref) = @_;
+ foreach (keys %{$ref->{widget}}) {
$_ eq 'tooltip' and next;
- if($ref->{'widget'}{$_}{$name}){
+ if ($ref->{widget}{$_}{$name}) {
! ${$name.'_tip'} and ${$name.'_tip'} = new Gtk::Tooltips();
- ${$name.'_tip'}->set_tip($ref->{'widgets'}{$_}{$name}, $ref->{'widget'}{'tooltip'}{$name},'');
+ ${$name.'_tip'}->set_tip($ref->{widgets}{$_}{$name}, $ref->{widget}{tooltip}{$name}, '');
}
}
}
#- Desc => just prepare widgets for a fram hash
#- Args => $box(a Vbox widget to contain all widgets), \%frame (hash with complete definition of the frame)
-#- Return=> all hash{'widgets'} are created and packed in $box
-sub mk_frame{
- my ( $box , $ref ) = @_;
- foreach $pos (@{$ref->{'pos'}}){
+#- Return=> all hash{widgets} are created and packed in $box
+sub mk_frame {
+ my ($box , $ref) = @_;
+ foreach my $pos (@{$ref->{pos}}) {
$pos =~ m/^(\w+)(\s+)?(\w+)?$/;
#- open a new hbox
- ${$1.'hb'} = new Gtk::HBox($3?1:0,5);
+ ${$1.'hb'} = new Gtk::HBox($3 ? 1 : 0, 5);
#- look for label
- $ref->{'widget'}{'label'}{$1}
- and $ref->{'widgets'}{'label'}{$1} = new Gtk::Label($ref->{'widget'}{'label'}{$1})
- and ${$1.'hb'}->add($ref->{'widgets'}{'label'}{$1});
+ $ref->{widget}{label}{$1}
+ and $ref->{widgets}{label}{$1} = new Gtk::Label($ref->{widget}{label}{$1})
+ and ${$1.'hb'}->add($ref->{widgets}{label}{$1});
#- look for scale
- $ref->{'widget'}{'scale'}{$1}
- and $ref->{'widgets'}{'scale'}{$1} = new Gtk::HScale( ${$1."_adj"} = new Gtk::Adjustment(0,0,$scale_size{$1},1,10,0))
- and ${$1."hb"}->add($ref->{'widgets'}{'scale'}{$1})
- and $ref->{'widgets'}{'scale'}{$1}->set_digits(0);
- ${$1.'_adj'} and ${$1.'_adj'}->set_value($theme{'boot_conf'}{$1});
+ $ref->{widget}{scale}{$1}
+ and $ref->{widgets}{scale}{$1} = new Gtk::HScale( ${$1."_adj"} = new Gtk::Adjustment(0, 0, $scale_size{$1}, 1, 10, 0))
+ and ${$1."hb"}->add($ref->{widgets}{scale}{$1})
+ and $ref->{widgets}{scale}{$1}->set_digits(0);
+ ${$1.'_adj'} and ${$1.'_adj'}->set_value($theme{boot_conf}{$1});
#- look for combo
- $ref->{'widget'}{'combo'}{$1}
- and @popdown = @{$ref->{'widget'}{'combo'}{$1}}
- and $ref->{'widgets'}{'combo'}{$1} = new Gtk::Combo
- and ${$1."hb"}->add($ref->{'widgets'}{'combo'}{$1})
- and $ref->{'widgets'}{'combo'}{$1}->set_popdown_strings(@popdown);
+ my @popdown;
+ $ref->{widget}{combo}{$1}
+ and @popdown = @{$ref->{widget}{combo}{$1}}
+ and $ref->{widgets}{combo}{$1} = new Gtk::Combo
+ and ${$1."hb"}->add($ref->{widgets}{combo}{$1})
+ and $ref->{widgets}{combo}{$1}->set_popdown_strings(@popdown);
#- look for checkbox
- $ref->{'widget'}{'check'}{$1}
- and $ref->{'widgets'}{'check'}{$1} = new Gtk::CheckButton( $ref->{'widget'}{'check'}{$1} )
- and ${$1."hb"}->add($ref->{'widgets'}{'check'}{$1})
- and $ref->{'widgets'}{'check'}{$1}->set_active(1);
+ $ref->{widget}{check}{$1}
+ and $ref->{widgets}{check}{$1} = new Gtk::CheckButton($ref->{widget}{check}{$1})
+ and ${$1."hb"}->add($ref->{widgets}{check}{$1})
+ and $ref->{widgets}{check}{$1}->set_active(1);
#- look for button
- $ref->{'widget'}{'button'}{$1}
- and $ref->{'widgets'}{'button'}{$1} = new Gtk::Button($ref->{'widget'}{'button'}{$1})
- and ${$1."hb"}->add($ref->{'widgets'}{'button'}{$1});
+ $ref->{widget}{button}{$1}
+ and $ref->{widgets}{button}{$1} = new Gtk::Button($ref->{widget}{button}{$1})
+ and ${$1."hb"}->add($ref->{widgets}{button}{$1});
#- look for tooltips
- $ref->{'widget'}{'tooltip'}{$1}
- and &tool_tip($1,\%{$ref});
+ $ref->{widget}{tooltip}{$1}
+ and &tool_tip($1, \%{$ref});
${$box}->add(${$1."hb"});
}
- $ref->{'frame'}->add(${$box});
+ $ref->{frame}->add(${$box});
}
#- Desc => take a decimal value between 0 to 255 and return the corresponding hexadecimal value
-sub dec2hex{
+sub dec2hex {
my ($dec) = @_;
- my @dec_hex = (0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F');
+ my @dec_hex = (0..9, 'A', 'B', 'C', 'D', 'E', 'F');
my $int;
my $float;
$dec = $dec/16;
@@ -423,75 +420,77 @@ sub dec2hex{
}
#- Desc => prepare and set all signal_connect for boot_frame widget
-sub make_boot_frame{
- $VB = new Gtk::VBox(0,5);
- &mk_frame(\$VB,\%boot_conf_frame);
+sub make_boot_frame {
+ my $VB = new Gtk::VBox(0,5);
+ &mk_frame(\$VB, \%boot_conf_frame);
#- open a color choose box
- $boot_conf_frame{'widgets'}{'button'}{'pc'}->signal_connect( clicked => sub {
- $color = new Gtk::ColorSelectionDialog(N("ProgressBar color selection"));
- $theme{'boot_conf'}{'pc'} =~ m/0x(.{2})(.{2})(.{2})/;
+ $boot_conf_frame{widgets}{button}{pc}->signal_connect(clicked => sub {
+ my $color = new Gtk::ColorSelectionDialog(N("ProgressBar color selection"));
+ $theme{boot_conf}{pc} =~ m/0x(.{2})(.{2})(.{2})/;
my @rgb = map { hex($_)/255 } ($1 ,$2, $3);
- $color->colorsel->set_color(@rgb);#$theme{'boot_conf'}{'pc'});
- $color->cancel_button->signal_connect(clicked=> sub{$color->destroy});
- $color->ok_button->signal_connect(clicked=> sub{
+ $color->colorsel->set_color(@rgb);#$theme{boot_conf}{pc});
+ $color->cancel_button->signal_connect(clicked => sub { $color->destroy });
+ $color->ok_button->signal_connect(clicked => sub {
@rgb = $color->colorsel->get_color();
@rgb = map ( dec2hex($_*255) , @rgb);
- $theme{'boot_conf'}{'pc'} = "0x$rgb[0]$rgb[1]$rgb[2]";
+ $theme{boot_conf}{pc} = "0x$rgb[0]$rgb[1]$rgb[2]";
$color->destroy;
});
$color->show;
});
#- quit button
- $boot_conf_frame{'widgets'}{'button'}{'kill'}->signal_connect( clicked => \&CloseAppWindow);
- $boot_conf_frame{'widgets'}{'button'}{'save'}->signal_connect(clicked=> sub{ &write_boot_thm });
+ $boot_conf_frame{widgets}{button}{kill}->signal_connect(clicked => \&CloseAppWindow);
+ $boot_conf_frame{widgets}{button}{save}->signal_connect(clicked => sub { &write_boot_thm });
#- return to first screen
- #$boot_conf_frame{'widgets'}{'button'}{'annul'}->signal_connect( clicked => sub { show_act( \%first ) } );
+ #$boot_conf_frame{widgets}{button}{annul}->signal_connect(clicked => sub { show_act( \%first ) } );
#- made a preview
- $boot_conf_frame{'widgets'}{'button'}{'prev'}->signal_connect( clicked => sub{
- if(! -f $first{'widgets'}{'label'}{'file'}->get) {
- $in->ask_warn(N("Notice"),N("You must choose an image file first!"));
+ $boot_conf_frame{widgets}{button}{prev}->signal_connect(clicked => sub {
+ unless (-f $first{widgets}{label}{file}->get) {
+ $in->ask_warn(N("Notice"), N("You must choose an image file first!"));
return 0;
}
#- calculation of the 2 angle of text box and progress bar
&set_thm_values;
- my $text_tl = ($theme{'boot_conf'}{'tx'}*$font_size{'w'}).','.$theme{'boot_conf'}{'ty'}*$font_size{'h'};
- my $text_br = ($theme{'boot_conf'}{'tw'}*$font_size{'w'}+$theme{'boot_conf'}{'tx'}*$font_size{'w'}).','.($theme{'boot_conf'}{'th'}*$font_size{'h'}+$theme{'boot_conf'}{'ty'}*$font_size{'h'});
- my $progress_tl = $theme{'boot_conf'}{'px'}.','.$theme{'boot_conf'}{'py'};
- my $progress_br = ($theme{'boot_conf'}{'px'}+$theme{'boot_conf'}{'pw'}).','.($theme{'boot_conf'}{'py'}+$theme{'boot_conf'}{'ph'});
+ my $text_tl = $theme{boot_conf}{tx}*$font_size{w} . ','.$theme{boot_conf}{ty}*$font_size{h};
+ my $text_br = $theme{boot_conf}{tw}*$font_size{w}+$theme{boot_conf}{tx}*$font_size{w} . ','.($theme{boot_conf}{th}*$font_size{h}+$theme{boot_conf}{ty}*$font_size{h});
+ my $progress_tl = $theme{boot_conf}{px}.','.$theme{boot_conf}{py};
+ my $progress_br = ($theme{boot_conf}{px}+$theme{boot_conf}{pw}).','.($theme{boot_conf}{py}+$theme{boot_conf}{ph});
my $w = $in->wait_message('', N("Generating preview ..."));
$x++;
- local $txt_tl_x = $theme{'boot_conf'}{'tx'}*$font_size{'w'};
- local $txt_tl_y = $theme{'boot_conf'}{'ty'}*$font_size{'h'};
- local $txt_width = $theme{'boot_conf'}{'tw'}*$font_size{'w'};
- local $txt_height = $theme{'boot_conf'}{'th'}*$font_size{'h'};
- local $prog_tl_x = $theme{'boot_conf'}{'px'};
- local $prog_tl_y = $theme{'boot_conf'}{'py'};
- local $prog_width = $theme{'boot_conf'}{'pw'};
- local $prog_height= $theme{'boot_conf'}{'ph'};
- &show_prev($first{'widgets'}{'label'}{'file'}->get,$txt_tl_x,$txt_tl_y,$txt_width,$txt_height,$prog_tl_x,$prog_tl_y,$prog_width,$prog_height);
- } );
- $boot_conf_frame{'frame'}->show_all;
+ local $txt_tl_x = $theme{boot_conf}{tx}*$font_size{w};
+ local $txt_tl_y = $theme{boot_conf}{ty}*$font_size{h};
+ local $txt_width = $theme{boot_conf}{tw}*$font_size{w};
+ local $txt_height = $theme{boot_conf}{th}*$font_size{h};
+ local $prog_tl_x = $theme{boot_conf}{px};
+ local $prog_tl_y = $theme{boot_conf}{py};
+ local $prog_width = $theme{boot_conf}{pw};
+ local $prog_height = $theme{boot_conf}{ph};
+ &show_prev($first{widgets}{label}{file}->get,$txt_tl_x,$txt_tl_y,$txt_width,$txt_height,$prog_tl_x,$prog_tl_y,$prog_width,$prog_height);
+ });
+ $boot_conf_frame{frame}->show_all;
# - check scales values are possibly correct
#&set_scale_values;
- foreach my $k ( keys %{$theme{'boot_conf'}}){
+ foreach my $k (keys %{$theme{boot_conf}}) {
$k =~ m/[tp][hwyx]/
- and ${$k.'_adj'}->signal_connect(value_changed => sub{ &check_boot_scales($k) });
+ and ${$k.'_adj'}->signal_connect(value_changed => sub { &check_boot_scales($k) });
}
# unlink "$tmp_path.prev$x.png";
}
#- Desc => set theme values from user entry (scales widgets)
-sub set_thm_values{
- foreach(keys %{$theme{'boot_conf'}}) {
+sub set_thm_values {
+ foreach (keys %{$theme{boot_conf}}) {
m/[tp][hwyx]/
- and $theme{'boot_conf'}{$_} = int(${$_.'_adj'}->get_value);
+ and $theme{boot_conf}{$_} = int(${$_.'_adj'}->get_value);
}
}
+my ($prev_pic, $prev_pix, $prev_canvas);
+
#- Desc => destroy properly all widget of preview window
-sub kill_preview{
+sub kill_preview {
$prev_window->destroy; undef($prev_window);
$prev_canvas->destroy; undef($prev_canvas);
undef($prev_pic);
@@ -499,45 +498,45 @@ sub kill_preview{
}
#- Desc => create a new window with a preview of splash screen
#- Args => $file (str) full path to preview file
-sub show_prev{
+sub show_prev {
my ($file,$txt_tl_x,$txt_tl_y,$txt_width,$txt_height,$prog_tl_x,$prog_tl_y,$prog_width,$prog_height) = @_;
$prev_window
- or ($prev_window = new Gtk::Window('toplevel') and $prev_window->set_policy( 0, 1, 1 ) );
+ or $prev_window = new Gtk::Window('toplevel') and $prev_window->set_policy(0, 1, 1);
#-PO First %s is theme name, second %s (in parenthesis) is resolution
- $prev_window->set_title(N("%s BootSplash (%s) preview",$theme{'name'},$theme{'res'}{'res'}));
+ $prev_window->set_title(N("%s BootSplash (%s) preview", $theme{name}, $theme{res}{res}));
$prev_pic = gtkcreate_png_pixbuf($file);
- $prev_pic->scale_simple($theme{'res'}{'w'},$theme{'res'}{'h'},0);
+ $prev_pic->scale_simple($theme{res}{w}, $theme{res}{h},0);
$prev_pix = $prev_pic->render_pixmap_and_mask($prev_pic);
- ( $prev_canvas and $prev_canvas->isa('Gtk::Widget') )
- or ( $prev_canvas = new Gtk::DrawingArea() and $prev_window->add($prev_canvas) );
- $prev_canvas->set_usize($theme{'res'}{'w'},$theme{'res'}{'h'});
- $prev_canvas->signal_connect( expose_event => sub{
- $prev_canvas->window->draw_pixmap( $prev_canvas->style->bg_gc('normal'),$prev_pix,0,0,0,0,$theme{'res'}{'w'},$theme{'res'}{'h'});
- $prev_canvas->window->draw_rectangle( $prev_canvas->style->black_gc, $true,$txt_tl_x, $txt_tl_y,$txt_width,$txt_height );
- $prev_canvas->window->draw_rectangle( $prev_canvas->style->black_gc, $true, $prog_tl_x,$prog_tl_y,$prog_width, $prog_height );
- });
- $prev_window ->signal_connect(delete_event => \&kill_preview );
+ $prev_canvas and $prev_canvas->isa('Gtk::Widget')
+ or $prev_canvas = new Gtk::DrawingArea() and $prev_window->add($prev_canvas);
+ $prev_canvas->set_usize($theme{res}{w}, $theme{res}{h});
+ $prev_canvas->signal_connect(expose_event => sub {
+ $prev_canvas->window->draw_pixmap($prev_canvas->style->bg_gc('normal'),$prev_pix,0,0,0,0, $theme{res}{w}, $theme{res}{h});
+ $prev_canvas->window->draw_rectangle($prev_canvas->style->black_gc, $true,$txt_tl_x, $txt_tl_y,$txt_width,$txt_height);
+ $prev_canvas->window->draw_rectangle($prev_canvas->style->black_gc, $true, $prog_tl_x,$prog_tl_y,$prog_width, $prog_height);
+ });
+ $prev_window->signal_connect(delete_event => \&kill_preview);
$prev_window->show_all;
}
#- Desc => define the max size of boot's scales
-sub set_scale_size{
- %scale_size = ('tx'=> ($theme{'res'}{'w'} / $font_size{'w'}),
- 'ty'=> ($theme{'res'}{'h'} / $font_size{'h'}),
- 'tw'=> ($theme{'res'}{'w'} / $font_size{'w'}),
- 'th'=> ($theme{'res'}{'h'} / $font_size{'h'}),
- 'px'=> $theme{'res'}{'w'},
- 'py'=> $theme{'res'}{'h'},
- 'pw'=> $theme{'res'}{'w'},
- 'ph'=> $theme{'res'}{'h'},
+sub set_scale_size {
+ %scale_size = ('tx' => ($theme{res}{w} / $font_size{w}),
+ 'ty' => ($theme{res}{h} / $font_size{h}),
+ 'tw' => ($theme{res}{w} / $font_size{w}),
+ 'th' => ($theme{res}{h} / $font_size{h}),
+ 'px' => $theme{res}{w},
+ 'py' => $theme{res}{h},
+ 'pw' => $theme{res}{w},
+ 'ph' => $theme{res}{h},
);
}
#- Desc => verify that boot's scales widgets are correctly set
#- Args => $obj (str) is the scale to check value
-sub check_boot_scales{
+sub check_boot_scales {
my ($obj) = @_;
my $tw = $tw_adj->get_value;
my $tx = $tx_adj->get_value;
@@ -547,18 +546,18 @@ sub check_boot_scales{
my $ph = $ph_adj->get_value;
my $px = $px_adj->get_value;
my $py = $py_adj->get_value;
- my $max_x = $scale_size{'tw'};
- my $max_y = $scale_size{'th'};
- my $max_xres = $theme{'res'}{'w'};
- my $max_yres = $theme{'res'}{'h'};
+ my $max_x = $scale_size{tw};
+ my $max_y = $scale_size{th};
+ my $max_xres = $theme{res}{w};
+ my $max_yres = $theme{res}{h};
- $obj eq 'tw' and $max_x < ($tw + $tx) and $tx_adj->set_value($max_x - $tw);
- $obj eq 'tx' and $max_x < ($tw + $tx) and $tw_adj->set_value($max_x - $tx);
- $obj eq 'th' and $max_y < ($th + $ty) and $ty_adj->set_value($max_y - $th);
- $obj eq 'ty' and $max_y < ($th + $ty) and $th_adj->set_value($max_y - $ty);
- $obj eq 'pw' and $max_xres < ($pw + $px) and $px_adj->set_value($max_xres - $pw);
- $obj eq 'px' and $max_xres < ($pw + $px) and $pw_adj->set_value($max_xres - $px);
- $obj eq 'ph' and $max_yres < ($ph + $py) and $py_adj->set_value($max_yres - $ph);
- $obj eq 'py' and $max_yres < ($ph + $py) and $ph_adj->set_value($max_yres - $py);
+ $obj eq 'tw' and $max_x < $tw + $tx and $tx_adj->set_value($max_x - $tw);
+ $obj eq 'tx' and $max_x < $tw + $tx and $tw_adj->set_value($max_x - $tx);
+ $obj eq 'th' and $max_y < $th + $ty and $ty_adj->set_value($max_y - $th);
+ $obj eq 'ty' and $max_y < $th + $ty and $th_adj->set_value($max_y - $ty);
+ $obj eq 'pw' and $max_xres < $pw + $px and $px_adj->set_value($max_xres - $pw);
+ $obj eq 'px' and $max_xres < $pw + $px and $pw_adj->set_value($max_xres - $px);
+ $obj eq 'ph' and $max_yres < $ph + $py and $py_adj->set_value($max_yres - $ph);
+ $obj eq 'py' and $max_yres < $ph + $py and $ph_adj->set_value($max_yres - $py);
}