The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Padre::Plugin::Shell::Base - A base class for Padre plugins.

DESCRIPTION

Base class for plugins that use the system shell to extend Padre.

Example

Subclass Padre::Plugin::Shell::Base to create a plugin.

    package Padre::Plugin::Shell::Foo;
    use base 'Padre::Plugin::Shell::Base';

    use 5.008;
    use strict;
    use warnings;
    use Padre::Wx       ();

    sub plugin_menu {
        my ($self) = @_;
        my @menu   = ();
        push @menu, "Do Foo" => sub {$self->do_foo()};
        push @menu, '---' => undef;
        push @menu, Wx::gettext("&Configure Foo") => sub { $self->edit_config_file() },;
        return @menu;
    }

    sub example_config {
        my ($self) = @_;
        my $config = "---\n";

        # additional config
        return $config;
    }

    sub do_foo {
        my ( $self ) = @_;
        my %config = $self->get_config();

        # additional foo
    }
    1;

Subclass Padre::Plugin to wrap the plugin.

    package Padre::Plugin::Foo;
    use base 'Padre::Plugin';

    use 5.008;
    use strict;
    use warnings;
    use Padre::Plugin ();
    use Padre::Plugin::Shell::Foo;

    our $VERSION = '0.01';

    my $foo_plugin;

    sub plugin_name {
        'Foo';
    }

    sub padre_interfaces {
        'Padre::Plugin' => 0.43;
    }

    sub menu_plugins_simple {
        my ($self) = @_;
        $foo_plugin = Padre::Plugin::Shell::Foo->new();
        'Foo' => [$plugin->plugin_menu()];
    }
    1;

ENVIRONMENT VARIABLES

To provide additional information for the plugins, the following environment variables are set prior to performing the plugin action:

    PE_CURRENT_WORD -- The word at the caret position.
    PE_CURRENT_LINE -- The text of the current line.
    PE_COLUMN_INDEX -- The index of the position of the caret in the current line (counting from 0).
    PE_COLUMN_NUMBER -- The column number of the caret in the current line (counting from 1).
    PE_LINE_INDEX -- The index of the current line (counting from 0).
    PE_LINE_NUMBER -- The line number of the current line (counting from 1).
    PE_LINE_COUNT -- The count of lines in the document.
    PE_BASENAME -- The file name of the current document.
    PE_DIRECTORY -- The directory of the current document.
    PE_FILEPATH -- The full path and name of the current document.
    PE_MIMETYPE -- The mime-type of the current document.
    PE_CONFIG_DIR -- Location of the configuration directory (~/.padre)
    PE_DEF_PROJ_DIR -- The default project directory.
    PE_INDENT_TAB -- Use tabs for indentation. 'YES' or 'NO'
    PE_INDENT_TAB_WIDTH -- Tab width/size.
    PE_INDENT_WIDTH -- Indentation width/size.

METHODS

Document/file interaction methods

append_selection_from_file ($file_pathname)

Takes the contents of $file_pathname and appends it to after the selection in the current editor tab.

new_document_from_file ($file_pathname, $mimetype)

Creates a new document from the contents in $file_pathname. The (optional) $mimetype tells Padre what kind of document is being created. If no mimetype is specified the Padre will be attempt to guess the mimetype.

replace_selection_from_file ($file_pathname)

Takes the contents of $file_pathname and uses it to replace the selection in the current editor tab.

File utility methods

get_temp_file

Creates a temporary file and returns the pathname of the temporary file.

delete_temp_file ($file_pathname)

Deletes a temporary file.

slurp_file ($file_pathname)

Returns the contents of the specified file.

Configuration file methods

NOTE: Plugin configurations are stored using YAML.

config_file

Returns the pathname of a plugin configuration file.

edit_config_file

Opens the configuration file for a plugin for editing.

example_config

Returns an example configuration for a plugin. Is to be overwritten by plugins that subclass this package.

get_config

Returns a hash containing the configuration for a plugin.

initialize_config_file

Initializes a configuration file for a plugin using the return value from example_config.

Environment variable methods

update_environment_vars

Updates the environment variables supported by plugins that subclass this package. See the ENVIRONMENT VARIABLES section for details.

Other methods

new

The cannonical new method.

plugin_menu

Returns the menu for a plugin. Is to be overwritten by plugins that subclass this package.

notify_of_error

Displays an error message.

AUTHOR

Gregory Siems <gsiems@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2009 by Gregory Siems

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.