App-GUI-Juliagraph
view release on metacpan or search on metacpan
lib/App/GUI/Juliagraph/Frame/Panel/ColorSetPicker.pm view on Meta::CPAN
});
Wx::Event::EVT_BUTTON( $self, $self->{'save'}, sub {
$self->{'sets'}{ $self->current_set_name } = [map { $_->name ? $_->name : $_->rgb_hex } $parent->get_all_colors];
$self->update_display();
});
Wx::Event::EVT_BUTTON( $self, $self->{'new'}, sub {
my $name;
while (1){
my $dialog = Wx::TextEntryDialog->new ( $self, "Please insert the color set name", 'Request Dialog');
return if $dialog->ShowModal == &Wx::wxID_CANCEL;
$name = $dialog->GetValue();
$name =~ tr/ /_/;
last unless exists $self->{'sets'}{ $name };
}
$self->{'sets'}{ $name } = [ map { $_->name ? $_->name : $_->rgb_hex } $parent->get_all_colors ];
$self->{'set_names'} = [ sort keys %{$self->{'sets'}} ];
for (0 .. $#{$self->{'set_names'}}){
$self->{'set_index'} = $_ if $name eq $self->{'set_names'}[$_];
}
$self->update_select();
});
my $std_attr = &Wx::wxALIGN_LEFT | &Wx::wxALIGN_CENTER_VERTICAL| &Wx::wxGROW;
my $tb_attr = $std_attr | &Wx::wxTOP| &Wx::wxBOTTOM;
my $button_attr = &Wx::wxLEFT | $tb_attr;
my $all_attr = $std_attr | &Wx::wxALL;
my $row1 = Wx::BoxSizer->new(&Wx::wxHORIZONTAL);
$row1->AddSpacer( 10 );
$row1->Add( $self->{'del'}, 0, $button_attr, 5 );
$row1->AddSpacer( 15 );
$row1->Add( $self->{'select'}, 0, $tb_attr, 5 );
$row1->Add( $self->{'<'}, 0, $tb_attr, 5 );
$row1->Add( $self->{'>'}, 0, $tb_attr, 5 );
$row1->AddSpacer( 10 );
$row1->Add( $self->{'load'}, 0, $button_attr, 5 );
$row1->AddSpacer( 10 );
$row1->Add( $self->{'new'}, 0, $button_attr, 5 );
$row1->AddSpacer( 10 );
$row1->Add( $self->{'save'}, 0, $button_attr, 5 );
$row1->Add( 0, 0, &Wx::wxEXPAND | &Wx::wxGROW);
my $row2 = Wx::BoxSizer->new(&Wx::wxHORIZONTAL);
$row2->AddSpacer( 10 );
$row2->Add( $self->{'display'}[$_], 0, $all_attr, 6 ) for 0 .. $self->{'max_display_count'}-1;
$row2->Add( 0, 0, &Wx::wxEXPAND | &Wx::wxGROW);
my $sizer = Wx::BoxSizer->new(&Wx::wxVERTICAL);
$sizer->Add( $row1, 0, $tb_attr, 0 );
$sizer->AddSpacer( 5 );
$sizer->Add( $row2, 0, $tb_attr, 0 );
$self->SetSizer($sizer);
$self->update_display;
$self;
}
sub current_set_name { $_[0]->{'set_names'}->[ $_[0]->{'set_index'} ] }
sub get_current_color_set { @{$_[0]->{'set_content'}} }
sub update_select {
my ( $self ) = @_;
$self->{'set_names'} = [ sort keys %{$self->{'sets'}} ];
$self->{'select'}->Clear ();
$self->{'select'}->Append( $_) for @{$self->{'set_names'}};
$self->update_display();
}
sub update_display {
my ($self) = @_;
$self->{'set_index'} = $#{$self->{'set_names'}} if $self->{'set_index'} < 0;
$self->{'set_index'} = 0 if $self->{'set_index'} > $#{$self->{'set_names'}};
$self->{'select'}->SetSelection( $self->{'set_index'} );
my $set_name = $self->{'set_names'}[ $self->{'set_index'} ];
my $set_length = @{ $self->{'sets'}{$set_name} };
$self->{'set_content'} = [ map { color( $self->{'sets'}{$set_name}[ $_ ] ) } 0 .. $set_length - 1 ];
$self->{'set_content'}[$_] = color( $default_color ) for $set_length .. $self->{'max_display_count'}-1;
$self->{'display'}[$_]->set_color( $self->{'set_content'}[ $_ ]->rgb_hash ) for 0 .. $self->{'max_display_count'}-1;
}
sub get_config { $_[0]->{'sets'} }
1;
( run in 0.845 second using v1.01-cache-2.11-cpan-39bf76dae61 )