summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Vignaud <tvignaud@mandriva.org>2005-03-02 13:09:28 +0000
committerThierry Vignaud <tvignaud@mandriva.org>2005-03-02 13:09:28 +0000
commitaffb4f01253426fb7c8159c947e08b803d226eb9 (patch)
treed5078f5151aba36318d435097b0d0ed35873355d
parentbbab019c3045eff754c2bcf4a54f175f70ef79e4 (diff)
downloadcontrol-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-xcontrol-center138
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/&/&amp;/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;