Gtk2-Ex-Geo

 view release on metacpan or  search on metacpan

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


## @method register_commands($commands)
# @brief Extend the capabilities by adding new commands
sub register_commands {
    my($self, $commands) = @_;
    unless (ref $commands->[0]) {
	my @commands;
	while (ref $commands->[$#$commands]) {
	    push @commands, pop @$commands;
	}
	my $menu = Gtk2::Menu->new;
	for my $command (reverse @commands) {
	    my $name = $command->{label};
	    my $item;
	    #$item = Gtk2::SeparatorMenuItem->new();
	    $item = Gtk2::MenuItem->new_with_label($name);
	    $item->signal_connect(activate => $command->{sub}, $self);
	    $menu->append($item);
	}
	my %args = @$commands;
	if (!$args{icon_widget} and $Config::Config{'osname'} ne 'MSWin32') {
	    $args{icon_widget} = Gtk2::Label->new($args{label});
	}
	my $button;
	if ($args{stock_id}) {
	    $button = Gtk2::ToolButton->new_from_stock($args{stock_id});

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

		  $self->delete_selected(); 
	      }
	    );

	# add items from the layer classes
	unless (@layers) {
	    push @items, ( 1 => 0 );
	    push @items, $layer->menu_items();
	}
	
	my $menu = Gtk2::Menu->new;
	my $params = @layers ? [\@layers, $self] : [$layer, $self];
	$i = 0;
	for (my $i =0; $i < @items; $i+=2) {
	    my $item;
	    unless ($items[$i+1]) {
		$item = Gtk2::SeparatorMenuItem->new();
	    } else {
		$item = Gtk2::MenuItem->new($items[$i]);
		$item->signal_connect(activate => $items[$i+1], $params);
	    }
	    $item->show;
	    $menu->append($item);
	}
	$menu->popup(undef, undef, undef, undef, $event->button, $event->time);
	return 1;

    } elsif ($column =~ /^v/) {

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

    my(undef, $event, $self) = @_;

    return 0 unless $self->{layers} and @{$self->{layers}};
    $self->grab_focus;

    my $handled = 0;

    if ($event->button == 3 and $self->{menu}) {

	$self->delete_rubberband if $self->{path};
	my $menu = Gtk2::Menu->new;
	for (my $i =0; $i < @{$self->{menu}}; $i+=2) {
	    my $name = $self->{menu_item_setup}->($self->{menu}->[$i], $self);
	    my $item;
	    unless ($self->{menu}->[$i+1]) {
		$item = Gtk2::SeparatorMenuItem->new();
	    } else {
		$item = Gtk2::MenuItem->new($name);
		$item->signal_connect(activate => $self->{menu}->[$i+1], $self);
	    }
	    $item->show;
	    $menu->append ($item);
	}
	$menu->popup(undef, undef, undef, undef, $event->button, $event->time);
	$handled = 1;
	
    } elsif ($event->button == 1) {

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

	    _do_context_menu ($widget, $event);
	    return TRUE;
	}
	return FALSE;
					});
    return $self;
}

sub _do_context_menu {
    my ($self, $event) = @_;
    my $menu = Gtk2::Menu->new;
    foreach my $method ('expand_all', 'collapse_all') {
	my $label = join ' ', map { ucfirst $_ } split /_/, $method;
	my $item = Gtk2::MenuItem->new ($label);
	$menu->append ($item);
	$item->show;
	$item->signal_connect (activate => sub {
	    $self->$method;
			       });
    }
    $menu->popup (undef, undef, undef, undef, $event->button, $event->time);
}

sub _fill_scalar {

t/02.t  view on Meta::CPAN

$gis->add_layer($layer);

$gis->{overlay}->signal_connect(update_layers => 
	sub {
	#print STDERR "in callback: @_\n";
	});

$gis->register_commands(
    [ 
      tag => 'test popup',
      label => 'Menu',
      tip => 'Press to get a menu',
      {
	  label => 'menu item 1',
	  sub => sub {
	      my(undef, $gui) = @_;
	      print STDERR "exec menu item 1\n";
	  }
      },
      {
	  label => 'menu item 2',



( run in 1.447 second using v1.01-cache-2.11-cpan-49f99fa48dc )