1This is version 4.0.0 of the Xmt distribution, also known as the
2"Motif Tools library". Complete documentation for the library is
3contained in the book "Motif Tools" from O'Reilly & Associates, which
4is now out of print. However, this distribution includes man pages.
5Html docs will be added in future releases.
6
7After you read this file, there are several other files you should read:
8
9 The file README.210 explains what's new in version 2.1.0 of Xmt.
10
11 The file OVERVIEW contains an overview of the widgets and convenience
12 functions in Xmt.
13
14 The file QUICK-START-ME will satisfy those that want to cut to the quick.
15
16 The Xmt library is Open Source as defined by OpenSource.org. This
17 software is provided at no charge and the license is based on those
18 that are already authorized by OpenSource.org. There is no requirement
19 that you purchase anything and this software does not "contaminate"
20 other software that it is included in. Please read LICENSE for the
21 details.
22
23 Xmt comes with no warranty of any kind. The file NO_WARRANTY explains
24 this.
25
26 This is a source-code distribution. The file INSTALLATION
27 explains how you can compile and install the Xmt library and clients.
28
29
30FILES AND DIRECTORIES
31
32This distribution contains the following files and directories:
33
34 AUTHOR originating author of Xmt - David Flanagan.
35 BUG-REPORT-FORM a form and instructions for submitting bug reports.
36 CHANGE-LOG a list of changes since the Open Source Release.
37 CHANGES-HISTORY a list of changes up to Open Source Release.
38 COPYRIGHT copyright information for Xmt.
39 FAQ frequently asked questions for Xmt.
40 INSTALLATION how to compile and install Xmt.
41 KNOWNBUGS a (short) list of bugs that the author knew about.
42 LICENSE the terms and conditions for using Xmt.
43 NO_WARRANTY a standard "No Warranty" disclaimer.
44 OVERVIEW a list of features in Xmt.
45 PLATFORMS a list of known platforms that Xmt has been used on.
46 QUICK-START-ME no verbosity, go for it.
47 README this file.
48 README.210 important notes about a previous version of Xmt.
49 RELEASE-NOTES Summary overview of what verious releases are about.
50 THANKS Acknowledgements to a cast of many.
51 VERSION specifies what version of Xmt you have.
52 Imakefile a top-level Imakefile for building the distribution.
53 Xmt.tmpl an imake template for use with the Imakefile.
54 Xmt/ source code for the Xmt library.
55 clients/ Xmt client applications.
56 contrib/ stuff that is not part of Xmt, but is useful anyway.
57 examples/ some examples demonstrating important Xmt features.
58 man/ ASCII formatted man pages for Xmt.
59 tests/ tests of widget enhancements after becomming open source.
60
61
62DOCUMENTATION
63
64ASCII man pages for each of the widgets and convenience functions in the
65library are in man/cat3; they are the online documentation for the
66library. As mentioned above, the book _Motif Tools_ is the complete
67documentation for the library; it is a complete programmer's guide, and
68also contains a printed form of the man pages as a reference section.
69Unfortunately, this book is now out of print. David Flanagan and Jeffrey
70Franks are addressing this issue.
71
72
73REPORTING BUGS
74
75If you find a bug in the Xmt library, or anywhere in the Xmt
76distribution, please report it. The file PROBLEM-REPORT-FORM explains
77how to do this.
78
79 David Flanagan - Author and copyright holder
80
81 Jeffrey L. Franks - Coordinator for Xmt Open Source Project
82 and MotifTools.org hosted on SourceForge.com
83
1
2 README for Xmt Version 2.1
3
4
5 Compiling Xmt 2.1
6 ---------------------------------------
7
8You can compile Xmt 2.1 just as you compiled Xmt 2.0. See Appendix A of
9Motif Tools or the file INSTALLATION for instructions. Before you
10compile, however, don't forget to read through the file Xmt.tmpl and
11edit as necessary for your platform. If you made changes to this file
12for Xmt 2.0, you'll probably want to make the same changes for 2.1.
13Note however that Xmt.tmpl has changed--there are new workarounds that
14you can select--and so you cannot simply copy your old version of
15Xmt.tmpl into your Xmt 2.1 directory. In particular, note that if you
16are using SunOS 4.1.3_u1, or another system that does not have
17memmove(), you'll have to uncomment the -DNO_MEMMOVE flag in Xmt.tmpl
18
19Also note that this release does contain the Makefile.simple files that
20were accidentally omitted from the previous release. So if you do not
21have imake, or if it does not work well for you, you can edit and use
22these simplified Makefiles.
23
24
25 Changes in Xmt 2.1
26 ---------------------------------------
27
28The notes below give an overview of what has changed between version
292.0 and 2.1 of Xmt. For a very detailed (and probably less useful)
30list of all changes, see the file CHANGES.
31
32The large majority of the changes for version 2.1 are bug fixes.
33Version 2.1 should be significantly more robust than version 2.0.
34
35The major new features in version 2.1 are support for Motif 2.0 and
36the addition of three new "space types" to be used on the XmtNspaceType
37resource of the LayoutBox widget to control the horizontal positioning
38of items within rows or the vertical positioning of items within
39columns.
40
41MOTIF 2.0 CHANGES:
42------------------
43
44Tony Hefner and Gary Merrill of the SAS Institute ported Xmt to work
45with Motif 2.0, and were kind enough to contribute their patches. The
46changes for Motif 2.0 are the following:
47
48 1) Additions to the XmString converter to support tabstops
49 and renditions. Use @b[rendition_tag] to begin a rendition
50 and @e[rendtion_tag] to end a named rendition. Use a tab
51 character to tab to a tab stop. See your Motif 2.0
52 documentation for more information on renditions, and
53 also see the example below.
54
55 2) Layout and Chooser widgets now have XdtNrenderTable resources that
56 are analogous to their XdtNfontList resources.
57
58 3) The Chooser widget now supports another type of "choice" with the
59 XmComboBox widget. Use the new XmtChooserType value
60 XmtChooserComboBox.
61
62 4) The XmCSText and XmComboBox widgets can be registered for use in
63 automatic dialogs with XmtRegisterXmCSText(),
64 XmtRegisterXmScrolledCSText(), and XmtRegisterXmComboBox().
65
66 5) XmtRegisterMotifWidgets registers the above widgets, plus the new
67 XmContainer, XmIconGadget, XmNotebook, and XmSpinBox.
68
69 6) a few miscellaneous changes to make Xmt compile under Motif 2.0
70
71 To use the new XmString rendition stuff, you might specify a rendtion
72 table like the following.
73
74 *renderTable: green, variable
75 *renderTable.fontName: fixed
76 *renderTable.fontType: FONT_IS_FONT
77 *renderTable.underlineType: NO_LINE
78 *renderTable*tabList: 1in, +1.5in, +3in
79 *renderTable.renditionForeground: black
80 *renderTable.green.renditionForeground: Green
81 *renderTable.green.fontName: AS_IS
82 *renderTable.green.underlineType: SINGLE_LINE
83 *renderTable.variable.renditionForeground: Red
84 *renderTable.variable.fontName: variable
85 *renderTable.variable.fontType: FONT_IS_FONT
86 *renderTable.variable.underlineType: DOUBLE_LINE
87
88 And then specify an XmString like this:
89
90 *label.labelString: \
91 default text\n\
92 @b[green]green, underlined text@e[green]
93
94 See your Motif 2.0 documentation for more information on the
95 new XmString features and on the "renderTable" syntax.
96
97
98NEW LAYOUT SPACING TYPES:
99-------------------------
100
101Spurred by the suggestion of F. Sullivan Segal, I defined three new
102spacing types for the LayoutBox XmtNspaceType resource. The three types
103are "tabbed" spacing types. For each of them, if there are n items in a
104row or column, then the row or column is divided into n "tab stops", and
105the items are positioned flush left with, flush right with, or centered
106between the "tab stops". In C code, these spacing types are:
107XmtLayoutSpaceLTabbed, XmtLayoutSpaceCTabbed, and XmtLayoutSpaceRTabbed.
108In the XmtNlayout grammar of the Layout widget, you use the keywords
109LTabbed, CTabbed, and RTabbed to use them.
110
111These new "tabbed" spacing types are similar to XmtLayoutSpaceInterval,
112but are generally more useful. If you have a number of rows one above
113the other in a layout and each row has the same number of items, then
114you can use these tabbed space types to align items vertically, as if
115they were in a table or spreadsheet. Similarly for adjacent columns
116with the same number of items. Note that these new space types don't
117guarantee that items in a row or column won't overlap.
118
119See section 19.2.2 in Motif Tools for a discussion of space types and of
120the five types other than these three new ones. See examples/19/spacing
121for an example of using these types. Run `mockup' on that example to
122see the effect of each of the eight spacing types.
123
124
125OTHER IMPORTANT CHANGES:
126------------------------
127
128The Makefile.simple makefiles that are referred to in the compilation
129instructions are now included in the release.
130
131Various fixes should make Xmt compile more cleanly on Linux and a number
132of other platforms, and also with C++ compilers.
133
134Xmt no longer uses bcopy(), bcmp() or bzero() internally. The use of
135these functions caused bugs on Solaris systems with a buggy libbsd.a
136library. Because these functions are no longer used internally, Xmt.h
137no longer includes <X11/Xfuncs.h> to portably declare (or #define) the
138functions. Thus, if your program used any of these functions, and was
139relying on Xmt.h to declare them, you may find that you have to declare
140them yourself now, or (better) switch to their portable equivalents,
141memmove(), memcmp() and memset(). Every OS should support memcpy(),
142memcmp() and memset() by now. Some (such as SunOS 4.1.3_u1) still do
143not support memmove(), however. If you have one of these systems, then
144be sure to uncomment the -DNO_MEMMOVE flag in Xmt.tmpl before compiling.
145
146The Layout widget has had a number of bug fixes. The most important is
147that setting the XmtNlayoutIn, XmtNlayoutPosition, XmtNlayoutAfter and
148XmtNlayoutBefore resources with XtSetValues() now works correctly.
149Also, unmanaging a row or column in a Layout widget will now make the
150contents of the row or column temporarily disappear as well.
151
152The Layout widget also handles overhanging captions differently now. An
153"overhang" is when a top or bottom caption is wider than the widget, or
154when a left or right caption is taller than the widget. In previous
155versions, Filled justification (the default) didn't work right with
156overhanging captions. They also looked ugly. In this version,
157overhangs are simply eliminated--where there is an overhang, the widget
158is made taller or wider as necessary to get rid of it. This is a
159user-visible change to an undocumented Layout behavior, but overhangs
160are quite rare, and it shouldn't affect many programs.
161
162Message dialog functions that take variable-length argument lists now
163handle those argument lists correctly.
164
165There is new function XmtDisplayMessageAndWaitVaList(), which combines
166the features of XmtDisplayMessageAndWait() with XmtDisplayMessageVaList().
167
168The XmtMsgLine widget now handles XmtMsgLineOnAction correctly.
169
170XmtMenuInactivateProcedure() no longer crashes if called for a callback
171procedure that has not yet been invoked.
172
173The ad2c script has been slightly changed to comment out xmtRequires
174resources. If you're running ad2c on one file, you're probably going
175to run it on the files it includes, so this prevents Xmt from going
176searching for a resource file that has been hardcoded into the program.
177
178A number of known but unresolved bugs are listed in the KNOWNBUGS file,
179some of them with workarounds. If you encounter bugs, please read this
180file.
181
182