Programers or Pretty Widgets
In developing a email system called XMS I found a few large holes in the Athena widget set. This forced me to write some of my own widgets. I have decided to complete this into a full library (since only a few functions are missing. The library will have build in support for 3D drawing with GC caching and XPM reader/converter and support for fancy backrounds.
Design goals:
- Provide a wide range of widgets in a small space.
- Allow for easy conversion from Athena Widgets to Xpw. Note: Xpw will not be a drop in replacement for Xaw.
- Built in support for 3D look and feel.
- Built in XPM support.
- Built in clue support.
Why a new widget set?
Becuase all the free sets I could find don't seem to have the functionality that is required to write high quality X windows applications. The ones that do look promising either do not use the Toolkit (this may be bad or good depending on your point of view), too restrictive, or cost money.
Why not drop in replacement for Xaw? First off there already are many of these. Second the limitations I found in Xaw are still in these. For example in Xms (which is being developed in parrelel with Xpw, I am finding that the application is shrinking as new widgets are completed. The Athena widgets require that you either call their convience routines or redo their translation tables. Two examples, with Athena, to do cascaded menus I had to overide translations and install my own event handles, with Xpw I just install a popup menu as a child of the menu with to be cascaded, the popmenu widget does all the right actions, including delayed popup of the cascade if the mouse stays on the entry. Second example is with the Toggle widget, (or Select under Xpw), to support only a single selection in a group it took about 100 lines of code to impliment this. Under Xpw, it took zero lines, and you only get called by the new selection not the old and the new then the old agian as under Athena.
Licensing
Xpw will be release free for noncommercial use. Please contact me if you want to use Xpw in your commerical or shareware application, we can work out either a royaly or flat fee license depending on projected market volume. My hope is that in releasing the source for free it will allow for people to use the widget set and thereby make it more widely available. I feel this is one of the major hinderances to Motif and Xforms today.
Overview
The overall system will consist of the following widget:Check here for descritions of individual widgets.
- Constraint Widgets.
- Board, places widgets at preassigned locations.
- Paner, more complex RowCol widget supporting user resize. *
- RowCol, simple layout widget. *
- Tabler, complex manager, keeps widgets in rows and columns. *
- Stack, display only one child at a time. *
- Simple Widgets.
- Arrow, draws an arrow and accepts button presses. *
- Canvas, Open area for drawing in, callbacks for mouse and exposes. *
- Chart, draws a scrolling chart with a label. *
- Command, Handle command button. *
- Grip, Draws a small box, reports mouse events via callback. *
- Label, Draw a simple text/bitmap. *
- Led, Draws a L.E.D type display with format string.
- Line, Draws a 3D line. *
- Percent Bar, Scrollbar with no user input. *
- Slider, Draws a 3D slider and takes mouse input. *
- Select, Toggle type button. *
- TextLine, collects a single line of text. *
- Composite Widgets.
- AnsiText, Does a Vt100 emulation with color support.
- ComboBox, Allows for selection from a short list with popup menu. *
- Dialog, Pops up a dialog box. *
- FileSelect, Pops up a fileselection dialog box.
- Frame, Draws a 3d frame around it's child. *
- List, Similar to Athena List, multiple selections, fonts, built in scrollbars. *
- Scrollbar, Draws a 3D scrollbar and takes mouse input. *
- SimpleText, Displays and edits ascii text. +
- Text, Fancy text display widget.
- Viewport, draws a pair of scroll bars around it's child. *
- Menus.
- MenuArrow, Arrow button with a pulldown menu. *
- MenuButton, Command button with a pulldown menu. *
- MenuBar/BarButton, Draws a bar to collect pulldown menus and simple buttons. *
- PopupMenu, Handles popup menus. Includes cascaded menus. *
- PmeLine/PmeLabel, label and seperator for PopupMenus. *
- PmeSelect, Toggle widget for PopupMenus. *
- Hidden library functions.
- DialogShell, pops up when child is managed, pops down when child is unmanaged. *
- Pixmap reader/converter, and cache code. +
- Keyboard Focus groups. *
- 3D framer. *
- label drawing code. *
- Build in popup help windows. *
* Completed working widgets.
+ Widgets indevelopment.
Project status
All widgets marked as completed have been checked into RCS. Xcdplay released, also released a new binary of xmixer linked with current libraries. Currently working on finishing off SimpleText and man pages. Next app to be release will be xnotepad, a simple text editor and clipboard (test bed for SimpleText).
- SimpleText: needs to be finished off.
- AnsiText, Board, FileSelect, Led, and Text: need to be written.
- XPM reader need to be written (widgets support color pixmaps properly now).
- Man pages for all widgets.
Sample Applications
Getting the source
I have not done any work on this project for ages. So I have decided to release the source for the project as it is. If you do any work on this I would ask you to please send back to me any changes you make and I will integrate them into the source and make that available. If there is sufficent interest I will consider releasing these under GPL and setting up a sourceforge account to manage development.
Download here: Xpw.tar.gz   remember to do save as.
Last updated: 1/28/97