/usr/share/perl5/Debconf/FrontEnd
NameSizeModeActions
Dialog.pm77160644editdlrm
Editor.pm21650644editdlrm
Gnome.pm75160644editdlrm
Kde.pm20850644editdlrm
Noninteractive.pm7340644editdlrm
Passthrough.pm71600644editdlrm
Readline.pm36120644editdlrm
ScreenSize.pm8810644editdlrm
Teletype.pm15730644editdlrm
Text.pm1550644editdlrm
Web.pm26650644editdlrm
Edit: /usr/share/perl5/Debconf/FrontEnd/Gnome.pm (7516B)
#!/usr/bin/perl -w # This file was preprocessed, do not edit! package Debconf::FrontEnd::Gnome; use strict; use utf8; use Debconf::Gettext; use Debconf::Config; use Debconf::Encoding qw(to_Unicode); use base qw{Debconf::FrontEnd}; our @ARGV_for_gnome=('--sm-disable'); sub create_assistant_page { my $this=shift; $this->assistant_page(Gtk3::VBox->new); $this->assistant->append_page($this->assistant_page); if ($this->logo) { $this->assistant->set_page_header_image($this->assistant_page, $this->logo); } $this->configure_assistant_page; $this->assistant_page->show_all; } sub configure_assistant_page { my $this=shift; $this->assistant->set_page_title($this->assistant_page, to_Unicode($this->title)); $this->assistant->set_page_type($this->assistant_page, 'custom'); $this->forward_button->grab_default; $this->forward_button->show; if ($this->capb_backup) { $this->back_button->show; } else { $this->back_button->hide; } $this->assistant->set_page_complete($this->assistant_page, 1); } sub reset_assistant_page { my $this=shift; $this->assistant_page($this->assistant->get_nth_page($this->assistant->get_current_page)); foreach my $element ($this->assistant_page->get_children) { $this->assistant_page->remove($element); } } my $prev_page = 0; sub prepare_callback { my ($assistant, $page, $this) = @_; my $current_page = $assistant->get_current_page; if ($prev_page < $current_page) { $this->goback(0); if (Gtk3::main_level()) { Gtk3::main_quit(); } } elsif ($prev_page > $current_page) { $this->goback(1); if (Gtk3::main_level()) { Gtk3::main_quit(); } } $prev_page = $current_page; } sub close_callback { my ($assistant) = @_; my $title = gettext("Really quit configuration?"); my $text = gettext("If you quit this configuration dialog, then the package being configured will probably fail to install, and you may have to fix it manually. This may be especially difficult if you are in the middle of a large upgrade.")."\n\n".gettext("You may need to quit anyway if you are stuck in a configuration loop due to a buggy package.")."\n"; my $quit = gettext("_Quit"); my $continue = gettext("Continue"); my $dialog = Gtk3::Dialog->new_with_buttons(to_Unicode($title), $assistant, "modal", to_Unicode($quit), "yes", to_Unicode($continue), "no"); $dialog->set_default_response("no"); $dialog->set_border_width(3); my $grid = Gtk3::Grid->new(); $grid->set_orientation("horizontal"); $grid->set_column_homogeneous(0); $dialog->get_content_area->pack_start($grid, 1, 1, 5); $grid->show; my $alignment = Gtk3::Alignment->new(0.5, 0.0, 1.0, 0.0); $grid->add($alignment); $alignment->show; my $image = Gtk3::Image->new_from_icon_name("dialog-information", "dialog"); $alignment->add($image); $image->show; my $label = Gtk3::Label->new(to_Unicode($text)); $label->set_line_wrap(1); $grid->add($label); $label->show; my $response = $dialog->run; $dialog->destroy; exit 1 if $response eq "yes"; } sub delete_event_callback { my ($assistant, $event) = @_; close_callback($assistant); } sub forward_page_func { my ($current_page, $assistant) = @_; return $current_page + 1; } sub on_forward { my ($button) = @_; my $assistant = $button->get_ancestor("Gtk3::Assistant"); $assistant->next_page; } sub on_back { my ($button) = @_; my $assistant = $button->get_ancestor("Gtk3::Assistant"); $assistant->previous_page; } sub init { my $this=shift; if (fork) { wait(); # for child if ($? != 0) { die "DISPLAY problem?\n"; } } else { use Gtk3; @ARGV=@ARGV_for_gnome; # temporary change at first Gtk3->init; my $window = Gtk3::Window->new('toplevel'); exit(0); # success } eval q{use Gtk3;}; die "Unable to load Gtk -- is libgtk3-perl installed?\n" if $@; my @gnome_sucks=@ARGV; @ARGV=@ARGV_for_gnome; Gtk3->init; @ARGV=@gnome_sucks; $this->SUPER::init(@_); $this->interactive(1); $this->capb('backup'); $this->need_tty(0); $this->assistant(Gtk3::Assistant->new); $this->assistant->set_position("center"); $this->assistant->set_default_size(600, 400); my $hostname = `hostname`; chomp $hostname; $this->assistant->set_title(to_Unicode(sprintf(gettext("Debconf on %s"), $hostname))); $this->assistant->signal_connect("delete_event", \&delete_event_callback); my $distribution=''; if (system('type lsb_release >/dev/null 2>&1') == 0) { $distribution=lc(`lsb_release -is`); chomp $distribution; } elsif (-e '/etc/debian_version') { $distribution='debian'; } my $logo="/usr/share/pixmaps/$distribution-logo.png"; if (-e $logo) { $this->logo(Gtk3::Gdk::Pixbuf->new_from_file($logo)); } $this->assistant->signal_connect("close", \&close_callback); $this->assistant->signal_connect("prepare", \&prepare_callback, $this); $this->assistant->set_forward_page_func(\&forward_page_func, $this->assistant); $this->forward_button(Gtk3::Button->new_with_mnemonic(to_Unicode(gettext("_Next")))); $this->forward_button->set_can_focus(1); $this->forward_button->set_can_default(1); $this->forward_button->set_receives_default(1); $this->forward_button->signal_connect("clicked", \&on_forward); $this->assistant->add_action_widget($this->forward_button); $this->back_button(Gtk3::Button->new_with_mnemonic(to_Unicode(gettext("_Back")))); $this->back_button->set_can_focus(1); $this->back_button->set_receives_default(1); $this->back_button->signal_connect("clicked", \&on_back); $this->assistant->add_action_widget($this->back_button); $this->create_assistant_page(); $this->assistant->show; } sub go { my $this=shift; my @elements=@{$this->elements}; $this->reset_assistant_page; my $interactive=''; foreach my $element (@elements) { next unless $element->hbox; $interactive=1; $this->assistant_page->pack_start($element->hbox, $element->fill, $element->expand, 0); } if ($interactive) { $this->configure_assistant_page; if ($this->assistant->get_current_page == $this->assistant->get_n_pages - 1) { $this->create_assistant_page(); } Gtk3::main(); } foreach my $element (@elements) { $element->show; } return '' if $this->goback; return 1; } sub progress_start { my $this=shift; $this->SUPER::progress_start(@_); $this->reset_assistant_page; my $element=$this->progress_bar; $this->assistant_page->pack_start($element->hbox, $element->fill, $element->expand, 0); $this->configure_assistant_page; if ($this->assistant->get_current_page == $this->assistant->get_n_pages - 1) { $this->create_assistant_page(); } $this->assistant->set_page_complete($this->assistant_page, 0); $this->assistant->show_all; while (Gtk3::events_pending()) { Gtk3::main_iteration(); } } sub progress_set { my $this=shift; my $ret=$this->SUPER::progress_set(@_); while (Gtk3::events_pending()) { Gtk3::main_iteration(); } return $ret; } sub progress_info { my $this=shift; my $ret=$this->SUPER::progress_info(@_); while (Gtk3::events_pending()) { Gtk3::main_iteration(); } return $ret; } sub progress_stop { my $this=shift; $this->SUPER::progress_stop(@_); while (Gtk3::events_pending) { Gtk3::main_iteration; } if ($this->assistant->get_current_page == $this->assistant->get_n_pages - 1) { $this->create_assistant_page(); } $this->assistant->set_current_page($prev_page + 1); } 1