Why TUI?
TUI means Text mode User Interface. While today has been a world of graphics-based applications, the traditional text based technologies and applications are still prevail. They can be found in all UNIX systems and many popular business fields such as banking, telecom, etc. Compared with GUI, TUI is more compact and takes less system resources.
What's MYTUI?
MYTUI is a TUI widget library based on curses. It is written in C and provides many ready-to-use widgets for rapid application development of text user interfaces. It is mainly delivered to develop UNIX-based applications.
Basically a curses or ncurses library can give a framework to create nice looking text mode user interface. However, it can be pretty difficult to write and maintain complex TUI widgets in plain curses or even with the additional libraries for a project that heavily manipulates screen.
The goal of MYTUI is to provide a portable, robust, RAD UI tool for developing front end of large scale Client/Server applications (such as core-banking transaction system) or stand alone text-based applications.
Unlike most similar tools, MYTUI shields the applications from complexities of all widgets to make interfaces more comprehensible and keep the operations more secure. MYTUI delivers handler other than painful pointer and structure to let you access all objects. You'll enjoy programming even you're a newbie.
Furthermore, MYTUI provides a powerful form developing tool --©wdesigner. It can help you design widgets and forms in the WYSIWYG (What You See Is What You Get) way, generate skeleton codes thus greatly save your developing time.
Packages
MYTUI consists of two parts:
- The basic SDK package. It provides all fundamental APIs in C/C++ for building and managing widgets/forms. It is free and you can use it without any restriction.
- The former designing tool: ©wdesigner. A RAD tool for defining widgets/forms in a WSYIWYG way. It saves resources in special TRF files for applications to access at runtime. It can also generate relevant C codes. ©wdesigner is not free, it is a shareware.
Widget Hierarchy

Available widgets:
- Label. The Label Widget is used to provide text output capabilities. The text string cannot be edited.
- Push Button.It is rectangular and typically displays a text label describing its action. Typically it commands the computer to perform some action, or to activate another form, etc.
- Line Editor. It is a one-line text editor. It allows the user to enter and edit a single line of plain text.
- ComboBox. It is a combined line editor and drawdown list box. It provides a means of presenting a list of options to the user in a way that takes up the minimum amount of screen space.
- Scroll Window. It is a text box with the content can be horizontally and vertically scrolled. Each line contains a single line of text. It is usually used as a log window as text can be only appended at the end in order.
- List Box.It provides a single-column list of selectable, read-only items (can be scrolled vertically). It may be a single-select mode box, or a multi-select mode box.
- Popup Menu.It is a standalone context (popup) selection menu. Technically it consists of a list of menu items, an item can also have a submenu.
- Pull down Menu. A list of options indicated by a row of single items at a main menu bar. Each item can be activated and a full submenu is pulled down, the user can then select the required menu item on the submenu. Like the popup menu, a submenu item can also have a submenu.
- Data Grid. It is used to store, retrieve and manipulate two-dimensional arrays or grids of data. Each cell can be a label, line editor or a combobox. It resembles a table in a database: there are field definitions with all cells on one column has the same data type (or widget type), constraints can be applied to a field by defining a callback. Data Grid provides some advanced functions such as sorting data, searching records, exporting/importing data to/from a text file etc.
- Progress Bar.It is a simple progress indicator used to show the status of an operation. It works in determinate mode that shows the percentage completed.
Forms and their widgets interact with the user by various callback functions that must implemented by the developer.
Here is a figure shows these widgets's typical appearances and layouts (except the popup menu and pull down menu):

Create MYTUI Applications With ©wdesigner
You can directly create your MYTUI applications with MYTUI SDK as this package provides all APIs you needed. It is strong enough, however, you have to painfully define all resources and attributes for widgets and forms in the program with relative APIs.
©wdesigner can considerably save your workload and make your application more maintainable by extracting and managing these static attributes in TRF (TUI Resource File) files. Applications read attributes at runtime and control the behavior of widgets/widgets. Each TRF defines a form window and its widgets. ©wdesigner also generates C codes to set up the frame of your program. Here are the typical steps to develop a app with ©wdesigner:
- Make a plan for all the forms and their widgets;
- Use ©wdesigner to draw your forms/widgets one by one and select attributes for them in the WYSIWYG way;
- Test and check these forms by form tools delivered with MYTUI;
- Let ©wdesigner generate skeleton codes for all forms. All callback functions are output for you;
- Now it is your turn to finish these callbacks;
- Compile and make your final application




