summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/draksplash
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/standalone/draksplash')
-rwxr-xr-xperl-install/standalone/draksplash101
1 files changed, 54 insertions, 47 deletions
diff --git a/perl-install/standalone/draksplash b/perl-install/standalone/draksplash
index 000e28871..475acf5d3 100755
--- a/perl-install/standalone/draksplash
+++ b/perl-install/standalone/draksplash
@@ -4,6 +4,7 @@ use strict;
use lib qw(/usr/lib/libDrakX);
use standalone;
use common;
+use mygtk2 qw(gtknew);
use ugtk2 qw(:create :dialogs :helpers :wrappers);
use interactive;
use bootsplash;
@@ -13,6 +14,7 @@ my $in = 'interactive'->vnew('su');
$in->do_pkgs->ensure_is_installed('ImageMagick', '/usr/bin/convert') or close_all();
$in->do_pkgs->ensure_is_installed('netpbm', '/usr/bin/jpegtopnm') or close_all();
+$ugtk2::wm_icon = 'draksplash-16';
my $window = ugtk2->new('DrakSplash');
$window->{rwindow}->signal_connect(delete_event => \&close_all);
@@ -20,26 +22,26 @@ my @image_pixbuf;
my $current_rect = [];
my $current_point;
-my $preview_window = ugtk2->new('DrakSplash');
+my $preview_window = ugtk2->new(N("Create new theme"));
my $image_area = create_image_area();
-my $scroll = create_scrolled_window($image_area);
+my $scroll = gtknew('ScrolledWindow', child => $image_area);
switch_to_mode(0);
my %scale_settings = (
- tb_x => [ 1/10, N("x coordinate of text box") ],
- tb_y => [ 1/10, N("y coordinate of text box") ],
- tb_w => [ 8/10, N("text box width") ],
- tb_h => [ 8/10, N("text box height") ],
- px => [ 2/10, N("the progress bar x coordinate\nof its upper left corner") ],
- py => [ 7/10, N("the progress bar y coordinate\nof its upper left corner") ],
- pw => [ 6/10, N("the width of the progress bar") ],
- ph => [ 1/10, N("the height of the progress bar") ],
- text_x => [ 1/10, N("x coordinate of the text") ],
- text_y => [ 1/10, N("y coordinate of the text") ],
- transp => [ 1/10, N("text box transparency") ],
- ptransp => [ 1/10, N("progress box transparency") ],
- text_size => [ 1/10, N("text size") ],
+ tb_x => [ 1/10, N("X coordinate of text box") ],
+ tb_y => [ 1/10, N("Y coordinate of text box") ],
+ tb_w => [ 8/10, N("Text box width") ],
+ tb_h => [ 8/10, N("Text box height") ],
+ px => [ 2/10, N("The progress bar X coordinate\nof its upper left corner") ],
+ py => [ 7/10, N("The progress bar Y coordinate\nof its upper left corner") ],
+ pw => [ 6/10, N("The width of the progress bar") ],
+ ph => [ 1/10, N("The height of the progress bar") ],
+ text_x => [ 1/10, N("X coordinate of the text") ],
+ text_y => [ 1/10, N("Y coordinate of the text") ],
+ transp => [ 1/10, N("Text box transparency") ],
+ ptransp => [ 1/10, N("Progress box transparency") ],
+ text_size => [ 1/10, N("Text size") ],
);
my %adj;
@@ -50,47 +52,45 @@ set_theme('new_theme');
set_resolution([ bootsplash::get_framebuffer_resolution() ]->[0]);
my $current_mode;
-my $notebook = gtksignal_connect(Gtk2::Notebook->new, switch_page => sub {
+my $notebook = gtksignal_connect(gtknew('Notebook'), switch_page => sub {
my (undef, undef, $mode) = @_;
switch_to_mode($mode);
});
-$notebook->append_page(gtkpack__(Gtk2::VBox->new(0, 5),
+$notebook->append_page(gtknew('VBox', spacing => 5, children_tight => [
create_scale_table('px', 'pw', 'py', 'ph', 'ptransp'),
- gtksignal_connect(Gtk2::Button->new(N("Choose progress bar color 1")), clicked => sub { choose_color('pc1') }),
- gtksignal_connect(Gtk2::Button->new(N("Choose progress bar color 2")), clicked => sub { choose_color('pc2') }),
- gtksignal_connect(Gtk2::Button->new(N("Choose progress bar background")), clicked => sub { choose_color('pbg_c') }),
- Gtk2::Label->new(N("Gradient type")), gtksignal_connect(Gtk2::ComboBoxEntry->new_with_strings([ 'vertical', 'horizontal' ], 'vertical'), changed => sub { $theme{conf}{gradient} = $_[0]->get_child->get_text }),
- gtksignal_connect(Gtk2::Button->new(N("Choose text color")), clicked => sub { choose_color('text_color') }),
+ gtknew('Button', text => N("Choose progress bar color 1"), clicked => sub { choose_color('pc1') }),
+ gtknew('Button', text => N("Choose progress bar color 2"), clicked => sub { choose_color('pc2') }),
+ gtknew('Button', text => N("Choose progress bar background"), clicked => sub { choose_color('pbg_c') }),
+ gtknew('Label', text => N("Gradient type")), gtksignal_connect(Gtk2::ComboBoxEntry->new_with_strings([ 'vertical', 'horizontal' ], 'vertical'), changed => sub { $theme{conf}{gradient} = $_[0]->get_child->get_text }),
+ gtknew('Button', text => N("Choose text color"), clicked => sub { choose_color('text_color') }),
create_scale_table('text_x', 'text_y', 'text_size'),
- gtksignal_connect(Gtk2::Button->new(N("Choose picture")), clicked => sub { choose_image('silentjpeg') })),
+ gtknew('Button', text => N("Choose picture"), clicked => sub { choose_image('silentjpeg') })]),
N("Silent bootsplash"));
-$notebook->append_page(gtkpack__(Gtk2::VBox->new(0, 5),
+$notebook->append_page(gtknew('VBox', spacing => 5, children_tight => [
create_scale_table('tb_x', 'tb_y', 'tb_w', 'tb_h', 'transp'),
- gtksignal_connect(Gtk2::Button->new(N("Choose text zone color")), clicked => sub { choose_color('tc') }),
- Gtk2::Label->new(N("Text color")), gtksignal_connect(Gtk2::ComboBoxEntry->new_with_strings([ 0 .. 15 ], 1), changed => sub { $theme{conf}{fgcolor} = $_[0]->get_child->get_text }),
- Gtk2::Label->new(N("Background color")), gtksignal_connect(Gtk2::ComboBoxEntry->new_with_strings([ 0 .. 15 ], '0'), changed => sub { $theme{conf}{bgcolor} = $_[0]->get_child->get_text }),
- gtksignal_connect(Gtk2::Button->new(N("Choose picture")), clicked => sub { choose_image('jpeg') })),
+ gtknew('Button', text => N("Choose text zone color"), clicked => sub { choose_color('tc') }),
+ gtknew('Label', text => N("Text color")), gtksignal_connect(Gtk2::ComboBoxEntry->new_with_strings([ 0 .. 15 ], 1), changed => sub { $theme{conf}{fgcolor} = $_[0]->get_child->get_text }),
+ gtknew('Label', text => N("Background color")), gtksignal_connect(Gtk2::ComboBoxEntry->new_with_strings([ 0 .. 15 ], '0'), changed => sub { $theme{conf}{bgcolor} = $_[0]->get_child->get_text }),
+ gtknew('Button', text => N("Choose picture"), clicked => sub { choose_image('jpeg') })]),
N("Verbose bootsplash"));
-$notebook->append_page(gtkpack__(Gtk2::VBox->new(0, 5),
- gtksignal_connect(Gtk2::CheckButton->new(N("Display logo on Console")), toggled => sub {
- $theme{conf}{logo} = bool2yesno($_[0]->get_active);
- })),
- N("Console bootsplash"));
gtkadd($window->{window},
- gtkpack(Gtk2::VBox->new(0, 5),
- gtkpack__(Gtk2::HBox->new(0, 5),
- create_packtable({ col_spacings => 10, row_spacings => 5 },
- [ Gtk2::Label->new(N("Theme name")),
+ gtknew('VBox', spacing => 5, children_loose => [
+ gtknew('HBox', spacing => 5, children_tight => [
+ gtknew('Table', col_spacings => 10, row_spacings => 5, children => [
+ [ gtknew('Label', text => N("Theme name")),
gtksignal_connect(Gtk2::ComboBoxEntry->new_with_strings([ bootsplash::themes_list() ], $theme{name}),
changed => sub { set_theme($_[0]->get_child->get_text) }) ],
- [ Gtk2::Label->new(N("final resolution")),
- gtksignal_connect(Gtk2::ComboBox->new_with_strings(\@bootsplash::resolutions, $theme{res}),
- changed => sub { set_resolution($_[0]->get_text) }) ])),
+ [ gtknew('Label', text => N("Final resolution")),
+ gtksignal_connect(gtknew('ComboBox', text => $theme{res}, list => \@bootsplash::resolutions),
+ changed => sub { set_resolution($_[0]->get_text) }) ]])]),
+ gtksignal_connect(gtknew('CheckButton', text => N("Display logo on Console")), toggled => sub {
+ $theme{conf}{logo} = bool2yesno($_[0]->get_active);
+ }),
$notebook,
- gtkpack(Gtk2::HBox->new(0, 5),
- gtksignal_connect(Gtk2::Button->new(N("Save theme")), clicked => \&save_theme),
- gtksignal_connect(Gtk2::Button->new(N("Quit")), clicked => \&close_all)))),
+ gtknew('HBox', spacing => 5, children_loose => [
+ gtknew('Button', text => N("Save theme"), clicked => \&save_theme),
+ gtknew('Button', text => N("Quit"), clicked => \&close_all)])])),
gtkshow(gtkadd($preview_window->{window}, $scroll));
$window->{rwindow}->set_border_width(5);
@@ -150,6 +150,13 @@ sub set_theme {
}
sub save_theme() {
+ if (!$theme{name}) {
+ $in->ask_warn('', N("Please enter a theme name"));
+ return;
+ } elsif (! -e $theme{conf}{silentjpeg}) {
+ $in->ask_warn('', N("Please select a splash image"));
+ return;
+ }
my $_w = $in->wait_message('', N("saving Bootsplash theme..."));
bootsplash::theme_set_image_for_resolution($theme{name}, $theme{res}, $theme{conf}{silentjpeg});
bootsplash::theme_write_config_for_resolution($theme{name}, $theme{res}, $theme{conf});
@@ -157,7 +164,7 @@ sub save_theme() {
sub load_image {
my ($img, $mode, $o_no_warn) = @_;
- eval { $image_pixbuf[$mode] = Gtk2::Gdk::Pixbuf->new_from_file($img) };
+ eval { $image_pixbuf[$mode] = gtknew('Pixbuf', file => $img) };
if ($@) {
$in->ask_warn(N("Error"), N("Unable to load image file %s", $img)) unless $o_no_warn;
return;
@@ -212,11 +219,11 @@ sub create_adj_widgets() {
sub create_scale_table {
my @settings = @_;
- create_packtable({ col_spacings => 10, row_spacings => 5 }, map {
+ gtknew('Table', col_spacings => 10, row_spacings => 5, children => [ map {
my $w = Gtk2::HScale->new($adj{$_});
$w->set_digits(0);
- [ Gtk2::Label->new($scale_settings{$_}[1]), $w ];
- } @settings);
+ [ gtknew('Label', text => $scale_settings{$_}[1]), $w ];
+ } @settings]);
}
sub get_scale_max {