aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--de/diskdrake.html2
-rw-r--r--de/formatPartitions.html2
-rw-r--r--de/installer.html2
-rw-r--r--eo/diskdrake.html2
-rw-r--r--eo/formatPartitions.html2
-rw-r--r--eo/installer.html2
-rw-r--r--es/diskdrake.html2
-rw-r--r--es/formatPartitions.html2
-rw-r--r--es/installer.html2
-rw-r--r--es/selectKeyboard.html2
-rw-r--r--fr/acceptLicense.html3
-rw-r--r--fr/diskdrake.html2
-rw-r--r--fr/formatPartitions.html2
-rw-r--r--fr/installer.html2
-rw-r--r--pt/diskdrake.html2
-rw-r--r--pt/formatPartitions.html2
-rw-r--r--pt/installer.html2
-rw-r--r--pt_br/diskdrake.html2
-rw-r--r--pt_br/formatPartitions.html2
-rw-r--r--pt_br/installer.html2
-rw-r--r--sv/ask_mntpoint_s.html2
-rw-r--r--sv/diskdrake.html2
-rw-r--r--sv/setupBootloader.html2
23 files changed, 25 insertions, 22 deletions
diff --git a/de/diskdrake.html b/de/diskdrake.html
index f673d17..1fd461d 100644
--- a/de/diskdrake.html
+++ b/de/diskdrake.html
@@ -45,7 +45,7 @@
<div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="./warning.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="warning.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/de/formatPartitions.html b/de/formatPartitions.html
index 7c01353..51160a3 100644
--- a/de/formatPartitions.html
+++ b/de/formatPartitions.html
@@ -58,7 +58,7 @@
<div class="tip" title="Tipp" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tipp]" src="./tip.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tipp]" src="tip.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/de/installer.html b/de/installer.html
index 16ec648..e16cb6a 100644
--- a/de/installer.html
+++ b/de/installer.html
@@ -91,7 +91,7 @@
<div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="./note.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="note.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/eo/diskdrake.html b/eo/diskdrake.html
index c0eb043..edd7a71 100644
--- a/eo/diskdrake.html
+++ b/eo/diskdrake.html
@@ -38,7 +38,7 @@
<div class="warning" title="Averto" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Averto]" src="./warning.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Averto]" src="warning.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/eo/formatPartitions.html b/eo/formatPartitions.html
index 1fb1728..c421b4e 100644
--- a/eo/formatPartitions.html
+++ b/eo/formatPartitions.html
@@ -51,7 +51,7 @@
<div class="tip" title="Sugesto" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Sugesto]" src="./tip.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Sugesto]" src="tip.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/eo/installer.html b/eo/installer.html
index f864492..8b00968 100644
--- a/eo/installer.html
+++ b/eo/installer.html
@@ -80,7 +80,7 @@
<div class="note" title="Rimarko" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Rimarko]" src="./note.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Rimarko]" src="note.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/es/diskdrake.html b/es/diskdrake.html
index 6974907..6717db7 100644
--- a/es/diskdrake.html
+++ b/es/diskdrake.html
@@ -45,7 +45,7 @@
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="./warning.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="warning.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/es/formatPartitions.html b/es/formatPartitions.html
index 0197014..5f9e946 100644
--- a/es/formatPartitions.html
+++ b/es/formatPartitions.html
@@ -54,7 +54,7 @@
<div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="./tip.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="tip.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/es/installer.html b/es/installer.html
index df1d155..a4770e4 100644
--- a/es/installer.html
+++ b/es/installer.html
@@ -90,7 +90,7 @@
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="./note.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="note.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/es/selectKeyboard.html b/es/selectKeyboard.html
index 0fa0abd..cbb54bb 100644
--- a/es/selectKeyboard.html
+++ b/es/selectKeyboard.html
@@ -46,7 +46,7 @@
conoce cu&aacute;l es la distribuci&oacute;n correcta para su teclado, mire en las
especificaciones que ven&iacute;an con su sistema o pregunte a su vendedor.
Incluso puede haber una etiqueta en su teclado que identifique su
- disposici&oacute;n. Tambi&eacute;n puede mirarlo aqu&iacute;: es.wikipedia.org/wiki/Distribuci&oacute;n_del_teclado
+ disposici&oacute;n. Tambi&eacute;n puede mirarlo aqu&iacute;: <a class="ulink" href="http://es.wikipedia.org/wiki/Distribuci%C3%B3n_del_teclado" target="_top">es.wikipedia.org/wiki/Distribuci&oacute;n_del_teclado</a>
</p>
diff --git a/fr/acceptLicense.html b/fr/acceptLicense.html
index 53a2673..9bab6cc 100644
--- a/fr/acceptLicense.html
+++ b/fr/acceptLicense.html
@@ -23,6 +23,9 @@
</div>
</div>
+
+
+
diff --git a/fr/diskdrake.html b/fr/diskdrake.html
index 306251f..9c38c17 100644
--- a/fr/diskdrake.html
+++ b/fr/diskdrake.html
@@ -45,7 +45,7 @@
<div class="warning" title="Avertissement" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="./warning.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="warning.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/fr/formatPartitions.html b/fr/formatPartitions.html
index 41919e3..f6c3712 100644
--- a/fr/formatPartitions.html
+++ b/fr/formatPartitions.html
@@ -53,7 +53,7 @@
<div class="tip" title="Astuce" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Astuce]" src="./tip.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Astuce]" src="tip.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/fr/installer.html b/fr/installer.html
index e470659..55743a1 100644
--- a/fr/installer.html
+++ b/fr/installer.html
@@ -86,7 +86,7 @@
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="./note.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="note.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/pt/diskdrake.html b/pt/diskdrake.html
index 2cc6cf3..3b6f3ba 100644
--- a/pt/diskdrake.html
+++ b/pt/diskdrake.html
@@ -46,7 +46,7 @@
<div class="warning" title="Aten&ccedil;&atilde;o" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Aten&ccedil;&atilde;o]" src="./warning.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Aten&ccedil;&atilde;o]" src="warning.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/pt/formatPartitions.html b/pt/formatPartitions.html
index a229166..f139273 100644
--- a/pt/formatPartitions.html
+++ b/pt/formatPartitions.html
@@ -52,7 +52,7 @@
<div class="tip" title="Dica" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Dica]" src="./tip.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Dica]" src="tip.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/pt/installer.html b/pt/installer.html
index c587e0e..9600cf8 100644
--- a/pt/installer.html
+++ b/pt/installer.html
@@ -83,7 +83,7 @@
<div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Nota]" src="./note.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Nota]" src="note.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/pt_br/diskdrake.html b/pt_br/diskdrake.html
index 2cc6cf3..3b6f3ba 100644
--- a/pt_br/diskdrake.html
+++ b/pt_br/diskdrake.html
@@ -46,7 +46,7 @@
<div class="warning" title="Aten&ccedil;&atilde;o" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Aten&ccedil;&atilde;o]" src="./warning.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Aten&ccedil;&atilde;o]" src="warning.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/pt_br/formatPartitions.html b/pt_br/formatPartitions.html
index a229166..f139273 100644
--- a/pt_br/formatPartitions.html
+++ b/pt_br/formatPartitions.html
@@ -52,7 +52,7 @@
<div class="tip" title="Dica" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Dica]" src="./tip.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Dica]" src="tip.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/pt_br/installer.html b/pt_br/installer.html
index c587e0e..9600cf8 100644
--- a/pt_br/installer.html
+++ b/pt_br/installer.html
@@ -83,7 +83,7 @@
<div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Nota]" src="./note.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Nota]" src="note.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/sv/ask_mntpoint_s.html b/sv/ask_mntpoint_s.html
index c64df78..bda1a9b 100644
--- a/sv/ask_mntpoint_s.html
+++ b/sv/ask_mntpoint_s.html
@@ -52,7 +52,7 @@
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="./note.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="note.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/sv/diskdrake.html b/sv/diskdrake.html
index da8fe6d..d1c154f 100644
--- a/sv/diskdrake.html
+++ b/sv/diskdrake.html
@@ -45,7 +45,7 @@
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="./warning.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="warning.png"></td>
<th align="left"></th>
</tr>
<tr>
diff --git a/sv/setupBootloader.html b/sv/setupBootloader.html
index 13f4b72..cbc4761 100644
--- a/sv/setupBootloader.html
+++ b/sv/setupBootloader.html
@@ -47,7 +47,7 @@
<div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="./tip.png"></td>
+ <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="tip.png"></td>
<th align="left"></th>
</tr>
<tr>
f='#n1064'>1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081
package my_gtk; # $Id$

