NAME

Padre - Perl Application Development and Refactoring Environment

SYNOPSIS

Padre is a text editor aimed to be an IDE for Perl.

You should be able to just type in

padre

and get the editor working.

While I am using this editor myself there are still lots of missing features so I would consider this application to be in pre-alpha state.

I do so mainly becasue everything is in a constant flux. Menus, shortcuts and the way they work will change from version to version.

You should also know that I am mostly working on Linux and I have been using vi for many years now. This means that I am not that familiar with the expectations of people using Windows.

DESCRIPTION

The application maintains its configuration information in a directory called .padre

On Strawberry Perl you can associate .pl file extension with c:\strawberry\perl\bin\wxperl and then you can start double clicking on the application. It should work.

Run This (F5) - run the current buffer with the current perl
this currently only works with files with .pl  extensions.

Run Any (Ctr-F5) - run any external application
First time it will prompt you to a command line that you have to type in such as

perl /full/path/to/my/script.pl

then it will execute this every time you press Ctrl-F5 or the menu option. Currently Ctrl-F5 does not save any file. (This will be added later.)

You can edit the command line using the Run/Setup menu item.

Ctr-B          matching brace
Alt-N          Nth Pane
Ctr-TAB        Next Pane
Ctr-Shift-TAB  Previous Pane

Ctr-1 .. Ctrl-9 can set markers
Ctr-Shift-1 .. Ctrl-Shift-9 jump to marker

Ctr-M Ctr-Shift-M  comment/uncomment selected lines of code

Ctr-H opens a help window where you can see the documentation of 
any perl module. Just use open (in the help window) and type in the name
of a module.

Ctr-Shift-H Highlight the name of a module in the editor and then 
press Ctr-Shift-H. IT will open the help window for the module 
whose name was highlighted.

In the help window you can also start typing the name of a module. When the
list of the matching possible modules is small enough you'll be able
to open the drop-down list and select the name.
The "small enough" is controled by two configuration options in the 
Edit/Setup menu:

Max Number of modules
Min Number of modules

This feature only works after you have indexed all the modules 
on your computer. Indexing is currently done by running the following command:

padre --index

Command line options

--index   will go over the @INC and list all the available modules in the database

a list of filenames can be given to be opened

Plugins

There is a highly experimental but quit simple plugin system.

A plugin is a module in the Padre::Plugin::* namespace.

At startup time Padre looks for all such modules in @INC and loads them. Every plugin must have a menu method that returns its menu items which is a list of lists:

( 
  [ Name_1, \&callback_1 ],
  [ Name_2, \&callback_2 ],
)

Padre will add a menu entry for every plugin under the Plugins menu item. For each plugin menu item it will add all the Name_1, Name_2 subitems.

BUGS

Please submit your bugs at http://padre.perlide.org/

TODO

http://padre.perlide.org/

Editor

Fix the remaining short-cut key that don't work on Windows (F3)

Deal with "resource installation". That is probably talk to
Module::Build, Debian and Fedora people to make it easy to install resource files
such as xpm or po files. See File::ShareDir.

Podviewer

Enabled indexing from widthin application or run the indexer when installing
the application?

If a file exists but no pod in there, don't show just a white page.

When displaying pod allow for clicking on names of other modules to be displayed.

Indexing the words of all the pod files? (Search engine?)
Indexing the function names only?

Learning WxWidgets

http://wxperl.sourceforge.net/tutorial/tutorial.html of Mattia Barbon

http://www.perl.com/pub/a/2001/09/12/wxtutorial1.html by Jouke Visser

Documentation of Wx::StyledTextCtrl is here: http://www.yellowbrain.com/stc/index.html

stock items in wx:

http://docs.wxwidgets.org/2.8.6/wx_stockitems.html#stockitems

http://www.perlmonks.org/?node_id=122227 by boo_radley

http://www.perlmonks.org/?node_id=112297

http://www.perlmonks.org/?node_id=152323

http://www.perlmonks.org/?node_id=153366

http://www.perlmonks.org/?node_id=184685

http://www.perlmonks.org/?node_id=194611

http://www.perlmonks.org/?node_id=199840

http://www.perlmonks.org/?node_id=164341

http://www.perlmonks.org/?node_id=287396

http://www.perlmonks.org/?node_id=290475

http://www.perlmonks.org/?node_id=219778

Code layout:

Padre is the main module that reads/writes the configuration files There is an SQLite database and a yml file to keep various pices of information The SQLite database holds the list of modules available on the system. It will also contain indexing of the documentation Looking at the entries of modules List of functions

The yml file contains individual configuration options

Padre::App is the Wx::App subclass

Padre::Frame is the main frame, most of the code is currently there.

Padre::Panel holds an editor window instance (one for each buffer)

Padre::Pod::* are there to index and show documentation written in pod.

SUPPORT

I hope the http://www.perlmonks.org/ will be ready to take upon themself supporting this application.

See also http://padre.perlide.org/

COPYRIGHT

(c) 2008 Gabor Szabo http://www.szabgab.com/

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl 5 itself.

WARRANTY

There is no warranty whatsoever. If you lose data or your hair because of this program, that's your problem.

CREDITS and THANKS

To Mattia Barbon for providing WxPerl. Part of the code was copied from his Wx::Demo application.

To Herbert Breunung for leting me work on Kephra.

To Octavian Rasnita for early testing and bug reports.