App-Codit
view release on metacpan or search on metacpan
# App-Codit
Codit is a versatile text editor / integrated development environment aimed
at the Perl programming language.
It is written in Perl/Tk and based on the Tk::AppWindow application framework.
It uses the Tk::CodeText text widget for editing.
Codit has been under development for about one year now. It has gone quite some miles on our
systems and can be considered beta software as of version 0.10.
It features a multi document interface that can hold an unlimited number of documents,
navigable through the tab bar at the top and a document list in the left side panel.
It has a plugin system designed to invite users to write their own plugins.
lib/App/Codit.pm view on Meta::CPAN
Construct Tk::Widget 'Codit';
=head1 NAME
App::Codit - IDE for and in Perl
=head1 DESCRIPTION
Codit is a versatile text editor / integrated development environment aimed at the Perl programming language.
It is written in Perl/Tk and based on the L<Tk::AppWindow> application framework.
It uses the L<Tk::CodeText> text widget for editing.
Codit has been under development for about one year now. It has gone quite some miles on our systems
and can be considered beta software as of version 0.10.
It features a multi document interface that can hold an unlimited number of documents,
navigable through the tab bar at the top and a document list in the left side panel.
It has a plugin system designed to invite users to write their own plugins.
lib/App/Codit.pm view on Meta::CPAN
#configure the settings panel
-useroptions => [
'*page' => 'Editing',
'*section' => 'Font',
-contentfontfamily => ['list', 'Family', -filter => 1, -values => sub { return sort $self->fontFams }
],
'*column',
-contentfontsize => ['spin', 'Size'],
'*end',
'*section' => 'Editor settings',
'*frame',
-contentautoindent => ['boolean', 'Auto indent'],
'*column',
-contentautobrackets => ['boolean', 'Auto brackets'],
'*column',
-contentshowspaces => ['boolean', 'Show spaces'],
'*end',
'*frame',
-contenttabs => ['text', 'Tab size', -regex => qr/^\d+\.?\d*[c|i|m|p]$/, -width => 4],
'*column',
-contentindent => ['text', 'Indent style', -regex => qr/^\d+|tab$/, -width => 4],
'*end',
-contentwrap => ['radio', 'Wrap', -values => [qw[none char word]]],
'*end',
'*section' => 'Show indicators',
-showfolds => ['boolean', 'Fold indicators'],
'*column',
-shownumbers => ['boolean', 'Line numbers'],
lib/App/Codit.pm view on Meta::CPAN
'*column',
-menuiconsize => ['spin', 'Menu bar', -width => 4],
-tooliconsize => ['spin', 'Tool bar', -width => 4],
'*end',
'*section' => 'Visibility at lauch',
'-tool barvisible' => ['boolean', 'Tool bar'],
'-status barvisible' => ['boolean', 'Status bar'],
'*column',
'-navigator panelvisible' => ['boolean', 'Navigator panel'],
'*end',
'*frame',
'*section' => 'Geometry',
-savegeometry => ['boolean', 'Save on exit',],
'*end',
'*column',
'*section' => 'Unique instance',
-uniqueinstance => ['boolean', 'Enabled', -onvalue => 1, -offvalue => 0],
'*end',
'*end',
'*section' => 'Tool bar',
-tooltextposition => ['radio', 'Text position', -values => [qw[none left right top bottom]]],
lib/App/Codit/CoditTagsEditor.pm view on Meta::CPAN
$self->SUPER::Populate($args);
my $te = $self->TagsEditor(
-defaultbackground => $dbackground,
-defaultforeground => $dforeground,
-defaultfont => $dfont,
-historyfile => $hist,
)->pack(-expand => 1, -fill => 'both');
$self->Advertise(TE => $te);
my $toolframe = $self->Frame(
)->pack(-fill => 'x');
$toolframe->Button(
-command => sub {
my ($file) = $ext->pickFileSave(
-loadfilter => '.ctt',
);
$te->save($file) if defined $file;
},
-text => 'Save',
)->pack(-side => 'left', -padx => 5, -pady => 5);
$toolframe->Button(
-text => 'Load',
-command => sub {
my ($file) = $ext->pickFileOpen(
-loadfilter => '.ctt',
);
if (defined $file) {
my $obj = Tk::CodeText::Theme->new;
$obj->load($file);
$te->put($obj->get);
$te->updateAll
lib/App/Codit/Plugins/Colors.pm view on Meta::CPAN
sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
return undef unless defined $self;
my $page = $self->ToolRightPageAdd('Colors', 'fill-color', undef, 'Select and insert colors', 350);
my @padding = (-padx => 3, -pady => 3);
my $eframe = $page->Frame->pack(-fill => 'x');
my $fframe = $eframe->Frame->pack(-side => 'left');
my $picker;
my $color = '';
my $entry = $fframe->Entry(
-textvariable => \$color,
)->pack(@padding, -fill => 'x');
$entry->bind('<Key>', [$self, 'updateEntry']);
$self->{ENTRY} = $entry;
my $bframe = $fframe->Frame->pack(-fill => 'x');
$bframe->Button(
-text => 'Insert',
-command => sub {
if ($picker->validate($color)) {
$self->cmdExecute('edit_insert', 'insert', $color);
$picker->historyAdd($picker->getHEX);
$picker->historyUpdate;
}
},
)->pack(@padding, -side => 'left', -expand => 1, -fill => 'x');
$bframe->Button(
-text => 'Copy',
-command => sub {
if ($picker->validate($color)) {
$self->clipboardClear;
$self->clipboardAppend($color);
$picker->historyAdd($picker->getHEX);
$picker->historyUpdate;
}
},
)->pack(@padding, -side => 'left', -expand => 1, -fill => 'x');
my $indicator = $eframe->Label(
-width => 4,
-relief => 'sunken',
-borderwidth => 2,
)->pack(@padding, -side => 'left', -expand => 1, -fill => 'both');
$self->{INDICATOR} = $indicator;
$picker = $page->ColorPicker(
-depthselect => 1,
-notationselect => 1,
-historyfile => $self->extGet('ConfigFolder')->ConfigFolder . '/color_history',
lib/App/Codit/Plugins/Exporter.pm view on Meta::CPAN
#popping the form
my %options = $self->popForm(
# -acceptempty => 1,
-initialvalues => \%iv,
-oktext => 'Export',
-structure => [
'*section' => 'Output',
outfile => ['file', 'File', -width => 50],
'*end',
'*section' => 'Theme',
'*frame',
background => ['color', 'Background', -width => 8],
'*column',
foreground => ['color', 'Foreground', -width => 8],
'*end',
themefile => ['file', 'Theme file'],
font => ['font', 'Font'],
'*end',
'*section' => 'Features',
linenumbers => ['boolean', 'Line numbers'],
tabsize => ['spin', 'Tab size', -width => 6],
lib/App/Codit/Plugins/Git.pm view on Meta::CPAN
git_expand => ['gitExpand', $self],
git_open_all => ['gitOpenAll', $self],
git_remove => ['gitRemove', $self],
git_remove_dialog => ['gitRemoveDialog', $self],
);
$self->{PROJECTS} = {};
my $page = $self->ToolLeftPageAdd('Git', 'git-icon', undef, 'Manage your projects', 250);
my $pframe = $page->Frame->pack(-fill => 'x');
$pframe->Label(-text => 'Project:')->pack(-side => 'left');
my $current = '';
$self->{CURRENT} = \$current;
my $mb = $pframe->Menubutton(
-anchor => 'w',
-textvariable => \$current,
)->pack(-side => 'left', -expand => 1, -fill => 'x');
my $menu = $mb->Menu(-tearoff => 0);
$mb->configure(-menu => $menu);
$self->{PMENU} = $menu;
my $nav = $self->extGet('Selector');
my $gtree = $page->DocumentTree(
lib/App/Codit/Plugins/Icons.pm view on Meta::CPAN
my $class = shift;
my $self = $class->SUPER::new(@_);
return undef unless defined $self;
my $page = $self->ToolRightPageAdd('Icons', 'preferences-desktop-icons', undef, 'Select and insert icons', 350);
my @padding = (-padx => 3, -pady => 3);
my $list;
#setting up the buttons
my $eframe = $page->Frame(
-relief => 'groove',
-borderwidth => 2,
)->pack(-fill => 'x');
$eframe->Button(
-text => 'Insert',
-command => sub {
my ($sel) = $list->selectionGet;
$self->cmdExecute('edit_insert', 'insert', $sel) if defined $sel;
},
)->pack(@padding, -side => 'left', -expand => 1, -fill => 'x');
$eframe->Button(
-text => 'Copy',
-command => sub {
my ($sel) = $list->selectionGet;
if (defined $sel) {
$self->clipboardClear;
$self->clipboardAppend($sel);
}
},
)->pack(@padding, -side => 'left', -expand => 1, -fill => 'x');
lib/App/Codit/Plugins/PodViewer.pm view on Meta::CPAN
require Tk::PodViewer::Full;
use Tk;
=head1 DESCRIPTION
Add a Perl pod viewer to your open files.
=head1 DETAILS
PodViewer adds a I<Pod> button to the toolbar.
When you click it the frame of the current selected document
will split and the bottom half will show the pod documentation
in your document.
The viewer is refreshed after you make an edit.
=cut
sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
( run in 2.211 seconds using v1.01-cache-2.11-cpan-e1769b4cff6 )