Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!snorkelwacker!bloom-beacon!eru!hagbard!sunic!mcsun!ukc!harrier.ukc.ac.uk!rlh2 From: rlh2@ukc.ac.uk (Richard Hesketh) Newsgroups: comp.windows.x.motif Subject: Re: Review of TeleUSE Message-ID: <5559@harrier.ukc.ac.uk> Date: 28 Sep 90 09:44:43 GMT References: <1990Sep24.163032.3930@uunet!ibism!postmaster> Reply-To: rlh2@ukc.ac.uk (Richard Hesketh) Organization: Computing Lab, University of Kent at Canterbury, UK. Lines: 120 Summary: Expires: Sender: Followup-To: In article <1990Sep24.163032.3930@uunet!ibism!postmaster> lcp@uunet!ibism!postmaster (Larry Poleshuck) writes: >There has been some discussion about X-builders and development environments >for Motif. I'd like to share some of my investigations and experiences. >1) It is more mature than any of the others. Many of them are still in >beta; we are currently on using the 1.1 of TeleUSE. I'm probably jumping the gun on this one, but I am currently alpha testing my own UI Builder which has been designed to support any Xt Intrinsics based Widget Set. I intend making it freely available to anyone with ftp access sometime before the end of the year. Anyway, I have heard conflicting reports about TeleUSE but no specific technicalities. >2) It lets you build re-usable pieces of your applications. These >are what they call templates -- sets of widgets which can be re-used. >(For example, we could build a set of templates which includes the >widgets required to display a specific type of data. This would consist of >all of the text and label widgets, as well as the callbacks for edit-checks.) >Templates can be copied into new screens with the click of a button and >then particular attributes can be over-riden. If a change to an >attribute of the original template is made, that change is >automatically carried forward to all inheritors of the template, >without affecting any of the specifically over-riden attributes. >This is feature is very useful for building large complex applications. >To my knowledge none of the other builders have it. I believe Apollo/HP's Open Dialogue (which is more of a UIMS than a builder) has a similar concept to templates (infact they are also called templates). Its been around in various forms for about 5 (?) years. I use templates in my builder as well. The only difference between mine and TeleUSE appears to be the idea that if you change the original template all the copies are changed. My templates are infact just collections of Widgets instances that have had their attributes set to certain values. When a copy of a template object is made, you get a completely independent copy; changes to the original does not affect the copies. I find this useful for both object re-use and for use as "scratch" areas to perform prototyping experiments. >3) It will display your application as a hiearchy tree. This allows an >overall view of your entire application and gives the ability to make >changes either from the graphical view, or the tree view. I found this >to be a nice convenience for a simple test application -- it is >almost essential for a large, complex application. Again, none of the >other vendors have this feature yet (to my knowledge). I have this as well. The interface you are building is always on the screen and you can interact with it as well as edit it. There is no edit/run mode, just one interactive one 8-). There is a separate tree heirarchy (currently displayed as an indented list of names) which can be selected to edit objects or objects can be PICKed directly from the screen. >4) It has a dialog language that makes window development easier. The >dialog language is an X window specific language that requires much >less code to manipulate X widgets, compared with a C language/UIL >interface. For example, to get the value of an XmText string widget in >a C/UIL program requires four or five lines of code, but in the dialog >language requires a single expression. My builder does not support any programming constructs apart from editing translation tables and callback lists. It uses the Widget Creation Library to implement the created interface (the UI is generated as a Resource file and a some bootstrapping C code), therefore it generates very little traditional C code. The widgets can be manipulated using Wc actions and callbacks or in C directly from the widget id.s that are automatically created. I've toyed with the idea of incorporating a C interpreter to allow development of application specific callbacks and actions. This requires quite a bit of work though and I haven't the time. The UIMX builder incorporates a C interpreter I believe. Mine would certainly be better with some form of programming but I would like to incorporate a constraint language similar to the one used in Serpent. However the Xt Toolkit currently does not have the level of support for constrained objects that is really needed and I don't have the time to write it. This level would include all graphical objects; arcs, rectangles, filled polygons, lines, arrows. These objects would be constrained to each other using extremely simple mathematical or symbolic constraints. It would be up to the toolkit to enforce these constraints. Even without a specific interface language my builder can produce more than just static interface layouts. The Widget Creation Library includes a set of general actions and callbacks that can be used whilst developing the interface to implement typical dynamic behaviour. The interface to the builder was built mostly with itself, which seems to be a common test these days for builders. >Another e.g. To pop up a dialog box: > > ui->myWindow->myHelpDialog.Unmanaged := false; In Xt (and probably Xm 1.1) you only need one two lines of C code to extract a piece of data from an object: String text; XtVaGetValues(text_widget, XtNstring, &text, NULL); or one line to popup a dialog box: XtPopup(myHelpDialog, XtGrabNone); I don't know about UIL, I looked at it once, barfed and then went off and wrote an interactive UI Builder 8-). >Larry Poleshuck >Citibank >111 Wall Street My builder currently supports the Athena Widget Set, the 2-D HP Widget Set and my Widget Set. The only reason it does not yet support Motif is that I haven't got Motif yet. I hope that by the time it is publically released I will have folded the Motif Widgets into it. Richard Hesketh : @nsfnet-relay.ac.uk:rlh2@ukc.ac.uk : rlh2@ukc.ac.uk ..!mcsun!ukc!rlh2 --- Computing Lab., University of Kent at Canterbury, Canterbury, Kent, CT2 7NF, United Kingdom. Tel: +44 227 764000 ext 7620/3682