[comp.windows.x] Wish list for R5

jimf@SABER.COM (06/27/90)

Some email just reminded me of two more wish items for R5.

Currently there is no way to allocate a shareable colormap cell only
if it already exists.  I would love to see an XGetAllocatedColor
function.  This function would fail if there was not already a
colormap cell with the given color value, even if there were free
colormap cells available.

I would also appreciate some way to convert read/write (private)
colormap cells to read-only (shareable) cells.  This way an
application can allocate as many colors as it can, set them to values
which won't be changed, make them shareable, then other applications
can share those colors.

These two functions are very desireable if your application needs to
allocate a lot of colors and wants to help keep technicolor effects to
a minimum.  Image processing and display programs fall into this
category.

jim frost
saber software
jimf@saber.com

rhoward@msd.gatech.edu (Robert L. Howard) (06/28/90)

How about this for a trivial wish item.

In my man pages (SunOS) games and demos are placed in Section 6.  I'd
like to see a place where you can install man pages for games and demos
in their proper place.  This would no doubt require another variable in
Project.tmpl (say GameManSuffix) but you could default it to the same
as ManSuffix.

Just a nit.  (I like *lots* of structure.)

Robert

| Robert L. Howard             |    Georgia Tech Research Institute     |
| rhoward@msd.gatech.edu       |    STL / MSD                           |
| (404) 528-7165               |    Atlanta, Georgia  30332             |
|     UUCP:   ...!{allegra,amd,hplabs,ut-ngp}!gatech!msd!rhoward        |

leconte@irisa.fr (Thierry Leconte) (06/28/90)

In X, windows have a border color, a border width and a border pixmap
but these features are not use by 3d looking widget sets because
they need 2 colors border and 2 colors pixmap. One for the top shadow and
one for the bottom shadow.
So it will be nice to add these attributes directly to the windows.

With this extension :
- it will be easy to extend the athena widgets to 3d looking
- all 3d looking widget sets will not have to send drawing
  orders to the server for their borders each time their are exposed.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|   Thierry LECONTE     |      ,      ,---   ,---         |
|     INRIA/IRISA       |     /      /      /---          |
|  Campus de Beaulieu   |    (___   (___   (___           |
|  35042 RENNES CEDEX   |                                 |
|        FRANCE         | GOTHIC project (INRIA/BULL)     |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Tel: 99 36 20 00      e-mail: Thierry.Leconte@irisa.fr  |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

caf@omen.UUCP (WA7KGX) (06/29/90)

How about a terminfo/X library that would allow one to creat an application
that would run as an X client if a server were available and use
terminfo/curses technology otherwise?

geof@aurora.com (Geoffrey H. Cooper) (07/12/90)

My guess is that this is ingrained deep inside the X structure, so it
isn't easily fixed, but from the point of view of being a USER of X:

Make the focus under TWM be synchronous with the mouse movements, so
that type-ahead ends up in the right window.  Currently, you can move
your mouse over into a swapped-out application that takes a few
seconds to get swapped in and take the keyboard focus. If you type
during that time, the keystrokes will often get put in the previous
application (which is usually an editor and screws up your buffer --
good thing Emacs has UNDO).  [maybe the problem is TWM itself getting
swapped out]

- Geof
-- 
geof@aurora.com / aurora!geof@decwrl.dec.com / geof%aurora.com@decwrl.dec.com

envbvs@epb2.lbl.gov (Brian V. Smith) (07/12/90)

In article <1990Jul11.191122.29222@aurora.com> geof@aurora.UUCP (Geoffrey H. Cooper) writes:
< 
< My guess is that this is ingrained deep inside the X structure, so it
< isn't easily fixed, but from the point of view of being a USER of X:
< 
< Make the focus under TWM be synchronous with the mouse movements, so
< that type-ahead ends up in the right window.  Currently, you can move
< your mouse over into a swapped-out application that takes a few
< seconds to get swapped in and take the keyboard focus. If you type
< during that time, the keystrokes will often get put in the previous
< application (which is usually an editor and screws up your buffer --
< good thing Emacs has UNDO).  [maybe the problem is TWM itself getting
< swapped out]

Set 'NoTitleFocus' in your .twmrc.  For some reason, when you allow keyboard
focus in the titlebar, there is a delay of focus even in the window part
when you move the mouse from window to window.


--
_____________________________________
Brian V. Smith    (bvsmith@lbl.gov)
Lawrence Berkeley Laboratory
I don't speak for LBL, these non-opinions are all mine.

lowe@cs.ubc.ca (David Lowe) (08/13/90)

Re: wish list for R5

As someone who has just gone through the process of learning X as a user
and programmer, I believe one of the areas of X that most needs cleaning
up is the way that resources are handled.  I've taken a stab at suggesting
a better mechanism below.


1) From the user's point of view (which should of course be given the
top priority in design), the current resource mechanism is a total
mess.  They are expected to know about the widget structure of an
application and the internal widget names, they are supposed to be
able to imagine the global implications of wildcarded resource
specifications, there is no feedback given when a typo is made, and
of most importance there is no standard graphical interface for
editing resources and little chance that one could be developed
from the current mechanisms.

The solution seems quite obvious.  The application programmer should
be able to specify a set of external configuration parameters (with
names chosen to reflect the application).  There should be one
standard mechanism by which these parameters are given names, default
values, valid ranges, documentation, command line arguments, and any
values loaded from a user configuration file.  This would provide
the information needed for a standard graphical interface for the
user to edit these parameters.  There is no need for the vast majority
of resource specifications that can currently be made for each
application, many of which would break an application.  Instead of
being able to modify the color of every trivial component, it would
be much more useful to allow modification of the color of a few
semantically related interface components.


2) Most of the introductory books on X suggest that all resources
be specified in an application defaults file.  This seems like a
total loss.  The O'Reilly book on Intrinsics programming suggests
that this file be placed in /usr/lib/X11/app-defaults, and gives no
other way of loading it!  Where does that leave the 99% of users with
no root access?  I know that there is an environment variable that
can be set to point at another app-defaults directory, but this means
that anyone else who wants to run my program is now going to have to
first set an environment variable to point to my directory.  Putting
resource specifications in the application defaults file makes it
far more difficult to understand someone else's program, as you must
now try to match up the widget specifications in the code with
closely related specifications scattered around in a separate file
(the opposite of object-oriented programming?).

