summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/interactive.pm2
-rw-r--r--perl-install/interactive_gtk.pm14
-rw-r--r--perl-install/interactive_newt.pm20
3 files changed, 21 insertions, 15 deletions
diff --git a/perl-install/interactive.pm b/perl-install/interactive.pm
index e584e5336..96f46898e 100644
--- a/perl-install/interactive.pm
+++ b/perl-install/interactive.pm
@@ -16,7 +16,7 @@ use common qw(:common :functional);
#- advanced => wether it is shown in by default or only in advanced mode
#- disabled => function returning wether it should be disabled (grayed)
#- type =>
-#- button => (with text, clicked) (type defaults to button if clicked is there)
+#- button => (with clicked) (type defaults to button if clicked is there)
#- bool (with text)
#- range (with min, max)
#- combo (with list, not_edit)
diff --git a/perl-install/interactive_gtk.pm b/perl-install/interactive_gtk.pm
index c26f72a4b..7bb62fdd9 100644
--- a/perl-install/interactive_gtk.pm
+++ b/perl-install/interactive_gtk.pm
@@ -41,7 +41,7 @@ sub create_clist {
my $select = sub {
$list->set_focus_row($_[0]);
$list->select_row($_[0], 0);
- $list->moveto($_[0], 0, 0.5, 0);
+ $list->moveto($_[0], 0, 0.5, 0) if $list->row_is_visible($_[0]) ne 'full';
};
# ref $title && !@okcancel ?
@@ -93,7 +93,7 @@ sub create_clist {
$list, sub {
my ($v) = @_;
- eval {
+ eval {
$select->(find_index { $_ eq $v } @{$e->{list}});
};
};
@@ -280,13 +280,15 @@ sub ask_from_entries_refW {
$set = sub { $w->set_active($_[0]) };
$get = sub { $w->get_active };
} elsif ($e->{type} eq 'button') {
- $w = Gtk::Button->new($e->{text});
+ $w = Gtk::Button->new('');
$w->signal_connect(clicked => sub {
- $o->{retval} = 1;
- Gtk->main_quit;
- $mainw->destroy;
+ $get_all->();
+ $mainw->{rwindow}->hide;
$e->{clicked}();
+ $mainw->{rwindow}->show;
+ $set_all->();
});
+ $set = sub { $w->child->set(may_apply($e->{format}, $_[0])) };
} elsif ($e->{type} eq 'range') {
my $adj = create_adjustment(${$e->{val}}, $e->{min}, $e->{max});
$adj->signal_connect(value_changed => $changed);
diff --git a/perl-install/interactive_newt.pm b/perl-install/interactive_newt.pm
index b260d60af..4ea1a2a4f 100644
--- a/perl-install/interactive_newt.pm
+++ b/perl-install/interactive_newt.pm
@@ -102,7 +102,7 @@ sub ask_from_entries_refW {
$set = sub { $w->CheckboxSetValue(checkval($_[0])) };
$get = sub { $w->CheckboxGetValue == ord '*' };
} elsif ($e->{type} eq 'button') {
- $w = Newt::Component::Button(-1, -1, $e->{text} || '');
+ $w = Newt::Component::Button(-1, -1, may_apply($e->{format}, ${$e->{val}}));
} elsif ($e->{type} =~ /list/) {
my ($h, $wi) = (5, 20);
my $scroll = @{$e->{list}} > $h ? 1 << 2 : 0;
@@ -182,19 +182,23 @@ sub ask_from_entries_refW {
!$error;
};
- my ($canceled, $r);
+ my $canceled;
do {
- $r = $form->RunForm;
+ my $r = $form->RunForm;
+ foreach (@widgets) {
+ if ($$r == ${$_->{w}}) {
+ $form->FormDestroy;
+ Newt::PopWindow;
+ $_->{e}{clicked}();
+ return ask_from_entries_refW($o, $common, $l, $l2);
+ }
+ }
$canceled = $cancel && $$r == $$cancel;
+
} until ($check->($common->{callbacks}{$canceled ? 'canceled' : 'complete'}));
$form->FormDestroy;
Newt::PopWindow;
-
- foreach (@widgets) {
- $_->{e}{clicked}() if $$r == ${$_->{w}};
- }
-
!$canceled;
}