in reply to RFC: A Tk module for handling double clicks - Tk::DoubleClick

++ Nice job to solve a nagging problem. Although Perl Tk can also bind triple or quadruple clicks, I don't recall ever seeing an actual program that uses them, so its probably not worth the extra delay to implement. One minor nit is that some parameters are positional, while the convention for Tk module api's seems to be for all parameters to be named values.

  • Comment on Re: RFC: A Tk module for handling double clicks - Tk::DoubleClick

Replies are listed 'Best First'.
Re^2: RFC: A Tk module for handling double clicks - Tk::DoubleClick
by liverpole (Monsignor) on Aug 07, 2009 at 15:02 UTC
    Thanks, hangon.

    I thought about your suggestion to make all parameters non-positional, but it occurs to me that there are a significant number of Tk methods (most notably in Tk::Canvas) where mandatory parameters are positional, and are followed by the optional ones.  Here is just a partial list:

    $canvas->addtag(tag, searchSpec, ?arg, arg, ...?) $canvas->bbox(tagOrId, ?tagOrId, tagOrId, ...?) $canvas->create(type, x, y, ?x, y, ...?, ?option, value, ...?) $canvas->createArc(x1, y1, x2, y2, ?option, value, option, value, ...? +) $canvas->createBitmap(x, y, ?option, value, option, value, ...?) $canvas->createGrid(x1, y1, x2, y2, ?option, value, option, value, ... +?) $canvas->createImage(x, y, ?option, value, option, value, ...?) $canvas->createLine(x1, y1..., xn, yn, ?option, value, option, value, +...?) $canvas->createOval(x1, y1, x2, y2, ?option, value, option, value, ... +?) $canvas->createPolygon(x1, y1, ..., xn, yn, ?option, value, option, va +lue, ...?) $canvas->createRectangle(x1, y1, x2, y2, ?option, value, option, value +, ...?) $canvas->createText(x, y, ?option, value, option, value, ...?) $canvas->createWindow(x, y?, -option=>value, -option=>value, ...?)

    As the widget and the single-click and double-click callbacks are mandatory, it seems like they work more naturally as positional arguments.


    s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/