diff options
-rwxr-xr-x | control-center | 83 |
1 files changed, 38 insertions, 45 deletions
diff --git a/control-center b/control-center index b3687661..d05ff13b 100755 --- a/control-center +++ b/control-center @@ -34,6 +34,7 @@ use common; use interactive; use detect_devices; use my_gtk qw(:helpers :wrappers); +use ugtk qw(:helpers :wrappers); #use strict; # set the locale, needed for proper fontset and charset selection @@ -57,9 +58,7 @@ my ($embedded, $logs) = (text2bool($h{EMBEDDED}), text2bool($h{LOGS})); my $theme = $h{THEME}; if ("@ARGV" =~ /--theme (\w+)/) { $theme = $1 } -d "$themes_dir/$theme" or $theme = 'default'; -#"@ARGV" =~ /--safe/ and $theme = 'default'; ugtk::add_icon_path("$themes_dir/$theme"); -($theme ne 'default') and ugtk::add_icon_path("$themes_dir/default"); my $window_splash = new Gtk::Window -popup; $window_splash->signal_connect (delete_event => \&quit_global); $window_splash->set_title(_("Mandrake Control Center")); @@ -170,7 +169,7 @@ my @tree = [ [_("Hardware List"),'harddrake-mdk'], [_("Monitor"),'XFdrake-mdk'], - [_("Resolution"),'XFdrake-mdk'], + [_("Resolution"),'resolution-mdk'], [_("Display"),'XFdrake-mdk'], [_("TV Cards"),'XFdrake-mdk'], [_("Keyboard"), 'keyboard-mdk'], @@ -264,33 +263,39 @@ $window_global->set_title(_("Mandrake Control Center %s", $_version)); $window_global->set_policy(0, 1, 1); my $notebook_global; -my ($pixmap_back_left, undef) = gtkcreate_png_('mcc-left-back'); +my $left_back_pixbuf_unaltered = gtkcreate_png_pixbuf('mcc-left-back'); +my $left_back_pixbuf_unaltered_h = gtkcreate_png_pixbuf('mcc-left-back2'); + my @darea_left_list; my $cursor_hand = new Gtk::Gdk::Cursor 60; my $cursor_normal = new Gtk::Gdk::Cursor 68; my @back; -($back[0], undef) = gtkcreate_png_('mcc-left-back'); +($back[0], undef) = gtkcreate_png('mcc-left-back'); $back[1] = $back[0]; -($back[2], undef) = gtkcreate_png_('mcc-left-back2'); +($back[2], undef) = gtkcreate_png('mcc-left-back2'); my ($index, $left_locked, $pending_app) = (0, 0, 0); my $darea_left_sav; foreach (@tree) { $index++; my $index = $index; my $text = $_->[0]; - my @icon; - ($icon[0], undef) = gtkcreate_png_($_->[1]); - ($icon[1], undef) = gtkcreate_png_("$_->[1]_highlight"); - ($icon[2], undef) = gtkcreate_png_("$_->[1]2"); + my $darea_left = gtkset_usize(new Gtk::DrawingArea, 160, 45); $darea_left->{state} = 0; my $dbl_area_left; $darea_left->set_events(['exposure_mask', 'enter_notify_mask', 'leave_notify_mask', 'button_press_mask', 'button_release_mask' ]); $darea_left->signal_connect(size_allocate => sub { $dbl_area_left = undef }); + + my @left_back_pixbuf; + # 0 => unselected, 1 => highlited, 2 => selected + $left_back_pixbuf[0] = compose_with_back($_->[1], $left_back_pixbuf_unaltered); + $left_back_pixbuf[2] = compose_with_back($_->[1], $left_back_pixbuf_unaltered_h); + $left_back_pixbuf[1] = $left_back_pixbuf[0]; + my ($width, $height) = ($left_back_pixbuf[0]->get_width, $left_back_pixbuf[0]->get_height); $darea_left->signal_connect(expose_event => sub { my ($dx, $dy) = ($darea_left->allocation->[2], $darea_left->allocation->[3]); + my $state = $darea_left->{state}; if (!defined($dbl_area_left) || $darea_left->{state} != $dbl_area_left->{state}) { - my $state = $darea_left->{state}; my ($pix, $width, $height) = create_pix_text($darea_left, $text, "#0#0#0", $darea_left->style->font, max($dx-40, 0), $dy, 0, 0, $back[$state], 160, 45, 0, 1, $state); @@ -299,25 +304,26 @@ foreach (@tree) { $darea_left->{dbl} = $dbl_area_left; fill_tiled($darea_left, $dbl_area_left, $back[$state], 40, $dy, 40, 45); $dbl_area_left->draw_pixmap($darea_left->style->bg_gc('normal'), - $icon[$state], 0, 0, 4, int(($dy-35)/2/5)*5, 35, 35); - $dbl_area_left->draw_pixmap($darea_left->style->bg_gc('normal'), $pix, 0, 0, 40, 0, $width, $height); } $darea_left->window->draw_pixmap($darea_left->style->bg_gc('normal'), $dbl_area_left, 0, 0, 0, 0, ($dx, $dy)); + + $left_back_pixbuf[$state]->render_to_drawable($darea_left->window, $darea_left->style->fg_gc('normal'), 0, 0, 8, 8, + $width, $height, 'normal', 0, 0); }); $darea_left->signal_connect(realize => sub { $darea_left->window->set_cursor($cursor_hand) }); $darea_left->signal_connect(enter_notify_event => sub { - if ($darea_left->{state} == 0) { - $darea_left->{state} = 1; - $darea_left->draw(undef); - } + return if ($darea_left->{state} != 0); + $darea_left->{state} = 1; + $left_back_pixbuf[$darea_left->{state}]->render_to_drawable($darea_left->window, $darea_left->style->fg_gc('normal'), 0, 0, 8, 8, + $width, $height, 'normal', 0, 0); }); $darea_left->signal_connect(leave_notify_event => sub { - if ($darea_left->{state} == 1) { - $darea_left->{state} = 0; - $darea_left->draw(undef); - } + return if ($darea_left->{state} != 1); + $darea_left->{state} = 0; + $left_back_pixbuf[$darea_left->{state}]->render_to_drawable($darea_left->window, $darea_left->style->fg_gc('normal'), 0, 0, 8, 8, + $width, $height, 'normal', 0, 0); }); $darea_left->signal_connect(button_release_event => sub { $left_locked and return; @@ -369,7 +375,7 @@ $window_global->add( 0, gtkpack_(new Gtk::HBox(0, 0), 1, new Gtk::VBox(0, 0), 0, gtkadd(gtkset_shadow_type(new Gtk::Frame, 'etched_out'), - gtkpng_('hourglass'), + gtkpng('hourglass'), ), 1, new Gtk::VBox(0, 0), ), @@ -405,8 +411,8 @@ sub update_exp { } #540, 420 -$notebook_global->set_usize(40, $index * 45); -$emb_box->set_usize(40, $index * 45); +$notebook_global->set_usize(40, $index * 50); +$emb_box->set_usize(40, $index * 50); $log_check_box->set_active($logs); $embedded_check_box->set_active($embedded); @@ -415,11 +421,11 @@ res_socket(); foreach (@darea_left_list) { $fixed_left->put($_->[1], 0, $_->[0]) } -$fixed_left->signal_connect(realize => sub { $fixed_left->window->set_back_pixmap($pixmap_back_left, 0) }); +$fixed_left->signal_connect(realize => sub { $fixed_left->window->set_back_pixmap($back[0], 0) }); my $dbl_area; -my ($pixmap_back, undef) = gtkcreate_png_('mcc-title-back'); -my ($pixmap_icon, undef) = gtkcreate_png_('mcc-title-icon'); +my ($pixmap_back, undef) = gtkcreate_png('mcc-title-back'); +my ($pixmap_icon, undef) = gtkcreate_png('mcc-title-icon'); $fixed_title->put(my $darea_title = gtkset_usize(new Gtk::DrawingArea, 335, 55), 0, 0); # 335 -> 450 @@ -451,7 +457,8 @@ $darea_title->signal_connect(expose_event => sub { $dbl_area, $dim[0], $dim[1], $dim[0], $dim[1], $dim[2], $dim[3]); }); -my ($pixmap_back_right, undef) = gtkcreate_png_('mcc-core-back'); +my ($pixmap_back_right, undef) = gtkcreate_png('mcc-core-back'); +my $right_back_pixbuf = gtkcreate_png_pixbuf('mcc-core-back'); my $pix_dbl; $notebook_global->append_page(my $darea1 = new Gtk::DrawingArea);#my $fixed_about = new Gtk::Fixed); @@ -486,9 +493,10 @@ $darea1->signal_connect(expose_event => sub { }); +my $left_back_pixbuf_unaltered_50 = gtkcreate_png_pixbuf('mcc-left-back2'); foreach (@tree) { $notebook_global->append_page(gtkicons_labels_widget($_->[2], $window_global, "#0#0#0", $darea1, - $pixmap_back_right, 540, 460, 55, 50, 50, 50, 50, 50, \&compute_exec_string, $exec_hash)); + $pixmap_back_right, $left_back_pixbuf_unaltered_50, 540, 460, 55, 50, 50, 50, 50, 50, \&compute_exec_string, $exec_hash)); } Gtk->main_iteration while Gtk->events_pending; $notebook_global->signal_connect(switch_page => sub { @@ -518,20 +526,6 @@ $SIG{TERM} = \&quit_global; #$SIG{CHLD} = sub { wait() }; Gtk->main; -sub gtkpng_ { - my $gtkpix; - eval { $gtkpix = gtkpng(@_) }; -# $@ and $theme ne 'default' ? exec "$0 --safe" : die "$@"; - $gtkpix -} - -sub gtkcreate_png_ { - my ($gdkpix, $gdkmap); - eval { ($gdkpix, $gdkmap) = gtkcreate_png(@_) }; -# $@ and $theme ne 'default' ? exec "$0 --safe" : die "$@"; - ($gdkpix, $gdkmap); -} - sub sig_usr1 { $left_locked = 0; clean_socket(); @@ -539,7 +533,6 @@ sub sig_usr1 { $notebook_global->show; } -my $timer; sub sig_usr2 { $left_locked = 0; $emb_wait->hide; @@ -689,7 +682,7 @@ sub splash_warning { ) ); gtkpack($win_about->vbox, - gtkpng_("warning"), + gtkpng("warning"), new Gtk::Label($label), ); $win_about->show_all(); |