[comp.windows.x] XToolkit

jkh@violet.berkeley.edu.UUCP (05/27/87)

We've all been playing with Ram Rao's X Toolkit for awhile (the
"snapshot" toolkit, released many eons ago on decwrl.dec.com) and
are sort of wondering where it is in development. When is the next
release scheduled for? Is it scheduled? What's MIT doing?

					Jordan Hubbard
					U.C. Berkeley
					jkh@violet.berkeley.edu

karlton@decwrl.DEC.COM (Philip Karlton) (05/28/87)

An X/V11 version of the X toolkit will enter alpha test on July 15th when the
server and library enter beta test.

PK

karlton@decwrl.UUCP (05/29/87)

Last night I said
>An X/V11 version of the X toolkit will enter alpha test on July 15th when the
>server and library enter beta test.

This is what I get for posting late at night; July 15th is a definite type.

Beta test starts on June 15, 1987. Alpha test for the toolkit is also on
June 15.

PK

yanagida@ole.UUCP (Bruce A. Yanagida) (05/29/87)

In article <3724@jade.BERKELEY.EDU> jkh@violet.berkeley.edu(Jordan K. Hubbard) writes:
>We've all been playing with Ram Rao's X Toolkit for awhile (the
>"snapshot" toolkit, released many eons ago on decwrl.dec.com) and
>are sort of wondering where it is in development. When is the next
>release scheduled for? Is it scheduled? What's MIT doing?
>
>					Jordan Hubbard
>					U.C. Berkeley
>					jkh@violet.berkeley.edu


In addition to the questions above, I would like to know how close will the
real version of the Toolkit be to the "A Proposed Architecture" paper.  If it's
not identical, what are the differences?

It's tough to plan your development on software that doesn't exist yet.
-- 

Bruce A. Yanagida
Seattle Silicon Corporation
3075 112th Ave NE
Bellevue, WA  98004
(206)-828-4422

UUCP:  ...!uw-beaver!tikal!ole!yanagida

PAYNE@latlog.UUCP (10/24/87)

I am trying my best to get some use out of the toolkits but I have a few
(simple) questions:

   Widgets no longer appear to be X-windows , whilst I can live with
this it would appear to give me problems with mixing widgets and
windows?

For instance: how do I use XtAddEventHandler when I am trying to get
              input from ordinary X windows as this procedure expects
              a Widget id?

Also , is there no concept on the dispatcher of getting back unrecognized
events as there was in the alpha release (we consider this useful as we
do not always want to have to register handlers, i.e. we would like
the choice).

We would also appreciate an update on the toolkit position and how
competing toolkits might affect the issue???????????????

Thanks, Julian Payne (European Silicon Structures).

bobmi@hpcvlo.HP.COM (Bob Miller) (10/26/87)

In the new X Toolkit widgets are the coin of the realm.  And every widget
contains a window.  XtAddEventHandler (aside from doing an XSelectInput on
the specified event and window) attaches the event handler to the core part
of the widget instance structure.  When the event of interest finally occurs 
it is from this widget event table that the handler procedure is taken.
So, in order to use XtAddEventHandler you will need to surround your
window with a widget structure.

As you suspected, the dispatcher has no facilities for notifying your
program that an event did not belong to any widget.  Short of rewriting
XtDispatchEvent (one of the 2 routines in XtMainLoop) you will have to live 
with this. 

--Bob Miller

kit@athena.mit.edu.UUCP (10/28/87)

I was talking to Ralph Swick the other day about the problems of not
having a window widget, he and I decided that it would be a good
thing, so I wrote one.  It is a hack on the label widget, and takes an event
handler and a callback, and aclosure as arguments, this it handles its events
and you do not need to call XtAddEvent I think this is the right thing to do.
It seems to work, but I haven't had time to bash on it yet.  The design may 
change tho.  If anyone wants it let me know.

BTW there is a little know (at least to me) argument to toplevel widgets that
allows then to resize, it is called 'XtNallowtopresize' setting this to true
allows buttonboxes to do the right thing, I foud this out the hard way, just 
thought I might save some of you some headaches.


					Chris Peterson

					MIT Project Athena - 
					  Systems Developement

Disclaimer:  These are my optionions, not Athena policy.

PAYNE@latlog.UUCP (11/09/87)

I have some questions about the X toolkit (my last query did not seem
to get through):

1) How do you register ordinary windows (i.e. not widgets) with the
   dispatcher. If this is not possible then the XtDispatch routine
   should indicate whether or not it used the event?

2) Can more than one function be called automatically by the dispatcher
   for the same widget (or window) and the same event mask?

3) I have got the text widget to work but I have had some problems
   understanding how it should be used:

		     a) When you pass a string to XtTextStringCreate does it use the
        string as a buffer or does it copy the string to its own buffer,
        who is in charge of checking that the buffer does not overflow
        and dealing with it when the end of the buffer is reached?

     b) What I want to do is have a XttextAppend widget where I can send
        it a prompt and then type commands in which I can send to the
        application every time I get a newline. The text widget is
        wonderful for appending text and moving through the text (I love
        the emacs-type functionality) but it seems very hard to get
        information back about what I typed. At the moment I have to
        check key press events and maintain my own buffer, I can't read
        the data itself because I need to distinguish between what the
        user typed and what the application printed.

     c) I assume that the only way for the application to put text into the
        widget is by using XtTextReplace, if this is so and the function
        is public then the typedef for XtTextBlock should be in Text.h
        and not TextP.h? (XtTextBlock is the type of one of the arguments)

