App-Codit

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

# 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 0.758 second using v1.01-cache-2.11-cpan-df04353d9ac )