[comp.windows.x] collected questions

costello%nnfvax.DECnet@CHEME.TN.CORNELL.EDU ("NNFVAX::COSTELLO") (05/31/90)

I've just joined this list, so some of the following questions may
have been covered previously (though I didn't see anything in the
Frequently Asked Questions posting, so hopefully I'll be safe from
flames...).

For all of these questions, I'm working in a VMS 5.3/DECwindows 2.0
environment, including the DECwindows toolkit (VAX binding), and I do
my programming in VAX Pascal. I use UIL wheverer I can. I suppose that
this collection of facts makes me different from most other readers
of this list, but hopefully your collective wisdom will translate
well. 

1) How to use a Command Window widget

I'm using a COMMAND_WINDOW widget as a child of a MAIN_WINDOW widget.
I'd like  the user to be able to type a command into the
COMMAND_WINDOW, with automatic command completion. That is, once the
user has typed enough letters of a command for it to unambiguously
specified, the system would automatically supply the remaining
characters. For instance, if the command set included the commands
"MOVE", "MODIFY", and "MIRROR", typing an "M" would merely echo the
"M". Typing an "I" would cause the entire word "MIRROR" to appear in
the command window, with the cursor positioned on the first "R" 
>and the keyboad put into overstrike mode<. The echoing is fairly
easy to do using the callbacks available with COMMAND_WINDOW, but
positioning and overstrike mode are a different story. Unfortunately,
they are absolutely critical if this scheme is going to work well,
since otherwise the user won't be able to predict when the system is
going to take over and complete the command.

Here's the question. How do I position the cursor at the correct
location, and put the keyboard into overstrike mode? Alternatively,
can anyone think of another approach that yields a similar result?

2) Interrupt

The application I'm writing will on occasion go off into a long loop
to, for instance, draw a pattern on the screen. While this is going
on, the wait indicator (for DECwindows, the wristwatch) will become
the pointer pattern, which means no command can be selected from the
Menu Bar until the display has been done. Every significant loop is
conditional on a global boolean INTERRUPT_FLAG, so once this flag gets
set, the loop stops.

What I need is some way to implement an INTERRUPT command (preferably
on the MENU_BAR of my MAIN_WINDOW) that will set this flag, even if
something is running. This might then be implemented as an accelerator
from a particular keystroke (such as Ctrl-C). This was reasonably easy
to do in VWS using ASTs, so I'm hoping it's similarly easy in X.

3) Log Scale

The SCALE widget is a handy way to enter an analog value such as a
percentage, but it would be handier still if you could specify that it
return a floating point value, and use a log scale. I have an
application where I'd like to return a factor which could be anywhere
from .001 to 1000, and a log scale is the most natural way to specify
the number. Is there an answer short of writing my own widget?

4) Interface Builder

There are some tools available that will allow an application
developer to layout manu bars, dialog boxes, and all the other
components of an X user interface on the screen in a WYSIWYG fashion,
and then spit out the code which describes the hierarchy of widgets to
implements that interface. 

I understand that DEC has such a gadget, called VUIT, which is nearly
ready to send out into the world. I'd like to know what else is
available in this area, and what people think of the various products? 

Thanks for all assistance in pushing me up the learning curve...

Dennis Costello
National Nanofabrication Facility
costello@cheme.tn.cornell.edu
(607) 255-2329