In fact, most of the sample code distributed with X seems to have
been written by people who understand these problems and they have
avoided using application defaults files.  Its mostly the unfortunate
new user who gets lead down this path.  The argument that different
sites could install different application defaults is asking for
trouble -- this means that the poor user will have no idea whether
the application conforms to standard documentation and will face
unknown behavior every time he or she remotely uses a client on a
different machine.  There is almost nothing about a "site" (i.e., NFS
file system) that makes it the appropriate unit for customization.


3) The code is far easier to understand and write when all the
resources are specified where the widget is created using the new
varargs interface.  Configurability could be supported by inserting
values at this point that depend on the external configuration
parameters described above.  Currently, the manuals describe at
least 4 or 5 different ways to set resources, indicating that none
of them is really satisfactory (but the varargs is the closest).
Success will have been achieved when the introductory manuals on
X have only a couple of pages on how to set resources instead of
several chapters.


4) These changes would allow a new name to be given to this capbility
for program configuration (e.g., "configuration files").  The word
"resource" makes no sense in this context and is already being
used for totally different mechanisms in X.


In summary, the current "resource" system should be replaced by a set of
programmer-specified configuration parameters.  A standard graphical
interface could then be written to allow the user to edit them.

-- David Lowe
   Computer Science Dept.
   Univ. of British Columbia
   lowe@cs.ubc.ca

mouse@SHAMASH.MCRCIM.MCGILL.EDU (der Mouse) (08/13/90)

David Lowe takes a stab at suggesting a cleanup mechanism for the
current mess of resource specifications.

> As someone who has just gone through the process of learning X as a
> user and programmer, I believe one of the areas of X that most needs
> cleaning up is the way that resources are handled.  I've taken a stab
> at suggesting a better mechanism below.

For the most part, his suggestions sound good to me.  However (now how
did you guess that was coming? :-), I have a couple of comments....

First is that

> In summary, the current "resource" system should be replaced by a set
> of programmer-specified configuration parameters.  A standard
> graphical interface could then be written to allow the user to edit
> them.

The current "resource" system *is* a set of programmer-specified
configuration parameters.  There is absolutely nothing wrong with the
current mechanism as an internal mechanism; the problems are all due to
the lack of a good user interface to it.

