pve-installer/Proxmox/UI/Gtk3.pm
Thomas Lamprecht a8fbe0ff55 add Finished UI² message
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-06-20 21:02:53 +02:00

69 lines
1.5 KiB
Perl

package Proxmox::UI::Gtk3;
use strict;
use warnings;
use Gtk3;
use base qw(Proxmox::UI::Base);
sub message {
my ($self, $msg) = @_;
my $window = $self->{state}->{window};
my $dialog = Gtk3::MessageDialog->new($window, 'modal', 'info', 'ok', $msg);
$dialog->run();
$dialog->destroy();
}
sub error {
my ($self, $msg) = @_;
my $window = $self->{state}->{window};
my $dialog = Gtk3::MessageDialog->new($window, 'modal', 'error', 'ok', $msg);
$dialog->run();
$dialog->destroy();
}
sub finished {
my ($self, $success, $msg) = @_;
# handled manually in proxinstall at the moment
}
sub prompt {
my ($self, $query) = @_;
my $window = $self->{state}->{window};
my $dialog = Gtk3::MessageDialog->new($window, 'modal', 'question', 'ok-cancel', $query);
my $response = $dialog->run();
$dialog->destroy();
return ($response // '') eq 'ok';
}
sub display_html {
my ($self, $raw_html, $html_dir) = @_;
my $html_view = $self->{state}->{html_view};
# always set base-path to common path, all resources are accesible from there.
$html_view->load_html($raw_html, "file://$html_dir/");
}
sub progress {
my ($self, $ratio, $text) = @_;
my ($bar, $status) = $self->{state}->@{'progress_bar', 'progress_status'};
$bar->set_fraction($ratio);
$bar->set_text(sprintf ("%d%%", int ($ratio * 100)));
$status->set_text($text) if defined($text);
}
sub process_events {
my ($self) = @_;
Gtk3::main_iteration() while Gtk3::events_pending();
}
1;