1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml">
5 <title>UltraText Terminal UI Library
</title>
6 <link rel=
"stylesheet" type=
"text/css" href=
"style/default.css" />
7 <meta http-equiv=
"Content-Type" content=
"text/xhtml+xml; charset=ISO-8859-1" />
13 <div class=
"motto">A terminal UI library
</div>
17 <h2><a name=
"Introduction">Introduction
</a></h2>
19 This library fills the almost empty niche of user interface frameworks for
20 text-based terminal applications. While graphical user interfaces have
21 proliferated dramatically, their terminal equivalents have been largely
22 left behind, creating a shift to graphical interfaces in pretty much all
23 applications currently under development. This is rather unfortunate, as
24 the graphical frameworks are considerably larger and slower. There is also
25 the concern of being locked in to the continued use of X11, a large beast
26 by itself, and whatever GUI framework has been chosen. Finally, most
27 applications do not really need the advanced capabilities of graphical
28 display and could just as easily be ran from the text console without
31 Back in the
"good old days" of DOS, there were numerous text-based
32 applications; word processors, spreadsheets, file managers, finance trackers,
33 telnet clients, and even games. These applications demonstrated that usable
34 and attractive interfaces are entirely possible to implement in text mode.
35 In Linux, things have not gone quite so well. Due to a lack of a decent
36 terminal output library (curses is not one of those), text mode applications
37 look and act rather poorly under Linux. Some support only monochrome output,
38 most accept only alphanumeric keys as input, and all keep a flashing cursor
39 around even when nothing is focused.
41 In the UltraText library you will find the necessary tools for creating
42 beautiful and usable text-mode application in the prevalent visual style
43 of the last days of DOS. That style is typified by Borland's TurboVision
44 toolkit, although only a few applications actually used that toolkit. It
45 features a look similar to what we find in GUIs today; windows, menu bars,
46 dialogs, interactive input fields and other UI elements.
48 From a programmer's point of view, I have tried to create an interface
49 similar to that of Microsoft Foundation Classes, with the document-view
50 architecture and an event-driven environment that takes care of the
51 low-level details of output rendering, focus management, event routing,
55 <h2><a name=
"Installation">Installation
</a></h2>
57 To start with you'll need a decent compiler. gcc
3.4 or later is required
58 to compile. Then you'll need to download UltraText and its prerequisites:
60 <li><a href=
"https://sourceforge.net/project/showfiles.php?group_id=180992">UltraText
</a> - the library itself.
</li>
61 <li><a href=
"https://sourceforge.net/project/showfiles.php?group_id=76798">uSTL
</a> - a small STL implementation.
</li>
62 <li><a href=
"https://sourceforge.net/project/showfiles.php?group_id=142338">Useful Terminal IO
</a> - the output backend.
</li>
64 After installing uSTL and UTIO, unpack UltraText and run:
69 configure is not autoconf, but rather a custom program with similar
70 functionality.
<kbd>./configure --help
</kbd> lists available options.
71 You might want to specify a different installation prefix with
72 <kbd>--prefix=/usr
</kbd>; the default destination is /usr/local.
73 Developers will want to build with
<kbd>--with-debug
</kbd> to get a lot
74 of assert error checking, which I highly recommend. If you are the type
75 to edit configuration manually, it's in Config.mk and config.h.
78 <h2><a name=
"Using">Using it
</a></h2>
80 Due to the complex nature of user interface specification, it is difficult
81 to create a simple
"hello world" application in a few lines. To get a UI up,
82 you'll need to create a singleton application object and add at least one
83 window to the root window. There will eventually be examples showing you
84 exactly how to do this. For now, the library being still in development,
85 there is little tutorial documentation. You can look at the doxygen-generated
86 <a href=
"html/index.html">class reference
</a> and see if you can figure out
87 how to use it yourself. I am sorry about that.
90 <h2><a name=
"Contact">Bug reporting
</a></h2>
92 Report bugs through the SourceForge.net UltraText library
93 <a href=
"http://sourceforge.net/projects/utui">project page
</a> with the
97 <div style=
"align: right;">
98 <a href=
"http://sourceforge.net">
99 <img src=
"http://sourceforge.net/sflogo.php?group_id=180992&type=4"
100 width=
"127" height=
"37" alt=
"Hosted on SourceForge.net" />
102 <a href=
"http://validator.w3.org/check?uri=referer">
103 <img src=
"style/valid-xhtml10.png"
104 height=
"31" width=
"88" alt=
"Valid XHTML 1.0!" />