Gtk2-Ex-Geo

 view release on metacpan or  search on metacpan

lib/Gtk2/Ex/Geo/Dialogs.glade  view on Meta::CPAN

                    <property name="visible">True</property>
                    <property name="label" translatable="yes"> Symbol: </property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">0</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkComboBox" id="symbols_type_combobox">
                    <property name="visible">True</property>
                    <property name="items" translatable="yes">x
</property>
                  </widget>
                  <packing>
                    <property name="position">1</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkLabel" id="label73">
                    <property name="visible">True</property>
                    <property name="label" translatable="yes"> Size is based on: </property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">2</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkComboBox" id="symbols_field_combobox">
                    <property name="visible">True</property>
                    <property name="items" translatable="yes">x
</property>
                  </widget>
                  <packing>
                    <property name="position">3</property>
                  </packing>
                </child>
              </widget>
              <packing>

lib/Gtk2/Ex/Geo/Dialogs.glade  view on Meta::CPAN

                    <property name="visible">True</property>
                    <property name="label" translatable="yes">Field:</property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">0</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkComboBox" id="labels_field_combobox">
                    <property name="visible">True</property>
                    <property name="items" translatable="yes">x
</property>
                  </widget>
                  <packing>
                    <property name="position">1</property>
                  </packing>
                </child>
              </widget>
              <packing>

lib/Gtk2/Ex/Geo/Dialogs.glade  view on Meta::CPAN

                    <property name="visible">True</property>
                    <property name="label" translatable="yes">Placement:</property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">0</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkComboBox" id="labels_placement_combobox">
                    <property name="visible">True</property>
                    <property name="items" translatable="yes">1
</property>
                  </widget>
                  <packing>
                    <property name="position">1</property>
                  </packing>
                </child>
              </widget>
              <packing>

lib/Gtk2/Ex/Geo/Dialogs.glade  view on Meta::CPAN

                    <property name="visible">True</property>
                    <property name="label" translatable="yes">Palette type: </property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">0</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkComboBox" id="palette_type_combobox">
                    <property name="visible">True</property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">1</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkLabel" id="color_field_label">

lib/Gtk2/Ex/Geo/Dialogs.glade  view on Meta::CPAN

                    <property name="label" translatable="yes">Color is based on field:</property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="padding">4</property>
                    <property name="position">2</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkComboBox" id="color_field_combobox">
                    <property name="visible">True</property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">3</property>
                  </packing>
                </child>
                <child>
                  <placeholder/>

lib/Gtk2/Ex/Geo/Dialogs.glade  view on Meta::CPAN

                    <property name="receives_default">True</property>
                    <property name="use_stock">True</property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">2</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkComboBox" id="hue_range_combobox">
                    <property name="visible">True</property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">3</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkLabel" id="max_hue_label">

lib/Gtk2/Ex/Geo/Dialogs.glade  view on Meta::CPAN

                    <property name="visible">True</property>
                    <property name="label" translatable="yes"> Grayscale adjust: </property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">False</property>
                    <property name="position">3</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkComboBox" id="grayscale_adjust_combobox">
                    <property name="visible">True</property>
                  </widget>
                  <packing>
                    <property name="expand">False</property>
                    <property name="position">4</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkCheckButton" id="grayscale_invert_checkbutton">
                    <property name="label" translatable="yes">invert adjust</property>

lib/Gtk2/Ex/Geo/Dialogs.pm.in  view on Meta::CPAN

    return 1;
}

## @ignore
sub get_value_from_combo {
    my($dialog, $name_of_combo) = @_;
    my $combo = $dialog->get_widget($name_of_combo);
    my $model = $combo->get_model;
    return unless $model;
    my $a = $combo->get_active();
    if ($a == -1) { # comboboxentry
	if ($combo->isa('Gtk2::ComboBoxEntry')) {
	    return $combo->child->get_text;
	} else {
	    return '';
	}
    }
    my $iter = $model->get_iter_from_string($a);
    return unless $iter;
    return $model->get_value($iter);
}

