package Padre::Plugin::LaTeX;
BEGIN {
$Padre::Plugin::LaTeX::VERSION = '0.08';
}
# ABSTRACT: LaTeX Support for Padre
use warnings;
use strict;
use base 'Padre::Plugin';
use Padre::Wx ();
sub plugin_name {
Wx::gettext('LaTeX');
}
sub padre_interfaces {
'Padre::Plugin' => 0.47, 'Padre::Document' => 0.47,;
}
sub registered_documents {
'application/x-latex' => 'Padre::Document::LaTeX',
'application/x-bibtex' => 'Padre::Document::BibTeX',;
}
sub menu_plugins_simple {
my $self = shift;
return $self->plugin_name => [
Wx::gettext('About') => sub { $self->show_about },
Wx::gettext('Create/Update PDF') => sub { $self->create_pdf },
Wx::gettext('View PDF') => sub { $self->view_pdf },
Wx::gettext('Run BibTeX') => sub { $self->run_bibtex },
# 'Another Menu Entry' => sub { $self->about },
# 'A Sub-Menu...' => [
# 'Sub-Menu Entry' => sub { $self->about },
# ],
];
}
#####################################################################
# Custom Methods
sub show_about {
my $self = shift;
# Generate the About dialog
my $about = Wx::AboutDialogInfo->new;
$about->SetName(Wx::gettext('LaTeX Plug-in'));
my $authors = 'Zeno Gantner, Ahmad M. Zawawi';
my $description = Wx::gettext( <<'END' );
LaTeX support for Padre
For syntax highlighting of BibTeX files install the Kate plugin: Padre::Plugin::Kate
Copyright 2010 %s
This plug-in is free software; you can redistribute it and/or modify it under the same terms as Padre.
END
$about->SetDescription( sprintf( $description, $authors ) );
# Show the About dialog
Wx::AboutBox($about);
return;
}
sub create_pdf {
my $self = shift;
my $pdflatex = 'pdflatex -interaction nonstopmode -file-line-error';
my $main = $self->main;
my $doc = $main->current->document;
my $tex_dir = $doc->dirname;
my $tex_file = $doc->get_title;
if ( !$doc->isa('Padre::Document::LaTeX') ) {
$main->message( Wx::gettext('Creating PDF files is only supported for LaTeX documents.') );
return;
}
# TODO autosave or ask or use temporary file
chdir $tex_dir;
my $output_text = `$pdflatex $tex_file`;
$self->_output($output_text);
return;
}
sub run_bibtex {
my $self = shift;
my $bibtex = 'bibtex';
my $main = $self->main;
my $doc = $main->current->document;
my $tex_dir = $doc->dirname;
my $aux_file = $doc->filename;
$aux_file =~ s/\.tex/.aux/;
if ( !$doc->isa('Padre::Document::LaTeX') ) {
$main->message( Wx::gettext('Running BibTeX is only supported for LaTeX documents.') );
return;
}
# TODO autosave (or ask)
chdir $tex_dir;
my $output_text = `$bibtex $aux_file`;
$self->_output($output_text);
return;
}
sub view_pdf {
my $self = shift;
my $main = $self->main;
my $doc = $main->current->document;
if ( !$doc->isa('Padre::Document::LaTeX') ) {
$main->message( Wx::gettext('Viewing PDF files is only supported for LaTeX documents.') );
return;
}
# TODO find PDF viewer from system settings
my $pdf_viewer = 'evince';
my $pdf_file = $doc->filename;
$pdf_file =~ s/\.tex$/.pdf/;
if ( !-f $pdf_file ) {
}
system "$pdf_viewer $pdf_file &";
# TODO check for errors
return;
}
sub editor_enable {
my $self = shift;
my $editor = shift;
my $document = shift;
if ( $document->isa('Padre::Document::LaTeX') ) {
# TODO
}
return 1;
}
sub _output {
my ( $self, $text ) = @_;
my $main = $self->main;
$main->show_output(1);
$main->output->clear;
$main->output->AppendText($text);
}
1;
=pod
=head1 NAME
Padre::Plugin::LaTeX - LaTeX Support for Padre
=head1 VERSION
version 0.08
=head1 DESCRIPTION
LaTeX support for Padre, the Perl Application Development and Refactoring
Environment.
Syntax highlighting for LaTeX is supported by Padre out of the box.
This plug-in adds some more features to deal with LaTeX files.
If you also want syntax highlighting for BibTeX files, try the Kate
plugin.
=head1 AUTHORS
=over 4
=item *
Zeno Gantner <zenog@cpan.org>
=item *
Ahmad M. Zawawi <ahmad.zawawi@gmail.com>
=back
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Zeno Gantner, Ahmad M. Zawawi.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
__END__