package Padre::Wx::Dialog::About;
use 5.008;
use strict;
use warnings;
use utf8;
use Config;
use PPI ();
use Padre::Wx ();
use Wx::Perl::ProcessStream ();
use Padre::Util ();
use Padre::Locale::Format ();
use Padre::Wx::FBP::About ();
our $VERSION = '1.00';
our @ISA = qw{
Padre::Wx::FBP::About
};
use constant {
OFFSET => 24,
};
sub run {
my $class = shift;
my $self = $class->SUPER::new(@_);
# Always show the first tab regardless of which one
# was selected in wxFormBuilder.
$self->notebook->ChangeSelection(0);
# Load the platform-adaptive splash image
$self->{splash}->SetBitmap( Wx::Bitmap->new( Padre::Util::splash, Wx::BITMAP_TYPE_PNG ) );
# $self->creator->SetLabel("G\x{e1}bor Szab\x{f3}"); # don't work
$self->creator->SetLabel('Created by Gábor Szabó'); # works
# Set the system information
$self->{output}->ChangeValue( $self->_information );
# Set the translators
$self->_translation;
$self->CenterOnParent;
# Show the dialog
$self->ShowModal;
# As we leave the About dialog, return the user to the current editor
# window so they don't need to click it.
$self->main->editor_focus;
$self->Destroy;
}
sub _translation {
my $self = shift;
#TODO will all translators please add there name
# in native language please and uncommet please
$self->ahmad_zawawi->SetLabel('أحمد محمد زواوي');
# $self->fayland_lam->SetLabel('');
# $self->chuanren_wu->SetLabel('');
$self->matthew_lien->SetLabel('練喆明');
$self->marcela_maslanova->SetLabel('Marcela Mašláňová');
# $self->dirk_de_nijs->SetLabel('');
$self->jerome_quelin->SetLabel('Jérôme Quelin');
$self->olivier_mengue->SetLabel('Olivier Mengué');
# $self->heiko_jansen->SetLabel('');
# $self->sebastian_willing->SetLabel('');
# $self->zeno_gantner->SetLabel('');
$self->omer_zak->SetLabel('עומר זק');
$self->shlomi_fish->SetLabel('שלומי פיש');
$self->amir_e_aharoni->SetLabel('אמיר א. אהרוני');
$self->gyorgy_pasztor->SetLabel('György Pásztor');
# $self->simone_blandino->SetLabel('');
$self->kenichi_ishigaki->SetLabel('石垣憲');
$self->keedi_kim->SetLabel('김도형');
# $self->kjetil_skotheim->SetLabel('');
# $self->cezary_morga->SetLabel('');
# $self->marek_roszkowski->SetLabel('');
# $self->breno_g_de_oliveira->SetLabel('');
# $self->gabriel_vieira->SetLabel('');
# $self->paco_alguacil->SetLabel('');
# $self->enrique_nell->SetLabel('');
# $self->andrew_shitov->SetLabel('');
$self->burak_gursoy->SetLabel('Burak Gürsoy');
return;
}
sub _information {
my $self = shift;
my $output = "\n";
$output .= sprintf "%*s %s\n", OFFSET, 'Padre', $VERSION;
$output .= $self->_core_info;
$output .= $self->_wx_info;
$output .= "Other...\n";
$output .= sprintf "%*s %s\n", OFFSET, 'PPI', $PPI::VERSION;
require Debug::Client;
$output .= sprintf "%*s %s\n", OFFSET, 'Debug::Client', $Debug::Client::VERSION;
require PPIx::EditorTools;
$output .= sprintf "%*s %s\n", OFFSET, 'PPIx::EditorTools', $PPIx::EditorTools::VERSION;
$output .= sprintf "%*s %s\n", OFFSET, Wx::gettext('Config'), Padre::Constant::CONFIG_DIR;
return $output;
}
sub _core_info {
my $self = shift;
my $output = "Core...\n";
# Do not translate those labels
$output .= sprintf "%*s %s\n", OFFSET, "osname", $Config{osname};
$output .= sprintf "%*s %s\n", OFFSET, "archname", $Config{archname};
if ( $Config{osname} eq 'linux' ) {
# qx{...} ok here as linux
my $distro = qx{cat /etc/issue};
chomp($distro);
$distro =~ s/\\n \\l//g;
$distro =~ s/\x0A//g;
$output .= sprintf "%*s %s\n", OFFSET, Wx::gettext('Distribution'), $distro;
# Do we really care for Padre?
my $kernel = qx{uname -r};
chomp($kernel);
$output .= sprintf "%*s %s\n", OFFSET, Wx::gettext('Kernel'), $kernel;
}
# Yes, THIS variable should have this upper case char :-)
my $perl_version = $^V || $];
$perl_version =~ s/^v//;
$output .= sprintf "%*s %s\n", OFFSET, 'Perl', $perl_version;
# How many threads are running
my $threads = $INC{'threads.pm'} ? scalar( threads->list ) : Wx::gettext('(disabled)');
$output .= sprintf "%*s %s\n", OFFSET, Wx::gettext('Threads'), $threads;
# Calculate the current memory in use across all threads
my $ram = Padre::Util::process_memory();
if ($ram) {
$ram = Padre::Locale::Format::bytes($ram);
} else {
$ram = Wx::gettext('(unsupported)');
}
$output .= sprintf "%*s %s\n", OFFSET, Wx::gettext("RAM"), $ram;
return $output;
}
sub _wx_info {
my $self = shift;
my $output = "Wx...\n";
$output .= sprintf "%*s %s\n", OFFSET, 'Wx', $Wx::VERSION;
# Reformat the native wxWidgets version string slightly
my $wx_widgets = Wx::wxVERSION_STRING();
$wx_widgets =~ s/^wx\w+\s+//;
$output .= sprintf "%*s %s\n", OFFSET, 'WxWidgets', $wx_widgets;
$output .= sprintf "%*s %s\n", OFFSET, 'unicode', Wx::wxUNICODE();
require Alien::wxWidgets;
$output .= sprintf "%*s %s\n", OFFSET, 'Alien::wxWidgets', $Alien::wxWidgets::VERSION;
$output .= sprintf "%*s %s\n", OFFSET, 'Wx::Perl::ProcessStream', $Wx::Perl::ProcessStream::VERSION;
require Wx::Scintilla;
$output .= sprintf "%*s %s\n", OFFSET, 'Wx::Scintilla', $Wx::Scintilla::VERSION;
return $output;
}
1;
# Copyright 2008-2013 The Padre development team as listed in Padre.pm.
# LICENSE
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl 5 itself.