MMII Makes Iota Interactive --------------------------- Magic Blue Smoke Release What is it? ----------- MMII (pronounced "two thousand two") stands for "MMII Makes Iota Interactive" and is a windowing toolkit for the Iota+ programming language. Using MMII it is possible to write simple applications which respond to user input, and produce interesting output. Changes in this version ----------------------- Magic Blue Smoke Release: - TextEntry now has listeners that are notified when the user does something to alter the text in the edit box. - It is now safe to call removeListener from within a notified method listener. The listener you remove will still be called during the current round of notification (since the notification order is unspecified), but it will be gone by the next event. - All new Canvas widget! Now you can draw all kinds of random nonsense in a variety of colors! Register a CanvasPainter today! (PS: please don't steal Brushes -- Win32 will make you pay for them). - New Brush.int interface file for Brush objects. - Two new examples. - ilinkgui.bat now also links to GDI32.lib, be sure to get it updated. - The programming guide is getting obsolete, but it will soon be replaced by an in-file spec in MMII.int. How to use it? -------------- Programming with MMII is fairly intuitive. At the heart of every MMII application is an MMII.Application object. This class is responsible for the event loop of the program. You can only create a single Application instance per program. The makeApplication() function will keep returning the same object if called multiple times. From the Application object you can create one or more Frame objects. A Frame is a top-level MMII window. A Frame may contain one or more widgets. Closing a frame does not necesserily kill the application. (However selecting File|Exit from the Frame's menu has the same effect as calling requestApplicationExit() method of the Application). Widgets may be created within a Frame by calling addWidget() and calling one of the methods of the resulting WidgetMaker object. The WidgetMaker will create the widget, insert it into the Frame with which it's associated, and return a handle to the Widget. Calling more than one method of an instance of WidgetMaker is an error, and the WidgetMaker will return null for all but the first method calls. Most Widgets, as well as Frames and Application allow you to register zero or more Listeners to be notified about interesting events. The intention is that a FooListener interface is implemented by a class in user code, and subsequently added to a widget using the addListener() method. Linking ------- In order to link your Iota Application against MMII, it is necessery to use the ilinkgui.bat batch file to invoke the linker. This will link in additional Win32 libraries necessery for GUI programming. BUGS ---- - There is currently no way to control hide a widget, or to destroy it. - This will require some design decision. Future versions of MMII may contain hide()/destroy(). - While the About Dialog is popped up, no idle tasks execute - This still appears to be a limitation of Win32.