Re: Widget Button trigger through keypress? [message #19414] |
Tue, 14 March 2000 00:00 |
John-David T. Smith
Messages: 384 Registered: January 2000
|
Senior Member |
|
|
Oliver Smith wrote:
>
> In order to satisfy users of the previous version of the software I'm
> developing, I'd like to be able to trigger a widget button by pressing a
> designated key on the keyboard, whilst retaining the option to press buttons
> with the mouse.
>
> I know the get_kbrd function can be used to read a character from the
> keyboard, which could be tested in a case statement and then the appropriate
> procedure called; but this seems rather long-winded. Is there a simple way
> to associate a keyboard button with a widget button?
>
Get_kbrd only works at the terminal (command input line), not within widgets, so
that won't work (unless you tell your user to click back there and enter text,
plus have a timer event loop running). What I usually do is have a graphical
widget button which changes it's graphic depending on whether it is selected or
not, and use a hidden text widget to capture relevant keyboard events, which
then sets the graphics as if it had been pushed (I often use B&W bitmaps and XOR
them with 255b to invert them -- you could obviously also use color bmp files).
David refers you to the page which preserves this hidden text widget hackery for
all time.
JD
P.S. has anyone found out how to set color bitmaps into button values without
keeping them all in separate files?
--
J.D. Smith |*| WORK: (607) 255-5842
Cornell University Dept. of Astronomy |*| (607) 255-6263
304 Space Sciences Bldg. |*| FAX: (607) 255-5875
Ithaca, NY 14853 |*|
|
|
|
Re: Widget Button trigger through keypress? [message #19416 is a reply to message #19414] |
Tue, 14 March 2000 00:00  |
davidf
Messages: 2866 Registered: September 1996
|
Senior Member |
|
|
Oliver Smith (osmith@dera.gov.uk) writes:
> In order to satisfy users of the previous version of the software I'm
> developing, I'd like to be able to trigger a widget button by pressing a
> designated key on the keyboard, whilst retaining the option to press buttons
> with the mouse.
>
> I know the get_kbrd function can be used to read a character from the
> keyboard, which could be tested in a case statement and then the appropriate
> procedure called; but this seems rather long-winded. Is there a simple way
> to associate a keyboard button with a widget button?
You could probably figure out a way to incorporate
a keyboard event into your widget program with
GET_KBRD, but that will, I predict, be one sick
puppy. I wouldn't be surprised if it had the
intuitive usability characteristics of, say,
the table widget. :-)
You would be better off spending the time convincing
your users of the great NEW features of the program.
Or, if you absolutely need the capability, investigating
JD's neat hack for incorporating keyboard events into
widget programs:
http://www.dfanning.com/tips/keyboard_events.html
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
|
|
|