On Mon, 7 Sep 2009, Thomas Adam wrote:
2009/9/7 Lucio Chiappetti <lu...@lambrate.inaf.it>:

What I'd want to do is to redefine the F4 F5 F6 so that instead of issuing a Style command to a pre-existing "Laser" window, they create one, and use the rePointLaser function/event passing to it a different shift size (actually a couple of xsize,ysize).

If F4, F5 and F6 have the predefined sizes already...

Well ... the size of the icon is given by the png file associated to the style ...


Key F4 .... PipeRead `echo "SetEnv xsize 2" && echo "SetEnv ysize 4"
&& start_application_name -options`

I was baffled by the fact you used backquotes `` instead of ''. The former freeze everything.

I am not fully there yet. What I wanted were two triplets of commands.

Shift-F1/F2/F3 should CREATE a new "pseudocursor" of a given shape.
Unshifted F1/F2/F3 should CHANGE the shape of the pseudocursor under the mouse.

I thought to define a base style, three variants (LaserA/B/C) associated to the three icons, and a "current/default" style

Style LaserBase StickyIcon, StickyAcrossDesks, Layer 9, !IconTitle,
 IconBox none, PositionPlacement UnderMouse

Style LaserA Icon beam.png , UseStyle LaserBase
Style LaserB Icon circle.png, UseStyle LaserBase
Style LaserC Icon ellipse.png , UseStyle LaserBase

Style Laser UseStyle LaserA

The creation function will imply the initial style via the -name

DestroyFunc PointLaser
AddToFunc   PointLaser
  + I Exec xterm -name Laser$0 -iconic

I originally defined shift-F4/F5/F6 to invoke PointLaser B/C/A. It did work but ... see below. Now I use PointLaser (which means only style Laser) and pass the icon name as another environment variable

PointerKey          F4 A S PipeRead 'echo "SetEnv xof 50" &&
                                     echo "SetEnv yof 50" &&
                                     echo "SetEnv ik circle" &&
                                     echo "PointLaser "'
PointerKey          F5 A S PipeRead 'echo "SetEnv xof 100" &&
                                     echo "SetEnv yof 50" &&
                                     echo "SetEnv ik ellipse" &&
                                     echo "PointLaser "'
PointerKey          F6 A S PipeRead 'echo "SetEnv xof 40"  &&
                                     echo "SetEnv yof 40" &&
                                     echo "SetEnv ik beam"    &&
                                     echo "PointLaser "'

(it's a bit verbose, I hoped I could call something like "MyF 50 50 circle" and move all the PipeRead stuff in the function MyF, but I'm not too versed with PipeRead (euphemism, it's the first time I use it, though the use of "transient environment variables" is not unlike some techniques of shell programming I used).

This way the event handler is like this

DestroyFunc rePointLaser
AddToFunc   rePointLaser
 + I ThisWindow ("Laser*") Move m-$[xof]p m-$[yof]p
 + I ThisWindow ("Laser*") Style Laser Icon $[ik].png
 + I UnsetEnv xof
 + I UnsetEnv yof
 + I UnsetEnv ik

DestroyModuleConfig Event-PL: *
*Event-PL: Cmd Function
*Event-PL: add_window rePointLaser

The point is that the unshifted F4/F5/F6 change SHAPE to all existing pseudocursors (if more than one exist). Not surprising since now one common style Laser is used. Actually even the creation shift-F4/5/6 have the side effect that all pre-existing pseudocursors are changed to the last shape invoked.

PointerKey (Laser*) F4 I N Style Laser  Icon circle.png
PointerKey (Laser*) F5 I N Style Laser  Icon ellipse.png
PointerKey (Laser*) F6 I N Style Laser  Icon beam.png

What I'd ideally need is a way to change the icon per window from the outside (having styles named Lasernnn with a sequential number ?)

PointerKey (Laser*) F4 I N Style <of the current window only> Icon circle.png

For the time being I'd live with what I have, since the real videoconf is coming soon, and I won't plan to have more than one pseudocursor at a time. But I'd like a smarter way to do this.


--
------------------------------------------------------------------------
Lucio Chiappetti - INAF/IASF - via Bassini 15 - I-20133 Milano (Italy)
For more info : http://www.iasf-milano.inaf.it/~lucio/personal.html

Reply via email to