diff options
author | Thierry Vignaud <tvignaud@mandriva.org> | 2005-03-02 13:09:28 +0000 |
---|---|---|
committer | Thierry Vignaud <tvignaud@mandriva.org> | 2005-03-02 13:09:28 +0000 |
commit | affb4f01253426fb7c8159c947e08b803d226eb9 (patch) | |
tree | d5078f5151aba36318d435097b0d0ed35873355d | |
parent | bbab019c3045eff754c2bcf4a54f175f70ef79e4 (diff) | |
download | control-center-affb4f01253426fb7c8159c947e08b803d226eb9.tar control-center-affb4f01253426fb7c8159c947e08b803d226eb9.tar.gz control-center-affb4f01253426fb7c8159c947e08b803d226eb9.tar.bz2 control-center-affb4f01253426fb7c8159c947e08b803d226eb9.tar.xz control-center-affb4f01253426fb7c8159c947e08b803d226eb9.zip |
enhanced layout (#13447)
-rwxr-xr-x | control-center | 138 |
1 files changed, 66 insertions, 72 deletions
diff --git a/control-center b/control-center index f2771b29..36038afa 100755 --- a/control-center +++ b/control-center @@ -34,6 +34,7 @@ use network::netconnect; # for profiles # i18n: IMPORTANT: to get correct namespace (drakconf instead of libDrakX) BEGIN { unshift @::textdomains, 'drakconf' } use ugtk2 qw(:create :dialogs :helpers :wrappers); +use Gtk2::Html2; #------------------------------------------------------------- @@ -1273,6 +1274,12 @@ sub really_refresh_tree { $notebook_global->window && $notebook_global->window->thaw_updates; } +sub request_url { + my ($document, $url, $stream) = @_; + $stream->write(join('', cat_($url))); + $stream->close; +} + sub refresh_tree { my ($mode) = @_; if ($mode && $page_count) { @@ -1299,56 +1306,82 @@ foreach (@tree) { next if !@subtree; my $my_index = $index++; - - my $box; - $box = Gtk2::WebIcon->new($text, $icon, - { - button_release_event => sub { + my $string = qq(<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<style type="text/css"> + p {text-align: justify} + td {text-align: justify} + tr {text-align: justify} + a:link {color:black; text-decoration:none } + a:visited {color:black; text-decoration:none } + a:hover {color:blue } +// a:active {color:black; text-decoration:none } +</style> + +</HEAD> +<BODY><TABLE BORDER=0 cellspacing="20" > +); + my $view = Gtk2::Html2::View->new; + my $document = Gtk2::Html2::Document->new; + + $document->signal_connect (request_url => \&request_url); + $document->signal_connect ('link-clicked' => + sub { + my ($document, $url) = @_; + $tool_callbacks{$url}->(); # FIXME: the following code is currently useless: # should we provide a way to kill buggy embedded programs ? return if $left_locked; $page_id = $my_index + 1; warn_on_startup(); - }, - } - ); + }); + $view->set_document ($document); - # Create right notebook pages : + my $box; + - my $tbl = create_packtable2({ col_spacings => $spacing, row_spacings => $spacing, homogeneous => 1, mcc => 1 }, - map { - my $size_group = Gtk2::SizeGroup->new('vertical'); - $size_group->add_widget($_) foreach grep { defined $_ } @$_; - $_; - } - group_by($option_values{use_long_dscr} ? 2 : 3, map { - my $label = $_; - my $icon = $programs{$label}{icon}; + # Create right notebook pages : + $string .= join("\n", + map { + "<TR>" . join("\n", grep { defined $_ } @$_) . "</TR>" } +# "<TR>" . join("\n<TD> </TD>\n", grep { defined $_ } @$_) . "</TR>" } + group_by($option_values{use_long_dscr} ? 2 : 3, map { + my $label = $_; + my $icon = $programs{$label}{icon}; + die "$label 's icon is missing" if !$programs{$label} && $::testing; - my $event_box; $tool_callbacks{$label} = sub { - # needed for --start-with parameter: - $event_box->realize; - run_tool($label, $event_box, $icon, $programs{$label}{description}, $programs{$label}); + run_tool($label, undef, #$event_box, + $icon, $programs{$label}{description}, $programs{$label}); }; - $event_box = Gtk2::WebIcon->new($programs{$label}{long_description}, $icon, - { - button_release_event => $tool_callbacks{$label}, - } - ); - $event_box->set_events([ 'enter_notify_mask', 'leave_notify_mask', 'button_press_mask', 'button_release_mask' ]); - $tool_feedback{$label} = sub { $event_box->window && $event_box->window->set_cursor($hand_cursor) }; - $event_box; - } @subtree)); + # FIX ME: DO THIS AGAIN: + $tool_feedback{$label} = sub { }; #sub { $event_box->window && $event_box->window->set_cursor($hand_cursor) }; + my $file = ugtk2::_find_imgfile($icon); + qq(<TD WIDTH="40%"> +<TABLE cellspacing="5"><TR> +<TD><A HREF="$label"><IMG SRC="$file"></A></TD> +<TD ALIGN="justify" style="text-align: justify"><A HREF="$label">$programs{$label}{long_description}</A></TD> +</TR></TABLE> +); + } @subtree) + ); # b/c we use Pango text markup language, we've to protect '&' caracter: $text =~ s/&/&/g; $page_count++; + + $string .= qq(</TABLE></BODY></HTML>); + + $document->clear; + $document->open_stream("text/html"); + $document->write_stream($string); + gtkappend_page($notebook_global, - my $_w_ret = create_scrolled_window(gtkset_border_width($tbl, 5), - [ 'never', 'automatic' ], 'none', + my $_w_ret = create_scrolled_window(gtkset_border_width($view, 5), + [ 'never', 'automatic' ], # 'none', ), gtkpack__(Gtk2::HBox->new, Gtk2::Image->new_from_pixbuf(::scale(gtkcreate_pixbuf($icon), -16)), @@ -1900,43 +1933,4 @@ sub scale { } -package Gtk2::WebIcon; - -use ugtk2 qw(:helpers :wrappers); -use common; - -sub new { - my ($_class, $text, $icon, $callbacks) = @_; - my $hbox_spacing = 10; - # FIXME: do ->set_pixbuf() on {enter,leave}_events - my $box = gtkadd(gtksignal_connect(Gtk2::EventBox->new, realize => sub { $_[0]->window->set_cursor($hand_cursor) }), - gtkpack_( - # better VBox of StockButtons there (with IconFactory) - Gtk2::VBox->new(0, $hbox_spacing), - 0, gtkcreate_img($icon), - 1, gtktext_insert( - # disable selecting text and popping the contextual menu - # (GUI team says it's *horrible* to be able to do select text!) - gtksignal_connect(my $tv = Gtk2::TextView->new, - button_press_event => sub { 1 }), - [ [ $text, {'background_set' => 0, justification => "center", - 'background_stipple_set' => 0 } ] ]) - ), - ); - $tv->set_events([]); - # FIXME : resize sig: ->foreach; set_size_request - $callbacks->{key_press_event} = sub { - my (undef, $event) = @_; - return if !$callbacks->{button_release_event}; - $callbacks->{button_release_event}->() if $Gtk2::Gdk::Keysyms{Return} eq $event->keyval; - }; - while (my ($signal, $handler) = each %$callbacks) { - $box->signal_connect($signal => $handler); - } - - gtkset_size_request($box, 50, -1); - $box->set_events([ 'enter_notify_mask', 'leave_notify_mask', 'button_press_mask', 'button_release_mask', 'key-press-mask' ]); - return gtkset_border_width($box, 10); -} - 1; |