use diagnostics;
use strict;
use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK $border);

@ISA = qw(Exporter);
%EXPORT_TAGS = (
    helpers => [ qw(create_okcancel createScrolledWindow create_menu create_notebook create_packtable create_hbox create_vbox create_adjustment create_box_with_title create_treeitem) ],
    wrappers => [ qw(gtksignal_connect gtkradio gtkpack gtkpack_ gtkpack__ gtkpack2 gtkpack3 gtkpack2_ gtkpack2__ gtkpowerpack gtkset_editable gtksetstyle gtkset_tip gtkappenditems gtkappend gtkset_shadow_type gtkset_layout gtkset_relief gtkadd gtkput gtktext_insert gtkset_usize gtksize gtkset_justify gtkset_active gtkset_sensitive gtkset_modal gtkset_border_width gtkmove gtkresize gtkshow gtkhide gtkdestroy gtkcolor gtkset_mousecursor gtkset_mousecursor_normal gtkset_mousecursor_wait gtkset_background gtkset_default_fontset gtkctree_children gtkxpm gtkpng create_pix_text get_text_coord fill_tiled gtkicons_labels_widget write_on_pixmap gtkcreate_xpm gtkcreate_png gtkbuttonset) ],
    ask => [ qw(ask_warn ask_okcancel ask_yesorno ask_from_entry) ],
);
$EXPORT_TAGS{all} = [ map { @$_ } values %EXPORT_TAGS ];
@EXPORT_OK = map { @$_ } values %EXPORT_TAGS;

