view release on metacpan or search on metacpan
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<packing>
<property name="expand">False</property>
<property name="padding">2</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox5">
<property name="visible">True</property>
<child>
<widget class="GtkComboBox" id="open_vector_driver_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="open_vector_build_connection_button">
<property name="label" translatable="yes">Build</property>
<property name="visible">True</property>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="open_vector_datasource_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox4">
<property name="visible">True</property>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">Filesystem read:</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="filesystem_driver_combobox">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Use this driver</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<child>
<widget class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="label" translatable="yes">Store into layer:</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBoxEntry" id="copy_name_comboboxentry">
<property name="visible">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">2</property>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
</child>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox3">
<property name="visible">True</property>
<child>
<widget class="GtkComboBox" id="copy_datasource_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox7">
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="copy_driver_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
</widget>
<packing>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox2">
<property name="visible">True</property>
<child>
<widget class="GtkComboBox" id="new_vector_data_source_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<child>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="new_vector_driver_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing>
</child>
<child>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<widget class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="label" translatable="yes">Geometry type:</property>
</widget>
<packing>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="new_vector_geometry_type_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
</packing>
</child>
<child>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">9</property>
<property name="bottom_attach">10</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="new_vector_class_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label10">
<property name="visible">True</property>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">7</property>
<property name="bottom_attach">8</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="properties_render_as_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">Select raster to be as a model for the canvas:</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="rasterize_like_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<child>
<widget class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="label" translatable="yes">Render the data as:</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="rasterize_render_as_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">2</property>
</packing>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<child>
<widget class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="label" translatable="yes">Select a field for the value:</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="rasterize_value_field_combobox">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">4</property>
</packing>
lib/Geo/Vector/Layer/Dialogs.glade view on Meta::CPAN
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">Class for the new feature:</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBoxEntry" id="feature_class_comboboxentry">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</widget>
lib/Geo/Vector/Layer/Dialogs.pm.in view on Meta::CPAN
my @buffer = <DATA>;
pop @buffer unless $buffer[$#buffer] =~ /^\</; # remove the extra content
my $self = Gtk2::Ex::Geo::DialogMaster::new($class, %params, buffer => \@buffer);
bless $self => (ref($class) or $class);
return $self;
}
sub fill_render_as_combobox {
my($combobox) = @_;
my $renderer = Gtk2::CellRendererText->new;
$combobox->pack_start($renderer, TRUE);
$combobox->add_attribute($renderer, text => 0);
my $model = Gtk2::ListStore->new('Glib::String');
for (sort {$Geo::Vector::RENDER_AS{$a} <=> $Geo::Vector::RENDER_AS{$b}}
keys %Geo::Vector::RENDER_AS) {
$model->set($model->append, 0, $_);
}
$combobox->set_model($model);
}
1;
__DATA__
lib/Geo/Vector/Layer/Dialogs/Copy.pm view on Meta::CPAN
my($dialog, $boot) = $self->bootstrap_dialog
($gui, 'copy_dialog', "Copy from ".$self->name,
{
copy_dialog => [delete_event => \&cancel_copy, [$self, $gui]],
copy_cancel_button => [clicked => \&cancel_copy, [$self, $gui]],
copy_ok_button => [clicked => \&do_copy, [$self, $gui, 1]],
from_EPSG_entry => [changed => \&Geo::Raster::Layer::epsg_help],
to_EPSG_entry => [changed => \&Geo::Raster::Layer::epsg_help],
copy_add_button => [clicked => \&add_to_mappings, $self],
copy_delete_button => [clicked => \&delete_from_mappings, $self],
copy_driver_combobox => [changed => \©_driver_changed, $self],
copy_name_comboboxentry => [changed => \©_into_changed, [$self, $gui]],
},
[
'copy_driver_combobox',
'copy_datasource_combobox',
'copy_name_comboboxentry'
]
);
if ($boot) {
my $from = $dialog->get_widget('from_EPSG_entry');
my $auto = Gtk2::EntryCompletion->new;
$auto->set_match_func(sub {1});
my $list = Gtk2::ListStore->new('Glib::String');
$auto->set_model($list);
$auto->set_text_column(0);
lib/Geo/Vector/Layer/Dialogs/Copy.pm view on Meta::CPAN
$to->set_completion($auto);
$dialog->get_widget('copy_datasource_button')
->signal_connect( clicked=> sub {
my(undef, $self) = @_;
my $entry = $self->{copy_dialog}->get_widget('copy_datasource_entry');
file_chooser('Select folder', 'select_folder', $entry);
}, $self);
}
my $combo = $dialog->get_widget('copy_driver_combobox');
my $model = $combo->get_model();
$model->clear;
my $i = 1;
my $active = 0;
$model->set($model->append, 0, ''); # create into existing data source
for my $driver (Geo::OGR::Drivers) {
next unless $driver->TestCapability('CreateDataSource');
my $name = $driver->GetName;
$active = $i if $name eq 'Memory';
$model->set($model->append, 0, $name);
$i++;
}
$combo->set_active($active);
copy_driver_changed($combo, $self);
$combo = $dialog->get_widget('copy_datasource_combobox');
$model = $combo->get_model();
$model->clear;
$model->set($model->append, 0, '');
for my $data_source (sort keys %{$self->{gui}{resources}{datasources}}) {
$model->set ($model->append, 0, $data_source);
}
$combo->set_active(0);
$combo = $dialog->get_widget('copy_name_comboboxentry');
$model = $combo->get_model();
$model->clear;
for my $layer (@{$gui->{overlay}->{layers}}) {
my $n = $layer->name();
next unless $layer->isa('Geo::Vector');
next unless $layer->{update};
next if $n eq $self->name();
$model->set($model->append, 0, $n);
}
$combo->child->set_text('copy');
lib/Geo/Vector/Layer/Dialogs/Copy.pm view on Meta::CPAN
## @ignore
sub copy_driver_changed {
my($combo, $self) = @_;
my $dialog = $self->{copy_dialog};
my $active = $combo->get_active();
return if $active < 0;
my $model = $combo->get_model;
my $iter = $model->get_iter_from_string($active);
my $name = $model->get($iter, 0);
for my $w ('copy_datasource_combobox','copy_datasource_button',
'copy_file_source_label','copy_non_file_source_label',
'copy_datasource_entry') {
$dialog->get_widget($w)->set_sensitive($name ne 'Memory');
}
}
##@ignore
sub do_copy {
my($self, $gui) = @{$_[1]};
my $dialog = $self->{copy_dialog};
my %params = ( selected_features => $self->selected_features )
unless $dialog->get_widget('copy_all_checkbutton')->get_active;
my $into = $dialog->get_widget('copy_name_comboboxentry')->get_active_text;
croak "Store into?" unless $into;
my $into_layer = $gui->layer($into);
if ($into_layer) {
croak $into_layer->name." is not a vector layer" unless $into_layer->isa('Geo::Vector');
} else {
my $combo = $dialog->get_widget('copy_datasource_combobox');
my $active = $combo->get_active();
if ($active > 0) {
my $model = $combo->get_model;
my $iter = $model->get_iter_from_string($active);
my $store = $model->get($iter, 0);
$params{data_source} = $self->{gui}{resources}{datasources}{$store};
} else {
$params{data_source} = $dialog->get_widget('copy_datasource_entry')->get_text;
$params{driver} = $dialog->get_widget('copy_driver_combobox')->get_active_text;
}
$params{create} = $into;
my $layers;
if ($params{driver} ne 'Memory') {
eval {
$layers = Geo::Vector::layers($params{driver}, $params{data_source});
};
}
croak "Data source '$params{data_source}' already contains a layer with name '$params{create}'."
if ($layers and $layers->{$params{create}});
lib/Geo/Vector/Layer/Dialogs/Copy.pm view on Meta::CPAN
};
if ($@) {
$gui->message("error opening data_source: '$text': $@");
return;
}
return unless $ds; # can't be opened as a data_source
my $driver = $ds->GetDriver; # default driver
if ($driver) {
my $name = $driver->GetName;
# get from combo
my $combo = $self->{copy_dialog}->get_widget('copy_driver_combobox');
my $model = $combo->get_model;
my $i = 0;
my $iter = $model->get_iter_first;
LOOP: {
do {
my $d = $model->get_value($iter);
if ($d eq $name) {
$combo->set_active($i);
last;
}
lib/Geo/Vector/Layer/Dialogs/Copy.pm view on Meta::CPAN
} while ($iter = $model->iter_next($iter));
}
}
}
## @ignore
sub copy_into_changed {
my($combo) = @_;
my($self, $gui) = @{$_[1]};
my $dialog = $self->{copy_dialog};
my $into = get_value_from_combo($dialog, 'copy_name_comboboxentry') if $combo;
my $into_layer;
if ($into) {
for my $layer (@{$gui->{overlay}->{layers}}) {
my $n = $layer->name();
next unless $layer->isa('Geo::Vector');
if ($into eq $layer->name()) {
$into_layer = $layer;
last;
}
}
lib/Geo/Vector/Layer/Dialogs/Feature.pm view on Meta::CPAN
# 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');
}
lib/Geo/Vector/Layer/Dialogs/Feature.pm view on Meta::CPAN
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;
lib/Geo/Vector/Layer/Dialogs/New.pm view on Meta::CPAN
my($dialog, $boot) = Gtk2::Ex::Geo::Layer::bootstrap_dialog
($self, $gui, 'new_dialog', "Create new vector",
{
new_dialog => [delete_event => \&cancel_new_copy, $self],
new_vector_add_button => [clicked=>\&add_field_to_schema, $self],
new_vector_delete_button => [clicked=>\&delete_field_from_schema, $self],
new_vector_cancel_button => [clicked => \&cancel_new_vector, $self],
new_vector_ok_button => [clicked => \&ok_new_vector, $self],
},
[
'new_vector_class_combobox',
'new_vector_driver_combobox',
'new_vector_data_source_combobox',
'new_vector_geometry_type_combobox'
]
);
if ($boot) {
my $combo = $dialog->get_widget('new_vector_class_combobox');
my $model = $combo->get_model();
for my $n ('OGR Layer', 'Feature collection') {
$model->set ($model->append, 0, $n);
}
$combo->set_active(0);
$combo = $dialog->get_widget('new_vector_driver_combobox');
$model = $combo->get_model();
$model->set ($model->append, 0, '');
for my $driver (Geo::OGR::Drivers()) {
my $n = $driver->FormatName;
$n = $driver->GetName unless $n;
$self->{drivers}{$n} = $driver->GetName;
$model->set ($model->append, 0, $n);
}
$combo->set_active(0);
$combo = $dialog->get_widget('new_vector_data_source_combobox');
$model = $combo->get_model();
$model->set ($model->append, 0, '');
for my $data_source (sort keys %{$gui->{resources}{datasources}}) {
$model->set ($model->append, 0, $data_source);
}
$combo->set_active(0);
# replace with @Geo::OGR::Geometry::GEOMETRY_TYPES
# when new GDAL comes out
my @GEOMETRY_TYPES = qw/Unknown
Point LineString Polygon
MultiPoint MultiLineString MultiPolygon GeometryCollection
None LinearRing
Point25D LineString25D Polygon25D
MultiPoint25D MultiLineString25D MultiPolygon25D GeometryCollection25D/;
$combo = $dialog->get_widget('new_vector_geometry_type_combobox');
$model = $combo->get_model();
for my $type (@GEOMETRY_TYPES) {
$model->set ($model->append, 0, $type);
}
$combo->set_active(0);
}
$dialog->get_widget('new_vector_open_button')
->signal_connect( clicked => sub {
my(undef, $self) = @_;
lib/Geo/Vector/Layer/Dialogs/New.pm view on Meta::CPAN
sub cancel_new_vector {
my $self = pop;
$self->{new_dialog}->get_widget('new_dialog')->destroy;
}
## @ignore
sub ok_new_vector {
my $self = pop;
my $d = $self->{new_dialog};
my $layer;
my $class = get_value_from_combo($d, 'new_vector_class_combobox');
my $name = $d->get_widget('new_vector_layer_entry')->get_text;
$name = 'x' unless $name;
if ($class eq 'Feature collection') {
$self->{gui}->add_layer(Geo::Vector->new(features=>[]), $name, 1);
$self->{new_dialog}->get_widget('new_dialog')->destroy;
return;
}
my $driver = get_value_from_combo($d, 'new_vector_driver_combobox');
$driver = $self->{drivers}{$driver};
my $create_options = $d->get_widget('new_vector_create_options_entry')->get_text;
$create_options = {split(/[(=>),]/,$create_options)};
my $data_source = get_value_from_combo($d, 'new_vector_data_source_combobox');
$data_source = $d->get_widget('new_vector_folder_entry')->get_text unless $data_source;
my $layer_options = $d->get_widget('new_vector_layer_options_entry')->get_text;
my $geometry_type = get_value_from_combo($d, 'new_vector_geometry_type_combobox');
my $encoding = $d->get_widget('new_vector_encoding_entry')->get_text;
my $srs = $d->get_widget('new_vector_srs_entry')->get_text;
my %schema = ( Fields => [] );
$self->{schema}->foreach(sub {
my($model, $path, $iter) = @_;
my @row = $model->get($iter);
push @{$schema{Fields}},
{ Name => $row[0],
Type => $row[1],
Justify => $row[2],
lib/Geo/Vector/Layer/Dialogs/Open.pm view on Meta::CPAN
open_dialog => [delete_event => \&cancel_open_vector, $self],
open_vector_delete_datasource_button => [clicked => \&delete_data_source, $self],
open_vector_connect_datasource_button => [clicked => \&connect_data_source, $self],
open_vector_remove_button => [clicked => \&remove_layer, $self],
open_vector_schema_button => [clicked => \&show_schema, $self],
open_vector_cancel_button => [clicked => \&cancel_open_vector, $self],
open_vector_ok_button => [clicked => \&open_vector, $self],
open_vector_auto_update_schema_checkbutton => [toggled => \&show_schema, $self],
},
[
'open_vector_driver_combobox',
'filesystem_driver_combobox',
'open_vector_datasource_combobox'
]
);
if ($boot) {
my $combo = $dialog->get_widget('open_vector_driver_combobox');
my $model = $combo->get_model();
for my $driver (Geo::OGR::Drivers()) {
my @t = $driver->DataSourceTemplate;
next if $t[0] eq '<filename>';
my $n = $driver->FormatName;
$model->set ($model->append, 0, $n);
}
$combo->set_active(0);
$combo = $dialog->get_widget('filesystem_driver_combobox');
$model = $combo->get_model();
$model->set ($model->append, 0, 'auto');
for my $driver (Geo::OGR::Drivers()) {
my $n = $driver->GetName;
$model->set ($model->append, 0, $n);
}
$combo->set_active(0);
$dialog->get_widget('open_vector_datasource_combobox')
->signal_connect(changed => sub { empty_layer_data($_[1]) }, $self);
$dialog->get_widget('open_vector_build_connection_button')
->signal_connect(clicked => \&build_data_source, $self);
fill_named_data_sources_combobox($self);
my $treeview = $dialog->get_widget('open_vector_directory_treeview');
$treeview->set_model(Gtk2::TreeStore->new('Glib::String'));
my $cell = Gtk2::CellRendererText->new;
my $col = Gtk2::TreeViewColumn->new_with_attributes('', $cell, markup => 0);
$treeview->append_column($col);
$treeview->signal_connect(
button_press_event => sub
{
my($treeview, $event, $self) = @_;
lib/Geo/Vector/Layer/Dialogs/Open.pm view on Meta::CPAN
$self->{path} = File::Spec->rel2abs('.') unless $self->{path};
fill_directory_treeview($self);
fill_layer_treeview($self);
$dialog->get_widget('open_vector_update_checkbutton')->set_active(0);
}
## @ignore
sub fill_named_data_sources_combobox {
my($self, $default) = @_;
$default = '' unless $default;
my $model = Gtk2::ListStore->new('Glib::String');
$model->set($model->append, 0, '');
my $i = 1;
my $active = 0;
for my $data_source (sort keys %{$self->{gui}{resources}{datasources}}) {
$model->set ($model->append, 0, $data_source);
$active = $i if $data_source eq $default;
$i++;
}
my $combo = $self->{open_dialog}->get_widget('open_vector_datasource_combobox');
$combo->set_model($model);
$combo->set_active($active);
}
## @ignore
sub get_data_source {
my $self = shift;
my $combo = $self->{open_dialog}->get_widget('open_vector_datasource_combobox');
my $active = $combo->get_active();
my $data_source = $self->{path};
return ('', $data_source) if $active < 0;
my $model = $combo->get_model;
my $iter = $model->get_iter_from_string($active);
my $driver = $model->get($iter, 0);
if ($driver eq '') {
my $d = get_value_from_combo($self->{open_dialog}, 'filesystem_driver_combobox');
$driver = $d unless $d eq 'auto';
#if ($driver eq 'GeoJSON') { # hack
# $data_source = "file:/$data_source";
#}
return ($driver, $data_source);
}
return @{$self->{gui}{resources}{datasources}{$driver}};
}
##@ignore
lib/Geo/Vector/Layer/Dialogs/Open.pm view on Meta::CPAN
$self->{gui}->{folder} = $self->{path};
my($driver, $data_source) = get_data_source($self);
my $sql = $dialog->get_widget('open_vector_SQL_entry')->get_text;
$sql =~ s/^\s+//;
$sql =~ s/\s+$//;
$self->{gui}{history}->editing($sql);
unless ($driver) {
my $d = get_value_from_combo($dialog, 'filesystem_driver_combobox');
$driver = $d unless $d eq 'auto';
}
my $layers = get_selected_from_selection($dialog->get_widget('open_vector_layer_treeview')->get_selection);
if ($sql) {
$self->{gui}{history}->enter();
$dialog->get_widget('open_vector_SQL_entry')->set_text('');
}
my $wish = $dialog->get_widget('open_vector_layer_name_entry')->get_text;
lib/Geo/Vector/Layer/Dialogs/Open.pm view on Meta::CPAN
eval {
$filename = Glib->filename_to_unicode($_);
};
next if $@;
#my $label = Gtk2::Label->new($filename) if Gtk2->CHECK_VERSION(2, 18, 0);
my $label = Gtk2::Label->new($filename) unless $Config::Config{'osname'} eq 'MSWin32';
my $b = Gtk2::ToolButton->new($label, $filename);
$b->signal_connect(
clicked => sub {
my($button, $self) = @_;
$self->{open_dialog}->get_widget('open_vector_datasource_combobox')->set_active(0);
my $n = $button->get_label;
if ($n eq $self->{volume}) {
$self->{path} = '';
} else {
my @directories;
for (reverse @{$self->{directory_toolbar}}) {
push @directories, $_->get_label;
last if $_ == $_[0];
}
if ($^O eq 'MSWin32') {
lib/Geo/Vector/Layer/Dialogs/Open.pm view on Meta::CPAN
$self->{open_dialog}->get_widget('open_vector_schema_treeview')->get_model->clear;
$self->{open_dialog}->get_widget('open_vector_schema_label')->set_label('');
}
$self->{gui}{history}->editing('');
$self->{open_dialog}->get_widget('open_vector_SQL_entry')->set_text('');
}
## @ignore
sub build_data_source {
my($button, $self) = @_;
my $combo = $self->{open_dialog}->get_widget('open_vector_driver_combobox');
my $index = $combo->get_active;
my $code = '';
my $format;
my $template = '';
my $help = '';
my $i = -1;
for my $driver (Geo::OGR::Drivers()) {
($template, $help) = $driver->DataSourceTemplate;
next if $template eq '<filename>';
$i++;
lib/Geo/Vector/Layer/Dialogs/Open.pm view on Meta::CPAN
$connection_string .= $c;
}
} else {
$connection_string .= $c;
}
$i++;
}
#print STDERR "connection string: $connection_string\n";
$self->{gui}{resources}{datasources}{$input{data_source_name}} = [$driver, $connection_string];
fill_named_data_sources_combobox($self, $input{data_source_name});
# Ensure that the dialog box is destroyed when the user responds.
$dialog->destroy;
}
## @ignore
sub delete_data_source {
my($button, $self) = @_;
my $combo = $self->{open_dialog}->get_widget('open_vector_datasource_combobox');
my $active = $combo->get_active();
return if $active < 0;
my $model = $combo->get_model;
my $iter = $model->get_iter_from_string($active);
my $name = $model->get($iter, 0);
return if $name eq '';
$model->remove($iter);
delete $self->{gui}{resources}{datasources}{$name};
lib/Geo/Vector/Layer/Dialogs/Open.pm view on Meta::CPAN
unless (fill_layer_treeview($self)) {
# No layers found in data source
fill_directory_treeview($self);
}
}
## @ignore
sub select_directory {
my($self, $treeview) = @_;
my $combo = $self->{open_dialog}->get_widget('open_vector_driver_combobox');
$combo->set_active(0) if $combo->get_active;
$self->{open_dialog}->get_widget('open_vector_layer_treeview')->get_model->clear;
my($path, $focus_column) = $treeview->get_cursor;
my $index = $path->to_string if $path;
if (defined $index) {
my $dir = $self->{dir_list}->[$index];
$dir =~ s/^<b>\[//;
$dir =~ s/\]<\/b>$//;
my $directory;
lib/Geo/Vector/Layer/Dialogs/Properties.pm view on Meta::CPAN
($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});
lib/Geo/Vector/Layer/Dialogs/Properties.pm view on Meta::CPAN
}
##@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 {
lib/Geo/Vector/Layer/Dialogs/Rasterize.pm view on Meta::CPAN
# bootstrap:
my($dialog, $boot) = $self->bootstrap_dialog
($gui, 'rasterize_dialog', "Rasterize ".$self->name,
{
rasterize_dialog => [delete_event => \&cancel_rasterize, [$self, $gui]],
rasterize_dialog => [delete_event => \&cancel_rasterize, [$self, $gui]],
rasterize_cancel_button => [clicked => \&cancel_rasterize, [$self, $gui]],
rasterize_ok_button => [clicked => \&apply_rasterize, [$self, $gui, 1]],
},
[
'rasterize_value_field_combobox',
'rasterize_like_combobox',
]);
if ($boot) {
Geo::Vector::Layer::Dialogs::fill_render_as_combobox(
$dialog->get_widget('rasterize_render_as_combobox') );
my $combobox = $dialog->get_widget('rasterize_value_field_combobox');
my $model = $combobox->get_model();
$model->set ($model->append, 0, 'Draw with value 1');
if ($self->{OGR}->{Layer}) {
my $schema = $self->{OGR}->{Layer}->GetLayerDefn();
for my $i (0..$schema->GetFieldCount-1) {
my $column = $schema->GetFieldDefn($i);
my $type = $column->GetFieldTypeName($column->GetType);
if ($type eq 'Integer' or $type eq 'Real') {
$model->set($model->append, 0, $column->GetName);
}
}
}
$combobox->set_active(0);
$combobox = $dialog->get_widget('rasterize_like_combobox');
$model = $combobox->get_model();
$model->set($model->append, 0, "Use current view");
for my $layer (@{$gui->{overlay}->{layers}}) {
next unless $layer->isa('Geo::Raster');
$model->set($model->append, 0, $layer->name);
}
$combobox->set_active(0);
}
$dialog->get_widget('rasterize_name_entry')->set_text('r');
$dialog->get_widget('rasterize_like_combobox')->set_active(0);
my $a = $self->render_as;
$a = defined $a ? $Geo::Vector::RENDER_AS{$a} : 0;
$dialog->get_widget('rasterize_render_as_combobox')->set_active($a);
$dialog->get_widget('rasterize_value_field_combobox')->set_active(0);
$dialog->get_widget('rasterize_nodata_value_entry')->set_text(-9999);
}
##@ignore
sub apply_rasterize {
my($self, $gui, $close) = @{$_[1]};
my $dialog = $self->{rasterize_dialog};
my %ret = (name => $dialog->get_widget('rasterize_name_entry')->get_text());
my $model = get_value_from_combo($dialog, 'rasterize_like_combobox');
if ($model eq "Use current view") {
# need M (height), N (width), world
($ret{M}, $ret{N}) = $gui->{overlay}->size;
$ret{world} = [$gui->{overlay}->get_viewport];
} else {
$ret{like} = $gui->{overlay}->get_layer_by_name($model);
}
$ret{render_as} = get_value_from_combo($dialog, 'rasterize_render_as_combobox');
$ret{feature} = $dialog->get_widget('rasterize_fid_entry')->get_text;
$ret{feature} = -1 unless $ret{feature} =~ /^\d+$/;
my $field = get_value_from_combo($dialog, 'rasterize_value_field_combobox');
if ($field ne 'Draw with value 1') {
$ret{value_field} = $field;
}
$ret{nodata_value} = $dialog->get_widget('rasterize_nodata_value_entry')->get_text();
my $g = $self->rasterize(%ret);
if ($g) {
$gui->add_layer($g, $ret{name}, 1);