summaryrefslogtreecommitdiffstats
path: root/common/Wizcommon_gtk2.pm
diff options
context:
space:
mode:
Diffstat (limited to 'common/Wizcommon_gtk2.pm')
-rw-r--r--common/Wizcommon_gtk2.pm100
1 files changed, 41 insertions, 59 deletions
diff --git a/common/Wizcommon_gtk2.pm b/common/Wizcommon_gtk2.pm
index ab9d04f9..9418bde6 100644
--- a/common/Wizcommon_gtk2.pm
+++ b/common/Wizcommon_gtk2.pm
@@ -21,7 +21,7 @@
package MDK::Wizard::Wizcommon_gtk2;
use strict;
-use common;
+#use common;
sub wizard_progress_bar {
use lib qw(/usr/lib/libDrakX);
@@ -44,77 +44,59 @@ sub wizard_progress_bar {
$pbar->set_pulse_step(0.1);
local *TMP;
- open(TMP, "$command 2>&1 |");
- while ($value = <TMP>) {
+ open(TMP, "GP_LANG=UTF-8 $command 2>&1 |");
+ while (<TMP>) {
$timer = Glib::Timeout->add(10, sub {});
$pbar->pulse;
- $text2->set_text($value);
+ s/\033\[[^mG]*[mG]//g;
+ $text2->set_text($_);
gtkflush();
next;
$my_win->main;
$window1->show_all;
- undef $value;
+ #undef $value;
}
close TMP;
$my_win->destroy;
return 0;
}
+sub gtk_log {
+ use lib qw(/usr/lib/libDrakX);
+ use ugtk2 qw(:wrappers);
+ use mygtk2 qw(gtknew);
+ my ($command) = @_;
+ my $log_text = gtknew('TextView');
+ my $my_win = ugtk2->new("");
+ my $window1 = $my_win->{window};
+ #my $pid;
+ gtkadd($window1,
+ gtknew('VBox', spacing => 1, children => [
+ 1, gtknew('ScrolledWindow', child => $log_text),
+# 0, gtksignal_connect(gtknew('Button', text => N("cancel")), clicked => sub {
+ # if ($pid) {
+# $::in->ask_yesorno('', N("The command is still running. Do you want to kill it and quit the Wizard?")) or return;
+# kill 9, $pid and system("touch /tmp/wiz_error");
+# }
+# }
+# ),
+ ],
+ ),
+ );
-my $timeout;
-sub gtktext_get_log {
- my ($command, $log_w, $log_scroll) = @_;
- my $buffer = $log_w->get_buffer;
- $buffer->delete($buffer->get_start_iter, $buffer->get_end_iter);
-
- my ($prev_scroll, $want_scroll_down) = (0, 1);
- my $pid = open(my $F, "$command 2>&1 |") or return sub { 1 };
- fcntl($F, c::F_SETFL(), c::O_NONBLOCK()) or die "can't fcntl F_SETFL: $!";
- Glib::Source->remove($timeout) if $timeout; $timeout = '';
- $timeout = Glib::Timeout->add(100, sub {
- if ($buffer) {
- my $end = $buffer->get_end_iter;
- while (defined (my $s = <$F>)) {
- $buffer->insert_interactive($end, $s, -1);
- }
- my $new_scroll = $log_scroll->child->get_vadjustment->get_value;
- $want_scroll_down &&= $new_scroll >= $prev_scroll;
- $prev_scroll = $new_scroll;
- $log_w->scroll_to_iter($end, 0, 0, 0, 0) if $want_scroll_down;
- }
- if (waitpid($pid, c::WNOHANG()) > 0) {
- $buffer->insert_interactive($buffer->get_end_iter, "\n" . "#" x 20 . "\n" . " This script has terminated,\nyou can close this window", -1) if $buffer;
- $pid = $timeout = '';
- 0;
- } else {
- 1;
- }
- });
- sub {
- if ($pid) {
- $::in->ask_yesorno('', N("The command is still running. Do you want to kill it and quit the Wizard?")) or return;
- kill 9, $pid+1;
- 1;
- }
- $buffer = '';
- 1;
- };
-}
-
-sub run_command_and_log {
- use lib qw(/usr/lib/libDrakX);
- my ($command, $descr, $when_command_is_over) = @_;
- my $w = ugtk2->new('');
- gtkadd(gtkset_size_request($w->{window}, 800, 400),
- gtkpack_(gtkset_modal(Gtk2::VBox->new, 1),
- 0, $descr,
- 1, my $log_scroll = create_scrolled_window(my $log_w = gtkset_editable(Gtk2::TextView->new, 0)),
- 0, my $close_w = Gtk2::Button->new(N("Close"))),
- );
- my $stop_running = gtktext_get_log($command, $log_w, $log_scroll);
- $close_w->signal_connect(clicked => sub { $stop_running->() and $w->destroy and return 0 });
- $close_w->grab_focus;
- $w->show;
+ my $TMP;
+ open($TMP, "GP_LANG=UTF-8 $command 2>&1 |");
+ gtktext_append($log_text, "$command\n\n");
+ while (<$TMP>) {
+ s/\033\[[^mG]*[mG]//g;
+ gtktext_append($log_text, $_);
+ gtkflush();
+ next;
+ $my_win->main;
+ }
+ $window1->show_all;
+ close $TMP;
+ $my_win->destroy;
}
1;