In fact, the current mechanism has a nice property that would be
difficult to achieve with a system based on each application having
some configurable parameters which are kept in a file somewhere, that
being that it is possible to specify something for all applications for
which it makes sense.  For example, my .Xdefaults has lines

	*Foreground: white
	*Background: black

Someone else on xpert (rws, I think it was) gave another example,
something like

	*shapeStyle: oval

I would find having to separately customize the same changes into each
application I want to use extremely irritating.  The current mechanism
automatically gives me white-on-black for applications which draw stuff
without causing errors from applications which don't.  (Yes, there are
such - xwd, for example.)

I would also offer a plea for the preservation of the current system
(or something like it) as the internal mechanism because I would rather
edit a file than use a customization tool that's someone else's idea of
"user-friendly" - and I'm sure I'm not the only one (though I daresay
we're probably a minority).

[on the problems with app-defaults files]
> In fact, most of the sample code distributed with X seems to have
> been written by people who understand these problems and they have
> avoided using application defaults files.

More likely, IMO, is that the code you're thinking of dates from before
there were app-defaults files.

					der Mouse

			old: mcgill-vision!mouse
			new: mouse@larry.mcrcim.mcgill.edu

harp@cadillac.Berkeley.EDU (Christopher North-Keys) (08/13/90)

This is a minor detail (ah, well) relating to the X authority interface.

According to my interpretation of the man page, and the evidence presented
by direct experimentation, there is a basic tool missing from the xauth
program.

Group Talisman had little difficulty working out the usage of the
MIT-MAGIC-COOKIE-1 mechanism, and indeed are using it now between the 
Uni.Tx@Austin, MCC, and MIT.  However, in order to avoid using
script ftp sessions between MCC(secured vs. rsh and rlogin) and MIT, it became
necessary to add new cookies *ONLY* in the event they did not already
exist.  This usage of fixed cookies (now that sounds strange...) seemed
like an obvious thing to do, but it's here that the problems arose.

I already knew there was a simple operation to override existing entries,
now what I needed was either a command which only overrode *missing* entries,
or a way to test for the existance of an entry.

The first didn't exists.  Oh, well, I figured, "sure", the second would be
there.  No need to run ``grep $DISPLAY $XAUTHORITY'' (Nasty! Yechh! Bad!)
or anything like that.  Surely...

Bad news.   ``xauth list $DISPLAY'' returns success even if the display in
question has no existing cookie.

Now I'm using (C-Shell):

    set xkey = 2004`date +%j%m%d%y%H%M%S`0feedface
    xauth add unix:0.0 . $xkey
    if ( 0 == `xauth list $DISPLAY | wc -l` ) xauth add $DISPLAY . $xkey

This is *ugly*.  I figured the third line *should* be something like:

    xauth list $DISPLAY || xauth add $DISPLAY . $xkey

or even better (add-if-missing):

    xauth verify $DISPLAY . $xkey

Which would allow:

    set xkey = 2004`date +%j%m%d%y%H%M%S`0feedface
    cat <<... | xauth >>& /dev/null
        add unix:0.0 . $xkey
        verify $DISPLAY . $xkey
    ...

But both if these approaches drew double-nulls.

Now, if the idea it that the cookies should *always* be dynamic, it's already
suffering, because there's no decent way to reload cookies during a session
with xrdb or the like just now...but if it was expected they might be static:

  Could someone please fix it?  Please?  We *have* to use it, but fixing it
  ourselves it rather hard in places where the words ``in my copious spare
  time'' have become a running joke...

Of course, if we just missed something: yell at us (rather, me), eh?

______________________________________________________________________________
Christopher North-Keys                                  Assoc. Systems Analyst
Group Talisman                                                  Harp[@Mcc.Com]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rjc@uk.ac.ed.cstr (Richard Caley) (08/14/90)

In article <9008130225.AA21698@shamash.McRCIM.McGill.EDU> mouse@SHAMASH.MCRCIM.MCGILL.EDU (der Mouse) writes:

    Someone else on xpert (rws, I think it was) gave another example,
    something like

	    *shapeStyle: oval

    I would find having to separately customize the same changes into each
    application I want to use extremely irritating. 

First I'd like to suport this pela that should anything be done to the
defaults mechanism it should loose none of is present power. Being
able to make all my comand buttons look the same no matter what the
whims of the person who wrote it is wonderful.

Secondly would it be possible to have a blitz on the clients for R5 to
make them all use resources nicely? I realise that most of the worst
offenders are contributed clients ( xcalender caused me no end of
pain... ) but, for instance, the xman title and icon label seems to
have been glued in with epoxy, it took me ages to manage to change it.
As the manual says, TWM is another one. 

Thirdly, as a piece of pure fantasy, it would be wonderful if some way
could be found of allowing resources to specify extra buttons and menu
items as well as changing the labels and effects of ones which exist.
For instance I might wish to move an action from being on a menu
behind a button to being on a button of its own. Always assuming that
there is not some way to do this already which has escaped my
notice...

    I would also offer a plea for the preservation of the current system
    (or something like it) as the internal mechanism because I would rather
    edit a file than use a customization tool that's someone else's idea of
    "user-friendly" - and I'm sure I'm not the only one (though I daresay
    we're probably a minority).

Your not the only one...

--
rjc@uk.ac.ed.cstr		

pjs@aristotle.JPL.NASA.gov (Peter Scott) (08/15/90)

In article <RJC.90Aug13234401@brodie.uk.ac.ed.cstr>, rjc@uk.ac.ed.cstr
(Richard Caley) writes:

> Thirdly, as a piece of pure fantasy, it would be wonderful if some
way
> could be found of allowing resources to specify extra buttons and
menu
> items as well as changing the labels and effects of ones which exist.
> For instance I might wish to move an action from being on a menu
> behind a button to being on a button of its own. Always assuming that
> there is not some way to do this already which has escaped my
> notice...

If an application has been coded using Dave Smyth's Widget Creation
Library, it is often possible to achieve exactly this by changing the
resource file alone.  Probably not as easily as the method you have
in mind, tho'...

--
This is news.  This is your       |    Peter Scott, NASA/JPL/Caltech
brain on news.  Any questions?    |    (pjs@aristotle.jpl.nasa.gov)

randy@erik.UUCP (Randy Brown) (08/15/90)

rjc@uk.ac.ed.cstr writes (he probably drives on the left side of the
road, so we'll excuse his address as well :-)):
.Thirdly, as a piece of pure fantasy, it would be wonderful if some way
.could be found of allowing resources to specify extra buttons and menu
.items as well as changing the labels and effects of ones which exist.
.For instance I might wish to move an action from being on a menu
.behind a button to being on a button of its own. Always assuming that
.there is not some way to do this already which has escaped my
.notice...

This isn't fantasy.  See Widget Creation Library (WCL). It's reported
to be on expo, or contact david@devvax.jpl.nasa.gov (should I say
david@gov.nasa.jpl.devvax?  Consult your local gateway...)

klee@wsl.dec.com (Ken Lee) (08/15/90)

In article <RJC.90Aug13234401@brodie.uk.ac.ed.cstr>, rjc@uk.ac.ed.cstr (Richard
Caley) writes:
|> Thirdly, as a piece of pure fantasy, it would be wonderful if some way
|> could be found of allowing resources to specify extra buttons and menu
|> items as well as changing the labels and effects of ones which exist.
|> For instance I might wish to move an action from being on a menu
|> behind a button to being on a button of its own.

You can do this with Motif UIL.

Ken Lee
DEC Western Software Laboratory, Palo Alto, Calif.
Internet: klee@wsl.dec.com
uucp: uunet!decwrl!klee

treese@crl.dec.com (Win Treese) (08/15/90)

In article <RJC.90Aug13234401@brodie.uk.ac.ed.cstr> rjc@uk.ac.ed.cstr (Richard Caley) writes:

>   Thirdly, as a piece of pure fantasy, it would be wonderful if some way
>   could be found of allowing resources to specify extra buttons and menu
>   items as well as changing the labels and effects of ones which exist.
>   For instance I might wish to move an action from being on a menu
>   behind a button to being on a button of its own. Always assuming that
>   there is not some way to do this already which has escaped my
>   notice...

The R4 xmh supports adding new buttons with actions.
It works reasonably well, though it's a little awkward.
I don't think you can alter the menus, but you could certainly
do something in the same style.  It's not too hard to code
it that way, either.

Win Treese						Cambridge Research Lab
treese@crl.dec.com					Digital Equipment Corp.

mayer@hplabsz.HPL.HP.COM (Niels Mayer) (08/15/90)

In article <1990Aug14.174606.1137@elroy.jpl.nasa.gov> pjs@aristotle.jpl.nasa.gov writes:
@In article <RJC.90Aug13234401@brodie.uk.ac.ed.cstr>, rjc@uk.ac.ed.cstr
@(Richard Caley) writes:
@> Thirdly, as a piece of pure fantasy, it would be wonderful if some way
@> could be found of allowing resources to specify extra buttons andmenu
@> items as well as changing the labels and effects of ones which exist.
@> For instance I might wish to move an action from being on a menu
@> behind a button to being on a button of its own. Always assuming that
@> there is not some way to do this already which has escaped my
@> notice...
@
@If an application has been coded using Dave Smyth's Widget Creation
@Library, it is often possible to achieve exactly this by changing the
@resource file alone.  Probably not as easily as the method you have
@in mind, tho'...

Yes, you could do this modulo any application-state based changes on the
user-interface -- for example, if certain menu entries grey out to prevent
the user from selecting the wrong thing given a certain app-state, then you
need to transmit that state information to the user-defined buttons as
well.

Things can also get zorched if you are moving an action that would normally
be called from a dialog box onto the "main window" of a program -- the
application expects to be in a state of dialog, and allah-the-sudden you've
popped it into doing a callback while it is in the wrong state.

Both of the aforementioned problems require more than a static description
of a widget hierarchy and resources as provided by UIL or WCL.

By the way, An existing example of doing such resource-based customization
of buttons, menus and their associated actions can be found in the r4 xmh
mailer.

-------------------------------------------------------------------------------
	    Niels Mayer -- hplabs!mayer -- mayer@hplabs.hp.com
		  Human-Computer Interaction Department
		       Hewlett-Packard Laboratories
			      Palo Alto, CA.
				   *

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (08/16/90)

    and of most importance there is no standard graphical interface for
    editing resources and little chance that one could be developed
    from the current mechanisms.

That's amusing to hear, since someone on my staff developed a graphical
interface from the current mechanisms, without much trouble.  But perhaps
you just meant there is little chance of getting a standard one, as opposed
to little chance of implementing one. :-)

lowe@cs.ubc.ca (David Lowe) (08/16/90)

In article <9008152225.AA06107@expire.lcs.mit.edu> rws@EXPO.LCS.MIT.EDU (Bob Scheifler) writes:
>
>    and of most importance there is no standard graphical interface for
>    editing resources and little chance that one could be developed
>    from the current mechanisms.
>
>That's amusing to hear, since someone on my staff developed a graphical
>interface from the current mechanisms, without much trouble.  But perhaps
>you just meant there is little chance of getting a standard one, as opposed
>to little chance of implementing one. :-)

Maybe you could persuade whoever did this to post some information.
There are a lot of issues that need to be addressed, such as parsing
the current user resource file, handling and updating wildcarded entries,
somehow specifying which resources are available for editing, determining
the valid range of entries, and so on.  I would be surprised if this
could be done without creating a separate specification of external
configuration parameters along the lines that I was suggesting.  What
does the user's resource file look like after using this interface?

Maybe all that is needed is some good sample code, and this would become
a defacto standard.  As far as I know, there are no clients in the
standard distribution that provide a graphical interface for changing the
program configuration.  The resource mechanism could still be used for
systems-oriented configuration tasks, such as internationalization.
However, the resource mechanism has not yet shown its suitability for use
in a graphical user interface environment, which was the purpose of X
to begin with.

-- David Lowe

randy@erik.UUCP (Randy Brown) (08/17/90)

>Both of the aforementioned problems require more than a static description
>of a widget hierarchy and resources as provided by UIL or WCL.

Since WCL includes not only a string-to-widget converter but a string-to-
callback converter, it's perhaps not quite as static as you might think,
though I'm sure Niels has a point--there's a limit somewhere.

mayer@hplabsz.HPL.HP.COM (Niels Mayer) (08/18/90)

In article <9008161931.AA21572@erik.uucp> randy@erik.UUCP (Randy Brown) writes:
>>Both of the aforementioned problems require more than a static description
>>of a widget hierarchy and resources as provided by UIL or WCL.
>
>Since WCL includes not only a string-to-widget converter but a string-to-
>callback converter, it's perhaps not quite as static as you might think,
>though I'm sure Niels has a point--there's a limit somewhere.

My point was that a UI prototyping/extension language requires more than
static layout, and static bindings to application code in order to handle
the dynamic aspects of user interfaces (e.g. the examples I gave of (1)
desensitizing UI components if input to them is not valid at a particular
application-state, and (2) handling the interactions between dialog and
presentation).

Having string-to-widget or string-to-callback converters is very useful
indeed, but it will not handle the things I'm thinking of. Basically, you
need a way of getting application state represented in the user-interface
language, and you need a way of sending messages relating application state
changes to widgets expressed in the UI prototyping/extension language. Now,
if all widgets in WCL or UIL could have a "constraint changed" callback,
then the string-to-callback mechanism might become useful for handling UI
dynamics. As far as I know, such constraint mechanisms only exist in
languages found in User-Interface Management Systems (UIMS) such as Serpent
or Open Dialog, and can also be implemented via a more traditional
extension-language mechanism in the UI prototyping/extension language,
WINTERP (see expo.lcs.mit.edu:contrib/winterp/winterp-<latestversion>.tar.Z)

-------------------------------------------------------------------------------
	    Niels Mayer -- hplabs!mayer -- mayer@hplabs.hp.com
		  Human-Computer Interaction Department
		       Hewlett-Packard Laboratories
			      Palo Alto, CA.
				   *

rlh2@ukc.ac.uk (Richard Hesketh) (08/19/90)

In article <9182@ubc-cs.UUCP> lowe@cs.ubc.ca (David Lowe) writes:
>In article <9008152225.AA06107@expire.lcs.mit.edu> rws@EXPO.LCS.MIT.EDU (Bob Scheifler) writes:
>>
>>    and of most importance there is no standard graphical interface for
>>    editing resources and little chance that one could be developed
>>    from the current mechanisms.
>>
>>That's amusing to hear, since someone on my staff developed a graphical
>>interface from the current mechanisms, without much trouble.  But perhaps
>>you just meant there is little chance of getting a standard one, as opposed
>>to little chance of implementing one. :-)
>
>Maybe you could persuade whoever did this to post some information.