use Gtk;
use Gtk::Gdk::ImlibImage;
use c;
use log;
use common;

my $forgetTime = 1000; #- in milli-seconds
$border = 5;

#-###############################################################################
#- OO stuff
#-###############################################################################
sub new {
    my ($type, $title, %opts) = @_;

    Gtk->init;
    Gtk::Gdk::ImlibImage->init;
    Gtk->set_locale;
    my $o = bless { %opts }, $type;
    $o->_create_window($title);
    while (my $e = shift @tempory::objects) { $e->destroy }
    foreach (@interactive::objects) {
	$_->{rwindow}->set_modal(0) if $_->{rwindow}->can('set_modal');
    }
    push @interactive::objects, $o if !$opts{no_interactive_objects};
    $o->{rwindow}->set_position('center_always') if $::isStandalone;
    $o->{rwindow}->set_modal(1) if $my_gtk::grab || $o->{grab};
    
    if ($::isWizard && !$my_gtk::pop_it) {
	#- my $rc = "/etc/gtk/wizard.rc";
	#- -r $rc or $rc = dirname(__FILE__) . "/wizard.rc";
	#- Gtk::Rc->parse($rc);
	$o->{window} = new Gtk::VBox(0,0);
	$o->{window}->set_border_width($::Wizard_splash ? 0 : 10);
	$o->{rwindow} = $o->{window};
	if (!defined($::WizardWindow)) {
	    $::WizardWindow = new Gtk::Window;
	    $::WizardWindow->set_position('center_always');
	    $::WizardWindow->signal_connect(delete_event => sub { die 'wizcancel'});
	    $::WizardTable = new Gtk::Table(2, 2, 0);
	    $::WizardWindow->add($::WizardTable);
	    my $draw1 = new Gtk::DrawingArea;
	    $draw1->set_usize(540,100);
	    my $draw2 = new Gtk::DrawingArea;
	    $draw2->set_usize(100,300);
	    my ($im_up, $mask_up) = gtkcreate_png($::Wizard_pix_up || "wiz_default_up.png");
	    my ($y1, $x1) = $im_up->get_size;
	    my ($im_left, $mask_left) = gtkcreate_png($::Wizard_pix_left || "wiz_default_left.png");
	    my ($y2, $x2) = $im_left->get_size;
	    my $style = $draw1->style->copy();
	    $style->font(Gtk::Gdk::Font->fontset_load("-adobe-utopia-regular-r-*-*-25-*-*-*-p-*-iso8859-*"));
	    my $w = $style->font->string_width($::Wizard_title);
	    $draw1->signal_connect(expose_event => sub {
				       my $i;
				       for ($i=0;$i<(540/$y1);$i++) {
					   $draw1->window->draw_pixmap ($draw1->style->bg_gc('normal'),
									$im_up, 0, 0, 0, $y1*$i,
									$x1 , $y1 );
					   $draw1->window->draw_string(
								       $style->font,
								       $draw1->style->white_gc,
								       140+(380-$w)/2, 62,
								       ($::Wizard_title) );
				       }
				   });
	    $draw2->signal_connect(expose_event => sub {
				       my $i;
				       for ($i=0;$i<(300/$y2);$i++) {
					   $draw2->window->draw_pixmap ($draw2->style->bg_gc('normal'),
									$im_left, 0, 0, 0, $y2*$i,
									$x2 , $y2 );
				       }
				   });
	    $::WizardTable->attach($draw1, 0, 2, 0, 1, 'fill', 'fill', 0, 0);
	    #- $::WizardTable->attach($draw2, 0, 1, 1, 2, 'fill', 'fill', 0, 0);
	    $::WizardTable->set_usize(540,400);
	    $::WizardWindow->show_all;
	    flush();
	}
	$::WizardTable->attach($o->{window}, 0, 2, 1, 2, [-fill, -expand], [-fill, -expand], 0, 0);
    }

    if ($::isEmbedded && !$my_gtk::pop_it && !eval { $::Plug->child }) {
	$o->{window} = new Gtk::HBox(0,0);
	$o->{rwindow} = $o->{window};
	$::Plug ||= new Gtk::Plug ($::XID);
	$::Plug->show;
	flush();
	$::Plug->add($o->{window});
    }
    $::CCPID and kill "USR2", $::CCPID;
    $o;
}
sub main {
    my ($o, $completed, $canceled) = @_;
    gtkset_mousecursor_normal();
    my $timeout = Gtk->timeout_add(1000, sub { gtkset_mousecursor_normal(); 1 });
    my $b = before_leaving { Gtk->timeout_remove($timeout) };
    $o->{rwindow}->window->set_events(['key_press_mask', 'key_release_mask', 'exposure_mask']) if $o->{rwindow}->window;
    $o->show;

    do {
	local $::setstep = 1;
	Gtk->main;
    } while ($o->{retval} ? $completed && !$completed->() : $canceled && !$canceled->());
    $o->destroy;
    $o->{retval}
}
sub show($) {
    my ($o) = @_;
    $o->{window}->show;
    $o->{rwindow}->show;
}
sub destroy($) {
    my ($o) = @_;
    $o->{rwindow}->destroy;
    gtkset_mousecursor_wait();
    flush();
}
sub DESTROY { goto &destroy }
sub sync {
    my ($o) = @_;
    show($o);
    flush();
}
sub flush {
    Gtk->main_iteration while Gtk->events_pending;
}

