Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: How to control a Tk::AbstractCanvas with a second one

by Anonymous Monk
on Nov 29, 2012 at 09:33 UTC ( #1006217=note: print w/ replies, xml ) Need Help??


in reply to How to control a Tk::AbstractCanvas with a second one

My code is something like this ...

Why don't you start with ex/chvw.pl, it shows this exactly?

Ctrl+MouseRight zooms the first canvas, and the second canvas

Ctrl+MouseMiddle moves the first canvas, and the second canvas

LeftMouse rotates the first canvas, doesn't do much for the second :)


Comment on Re: How to control a Tk::AbstractCanvas with a second one
Replies are listed 'Best First'.
Re^2: How to control a Tk::AbstractCanvas with a second one
by Anonymous Monk on Nov 29, 2012 at 09:34 UTC
Re^2: How to control a Tk::AbstractCanvas with a second one
by Anonymous Monk on Nov 29, 2012 at 10:44 UTC

    And here it is, busywork

    #!/usr/bin/perl -- use strict; use warnings; use Tk; use Tk::AbstractCanvas; { my $mwin = my $mw = tkinit; my $acnv = $mwin->AbstractCanvas()->pack(-expand => 1, -fill => 'b +oth'); $acnv->controlNav(1); # advanced CtrlKey+MouseDrag Navigation $acnv->rectToPoly(1); $acnv->ovalToPoly(1); my $rect = $acnv->createRectangle( 7, 8, 24, 23, -fill => 'r +ed'); my $oval = $acnv->createOval( 23, 24, 32, 27, -fill => 'gre +en'); my $line = $acnv->createLine( 0, 1, 31, 32, -fill => 'bl +ue', -arrow => 'la +st'); my $labl = $mwin->Label(-text => 'Hello AbstractCanvas! =)'); my $wind = $acnv->createWindow(15, 16, -window => $labl); $acnv->CanvasBind('<x>' => \&exit); $acnv->CanvasFocus(); $acnv->viewAll(); my $c2 = $mwin->Canvas( -background => 'black', #~ -width => 100, #~ -height => 100, #~ -width => 20, #~ -height => 20, -width => 30, -height => 30, ); $c2->createOval(0, 0, 5, 5, -fill => 'white',-tags => ['shabba'] ) +; $mw->bind( $c2, '<ButtonPress-1>' => [ \&shabba , $acnv ]); $c2->place( qw/ -x 10 -y 10 / ); } MainLoop; sub shabba { my( $c2, $acnv ) = @_; #~ my $c2 = $Tk::event->W; my $x = $Tk::event->x; my $y = $Tk::event->y; #~ use Data::Dump; #~ dd [ $c2->configure ], [ $c2->itemconfigure( 'shabba' )] ; $c2->coords( 'shabba', $x, $y , $x+5, $y+5); # size is 5 my $width = $c2->cget('-width'); my $height = $c2->cget('-height'); my $xview = $x / $width; my $yview = $y / $height; $acnv->xviewMoveto( $xview ); $acnv->yviewMoveto( $yview ); }

    See also Tk::Zinc / http://web.archive.org/web/20061020033841/http://www.tkzinc.org/

Re^2: How to control a Tk::AbstractCanvas with a second one
by KuntalBhusan (Acolyte) on Nov 29, 2012 at 14:57 UTC
    Thanks for the reply....but I actually wanted the reverse...I want to move the orange rectangle in the second canvas (which will have a scaled down view of the original) and the first canvas display should move appropriately...is it possible ?
        Ya...my concern was in moving the rectangle (rather dragging it to pan the main canvas view). I am now able to do it almost the way I wanted but in a different way...using the rubber band zoom function the Canvas2 and applying the effect in Canvas1...works like a charm :)
        ## $can is the canvas displaying the main graph and $can_1 is the cont +roller canvas... $can_1->configure(-bandColor => 'orange'); $can_1->CanvasBind('<Button-1>' => sub {$can_1->Canvas +Focus; $can_1->rubberBand(0)}); $can_1->CanvasBind('<B1-Motion>' => sub {$can_1->rubberBand(1) +}); $can_1->CanvasBind('<ButtonRelease-1>' => sub { my @box = $can_1->rubberBand(2); $can->viewArea(@box) });
        Thanks for all the help I got....Happy coding

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1006217]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (8)
As of 2015-07-31 06:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (274 votes), past polls