I know what Bob is talking about but its up to him to "spill the beans".
However I have done similar work and came to extremely similar conclusions.
An external resource modifying interface can work via a defined message
protocol between it and the clients.  The resource editor asks for
and receives a widget tree heirarchy of the client to be modified.  The
resource editor can then be used to examine individual resources
(or sets of resources) of the client by sending remote Get and SetValues calls.

The overhead for my implementation is that it needs the client to be
linked against a small library containing the protocol routines
(mine uses properties and client messages .. but others types of communication
can be used;  WINTERP uses sockets).  Also as all messages are sent as
strings then string-to-type and type-to-string converters are necessary,
I have not found this to be a large overhead in practice though.

A "clever, user-friendly" resource editor needs to know about all the "types"
of the resources.
It doesn't need to know about the widget classes or the resources themselves,
it can get all these from the client very easily.  These types could be
hard-wired into the resource editor along with "methods" of displaying these
in a user-friendly way or they could be "described" in a external file
allowing for easy addition of new resource types.  Infact in my UI builder
which uses this "resource type display method" table I have found that
I need only a dozen "methods" for over 90 resource types covering my
widget set, the Athena widget set and the HP widget set (2D).  I see no
problems integrating Motif or other widget sets.

A "display method" can be a toggle button for a Boolean resource
or a set of radio buttons for an enumerated type etc.  It can also
be an editor such as a bitmap editor or translation table editor.

