package Geo::Vector::Layer::Dialogs::Properties; # @brief use strict; use warnings; use Carp; use Glib qw/TRUE FALSE/; use Geo::Vector; use Geo::Vector::Layer; use Geo::Vector::Layer::Dialogs::New; ## @ignore sub open { my($self, $gui) = @_; # bootstrap: my($dialog, $boot) = $self->bootstrap_dialog ($gui, 'properties_dialog', "Properties of ".$self->name, { properties_dialog => [delete_event => \&cancel_properties, [$self, $gui]], properties_dialog => [delete_event => \&cancel_properties, [$self, $gui]], properties_apply_button => [clicked => \&apply_properties, [$self, $gui, 0]], properties_cancel_button => [clicked => \&cancel_properties, [$self, $gui]], properties_ok_button => [clicked => \&apply_properties, [$self, $gui, 1]], }); if ($boot) { Geo::Vector::Layer::Dialogs::fill_render_as_combobox( $dialog->get_widget('properties_render_as_combobox') ); } $dialog->get_widget('properties_dialog')->set_title("Properties of ".$self->name); $self->{backup}->{name} = $self->name; $self->{backup}->{render_as} = $self->render_as; $self->{backup}->{alpha} = $self->alpha; $dialog->get_widget('properties_geometry_type_label') ->set_text($self->geometry_type or 'unknown type'); my $a = $self->render_as; $a = defined $a ? $Geo::Vector::RENDER_AS{$a} : 0; $dialog->get_widget('properties_render_as_combobox')->set_active($a); my $count = $self->feature_count; $dialog->get_widget('properties_feature_count_label')->set_text($count); my $ds = $self->data_source; my $driver = $self->driver; $dialog->get_widget('properties_driver_label')->set_text($driver ? $driver : 'unknown'); $dialog->get_widget('properties_data_source_label')->set_text(Glib->filename_to_unicode($ds)); $dialog->get_widget('properties_SQL_label')->set_text($self->{SQL}); $dialog->get_widget('properties_name_entry')->set_text($self->name); $dialog->get_widget('properties_transparency_spinbutton')->set_value($self->alpha); my $t = $dialog->get_widget('properties_schema_treeview'); Geo::Vector::Layer::Dialogs::New::schema_to_treeview(undef, $t, 0, $self->schema); } ##@ignore sub apply_properties { my($self, $gui, $close) = @{$_[1]}; my $dialog = $self->{properties_dialog}; my $alpha = $dialog->get_widget('properties_transparency_spinbutton')->get_value_as_int; $self->alpha($alpha); my $name = $dialog->get_widget('properties_name_entry')->get_text; $self->name($name); my $combo = $dialog->get_widget('properties_render_as_combobox'); my $model = $combo->get_model; my $iter = $model->get_iter_from_string($combo->get_active()); $self->render_as($model->get_value($iter)); $self->hide_dialog('properties_dialog') if $close; $gui->set_layer($self); $gui->{overlay}->render; } ##@ignore sub cancel_properties { my($self, $gui); for (@_) { next unless ref eq 'ARRAY'; ($self, $gui) = @{$_}; } $self->alpha($self->{backup}->{alpha}); $self->name($self->{backup}->{name}); $self->render_as($self->{backup}->{render_as}); $self->hide_dialog('properties_dialog'); $gui->set_layer($self); $gui->{overlay}->render; 1; } 1;