lib/Gtk2/Ex/Geo/Dialogs/Colors.pm  view on Meta::CPAN

	     save_colors_button => [clicked => \&save_colors_file, [$self, $gui]],

	     edit_color_button => [clicked => \&edit_color, [$self, $gui]],
	     delete_color_button => [clicked => \&delete_color, [$self, $gui]],
	     add_color_button => [clicked => \&add_color, [$self, $gui]],

	     min_hue_button => [clicked => \&set_hue_range, [$self, $gui, 'min']],
	     max_hue_button => [clicked => \&set_hue_range, [$self, $gui, 'max']],

	     grayscale_color_button => [clicked => \&set_grayscale_color, [$self, $gui]],
	     grayscale_adjust_combobox => [changed => \&grayscale_color_changed, $self],
	     grayscale_invert_checkbutton => [toggled => \&grayscale_color_changed, $self],

	     border_color_button => [clicked => \&border_color_dialog, [$self]],

	     colors_apply_button => [clicked => \&apply_colors, [$self, $gui, 0]],
	     colors_cancel_button => [clicked => \&cancel_colors, [$self, $gui]],
	     colors_ok_button => [clicked => \&apply_colors, [$self, $gui, 1]],

	     palette_type_combobox => [changed => \&palette_type_changed, [$self, $gui]],
	     color_field_combobox => [changed => \&color_field_changed, [$self, $gui]],

	     scale_min_entry => [changed => \&color_scale_changed, [$self, $gui]],
	     scale_max_entry => [changed => \&color_scale_changed, [$self, $gui]],

	     hue_range_combobox => [changed => \&hue_changed, $self],
	     
	 },
	 [qw /palette_type_combobox color_field_combobox 
              hue_range_combobox grayscale_adjust_combobox/]
	);
    if ($boot) {
	my $combo = $dialog->get_widget('palette_type_combobox');
	my $model = $combo->get_model;
	$model->clear;
	for my $type ($self->supported_palette_types()) {
	    $model->set($model->append, 0, $type);
	}

	$combo = $dialog->get_widget('hue_range_combobox');
	$model = $combo->get_model;
	$model->clear;
	for my $type ('up to', 'down to') {
	    $model->set($model->append, 0, $type);
	}

	$combo = $dialog->get_widget('grayscale_adjust_combobox');
	$model = $combo->get_model;
	$model->clear;
	my $hash = \%Gtk2::Ex::Geo::Layer::GRAYSCALE_SUBTYPE;
	for my $type (sort {$hash->{$a} <=> $hash->{$b}} keys %$hash) {
	    $model->set($model->append, 0, $type);
	}
    }

    # back up data

lib/Gtk2/Ex/Geo/Dialogs/Colors.pm  view on Meta::CPAN

    $self->{backup}->{bins} = $bins;
    $self->{backup}->{border_color} = \@border_color;

    $self->{current_coloring_type} = '';

    # set up the controllers

    $dialog->get_widget('min_hue_label')->set_text($hue_range[0]);
    $dialog->get_widget('max_hue_label')->set_text($hue_range[1]);

    my $combo = $dialog->get_widget('palette_type_combobox');
    my $i = 0;
    for my $type ($self->supported_palette_types()) {
	$combo->set_active($i), last if $type eq $palette_type;
	$i++;
    }

    $combo = $dialog->get_widget('hue_range_combobox');
    $combo->set_active($hue_range[2] == 1 ? 0 : 1);

    $combo = $dialog->get_widget('grayscale_adjust_combobox');
    $i = 0;
    my $hash = \%Gtk2::Ex::Geo::Layer::GRAYSCALE_SUBTYPE;
    for my $type (sort {$hash->{$a} <=> $hash->{$b}} keys %$hash) {
	$combo->set_active($i), last if $type eq $grayscale_subtype;
	$i++;
    }

    fill_color_field_combo($self); 

    $dialog->get_widget('scale_min_entry')->set_text($scale[0]);

lib/Gtk2/Ex/Geo/Dialogs/Colors.pm  view on Meta::CPAN

    fill_colors_treeview($self);
    return $dialog->get_widget('colors_dialog');
}

# set ups

