Geo-Vector
view release on metacpan or search on metacpan
lib/Geo/Vector/Layer/Dialogs/Feature.pm view on Meta::CPAN
package Geo::Vector::Layer::Dialogs::Feature;
# @brief A dialog to create or edit a Geo::Vector::Feature
use strict;
use warnings;
use Carp;
use Glib qw/TRUE FALSE/;
use Gtk2::Ex::Geo::Dialogs qw/:all/;
use Geo::Vector::Feature;
use Geo::Vector::Layer::Dialogs qw/:all/;
## @ignore
sub open {
my($self, $gui) = @_;
# bootstrap:
my($dialog, $boot) = $self->bootstrap_dialog
($gui, 'feature_dialog', "Create a new feature to layer ".$self->name,
{
feature_dialog => [delete_event => \&close_feature_dialog, [$self, $gui]],
feature_cancel_button => [clicked => \&close_feature_dialog, [$self, $gui]],
feature_ok_button => [clicked => \&new_feature, [$self, $gui]],
},
[
'feature_class_comboboxentry'
]
);
if ($boot) {
}
my $combo = $dialog->get_widget('feature_class_comboboxentry');
my $model = $combo->get_model();
$model->clear;
#for my $class ('Feature') {
#$model->set($model->append, 0, $class);
#}
$combo->child->set_text('Feature');
return $dialog->get_widget('feature_dialog');
}
##@ignore
sub close_feature_dialog {
my($self, $gui);
for (@_) {
next unless ref eq 'ARRAY';
($self, $gui) = @{$_};
}
$self->hide_dialog('feature_dialog');
1;
}
##@ignore
sub new_feature {
my($self, $gui);
for (@_) {
next unless ref eq 'ARRAY';
($self, $gui) = @{$_};
}
my $class = get_value_from_combo($self->{feature_dialog}, 'feature_class_comboboxentry');
my $feature = Geo::Vector::Feature->new(class => $class);
$self->feature($feature);
$self->select(with_id => [$feature->FID]);
$self->open_features_dialog($gui);
$self->hide_dialog('feature_dialog');
1;
}
1;
( run in 0.758 second using v1.01-cache-2.11-cpan-8dfa8b56332 )