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 )