##@ignore
sub fill_color_field_combo {
    my($self) = @_;
    my $palette_type = $self->palette_type;
    my $combo = $self->{colors_dialog}->get_widget('color_field_combobox');
    my $model = $combo->get_model;
    $model->clear;
    my $i = 0;
    my $active;
    my $color_field = $self->color_field();
    my @fields = $self->schema()->fields;
    for my $field (@fields) {
	next unless $field->{Type};
	next if $palette_type eq 'Single color';
	next if ($palette_type eq 'Grayscale' or

lib/Gtk2/Ex/Geo/Dialogs/Colors.pm  view on Meta::CPAN

    }
    $combo->set_active($active) if defined $active;
}

# callbacks for edits

##@ignore
sub palette_type_changed {
    my($self, $gui) = @{$_[1]};
    my $dialog = $self->{colors_dialog};
    my $palette = get_value_from_combo($self->{colors_dialog}, 'palette_type_combobox');
    return unless $palette;
    $self->palette_type($palette);

    fill_color_field_combo($self);

    my $tv = $dialog->get_widget('colors_treeview');
    
    for my $w (qw/color_field_label color_field_combobox 
            scale_label2 scale_min_entry scale_label3 scale_max_entry color_scale_button 
                color_legend_button
            rainbow_label
            min_hue_label min_hue_button max_hue_label max_hue_button hue_range_combobox
            grayscale_label4 grayscale_color_label grayscale_color_button grayscale_adjust_combobox 
                grayscale_label5 grayscale_invert_checkbutton
            border_color_checkbutton border_color_label border_color_button
            edit_label edit_color_button delete_color_button add_color_button
            manage_label copy_colors_button open_colors_button save_colors_button/) {	
	$dialog->get_widget($w)->set_sensitive(0);
    }
    $tv->set_sensitive(0);

    return unless create_colors_treeview($self);
    
    if ($palette ne 'Single color') {
	for my $w (qw/color_field_label color_field_combobox/) {
	    $dialog->get_widget($w)->set_sensitive(1);
	}
    }
    
    if ($palette eq 'Grayscale') {
	for my $w (qw/grayscale_label4 grayscale_color_label grayscale_color_button 
                      grayscale_adjust_combobox grayscale_label5 grayscale_invert_checkbutton/) {
	    $dialog->get_widget($w)->set_sensitive(1);
	}
    } elsif ($palette eq 'Rainbow') {
	for my $w (qw/rainbow_label
                      min_hue_label min_hue_button max_hue_label max_hue_button 
                      hue_range_combobox/) {
	    $dialog->get_widget($w)->set_sensitive(1);
	}
    }
    
    if ($palette eq 'Single color') {
	for my $w (qw/edit_label edit_color_button/) {
	    $dialog->get_widget($w)->set_sensitive(1);
	}
	$tv->set_sensitive(1);
    } elsif ($palette eq 'Grayscale' or $palette eq 'Rainbow' or $palette =~ 'channel') {

lib/Gtk2/Ex/Geo/Dialogs/Colors.pm  view on Meta::CPAN

    if ($self->has_features_with_borders) {
	for my $w (qw/border_color_checkbutton border_color_label border_color_button/) {
	    $dialog->get_widget($w)->set_sensitive(1);
	}
    }
}

##@ignore
sub color_field_changed {
    my($self, $gui) = @{$_[1]};
    my $field = get_value_from_combo($self->{colors_dialog}, 'color_field_combobox');
    return unless $field; # model is cleared
    $self->color_field($field);
    my $palette = $self->palette_type;
    if (($palette eq 'Color bins' or $palette eq 'Color table') and 
	$self->{current_coloring_type} ne current_coloring_type($self)) {
	create_colors_treeview($self);
    }
}

## @ignore

lib/Gtk2/Ex/Geo/Dialogs/Colors.pm  view on Meta::CPAN

    my $max = get_number_from_entry($d->get_widget('scale_max_entry'));
    $self->color_scale($min, $max);
}

## @ignore
sub hue_changed {
    my(undef, $self) = @_;
    my $d = $self->{colors_dialog};
    my $min = get_number_from_entry($d->get_widget('min_hue_label'));
    my $max = get_number_from_entry($d->get_widget('max_hue_label'));
    my $dir = $d->get_widget('hue_range_combobox')->get_active == 0 ? 1 : -1; # up is 1, down is -1
    $self->hue_range($min, $max, $dir);
    create_colors_treeview($self);
}

## @ignore
sub grayscale_color_changed {
    my(undef, $self) = @_;
    my $d = $self->{colors_dialog};

    my @color = split(/ /, $self->{colors_dialog}->get_widget('grayscale_color_label')->get_text);
    if (@color > 2) {
	$color[1] /= 100;
	$color[2] /= 100;
	@color = hsv2rgb(@color);
	$self->grayscale_color(@color, 255);
    }
    $self->invert_scale($d->get_widget('grayscale_invert_checkbutton')->get_active());
    $self->grayscale_subtype(get_value_from_combo($d, 'grayscale_adjust_combobox'));

    create_colors_treeview($self);
}

# button callbacks

##@ignore
sub apply_colors {
    my($self, $gui, $close) = @{$_[1]};
    my @color = split(/ /, $self->{colors_dialog}->get_widget('border_color_label')->get_text);

lib/Gtk2/Ex/Geo/Dialogs/Labeling.pm  view on Meta::CPAN

	 });

    # backup

    my $labeling = $self->{backup}->{labeling} = $self->labeling;
    
    # set up controllers

    my $schema = $self->schema;

    my $combo = $dialog->get_widget('labels_field_combobox');
    my $model = $combo->get_model;
    $model->clear;
    my $i = 0;
    my $active = 0;
    $model->set ($model->append, 0, 'No Labels');
    $active = $i if $labeling->{field} eq 'No Labels';
    $i++;
    for my $fname ($schema->field_names) {
	$model->set ($model->append, 0, $fname);
	$active = $i if $labeling->{field} eq $fname;
	$i++;
    }
    $combo->set_active($active);

    $combo = $dialog->get_widget('labels_placement_combobox');
    $model = $combo->get_model;
    $model->clear;
    $i = 0;
    $active = 0;
    my $h = \%Gtk2::Ex::Geo::Layer::LABEL_PLACEMENT;
    for my $e (sort {$h->{$a} <=> $h->{$b}} keys %$h) {
	$model->set ($model->append, 0, $e);
	$active = $i if $labeling->{placement} eq $e;
	$i++;
    }