>There are a lot of issues that need to be addressed, such as parsing
>the current user resource file,

Not too difficult, the resource editor builds up its knowledge from the
running client so that parsing becomes straightforward.  I have done
this and the only problem comes with ..

>                                handling and updating wildcarded entries,

.. with the "handling" being a bit tricky.  However by doing it for wildcard
entries you can cover all the fully specified ones as well (very few of these
really).  Updating wildcard entries is again straightforward and also requires
traversal of the widget tree to find matching widgets.

Actually specifying wildcarded entries requires some thought on behalf of the
resource editor designer.  The mechanism is relatively simple compared to
how you actually "present" it to the user.  I am working on this one!
I am developing a "graphical" specification/description of the wildcarded
resources (including classes) instead of having to type the resource entries.

>somehow specifying which resources are available for editing,

This can be done in a table/database for resources in different classes
and even class heirarchies .. e.g disallowing the modification of the
fromVert and fromHoriz constraint of the scrollbars in a viewport widget
could be disallowed in an "exceptions" Xrm database as:

	Viewport.horizontal*Widget: UNEDITABLE
	Viewport.vertical*Widget: UNEDITABLE

or read-only such as:

	Core.depth: READ-ONLY

This allows resources to be made exceptions on a per-class or per-instance
basis.  Remember, resource manager databases aren't just for resource
value specifications!  They are very useful for context help databases as well.

