Copyright © 1998-2006,2011 Dipl.-Inform. Kai Hofmann. All rights reserved!
This list is only a wish list, so do not expect that Classes mentioned here will be available in the forseeable future. Also, do not ask when a Class from this list will be available. Send only mail if you are interested in implementing one of the below mentioned Classes. For a list of already existing classes take a look at the TUMULT page.
|Animation.mcc||Class that can display animations in various formats (Amiga IFF based, animated GIF, MPEG etc.). It should be possible to control the animation (stoping it, starting it, playing it backward etc.).||Martin Hunt,firstname.lastname@example.org|
|ARexx.mcc||ARexx port for applications.||Kai Hofmann,email@example.com|
Displays one of 52 game-cards. It should be possible to display the whole
card, or only the top or left, so that cards can be overlayed.
Usefull for various card-games.
|CDE-style magnification wheel||
The Common Desktop Environment (CDE) on Solaris features a filemanager based entirely on vector graphics. The icon view in a directory window can be zoomed in and out. It is zoomed by adjusting a wheel that is located to the left of the directory window. You see the wheel's narrow side, not the disc side.
Adjusting the wheel should "feel" like a wheel in thus far that moving the mouse up and down should be visualized and interpreted in a non-linear way.
Attributes to be considered:
Contact me for detailed graphical sketches if you plan to implement it, or if you like, I will program the visual part of this class using vector graphics and/or guigfx.library. Your share would be the class framework and the config panel (if required).
|Timm S. Müller,firstname.lastname@example.org|
Displays all characters (as rel-verify buttons) and let the user input
characters, so that he/she has no longer to search for key combinations
like "alt e" for © (German keyboard layout).
Keep in mind that there are now new charsets that are NOT ISO8859-1 (standard Amiga charset).
|Clipboard.mcc||The clipboard should become a visual element with which the user can drag&drop text as like as other objects. Toolmanager 3 has something like this. It might become very usefull with a TextEditor that supports dropping of text objects (emails, urls etc.) to the cursor position. So the Clipboard.mcc must interact with the Amigas clipboard system. Keep clipbord units and different object types (graphics etc.) in mind.||Kai Hofmann,email@example.com|
Setting of single colors is already possible with Poppen.mui, but what is
about color ranges? It should be possible to adjust a color range from one
color to another with an unlimited number of nodes between, e.g. a color
bar beginning at yellow turning to green in the first third and reaching
blue within the next two thirds.
I imagine two presentations of this class.
Apart from processing user input the class should also support obtaining a good choice of pens for displaying the color range. The suggested method is to obtain the colors of the nodes first, setting up a priority queue at the same time with the intervals' length as priority. Then it should halve successively the largest interval until a specific color resolution or number of pens is reached or the palette runs out of pens (which is obviously the case if pens doesn't differ from their neighbours).
A container class contains other objects. It should be possible to limit
the number of objects that can be within the container class.
Drag&Drop is a must be for a container class, because the user must be able to drop objects into the container and drag objects out of it.
A drag can be a copy or a move drag! A drop can be an insert or a replace drop! It should also possible to select objects that are within the container and to delete them or drag the whole group.
It would be usefull when the container class a minimum of three modes:
Another thing that must be mentioned is that possible only special types of objects might be droppable into the container.
As applications become more and more complex from day to day it is not
always possible to simplify the introduction into a new program by a
well-styled user interface. A good GUI let the user see what steps are
possible but does not tell the user how the steps must be combined to
achieve what he want. Normally you write an amiga guide which explains all
these connections. And it's also normally that no one reads the guide and
either kick's off your program immediately or asks you how he can to this
or that. But how can you show the user important steps anyway?
Right, with a demonstration! When started the Amiga takes over control over mouse pointer and keyboard input and operates with itself. Ok, you will know such tools from former time, which simply recorded mouse moving and keyboard events, but this is no longer possible with font sensitive GUIs.
The solution: A MCC which processes a script telling when to hit what GUI element and what explanation text should be printed during the action. A tape deck for skipping, replaying, stopping and continuation would be great.
The application must serve such an demonstration object and has to tell it which objects are associated with which names that are used in the script. The demonstration object knows that area objects has to be clicked with left mouse button, that menu objects has to be pulled down with right mouse button (hoping that no MagicMenu changes the expected coordinates), that string gadgets expect keyboard input and that scrollers want to be moved. You see that it wouldn't be a bad thing if the basic MUI classes had the facility to control itself or to help to navigate the mouse pointer.
Conclusion: I don't know if this is possible or senseful without extending the basic MUI classes, that means I don't know if this can be really done as external class or if this should be a point of further MUI development.
Note that this is also an interesting topic in conjunction with a new MUIBuilder since such a tool can help a lot to write such scripts. Hopefully there will be someone who will pick up development of MUIBuilder again, or do you want to switch to StormWizard in future?
|Dice.mcc||A dice is very usefull for games, especially when it is possible to set the number of sides (defaults to 6).||Kai Hofmann,firstname.lastname@example.org|
|Diagram.mcc||Diagrams can show information which can be easy understood. There are different types of diagrams like: Beam-Diagram, Cake-Diagram etc.||Kai Hofmann,email@example.com|
|Envoy.mcc||This class allows access to the Envoy 2.0 network.||Kai Hofmann,firstname.lastname@example.org|
|GammaColor.mcc||With this class everyone can define the Gamma correction for color-pictures. Usefull for graphic applications. An example for this class can be found within TurboPrint.||Kai Hofmann,email@example.com|
A real graph class will be very important, but difficult to do!
A graph class should display different graphs like a tree, acyclic graphs
and cyclic graphs.
It should be possible that the user interact via the graph with an application (direct manipulation). Examples that might be helpful are:
The GraphWin part of the LEDA
This class allows an easier input for hotkey strings. As an example within
the MUI preferences there are various places where to use hotkeys
(iconification or the large list within the Navigtion page).
To simplify the usage for the user HotkeyString allows it to press the hotkey combination when the string gadget is active and then displays it as the well know string names. So users don't need to worry any longer about these string names:
shift lshift rshift caps capslock alt lalt ralt control lcommand rcommand lamiga ramiga numericpad space enter return esc tab bs del help up down right left f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
Works in the same way as the standard tool "KeyShow". So it displays
the keyboard to let the user find out which key combination he/she has to
press to display a character.
Keep in mind that there are different keyboard layouts for different countries as well as for different Amigas (A600 vs A2000).
|Map.mcc||Displays grafiks and allows it to define regions that can be selected. Drag&Drop support might also be interesting. This class is usefull to displays a map of the earth to select time zones like in the Amiga Locale-Preference-Manager. It will also be usefull for WWW Browsers.||Kai Hofmann,firstname.lastname@example.org|
|MathFunction.mcc||This class should display mathematical functions like f(x) = x^2 etc. within a restrictable range. It would be very interesting if the drawn functions can be interactively manipulated by the user. Another interesting thing would be three dimensional drawings.||Kai Hofmann,email@example.com|
This should help application programmers to customize their mouse pointers.
This is meant for applications where the mouse pointer changes when moved
over specific areas (e.g. a text processor where the mouse pointer changes
if you are over a selected area or turns into a pipette to show that it
holds format settings now).
The class is sub-class of area class and shows the image of the mouse pointer. If pressed a file requester pops up and let the user select another image file which is loaded via datatypes then. If an object of this class has an ObjectId it imports/exports its image when requested. Further the class supplies a method which sets its image as the window's mouse pointer.
|Network.mcc||Abstract base-class to Envoy.mcc, AmiTCP.mcc etc.||Kai Hofmann,firstname.lastname@example.org|
|Notebook.mcc,p||A notebook can be found within IBMs Presentation Manager and works like a page group.||Kai Hofmann,email@example.com|
|Paintbox.mcc||Paintbox object that allowed standard loading/saving of pic-formats (probably with Datatypes) and gave the user the ability to scribble all over them. Maybe a built in drawingtoolbox? Offering standard shapes, brush size etc. This could be used as a simple icon editor for adding into applications to allow the user to easily configure the look of icons on his toolbar? But that would mean a change in the way the Toolbar.mcc works - using individual images rather than strips.||Michael Carter,Michael.Carter@aspentech.com|
|Panel.mcc||Allow the user to add a number of panels (no limits) which would be seperated by a divider like known from Windows, where you will see most status panels along the bottom edge of a MS application. Each panel should have the ability to add an image in it. It should also be capable of responding to a user clicking in it etc.||Michael Carter,Michael.Carter@aspentech.com|
|PopupArrow.mcc,p||Popup arrows can be found within PageStream3. They are similar to PopupMenu objects but they only show a popup arrow and not their selection state.||Kai Hofmann,firstname.lastname@example.org|
PopupLists can be found within PageStream3 and WordWorth5. There they are
used to select one of a whole list of fonts.
PopupList objects are like PopupMenu objects that include scrollers.
|PopupMenu.mcc,p||Popup menus are found in PageStream3 and WordWorth5. They are similar to cycle gadgets but they pop up always at selection time and the arrow points to the actual selection.||Kai Hofmann,email@example.com|
Classes that should help handling of multiple project windows. One goal is
to simplify some steps by supplying methods that allow usage of
notification (e.g. activating window -> setting current window + change
the window title, selecting menu items -> do an action on the current
project window, close last project -> quit application) the other goal is
to introduce new features that are missed in most multi-project
applications up to now (window arranging, switching between single project
windows and one window with a listview connected with a project group).
A conception in AutoDoc format is already available.
A slider with two handles - one on each end - allowing to select a range,
as well as move the range.
Should look and work like a combination of two NumericButtons and a Slider.
Useful for example to select the start/end track number for disk utilities.
You might also want to call requesters without pop up objects (Popasl.mui).
Problem: ASL requesters are synchronous, that means the application is
blocked while the requester is open. This is bad in (in terms of GUI)
multi-threaded applications what MUI apps normally are. Blocking the
application does also mean that simple refresh windows cannot be refreshed!
You may use the IntuiMsgFunc - I never get this working. You may create an
extra Dos process for the requester like Popasl do - it is still impossible
to close the requester by the application (necessary when the application
should quit while the requester is open).
The solution: Reqtools requesters offer asynchronous startup of requesters. Using application input handlers you can interleave requester and MUI actions. The only restriction is that every requester needs an own signal. I succeeded with it, but it is not easy. So the next goal would be to create a common MCC which supplies a simple MUI interface for reqtools requesters, including the asynchronous variants.
Rulers are found within PageStream3 and WordWorth5. They are restrictable to
a range and the user can choose the measurement system for scaling them.
Work in progress by Jacek Rzeuski,firstname.lastname@example.org
|Speed.mcc,p||Speed should have a maximum speed and it should be possible for the user to change between different systems like km/h, miles, seamiles, lightspeed etc.||Kai Hofmann,email@example.com|
Provide facility to use exisiting dictionaries from Wordworth,
FinalWriter etc. and their custom dictonary. Maybe provide some standard
dialog boxes, that are customizable by developers.
Would work by passing spellcheck.mcc a pointer to the text buffer (say from texteditor.mcc) and it would go through and provide cursor positions of words that are either mis-spelt or not present in dictionary. The cursor position returned could be used to highlight the word in whatever text editor is used.
Maybe ASpell could be used as basis if the author was contacted?
|TCPIP.mcc||This class allows access to the AmiTCP/MIAMI/.. networks.||Kai Hofmann,firstname.lastname@example.org|
The range of temperature should be restrictable and it should be possible
for the user to switch between different measurement systems like:
Celsius, Kelvin, Fahrenheit, Réaumur
|Toolbar.mcc,p||Toolbar like it cn be found in WordWorth, PageStream3 or MS-Windows programs. Should be completly and simply user editable with drag&drop.||Salvador Fandiño,email@example.com|
|Toolbox.mcc,p||Toolbox like it can be found in PageStream3 that can simply be customized by the user.||Kai Hofmann,firstname.lastname@example.org|
Vertical register/tabs as seen in Microsoft Access and probably other
As for how it would operate - I guess just like the original Register class. Maybe add more config for it so that the tabs could be vertical or horizontal. Also the ability to have them going along the bottom of a page as an Excel spreadsheet does.
|Weight.mcc,p||This class should display weights in different measurement systems like kg etc. Maybe a pair of scales would be a good choice to display a weight.||Kai Hofmann,email@example.com|
|More informative feedback|
I wanted to start this wish with a citation from the following book:
Designing the User Interface
"Eight Golden Rules of Dialog Design
I also wish to have special feedbacks (maybe special (animated) pointer images) during the following actions:
Printing, (Hard-)Disk access, Sending/Receiving Fax, Scanning, Sorting, Searching, Network access, (De-)Compressing, Tape access, CD access, Calculating something
As an example I would like it to see a book where the pages turn over as long as a search is in progress. Maybe an mcp where the user can change the pointers is a good idea.
Also special pointer images should be applieable to Areas, this is used in WWW Browsers where the pointer changes when it is over a link - another example is TurboCalc where the pointer changes to let the user know about things he can do.
We need Drag&Drop between applications - this will be very handy for
things that are used everywhere - like an address database which will
be used with many other programs.
Introduce a new "help"-mode which allows user to see all objects that are draggable within an application (by highlighting in some way). This will increase the learning speed of the user!
Also it would be usefull to have another "help"-mode that allows the user
to see all possible destinations for a draggable object - maybe as an
extra "learn" mode that could be switched off later when the users knows
the application well enough.
|Allow it for keyboard useres to display the Bubble help for the actual object - maybe with SHIFT-HELP ?|
Citation from Theo Mandels "The Elements of User Interface Design":
Another real-world metaphor that is extremly usefull in an object-oriented
user interface is the template. Template is the term for what you know as
Post-it notes or the yellow sticky pads that everyone uses at home and at
the office. The concept is the same on the computer; just drag fram a
template object and drop it anywhere, and a new object is created. The
template is a powerful tool in the object-oriented interface. Any object of
any type (data, container, or device) can potentially be made into a template
The best example for the usage of such templates would be MUIBuilder I think.
The String class should accept the string via [SHIFT-] TAB -another
good feature would be to allow the user marking of the string via the mouse.