lib/Gtk2/Ex/Geo/Dialogs/Labeling.pm  view on Meta::CPAN

    return $dialog->get_widget('labels_dialog');
}

##@ignore
sub apply_labels {
    my($self, $gui, $close) = @{$_[1]};
    my $dialog = $self->{labels_dialog};

    my $labeling = {};

    my $combo = $dialog->get_widget('labels_field_combobox');
    my $model = $combo->get_model;
    my $iter = $model->get_iter_from_string($combo->get_active());
    $labeling->{field} = $model->get_value($iter);

    $combo = $dialog->get_widget('labels_placement_combobox');
    $model = $combo->get_model;
    $iter = $model->get_iter_from_string($combo->get_active());
    $labeling->{placement} = $model->get_value($iter);

    $labeling->{min_size} = $dialog->get_widget('labels_min_size_entry')->get_text;
    $labeling->{font} = $dialog->get_widget('labels_font_label')->get_text;
    @{$labeling->{color}} = split(/ /, $dialog->get_widget('labels_color_label')->get_text);
    $labeling->{min_size} = $dialog->get_widget('labels_min_size_entry')->get_text;
    $labeling->{incremental} = $dialog->get_widget('labels_incremental_checkbutton')->get_active();

lib/Gtk2/Ex/Geo/Dialogs/Symbols.pm  view on Meta::CPAN

## @method open_symbols_dialog($gui)
# @brief Open the symbols dialog for this layer.
sub open {
    my($self, $gui) = @_;

    my $dialog = $self->bootstrap_dialog
	($gui, 'symbols_dialog', "Symbols for ".$self->name,
	 {
	     symbols_dialog => [delete_event => \&cancel_symbols, [$self, $gui]],
	     symbols_scale_button => [clicked => \&fill_symbol_scale_fields, [$self, $gui]],
	     symbols_field_combobox => [changed=>\&symbol_field_changed, [$self, $gui]],
	     symbols_type_combobox => [changed=>\&symbol_field_changed, [$self, $gui]],
	     symbols_apply_button => [clicked => \&apply_symbols, [$self, $gui, 0]],
	     symbols_cancel_button => [clicked => \&cancel_symbols, [$self, $gui]],
	     symbols_ok_button => [clicked => \&apply_symbols, [$self, $gui, 1]],
	 });
    
    my $symbol_type_combo = $dialog->get_widget('symbols_type_combobox');
    my $field_combo = $dialog->get_widget('symbols_field_combobox');
    my $scale_min = $dialog->get_widget('symbols_scale_min_entry');
    my $scale_max = $dialog->get_widget('symbols_scale_max_entry');
    my $size_spin = $dialog->get_widget('symbols_size_spinbutton');

    # back up data

    my $symbol_type = $self->symbol_type();
    my $size = $self->symbol_size();
    my $field = $self->symbol_field();
    my @scale = $self->symbol_scale();

lib/Gtk2/Ex/Geo/Dialogs/Symbols.pm  view on Meta::CPAN

    return $self->{symbols_dialog}->get_widget('symbols_dialog');
}

##@ignore
sub apply_symbols {
    my($self, $gui, $close) = @{$_[1]};
    my $dialog = $self->{symbols_dialog};
    
    my $symbol_type = get_selected_symbol_type($self);
    $self->symbol_type($symbol_type);
    my $field_combo = $dialog->get_widget('symbols_field_combobox');
    my $field = $self->{index2symbol_field}{$field_combo->get_active()};
    $self->symbol_field($field) if defined $field;
    my $scale_min = $dialog->get_widget('symbols_scale_min_entry');
    my $scale_max = $dialog->get_widget('symbols_scale_max_entry');
    $self->symbol_scale($scale_min->get_text(), $scale_max->get_text());
    my $size_spin = $dialog->get_widget('symbols_size_spinbutton');
    my $size = $size_spin->get_value();
    $self->symbol_size($size);

    $self->hide_dialog('symbols_dialog') if $close;

lib/Gtk2/Ex/Geo/Dialogs/Symbols.pm  view on Meta::CPAN

    $self->hide_dialog('symbols_dialog');
    $gui->set_layer($self);
    $gui->{overlay}->render;
    1;
}

##@ignore
sub fill_symbol_type_combo {
    my($self, $symbol_type) = @_;
    $symbol_type = '' unless defined $symbol_type;
    my $combo = $self->{symbols_dialog}->get_widget('symbols_type_combobox');
    my $model = $combo->get_model;
    $model->clear;
    my @symbol_types = $self->supported_symbol_types();
    my $i = 0;
    my $active = 0;
    for (@symbol_types) {
	$model->set ($model->append, 0, $_);
	$self->{index2symbol_type}{$i} = $_;
	$self->{symbol_type2index}{$_} = $i;
	$active = $i if $_ eq $symbol_type;
	$i++;
    }
    $combo->set_active($active);
}

##@ignore
sub get_selected_symbol_type {
    my $self = shift;
    my $combo = $self->{symbols_dialog}->get_widget('symbols_type_combobox');
    ($self->{index2symbol_type}{$combo->get_active()} or '');
}

##@ignore
sub fill_symbol_field_combo {
    my($self, $symbol_field) = @_;
    my $combo = $self->{symbols_dialog}->get_widget('symbols_field_combobox');
    my $model = $combo->get_model;
    $model->clear;
    delete $self->{index2symbol_field};
    my $active = 0;
    my $i = 0;

    my $name = 'Fixed size';
    $model->set($model->append, 0, $name);
    $active = $i if $name eq $self->symbol_field();
    $self->{index2symbol_field}{$i} = $name;

lib/Gtk2/Ex/Geo/Dialogs/Symbols.pm  view on Meta::CPAN

	$active = $i if $field->{Name} eq $symbol_field;
	$self->{index2symbol_field}{$i} = $field->{Name};
	$i++;
    }
    $combo->set_active($active);
}