>                                                              determining
>the valid range of entries, and so on.

This is built into the "resource type display methods".

>                                        I would be surprised if this
>could be done without creating a separate specification of external
>configuration parameters along the lines that I was suggesting.

I suppose you might class the above databases as being external
configuration parameters but these aren't set by the programmer but
by the resource editor designer.  If the application programmer wants
to restrict which resources are editable he could do this by
specifying it in a separate database file which is also read by the
resource editor ... e.g. XEdit.custom  However none of this is done in
the program but externally so that they can be removed if required.

>                                                                  What
>does the user's resource file look like after using this interface?

Pass on this one; I haven't played with the program Bob is talking about
but I see no reason why it has to be different from any hand-built
resource file .. infact being machine generated it can be cleaned up
and made more readable!  My UI builder produces very readable resource
files.

>Maybe all that is needed is some good sample code, and this would become
>a defacto standard.

Interesting idea .. who will be first to publish I wonder???

>                     As far as I know, there are no clients in the
>standard distribution that provide a graphical interface for changing the
>program configuration.  The resource mechanism could still be used for
>systems-oriented configuration tasks, such as internationalization.

Probably in R5 (?).

>However, the resource mechanism has not yet shown its suitability for use
>in a graphical user interface environment, which was the purpose of X
>to begin with.

