The Super Widget Package(SWP) is continuing to evolve, but since version 1.0 great care has been taken to avoid incompatibilities with earlier versions.
In addition to many bug fixes and minor improvements, this version contains a new feature to enable an application (running under Windows) to register one or more data types so that they are automatically opened by the application. This behaviour is analogous to the way in which .DOC files are opened automatically by an installed word processing application.
This is the latest version, and (at last!) the documentation is fully integrated with the Documentation Center.
It contains some bug fixes, and new features which are used by my clients. Unfortunately there are not yet documented. It has been tested with Mathematica version 8.0, and should also work with 7.0 and 6.0.
Version 5.36 fixes a major bug in the GraphicsRegion drag/drop mechanism that appeared at version 7.0. This version of Mathematica uses Java version 6, which contains a bug that causes XOR graphics operations to render extremely slowly.
Over time, the SWP continued to evolve with bug fixes and special features put in for specific clients. The main visible improvement at 5.30, is more documentation of new features that have existed for some time.
The associated variable of a control can now be an element of an array – thus making it much easier to create complex layouts. A function has also been added to dynamically colour buttons.
This contains a number of important bug fixes to SuperWidgetTree, SuperWidgetGraphicsPanel, and SuperWidgetButton. Image buttons are now much neater, leading to more attractive toolbars. There is also a mechanism to leave windows visible after they have been closed. This 'shadow' remains visible until the next SWP window is opened, and has a variety of uses, including the creation of a splash screen (or wait screen) that disappears when the next window is displayed. This is helps to create a professional looking GUI.
The problem with displaying help information at version 6 has been resolved. This version also contains a fix for a bug that could cause a window that was closed soon after it was open to remain visible indefinitely.
As a temporary solution to the problem of the new version 6 help format, the SuperWidgetHelp function has been introduced to display the reference manual in skeletal form.
A new super widget – SuperWidgetDecimalBox is available to process Real numbers with a fixed number of decimal digits after the point (e.g. currency) in a right justified field. An option is also available to apply the same formatting to the Real elements of a SuperWidgetTable on a column by column basis.
This contains a variety of small fixes related to version 6.0 of Mathematica and residual problems arising from the move away from GUIKit. The function Snap\[Breve]Component has been added to take a picture of any widget or of an entire window specified by control variable.
The first version of the SWP which is not based on the GUIKit. The immediate consequence of this is improved performance and stability, but over time, there will be new features that will benefit from the flexibility that this change has made possible.
This version contains fixes to make it compatible with software released at the recent Wolfram Technology Conference.
Two new super widgets have been added to draw separator lines between other controls in windows – SuperWidgetHorizontalSeparator and SuperWidgetVerticalSeparator. If also contains an important bug fix for combo boxes containing HTML code, together with an alternative way to retrieve the selected item by index rather than string.
A dynamic tool tip feature has been added. This lets you add a tool tip to a graphics panel which varies depending where the mouse is positioned in the image – ideal for exploring complex functions or vector fields. This version also contains important bug fixes to SuperWidgetVerticalSlider, and the use of a Hue ColorFunction no longer disrupts the calibration of some plots.
A progress bar super widget has been added. In addition, the combo box has been enhanced to accept the Return\[Breve]Action option and to respond to UpdateWidgetValue, etc. A function has been added to replace the entire drop-down list. Several convenience enhancements have been made. In particular, Close\[Breve]Frame will accept the control variable of any super widget contained in the window rquiring closing – rather than requiring the variable associated with the frame itself.
Contains new functions to animate icons (of arbitrary shape) on top of graphics panels. These were originally introduced to track corresponding points on a number of curves, but they can be used for many purposes. The icons can be moved extremely cheaply – making fast animation possible. A new function – ServiceGUI – is also added to ensure a prompt repose from a GUI while a long animation (or other task) is in progress.
Contains a new super widget that integrates with JavaView. Using this, JavaView windows can be embedded in a general GUI. SuperGUIRunModal now has an option to supply a function to be executed after the GUI is first displayed. This has many uses, and is particularly useful in the context of JavaView.
New functions to control the text and background colours of basic input widgets have been introduced.
This contains some bug fixes and also some new functions for dynamically controlling the properties – such as focus – of the basic input widgets.
This is a minor improvement to 3.10. A bug with menu separators at 3.00 has been fixed, and the basic data boxes will now accept the option Editable->False to create a box that displays data but is not user-alterable.
A number of internal changes have been made at version 3.00 designed to make the package more robust by using J/Link rather than GUIKit for certain operations. These changes have not changed the interface to the SWP in any way. Anyone who thinks there is a problem should contact me with an example.
This version also lets you add accelerators and mnemonics to menus. These are a great boon for the GUI user. Some platforms do not support mnemonics, and mnemonics are silently ignored in such cases – thus no special action is required if your software is to run on a range of platforms. Integer, real, and string boxes can also take an option to specify that the initial text should be pre-selected (so that it will be replaced if the user just starts typing).
This version has two new innovations:
The SWP now caters for Wizards using SuperWidgetWizard (what else). These are ideal for guiding a user through a complex series of choices, and if you take care to disable any page to page transitions that don't make sense, the result can be a real boon to your users.
The snapshot mechanism is changed to use a visual camera button to collect snapshots – much more flexible than the old scheme.
This version contains enhancements to SuperWidgetTree – in particular, it is now possible to pick off double-click operations on nodes. More enhancements to tree widgets are pending. Version 2.70 also contains details about using HTML strings in many other types of controls. This feature is part of Java/swing, and therefore has always been possible, but the user guide now contains more details.
Version 2.70 also contains fixes for several bugs that affected non-windows platforms. Many thanks to those users that took the time to report these problems and assist in their resolution.
This version resolves a problem loading the package on certain platforms, and fixes a bug associated with editing numbers. It also introduces the SuperWidgetPanel, which is useful for creating fancy layout effects.
This version contains new functionality for SuperWidgetLabel to permit the contents of the label to be changed on the fly. It is also possible to create centred or right justified labels. The two slider controls have also been enhanced to include an option to show a labelled axis. Further enhancement of the slider controls is pending! As usual, these changes have been made while maintaining complete compatibility with earlier versions.
This version is considerably more stable that 2.40 (or earlier versions!). Other than that, the extra code relates to new features yet to be announced.
The current version contains a major enhancement to the SuperWidgetGraphicsPanel. Mixed with the ordinary Mathematica graphics primitives, you can add a new kind of primitive that identifies a polygonal region which is to have certain properties. Each region can have:
• Its own mouse cursor.
• An individual context menu (right click menu on Windows).
• The contents of graphics region will be optionally draggable, with feedback to your program at the end of the process.
This new functionality makes Mathematica graphics extremely dynamic and interactive. Example 6 illustrates this functionality with a simple electronic circuit-building program in which the user builds the circuit by dragging components (each in its own individual graphics region) across the screen.
Because the new Graphics\[Breve]Region concept is so powerful, all the mouse interaction with this super widget is documented in terms of these features, although I have retained the old functionality to ensure that existing code does not break.
As with everything else in the Super Widget Package, this new functionality is designed to be really easy for Mathematica programmers to understand and use.
Version 2.30 contains a function HTTP\[Breve]Push which provides some of the functionality of HTML forms. This is exploited in example 5 to display a comment feedback form. Also at this version, text labels (implicit or explicit) can span several lines by including newline characters in the text string.
Version 2.20 of the SWP contains extended support for LiveGraphics3D applications that use parameterized graphics. As the user moves a parameterized point, this change can be fed back into your Mathematica code – analogous to the operation of a simple slider control.
This version contains a wizard to help load and install the LiveGraphics3D applet directly from the internet when first used.
Version 2.11 contains initial support for embedding the extremely popular LiveGraphics3D applets inside GUI's. This makes it possible for a program to create 3D plots which can be examined and manipulated using the mouse.
Here is a very simple example of a LiveGraphics3D object embedded in this web page (the traditional use of the applet). Drag the mouse over the image to cause it to rotate or spin.
This version also contains a variety of bug fixes and stability improvements.
Version 2.0 has been enhanced is several ways:
1. The package is now supplied as a ZIP file which may be installed as a conventional Mathematica package which can be loaded with the Needs command.
2. The package comes with built-in help.
3. The concept of a user-defined widget is introduced.
4. Nested calls to SuperGUIRunModal now disable the outer window while the innermost nested window is running.
5. A variety of bugs and inconsistencies have been eliminated.
Initial introduction of the package.