NAME
   Tk::MouseGesture - Create bindings for mouse gestures.

SYNOPSIS
       use Tk::MouseGesture;
       my $mg = $top->MouseGesture('B1-left',
                             -xres     => 20,
                             -yres     => 20,
                             -min      => 50,
                             -command  => sub { print "yes!\n" });
       $mg->addGesture('B3-diag-UL');

DESCRIPTION
   Tk::MouseGesture allows your Perl/Tk app to recognize various mouse
   gestures. A mouse gesture is a series of mouse motions (usually
   accompanied by a button drag) that act as short-cuts to certain
   operations. They are most widely used in web browsers like Opera and
   Mozilla. Gestures are bound to callbacks such that when a user performs
   a recognized gesture, the corresponding callback is called.

CONSTRUCTOR
   A new mouse gesture binding can be created as follows:

   "$mg = $top->MouseGesture(Gesture, ?options?);"

   where "Gesture" is one of the defined gestures, as described in the
   section on "GESTURES". The parent of a Tk::MouseGesture object has to be
   a Toplevel widget (Tk::MainWindow is a Toplevel). If the parent is not a
   Toplevel widget, then Tk::MouseGesture will figure out the Toplevel
   window that contains the parent, and assume that as its parent. The
   other options come in hash-value syntax, and are described below. The
   call to "MouseGesture()" returns a Tk::MouseGesture object.

   Valid options are:

   -xres
       This defines the *X resolution in pixels*, which is a vertical
       window of this width that the mouse pointer has to stay within for
       the entire duration of the gesture. Defaults to 20 pixels.

   -yres
       This defines the *Y resolution in pixels*, which is a horizontal
       window of this width that the mouse pointer has to stay within for
       the entire duration of the gesture. Defaults to 20 pixels.

   -min
       This defines the minimum length of the gesture in pixels. If a
       gesture is shorter than this length, then it is not recognized.
       Defaults to 50 pixels.

   -command
       This defines the callback to be executed upon the successful
       completion of a gesture. It accepts any valid Tk Callback as defined
       in the Tk::Callbacks pod. It defaults to an empty sub. You can
       modify it via the call to "command()" as described in the METHODS
       entry elsewhere in this document.

   Note that there is no destructor. Currently, there is no way to destroy
   a Tk::MouseGesture object as this might delete any bindings to the
   parent widget set by the user. You can disable the recognition of a
   mouse gesture via a call to "disable()" as described in the METHODS
   entry elsewhere in this document.

METHODS
   The following methods are available:

   *$mg*->command(?Callback?)
       This method allows you to modify the callback bound to the gesture
       object "$mg". It takes one optional argument which is a valid Tk
       Callback as defined in the Tk::Callbacks pod. If no argument is
       given, then the currently bound callback is returned.

   *$mg*->disable()
       This disables the recognition of this particular gesture.

   *$mg*->enable()
       This enables the recognition of this particular gesture.

   *$mg*->disableAll()
       This disables the recognition of all defined mouse gesture.

   *$mg*->enableAll()
       This enables the recognition of all defined mouse gesture.

   *$mg*->addGesture(Gesture)
       This adds another gesture binding. "Gesture" has to be one of the
       defined gestures, as described in the GESTURES entry elsewhere in
       this document. The callback associated with this gesture is the same
       as that supplied during the constructor (or set via a "command()"
       call). This allows you to create multiple gesture definitions that
       are bound to the same callback. To define another callback, you have
       to create a new Tk::MouseGesture object.

GESTURES
   For now, only linear gesture are defined. These are:

   B1-left
   B2-left
   B3-left
       Click on the first, second or third button, and drag the mouse to
       the left.

   B1-right
   B2-right
   B3-right
       Click on the first, second or third button, and drag the mouse to
       the right.

   B1-up
   B2-up
   B3-up
       Click on the first, second or third button, and drag the mouse
       upwards.

   B1-down
   B2-down
   B3-down
       Click on the first, second or third button, and drag the mouse
       downwards.

   B1-diag-UL
   B2-diag-UL
   B3-diag-UL
       Click on the first, second or third button, and drag the mouse
       diagonally upwards and to the left (north-west) at 45 degrees.

   B1-diag-UR
   B2-diag-UR
   B3-diag-UR
       Click on the first, second or third button, and drag the mouse
       diagonally upwards and to the right (north-east) at 45 degrees.

   B1-diag-LL
   B2-diag-LL
   B3-diag-LL
       Click on the first, second or third button, and drag the mouse
       diagonally downwards and to the left (south-west) at 45 degrees.

   B1-diag-LR
   B2-diag-LR
   B3-diag-LR
       Click on the first, second or third button, and drag the mouse
       diagonally downwards and to the right (south-east) at 45 degrees.

BUGS
   None that I know of.

INSTALLATION
   Either the usual:

           perl Makefile.PL
           make
           make install

   or just stick it somewhere in @INC where perl can find it. It's in pure
   Perl.

AUTHOR
   Ala Qumsieh <[email protected]>.

   Copyright (c) 2003 Ala Qumsieh. All rights reserved.

   This program is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.