The mechanism requires some internal updating (and is being) but I don't think
that editing resources files by hand was ever really envisaged as being the
only interface to customizing programs.  X is supposed to be mechanism not
policy of course 8-}.  The resource editors that are coming along will make
this mechanism very friendly indeed!

>-- David Lowe

While I have yet to fully develop a stand-alone resource editor (its in
various bits at the moment) I have used the techniques I have described
above in a UI builder.   This builder uses the protocol (I call it ICRM
or Inter-Client Resource Management) to attach to running programs and
produce a reverse engineered user interface which can then be directly
edited and extended.   The resource editor is simply a different interface
to the mechanism already developed for the builder (the mechanism was
developed for the resource editor but the builder got built first! ...
with itself of course 8-).

As soon as the toolkit was developed (allowing interfaces to be
inherently customizable) the cry was heard .. "we want friendly tools!!"
Both to build interfaces and to customize them, these take time as we
realize their full potential but they are just around the corner (honest).

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

marbru@auto-trol.UUCP (Martin Brunecky) (08/21/90)

In article <9008161931.AA21572@erik.uucp> randy@erik.UUCP (Randy Brown) writes:
>>Both of the aforementioned problems require more than a static description
>>of a widget hierarchy and resources as provided by UIL or WCL.
>
>Since WCL includes not only a string-to-widget converter but a string-to-
>callback converter, it's perhaps not quite as static as you might think,
>though I'm sure Niels has a point--there's a limit somewhere.

... plus on systems which support dynamic (runtime) binding such as
    Apollo or (with some tweaking) VMS, your string-to-callback
    convertor can be upgraded to load your new code when needed.

But, I agree that Niels has a point. We can enhance WCL to destroy/recreate
things on fly (assuming Xt intrinsics will improve to make it aceptable),
we can provide callbacks that will reconfigure any portions of widget tree,
but we still need more.


-- 
=*= Opinions presented here are solely of my own and not those of Auto-trol =*=
Martin Brunecky                   marbru@auto-trol.COM
(303) 252-2499                    {...}ncar!ico!auto-trol!marbru
Auto-trol Technology Corp. 12500 North Washington St., Denver, CO 80241-2404