sub gtkshow($)         { $_[0]->show; $_[0] }
sub gtkhide($)         { $_[0]->hide; $_[0] }
sub gtkdestroy($)      { $_[0] and $_[0]->destroy }
sub gtkset_usize($$$)  { $_[0]->set_usize($_[1],$_[2]); $_[0] }
sub gtksize($$$)       { $_[0]->size($_[1],$_[2]); $_[0] }
sub gtkset_justify($$) { $_[0]->set_justify($_[1]); $_[0] }
sub gtkset_active($$)  { $_[0]->set_active($_[1]); $_[0] }
sub gtkset_modal       { $_[0]->set_modal($_[1]); $_[0] }
sub gtkset_sensitive   { $_[0]->set_sensitive($_[1]); $_[0] }
sub gtkset_border_width{ $_[0]->set_border_width($_[1]); $_[0] }
sub gtkmove { $_[0]->window->move($_[1], $_[2]); $_[0] }
sub gtkresize { $_[0]->window->resize($_[1], $_[2]); $_[0] }

sub gtksignal_connect($@) {
    my $w = shift;
    $w->signal_connect(@_);
    $w
}

sub gtkradio {
    my $def = shift;
    my $radio;
    map { $radio = new Gtk::RadioButton($_, $radio ? $radio : ());
	  $radio->set_active($_ eq $def); $radio } @_;
}

sub gtkpack_($@) { gtkpowerpack('arg', 1, @_) }
sub gtkpack($@) { gtkpowerpack(1, 1, @_) }
sub gtkpack__($@) { gtkpowerpack(0, 1, @_) }
sub gtkpack2_($@) { gtkpowerpack('arg', 0, @_) }
sub gtkpack2($@) { gtkpowerpack(1, 0, @_) }
sub gtkpack2__($@) { gtkpowerpack(0, 0, @_) }
sub gtkpack3 { gtkpowerpack($a?1:0, 0, @_) }