4) Do I need to write my own forms or will they appear with the next release?

Should this type of query go straight to the toolkit people? If the answer
is yes could someone tell me who the correct person to send queries to is??

Keep up the good work.

Julian Payne.
European Silicon Structures (ES2).

price@DECWRL.DEC.COM (11/11/87)

Julian Payne asks several questions:


1) How do you register ordinary windows (i.e. not widgets) with the
   dispatcher. If this is not possible then the XtDispatch routine
   should indicate whether or not it used the event?

The current toolkit requires a widget to be registered with the
toolkit. This means that your window must be packaged ( "wrapped" ) in
a widget. The current toolkit does not include a "Window Widget". I expect
that this will appear shortly, since there has already been xpert traffic
discussing the need for such a beast. In the mean time, you must write a
widget to contain you window. The widget doesn't really have to do much
else; it can be a subclass of the Core widget, and you can use the widget
handle to externally register event handlers for expediency.


2) Can more than one function be called automatically by the dispatcher
   for the same widget (or window) and the same event mask?

yes.

3) I have got the text widget to work but I have had some problems
   understanding how it should be used:

   a) When you pass a string to XtTextStringCreate does it use the
        string as a buffer or does it copy the string to its own buffer,
        who is in charge of checking that the buffer does not overflow
        and dealing with it when the end of the buffer is reached?

It uses the string as a buffer. It does not copy it. This is probably
not a good idea, but that's the way it currently works. The Text widget
is *supposed* to handle overflow checking, but it currently doesn't. This is 
not a feature.

     b) What I want to do is have a XttextAppend widget where I can send
        it a prompt and then type commands in which I can send to the
        application every time I get a newline. The text widget is
        wonderful for appending text and moving through the text (I love
        the emacs-type functionality) but it seems very hard to get
        information back about what I typed. At the moment I have to
        check key press events and maintain my own buffer, I can't read
        the data itself because I need to distinguish between what the
        user typed and what the application printed.

You should be able to achieve this functionality by using the translation
manager. At least that is the intent. Unfortunately, the current text
widget does not list a DoCallback() function in its textActionsTable (Text.c).
The simple fix is for you to add this function yourself. You would then
specify that the RETURN key inserts and also calls back in your .XtActions
file, or in an ActionsTable you pass when you create the text widget.

This needs to be fixed in a future release. (I can't commit MIT to this,
but I expect it will probably happen).

     c) I assume that the only way for the application to put text into the
        widget is by using XtTextReplace, if this is so and the function
        is public then the typedef for XtTextBlock should be in Text.h
        and not TextP.h? (XtTextBlock is the type of one of the arguments)

Yes, it should be in Text.h.

4) Do I need to write my own forms or will they appear with the next release?

A forms widget should appear in the next release (Here I go committing 
MIT again, though). It's port didn't make the deadline for this release.

Should this type of query go straight to the toolkit people? If the answer
is yes could someone tell me who the correct person to send queries to is??

This type of query is definitely appropriate here. We (toolkit group) will
make every effort to respond promptly.

-chuck

PAYNE@latlog.UUCP (11/17/87)

I have been using the X toolkit for some time now and have got to the
point where I want to be able to have multiple instances as children
of the root window (not the toplevel widget). I missed most of the earlier
discussion on the toplevel widget so I hope someone will be kind enough to
explain the situation again. In the belief that I could not do this given
the current toplevel implementation I have created a root window widget
which does nothing but whose id I can pass through to other widgets as
their parent (exactly as you would do for windows). Is this the correct
approach or will I run into problems at some point?
Incidentally I am currently getting warnings telling me that the widget
is not managed in XtGeometryRequest, I haven't yet discovered if this
refers to the parent (i.e. my root widget) or the child widget.

