marbru@auto-trol.UUCP (Martin Brunecky) (09/25/90)
WHITE PAPER: Enhancing the X resource file syntax
The resource file syntax, as required by XrmGetFileDatabase and
XrmPutLineResource is well known. However, any frequent Xrm user is
probably tired of typing lines like:
MyApp*file_menu.btn1.foreground: white
MyApp*file_menu.btn1.background: black
MyApp*file_menu.btn1.borderColor: red
....
MyApp*file_menu.btn1.xxxx: yyyy
Sure, using loose bindings and/or using unique names (such as f_menu_b_1)
and/or using cpp, the amount of typing (and the resource file size) can be
reduced. But often at the cost of clarity and/or flexibility.
So why not allow something like:
MyApp*file_menu.btn1.foreground: white
-.background: black
-.borderColor: red
The "-" operator would save lots of typing. It would reduce the file size.
It would increase readability.
Plus, it would allow internal optimizations within XrmGetFileDatabase: it
could save the overhead of string parsing and database search list lookup
for the repeated database path. May be not that significant. But small
improvements keep adding, and we all are desperately looking for ways to
improve Xt applications startup performance.
Thus, consider this yet another wish list item for R5.
--
=*= 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 Pabbisetty.henr@XEROX.COM (Nagesh Pabbisetty) (09/25/90)
The current resource-naming syntax is:
MyApp*file_menu.btn1.foreground: white
MyApp*file_menu.btn1.background: black
MyApp*file_menu.btn1.borderColor: red
....
MyApp*file_menu.btn1.xxxx: yyyy
Martin Brunecky proposed the following:
MyApp*file_menu.btn1.foreground: white
-.background: black
-.borderColor: red
Using the convention I propose, the above example will be translated into:
[MyApp*file_menu.btn1]
foreground: white
background: black
borderColor: red
....
xxxx: yyyy
PROPOSED CONVENTION
--------------------
Here, the top portion in square brackets represents the entire widget
hierarchy upto the last level. The last level items are specified in this
section. We can require successive sections to be separated by one or more
blank lines.
This way, it could force all the application defaults related to a
widget/tool to be grouped at one location in the defaults file. So, in
parsing, all that needs to be done is to search for the path (which is
enclosed in brackets) and then read all defaults until a blank line is
read.
Any comments?
- nagesh
-------------------------------------------------------------------------------
Intelnet: 8*227-5458 MaBell: (716)427-5458
Pup : Pabbisetty.henr Snail Mail:
NS : Pabbisetty:Henr801C:xerox 801-27C, 1350 Jefferson Road,
Arpa : pabbiset@arisia.xerox.com Rochester, NY 14623.
-------------------------------------------------------------------------------Pabbisetty.henr@XEROX.COM (Nagesh Pabbisetty) (09/26/90)
The current resource-naming syntax is:
MyApp*file_menu.btn1.foreground: white
MyApp*file_menu.btn1.background: black
MyApp*file_menu.btn1.borderColor: red
....
MyApp*file_menu.btn1.xxxx: yyyy
You proposed the following syntax:
MyApp*file_menu.btn1.foreground: white
-.background: black
-.borderColor: red
Using the convention I propose, the above example will be translated into:
[MyApp*file_menu.btn1]
foreground: white
background: black
borderColor: red
....
xxxx: yyyy
PROPOSED CONVENTION
--------------------
[sectionName]
itemName: itemValue
itemName: itemValue
...
itemName: itemValue
<one or more blank lines>
Here, the sectionName states the entire widget hierarchy upto the last
level. The last level items are specified as "itemName: itemValue" in this
section on separate lines. Each section should be terminated by 1 or more
blank lines.
This way, it could force all the application defaults related to a
widget/tool to be grouped at one location in each defaults file. So, in
parsing, all that needs to be done is to search for the path (sectionName)
and then read all defaults until a blank line is read.
Any comments?
- nagesh
-------------------------------------------------------------------------------
Intelnet: 8*227-5458 MaBell: (716)427-5458
Pup : Pabbisetty.henr Snail Mail:
NS : Pabbisetty:Henr801C:xerox 801-27C, 1350 Jefferson Road,
Arpa : pabbiset@arisia.xerox.com Rochester, NY 14623.
-------------------------------------------------------------------------------rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (09/26/90)
The "-" operator would save lots of typing.
Resources should seldom be typed by hand. :-)
It would increase readability.
Resources should seldom be edited by textual reading. :-)
But small
improvements keep adding, and we all are desperately looking for ways to
improve Xt applications startup performance.
So far, we haven't found that loading resource contributes very significantly
to the startup time (except when sucking a resource property from an X terminal
over a serial line :-). Our current work on XrmGetFileDatabase (which I think
has already sped it up by a factor of 2?) didn't have much affect, that I recall.
Other trivial changes to Xt have had considerably more effect, and other
non-trivial changes will have even more effect.
Your wish is noted, but right now I (at least) am much more interested in simple
changes to Xrm that increase functionality.thoth@lightning.cis.ufl.edu (Gilligan) (09/27/90)
you realize that all your
MyApp*file_menu.btn1.foreground: white
-.background: black
-.borderColor: red
stuff could probably be simulated with a perl filter. If you want I
could try to write one.
--
--
"Until it's on my desk, it's vaporware" (`it' is the NeXT)marbru@auto-trol.UUCP (Martin Brunecky) (09/27/90)
In article <THOTH.90Sep26133300@lightning.cis.ufl.edu> thoth@lightning.cis.ufl.edu (Gilligan) writes: > > you realize that all your > MyApp*file_menu.btn1.foreground: white > -.background: black > >stuff could probably be simulated with a perl filter. If you want I >could try to write one. No, thanx, no filter. The same reason I don't want to run cpp on my app-defaults and other resource files. As I am using Xrm to define the entire application (WsXc, Wcl/Mri...), I want the file to be edited, and loaded without any further steps. Note, I am talking files with several hundreds of lines (equivalent of UIL or C code of several thousands of lines). I just want to make my files more readable, smaller in size and faster processed (though the last one is the least important). -- =*= 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
jeenglis@alcor.usc.edu (Joe English Muffin) (10/01/90)
marbru@auto-trol.UUCP (Martin Brunecky) writes: > The resource file syntax, as required by XrmGetFileDatabase and > XrmPutLineResource is well known. However, any frequent Xrm user is > probably tired of typing lines like: > MyApp*file_menu.btn1.foreground: white > MyApp*file_menu.btn1.background: black > MyApp*file_menu.btn1.borderColor: red > .... > MyApp*file_menu.btn1.xxxx: yyyy [ ... ] > So why not allow something like: > MyApp*file_menu.btn1.foreground: white > -.background: black > -.borderColor: red How about a syntax like this instead: MyApp*file_menu.btn1{ .foreground: puce .background: purple .borderColor: greenish } This would also allow nesting, as in: MyApp{ *Command{ .foreground: lightmagenta .background: mauve .shapeStyle: hexagonal } file_menu.btn1{ ... etc. } } --Joe English jeenglis@alcor.usc.edu
randy@erik.UUCP (Randy Brown) (10/02/90)
>How about a syntax like this instead: > > MyApp*file_menu.btn1{ > .foreground: puce > .background: purple > .borderColor: greenish > } > >This would also allow nesting, as in: Since we seem to be running a poll, this gets my vote. It's easy to parse (at least for the parser I use most often :-) and expresses the nested parent-child nature of the hierarchy. Indentation should be OPTIONAL, of course. Randy Brown (uunet!erik!rbrown)