How do I create a basic GUI for something like a data-entry application, a la WindowBuilder, Visual Basic, etc.?
The base Squeak doesn't really include a GUI Builder or Widget Kit for data-entry applications, although it does have quite a few widgets. There are a few external Widget Kits/GUI Builders available which can be used with Squeak:
SqueakGtk is an attempt to port Gtk+ GUI in Smalltalk Squeak.
wxSqueak is a Squeak interface to the wxWidgets (formerly known as wxWindows) GUI library.
BobsUI is a data-entry UI widget set for Morphic which contains a Rolodex example. (It does not include a "GUI builder"... you must specify the widget layout in the source code.) It does support tabbing between entry fields, and a few other niceties. BobsUI has been used by a number of people and has been relatively active in terms of being updated to the latest Squeak versions, and is available on SqueakMap. See the BobsUI swiki page for current downloads and more information.
Prefab widget set is a Morphic UI widget kit by Chris Reuter, which lets you layout widgets on the screen and then generate Smalltalk source code from this layout. It includes various standard (data-entry) widgets, and is roughly based on Tk. See http://www.blit.ca/prefab.html.
CGUI is a set of Morphic Widgets written by Squeak people. It has a modern Design, mouseOver Effects and always an Example of using it.
Bricks from Todd Blanchard has the potential to be a very useful set of building blocks for creating a Morphic UI. Current version is for 3.6.
SguiKit (Squeak GUI Contruction Kit) is a Morphic widget contruction kit from Michael Rueger. It lets you layout widgets with a contruction tool, which then generates a gui spec. However, it has not been ported to newer versions of squeak (3.0 and up, and maybe nothing past 2.7). See http://www.squeaklet.com/sguikit/index.htm.
Wouldn't it be possible to build a window with the standard morphic manipulation tools (halos etc.) and then store and delete it? One could then make a veryDeepCopy openInWorld of the window whenever one wants to put an instance on the screen.
Here is a screenshot of the Rolodex example included with BobsUI:
.
Also, if you're looking for a more "standard" UI feel to go with one of these tools, see Customizing the Squeak UI.
Some other miscellaneous examples:
TableMorph widget for spreadsheets, tables. Q: Why isn't there a GUI building widget kit already built into Squeak?
A: Because none of the above widget kits have achieved critical mass, yet. (as of early 2005) However, what we should do now is offer to include any widget kit in the Basic release which comes with a modest promise of maintenance as defined in this squeak-dev post:
I agree, Brad, that a better widget set and general UI tools would be
nice, and I've argued in the past that we should put one into the
standard basic image for people like you.
We actually have several widget sets on SqueakMap (have you tried
BobsUI or Prefab?), and so I suggested that we should put the first one
into the main image that someone would volunteer to actually maintain.
To prove they actually have some time available to maintain it, I think
they should have some requirement, e.g. to make a Play With Me project
which introduces you to the toolkit. I think we should tell them their
toolkit will get put into basic (GUI's are part of basic development!), so
that they will have incentive to do the work.
No one has really volunteered, but I still think it's a good idea. For
application developers using Squeak, it would be very valuable to not
only have a great framework like Morphic, but to have a good set of
widgets implemented in the framework.
Mostly likely, any adequate GUI toolkit which is added to Basic and is maintained by its owner for a few releases, will be adopted by a number of people, and may even become self-maintained by its community. So if you offered up your toolkit according to Lex's guidelines above, you probably wouldn't have to worry about maintaining it yourself forever. (dew)