sub gtkpowerpack {
    #- Get Default Attributes (if any). 2 syntaxes allowed :
    #- gtkpowerpack( {expand => 1, fill => 0}, $box...) : the attributes are picked from a specified hash ref
    #- gtkpowerpack(1,0,1, $box, ...) : the attributes are picked from the non-ref list, in the order (expand, fill, padding, pack_end).
    my $RefDefaultAttrs;
    if (ref($_[0]) eq 'HASH') {
	$RefDefaultAttrs = shift;
    } elsif (!ref($_[0])) {
	my %tmp;
	foreach my $i ("expand", "fill", "padding", "pack_end") {
	    !ref($_[0]) ? $tmp{$i} = shift : last
	}
	$RefDefaultAttrs = \%tmp;
    }
    my $box = shift;

    while (@_) {
	#- Get attributes (if specified). 4 syntaxes allowed (default values are undef ie. false...) :
	#- gtkpowerpack({defaultattrs}, $box, $widget1, $widget2, ...) : the attrs are picked from the default ones (if they exist)
	#- gtkpowerpack($box, {fill=>1, expand=>0, ...}, $widget1, ...) : the attributes are picked from a specified hash ref
	#- gtkpowerpack($box, [1,0,1], $widget1, ...) : the attributes are picked from the array ref, in the order (expand, fill, padding, pack_end).
	#- gtkpowerpack({attr=>'arg'}, $box, 1, $widget1, 0, $widget2, etc...) : the 'arg' value will tell gtkpowerpack to always read the attr value directly in the arg list (avoiding confusion between value 0 and Gtk::Label("0"). That can simplify some writings but this arg(s) MUST then be present...
	my %attr;
	my $RefAttrs = shift if (ref($_[0]) eq 'HASH' or ref($_[0]) eq 'ARRAY');
	foreach my $i ("expand", "fill", "padding", "pack_end") {
	    if (defined($RefDefaultAttrs->{$i}) and $RefDefaultAttrs->{$i} eq 'arg') {
		if (!ref ($_[0])) {
		    $attr{$i} = shift;
		    shift @$RefAttrs if (ref($RefAttrs) eq 'ARRAY')
		} else {
		    die "error in packing definition\n"
		}
	    } elsif (ref($RefAttrs) eq 'HASH' and defined($RefAttrs->{$i})) {
		$attr{$i} = $RefAttrs->{$i}
	    } elsif (ref($RefAttrs) eq 'ARRAY') {
		$attr{$i} = shift @$RefAttrs
	    } elsif (defined($RefDefaultAttrs->{$i})) {
		$attr{$i} = int $RefDefaultAttrs->{$i}
	    } else {
		$attr{$i} = 0
	    }
	}

	#- Get and pack the widget (create it if necessary when it is a label...)
	my $widget = ref($_[0]) ? shift : new Gtk::Label(shift);
	if (! $attr{pack_end}) {
	    $box->pack_start($widget, $attr{expand}, $attr{fill}, $attr{padding});
	} else {
	    $box->pack_end($widget, $attr{expand}, $attr{fill}, $attr{padding});
	}
	$widget->show;
    }
    $box
}

sub gtkset_editable {
    my ($w, $e) = @_;
    $w->set_editable($e);
    $w;
}

sub gtksetstyle {
    my ($w, $s) = @_;
    $w->set_style($s);
    $w;
}

sub gtkset_tip {
    my ($tips, $w, $tip) = @_;
    $tips->set_tip($w, $tip) if $tip;
    $w;
}

sub gtkappenditems {
    my $w = shift;
    map {gtkshow($_) } @_;
    $w->append_items(@_);
    $w
}

sub gtkappend($@) {
    my $w = shift;
    foreach (@_) {
	my $l = $_;
	ref $l or $l = new Gtk::Label($l);
	$w->append($l);
	$l->show;
    }
    $w
}

sub gtkset_shadow_type {
    $_[0]->set_shadow_type($_[1]);
    $_[0];
}

sub gtkset_layout {
    $_[0]->set_layout($_[1]);
    $_[0];
}

sub gtkset_relief {
    $_[0]->set_relief($_[1]);
    $_[0];
}

sub gtkadd($@) {
    my $w = shift;
    foreach (@_) {
	my $l = $_;
	ref $l or $l = new Gtk::Label($l);
	$w->add($l);
	$l->show;
    }
    $w
}
sub gtkput {
    my ($w, $w2, $x, $y) = @_;
    $w->put($w2, $x, $y);
    $w2->show;
    $w
}

sub gtktext_insert {
    my ($w, $t) = @_;
    $w->freeze;
    $w->backward_delete($w->get_length);
    $w->insert(undef, undef, undef, $t); 
    #- DEPRECATED? needs \n otherwise in case of one line text the beginning is not shown (even with the vadj->set_value)
    $w->set_word_wrap(1);
#-    $w->vadj->set_value(0);
    $w->thaw;
    $w;
}

sub gtkroot {
    Gtk->init;
    Gtk->set_locale;
    Gtk::Gdk::Window->new_foreign(Gtk::Gdk->ROOT_WINDOW);
}

sub gtkcolor {
    my ($r, $g, $b) = @_;

    my $color = bless { red => $r, green => $g, blue => $b }, 'Gtk::Gdk::Color';
    gtkroot()->get_colormap->color_alloc($color);
}

sub gtkset_mousecursor {
    my ($type, $w) = @_;