##@ignore
sub get_selected_symbol_field {
    my $self = shift;
    my $combo = $self->{symbols_dialog}->get_widget('symbols_field_combobox');
    ($self->{index2symbol_field}{$combo->get_active()} or '');
}

##@ignore
sub fill_symbol_scale_fields {
    my($self, $gui) = @{$_[1]};
    my @range;
    my $field = get_selected_symbol_field($self);
    return if $field eq 'Fixed size';
    my @r = $gui->{overlay}->get_viewport_of_selection;

lib/Gtk2/Ex/Geo/Dialogs/Symbols.pm  view on Meta::CPAN

}

##@ignore
sub symbol_field_changed {
    my($self, $gui) = @{$_[1]};
    my $type = get_selected_symbol_type($self);
    my $field = get_selected_symbol_field($self);
    my $dialog = $self->{symbols_dialog};
    if ($type eq 'No symbol') {
	$dialog->get_widget('symbols_size_spinbutton')->set_sensitive(0);
	$dialog->get_widget('symbols_field_combobox')->set_sensitive(0);
    } else {
	$dialog->get_widget('symbols_size_spinbutton')->set_sensitive(1);
	$dialog->get_widget('symbols_field_combobox')->set_sensitive(1);
    }
    if (!$field or $field eq 'Fixed size') {
	$dialog->get_widget('symbols_scale_min_entry')->set_sensitive(0);
	$dialog->get_widget('symbols_scale_max_entry')->set_sensitive(0);
	$dialog->get_widget('symbols_size_label')->set_text('Size: ');
    } else {
	$dialog->get_widget('symbols_scale_min_entry')->set_sensitive(1);
	$dialog->get_widget('symbols_scale_max_entry')->set_sensitive(1);
	$dialog->get_widget('symbols_size_label')->set_text('Maximum size: ');
    }



( run in 2.073 seconds using v1.01-cache-2.11-cpan-8dfa8b56332 )