Is it possible for the toolkit team to put out an `approved' fix for this
problem to save us hacking up our own, or alternatively please tell me where
I am going wrong if what I want to do is already possible?

I have another releated question, I am using a SUN 3/110 so I have access
to two screens. I would like to explore the possibility of writing to the
two screens from within one application, can I do this using the toolkit
as it currently stands?

Related to this is a question for the window manager people, why do I have
to run a uwm for EACH screen, surely one uwm could deal with all screens,
after all thats what the X server does?

Thanks, Julian Payne.
European Silicon Structures (ES2).
(payne@latlog.uucp)

PAYNE@latlog.UUCP (02/15/88)

I have a question about the translation tables:

	How do you alter a single translation at the program level
	i.e. when you call XtCreateWidget rather than through a
	user supplied value?

Thanks, Julian Payne.
European Silicon Structures (ES2).
(payne@latlog.uucp)

swick@ATHENA.MIT.EDU (Ralph R. Swick) (02/16/88)

Two (new) functions allow programmatic modifications to a widget's
translation table; XtOverrideTranslations and XtAugmentTranslations.
The former replaces entries in the table, the latter appends only if
the event sequence does not already exist in the table.

rusty@velveeta.berkeley.edu (03/16/88)

Overall, I'm _VERY_ impressed.  Many, many thanks to the X Toolkit
people!

Here are some complaints, suggestions, and questions:

Widget placement; needs something like TeX "glue".  For example, I am
making a dialog box that consists of a label widget with the string
"really quit?" and under it 2 buttons "yes" and "no".  I want the yes
button flush left and the no button flush right.  I couldn't get this
layout.  I would like to be able to put a spring or some "glue" that
has infinite expandability between the 2 buttons.

Documentation needs more work.

	Needs a XT(1) manual page like the X(1) manual page.  It's
	wrong for user-level manual pages for programs that were
	written with Xt to rely on the user reading the X Toolkit
	programmer's documentation for additional info on command line
	options and whatnot.  Likewise for manual pages that refer the
	user to the Xlib documentation (cf, X(1)).  There needs to be
	a section 1 manual page devoted to resources, or put it in the
	X(1) manual page.

	Xt needs a set of (3X) manual pages.

	Needs a better/clearer explanation of what things are
	inherited from the very top.  E.g., where is it documented
	that the -icon option starts a toolkit program iconified?

	Should be more forceful about telling programmers to use the
	provided typedefs.  For example, I've seen several occurences
	of "sizeof(char *)" in applications when it should be
	"sizeof(String)".

	The section on the XtN{left,right,up,down} and XtNrubber stuff
	is very unclear to me.  I played around with them but they
	didn't do very much.

How do you startup a toolkit window and get it placed somewhere?  That
is, I want to use a popup dialog/query window and don't want the user
to have to use the mouse to place it, it should just pop up near the
mouse.

--------------------------------------
	rusty c. wright
	rusty@cartan.berkeley.edu ucbvax!cartan!rusty

swick@ATHENA.MIT.EDU (Ralph R. Swick) (03/16/88)

>  Widget placement; needs something like TeX "glue".

Yes, the FormWidget is deficient in many respects.  Expect improvements
as soon as we get a chance to implement our paper design.  We also have
some other contributed code to merge.

> Documentation needs more work.

Acknowledged.

> I want to use a popup dialog/query window and don't want the user
> to have to use the mouse to place it.

A PopupShellWidget class is in the works for Xaw which will do
parent-relative positioning.

bettaieb@hslrswi.UUCP (bettaieb) (03/17/88)

Lately I have been working on user interfaces, 
and I found special interest in X windows. As is always the case, the best
way to evaluate a software package is to try it. So I am trying to do that now.
I must say that from the beginning I was biased by the idea that "it is easier
to start with the Xtoolkit", but I noticed that most people on the net talk
about Xlib rather than Xtoolkit. I would like to start a discussion and
exchange of ideas regarding user interfaces based on Xtoolkit (or oldXtk).

If you have any experience or interest in the same field, please forward it 
to me (or directly to the net) and I will try to summarize and post it. 
I will try to post every now and then some sample programs, or make them
available for anonymous ftp. 


e-mail: bettaieb@hslrswi.UUCP 

mikew@wyse.wyse.com (Mike Wexler) (03/23/88)

If I have an existing program and would like to add some buttons,
popup menus, dialogue boxes, how do I do this?  For example,
lets say I wanted to take the paint program from the distribution
and add some buttons to change modes, how would I do this?
Another related question, how do I right an application(not a Widget)
that does graphics under the X Toolkit?

toth@ichthyosaur.cis.ohio-state.edu (Susan Korda Toth) (04/05/89)

xman core dumps with Segmentation violation for us.
We run Sun OS 3.5.1 on Sun 3's.
We have X11R3 with 9 fixes, and compiled it with GNU CC 1.34.
We have version 34 of the Toolkit library (it dumped also with version
33, but with a different calling sequence according to the core file).
Ex.: section 1 comes up first by default and we change to section 3.
We call up a manpage from section 3, then try to switch back to the
directory with the MIDDLE button. It segm. violates for sure.
It dies most often with the sequences (core file):
RedrawThumbs()
XtResizeWidget()
...
XtManageChildren()
XtManageChild()

or

DeleteBackwardWord()
...
XtDestroyWidget()
Phase2Destroy
ManpageButtonPress()

We have more than 800 manual pages in section 3. If we call up section
2 after section 1 and then section 3, it behaves well.

Thanks for any help.

-- Susan Toth
Syst. Programmer, CIS, OSU

kit@EXPO.LCS.MIT.EDU (Chris D. Peterson) (04/19/89)

> We have more than 800 manual pages in section 3. If we call up section
> 2 after section 1 and then section 3, it behaves well.

I have been reworking this code. R4 will have true dynamic allocation of
manual pages so this and other problems that people are having with the
current allocation scheme should go away.

					Chris D. Peterson
                                        MIT X Consortium