#!/usr/bin/perl # Copyright (C) 2003 Mandrakesoft # # Author: Florent Villard # A Ginies # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. package MDK::Wizard::Wizcommon_gtk3; use strict; #use common; sub wizard_progress_bar { use lib qw(/usr/lib/libDrakX); use ugtk3 qw(:wrappers); my ($command, $descr) = @_; my ($value, $timer); my $my_win = ugtk3->new(""); my $window1 = $my_win->{window}; gtkadd($window1, gtkpack(Gtk3::VBox->new(0,0), gtkpack_(Gtk3::VBox->new(0, 3), 0, my $text = Gtk3::Label->new($descr), 0, my $text2 = Gtk3::Label->new, 0, Gtk3::HSeparator->new, 0, my $pbar = Gtk3::ProgressBar->new, ), ), ); $window1->realize; $pbar->set_pulse_step(0.1); local *TMP; open(TMP, "GP_LANG=UTF-8 $command 2>&1 |"); while () { $timer = Glib::Timeout->add(10, sub {}); $pbar->pulse; s/\033\[[^mG]*[mG]//g; $text2->set_text($_); gtkflush(); next; $my_win->main; $window1->show_all; #undef $value; } close TMP; $my_win->destroy; return 0; } sub gtk_log { use lib qw(/usr/lib/libDrakX); use ugtk3 qw(:wrappers); use mygtk3 qw(gtknew); my ($command, $text) = @_; my $log_text = gtknew('TextView'); my $my_win = ugtk3->new(""); my $window1 = $my_win->{window}; #my $pid; gtkadd($window1, gtknew('VBox', spacing => 3, children => [ 0, Gtk3::Label->new($text), 1, gtknew('ScrolledWindow', to_bottom => 1, 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 $TMP; open($TMP, "GP_LANG=UTF-8 $command 2>&1 |"); gtktext_append($log_text, "$command\n\n"); while (<$TMP>) { s/\033\[[^mG]*[mG]//g; c::set_tagged_utf8($_); gtktext_append($log_text, $_); gtkflush(); next; $my_win->main; } $window1->show_all; close $TMP; $my_win->destroy; } 1;