Padre

 view release on metacpan or  search on metacpan

lib/Padre/Wx/Dialog/Advanced.pm  view on Meta::CPAN

sub _is_default {
	my ( $self, $type, $value, $default_value ) = @_;

	return ( $type == Padre::Constant::ASCII or $type == Padre::Constant::PATH )
		? $value eq $default_value
		: $value == $default_value;
}

# Private method to handle the pressing of the set value button
sub _on_set_button {
	my $self = shift;

	# Prepare the preferences
	my $list  = $self->{list};
	my $index = $list->GetFirstSelected;
	my $name  = $list->GetItemText($index);
	my $pref  = $self->{preferences}->{$name};

	#Set the value to the user input
	my $type = $pref->{type};
	my $value =
		( $type == Padre::Constant::BOOLEAN )
		? $self->{true}->GetValue
		: $self->{value}->GetValue;
	my $default_value = $pref->{default};
	my $is_default = $self->_is_default( $type, $value, $default_value );

	$pref->{value}      = $value;
	$pref->{is_default} = $is_default;

	$self->_update_ui($pref);

	return;
}

# Private method to handle the pressing of the reset to default button
sub _on_reset_button {
	my $self = shift;

	# Prepare the preferences
	my $list  = $self->{list};
	my $index = $list->GetFirstSelected;
	my $name  = $list->GetItemText($index);
	my $pref  = $self->{preferences}->{$name};

	#Reset the value to the default setting
	my $value = $pref->{default};
	$pref->{value}      = $pref->{default};
	$pref->{is_default} = 1;

	$self->_update_ui($pref);

	return;
}

# Private method to handle the pressing of the save button
sub _on_save_button {
	my $self    = shift;
	my $config  = $self->config;
	my $current = $self->current;
	my $prefs   = $self->{preferences};

	# Lock most of Padre so any apply handlers run quickly
	my $lock = $self->main->lock( 'UPDATE', 'REFRESH', 'DB' );

	# Find the values that have changed
	for my $name ( sort keys %$prefs ) {
		my $pref     = $prefs->{$name};
		my $type     = $pref->{type};
		my $value    = $pref->{value};
		my $original = $pref->{original};
		if ( $type == Padre::Constant::ASCII or $type == Padre::Constant::PATH ) {
			next if $value eq $original;
		} else {
			next if $value == $original;
		}

		$config->apply( $name, $value, $current );
	}

	# Save to disk/database
	$config->write;

	# Bye bye dialog
	$self->EndModal(Wx::ID_OK);

	return;
}

# Private method to update the preferences list
sub _update_list {
	my $self   = shift;
	my $config = $self->config;
	my $filter = quotemeta $self->{filter}->GetValue;

	my $list = $self->{list};
	$list->DeleteAllItems;

	# Hide value and info sizer when searching for other entry
	$self->{vsizer}->Show( 2, 0 );
	$self->{vsizer}->Show( 3, 0 );
	$self->{vsizer}->Show( 4, 0 );

	# Recalculate sizers
	$self->Layout;

	my $index       = -1;
	my $preferences = $self->{preferences};

	# Try to derive an alternate row colour based on the current system colour
	my $realColor = Wx::SystemSettings::GetColour(Wx::SYS_COLOUR_WINDOW);

	# Alternate candystripe is slightly darker and blueish
	my $alternateColor = Wx::Colour->new(
		int( $realColor->Red * 0.9 ),
		int( $realColor->Green * 0.9 ),
		$realColor->Blue,
	);

	my @preference_names = sort { $a cmp $b } keys %$preferences;
	if ( $self->{sortcolumn} == 1 ) {

		# Sort by Status
		@preference_names =
			sort { $self->_status_name( $preferences->{$a} ) cmp $self->_status_name( $preferences->{$b} ) }
			@preference_names;
	}
	if ( $self->{sortcolumn} == 2 ) {



( run in 1.925 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )