Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!uwm.edu!zaphod.mps.ohio-state.edu!think!mintaka!bloom-beacon!CHEME.TN.CORNELL.EDU!costello%nnfvax.DECnet From: costello%nnfvax.DECnet@CHEME.TN.CORNELL.EDU ("NNFVAX::COSTELLO") Newsgroups: comp.windows.x Subject: collected questions Message-ID: <9005302112.AA03152@expo.lcs.mit.edu> Date: 30 May 90 20:59:00 GMT Sender: daemon@athena.mit.edu (Mr Background) Organization: The Internet Lines: 77 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