The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Padre::Wx::Dialog::Encode;

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

our $VERSION = '0.45';

# Encode document to System Default
# Encode document to utf-8
# Encode document to ...
sub _encode {
	my ( $window, $encoding ) = @_;

	my $doc = $window->current->document;
	$doc->{encoding} = $encoding;
	$doc->save_file if $doc->filename;
	$window->refresh;

	$window->message( Wx::gettext( sprintf( 'Document encoded to (%s)', $doc->{encoding} ) ) );
	return;
}

sub encode_document_to_system_default {
	my ( $window, $event ) = @_;
	_encode( $window, Padre::Locale::encoding_system_default() || 'utf-8' );
	return;
}

sub encode_document_to_utf8 {
	my ( $window, $event ) = @_;
	_encode( $window, 'utf-8' );
	return;
}

sub encode_document_to {
	my ( $window, $event ) = @_;

	#	my @ENCODINGS = qw(
	#		cp932
	#		cp949
	#		euc-jp
	#		euc-kr
	#		shift-jis
	#		utf-8
	#	);
	require Encode;
	my @ENCODINGS = Encode->encodings(":all");

	my @layout = (
		[   [ 'Wx::StaticText', undef, Wx::gettext('Encode to:') ],
			[ 'Wx::ComboBox', '_encoding_', $ENCODINGS[0], \@ENCODINGS, Wx::wxCB_READONLY ],
		],
		[   [ 'Wx::Button', '_ok_',     Wx::wxID_OK ],
			[ 'Wx::Button', '_cancel_', Wx::wxID_CANCEL ],
		],
	);

	my $dialog = Padre::Wx::Dialog->new(
		parent => $window,
		title  => Wx::gettext("Encode document to..."),
		layout => \@layout,
		width  => [ 100, 200 ],
		bottom => 20,
	);
	$dialog->{_widgets_}{_ok_}->SetDefault;
	Wx::Event::EVT_BUTTON( $dialog, $dialog->{_widgets_}{_ok_},     \&encode_ok_clicked );
	Wx::Event::EVT_BUTTON( $dialog, $dialog->{_widgets_}{_cancel_}, \&encode_cancel_clicked );

	$dialog->{_widgets_}{_encoding_}->SetFocus;
	$dialog->Show(1);

	return 1;
}

sub encode_cancel_clicked {
	my ( $dialog, $event ) = @_;

	$dialog->Destroy;
}

sub encode_ok_clicked {
	my ( $dialog, $event ) = @_;

	my $window = $dialog->GetParent;
	my $data   = $dialog->get_data;
	$dialog->Destroy;

	_encode( $window, $data->{_encoding_} );
	return;
}

1;

# Copyright 2008-2009 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.