The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package Padre::Wx::Menu::Perl;

# Fully encapsulated Perl menu

use 5.008;
use strict;
use warnings;
use List::Util      ();
use File::Spec      ();
use File::HomeDir   ();
use Params::Util    ();
use Padre::Wx       ();
use Padre::Wx::Menu ();
use Padre::Locale   ();
use Padre::Current  ();

our $VERSION = '0.96';
our @ISA     = 'Padre::Wx::Menu';





#####################################################################
# Padre::Wx::Menu Methods

sub new {
	my $class = shift;
	my $main  = shift;

	# Create the empty menu as normal
	my $self = $class->SUPER::new(@_);

	# Add additional properties
	$self->{main} = $main;

	# Cache the configuration
	$self->{config} = Padre->ide->config;

	# Perl-Specific Searches
	$self->{beginner_check} = $self->add_menu_action(
		'perl.beginner_check',
	);

	$self->{perl_deparse} = $self->add_menu_action(
		'perl.deparse',
	);

	$self->AppendSeparator;

	$self->{find_brace} = $self->add_menu_action(
		'perl.find_brace',
	);

	$self->{find_variable} = $self->add_menu_action(
		'perl.find_variable',
	);

	$self->{find_method} = $self->add_menu_action(
		'perl.find_method',
	);

	$self->{create_tagsfile} = $self->add_menu_action(
		'perl.create_tagsfile',
	);


	$self->AppendSeparator;

	$self->add_menu_action(
		'perl.vertically_align_selected',
	);

	$self->add_menu_action(
		'perl.newline_keep_column',
	);

	# $self->AppendSeparator;

	# Move of stacktrace to Run
	#	# Make it easier to access stack traces
	#	$self->{run_stacktrace} = $self->AppendCheckItem( -1,
	#		Wx::gettext("Run Scripts with Stack Trace")
	#	);
	#	Wx::Event::EVT_MENU( $main, $self->{run_stacktrace},
	#		sub {
	#			# Update the saved config setting
	#			my $config = Padre->ide->config;
	#			$config->set( run_stacktrace => $_[1]->IsChecked ? 1 : 0 );
	#			$self->refresh;
	#		}
	#	);

	return $self;
}

sub title {
	Wx::gettext('&Perl');
}

sub refresh {
	my $self    = shift;
	my $current = Padre::Current::_CURRENT(@_);
	my $config  = $current->config;
	my $perl    = !!Params::Util::_INSTANCE(
		$current->document,
		'Padre::Document::Perl',
	);

	# Disable document-specific entries if we are in a Perl project
	# but not in a Perl document.
	$self->{find_brace}->Enable($perl);
	$self->{find_variable}->Enable($perl);
	$self->{find_variable}->Enable($perl);

	#	$self->{rename_variable}->Enable($perl);
	#	$self->{introduce_temporary}->Enable($perl);
	#	$self->{extract_subroutine}->Enable($perl);
	$self->{beginner_check}->Enable($perl);

	return;
}

1;

# Copyright 2008-2012 The Padre development team as listed in Padre.pm.
# LICENSE
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl 5 itself.