On Jul 11, 2011, at 5:35 PM, Jonathan Wilkes wrote:
--- On Mon, 7/11/11, Hans-Christoph Steiner hans@at.or.at wrote:
From: Hans-Christoph Steiner hans@at.or.at Subject: implementing tooltips WAS: [PD] Pd-extended 0.43 updates:
lots of new editing features To: "Jonathan Wilkes" jancsika@yahoo.com Cc: "Martin Peach" martin.peach@sympatico.ca, "Mathieu Bouchard" <matju@artengine.ca, "pd-list" pd-list@iem.at
Date: Monday, July 11, 2011, 11:18 PM
On Jul 11, 2011, at 3:58 PM, Jonathan Wilkes wrote:
--- On Mon, 7/11/11, Mathieu Bouchard matju@artengine.ca
wrote:
From: Mathieu Bouchard matju@artengine.ca Subject: Re: [PD] Pd-extended 0.43 updates: lots
of new editing features
To: "Martin Peach" martin.peach@sympatico.ca Cc: "pd-list" pd-list@iem.at Date: Monday, July 11, 2011, 7:45 PM On Mon, 11 Jul 2011, Martin Peach wrote:
On 2011-07-11 12:06, Jonathan Wilkes wrote:
But I'm not sure where to store the
tooltip
string...
Not sure if that's what you mean, but in max
the
assist method receives a number corresponding to
the inlet
or outlet and returns a pointer to the appropriate
string,
so the string is already stored somewhere in the
memory
allocated to the object.
Not necessarily : the assist-method could be
storing the
data anywhere, or generating it on-the-fly from
whatever.
Hm...
1 when creating an xlet for the first time, bind its
tag on <Enter> and <Leave> to call pdtk_tooltips, and send $canvas, $inletno and $object_name as arguments
2 in tcl, search helppath for $object_name-help.pd,
then parse it for $inletno (which I added as a pd META tag for every internal help patch-- plus lots of externals, too)
3 filter the matching line in tcl to display
everything after $inletno minus the semicolon. (I.e., "text 20 20 INLET_0 float symbol bang;" becomes "float symbol bang")
4 create that text on a little tooltip rectangle on
$canvas; delete it on <Leave>
All you add on the pd side is a sys_gui call to create
the binding, then handle everything else on the tcl side.
Does that make sense? If so, then once someone
gets it working (maybe me), you'd not only have tooltips, but you'd have tooltip content for over 1000 object classes (minus exceptions like "list split", and variable/rightmost inlets which I'm not sure how to handle...)
Also doesn't address tooltips for abstractions.
-Jonathan
I like this idea quite a bit. If the tooltip info is stored in a help patch, then we have a single way of specifying the tooltip info regardless if the object was written in C, Pd, Lua, etc. The downside will be a lot more file parsing on load. Perhaps we can do some kind of low priority thread kind of thing in Tcl to do that loading.
One detail, instead of searching the path for the help patch, really we should try to get the full path of the object in question, then use that to get the help patch...
Ok. Is c_helpname guaranteed to be inside c_externdir?
I can't remember ever using c_helpname, so I can't really say.
IMHO, I don't think we should support other ways of specifying the
help file. There are very few objects that use it, those are fixed in
Pd-extended, it'll add a lot to the work of doing this, etc. etc. So
I say just take the object name and add the '-help' to it. That
covers 99.5% of objects. Then once its working, it should be possible
to go back and add hacks to support hacks ;)
.hc
"[W]e have invented the technology to eliminate scarcity, but we are
deliberately throwing it away to benefit those who profit from
scarcity." -John Gilmore