Please read the history bottom-up. Note that the history might list some features that were implemented in beta versions and removed later but are still mentioned here. This history is a log of the programmer so that he can look up what has been done/tried/modified. Things that were implemented and removed later are marked with [VOID]. Version 1.7 (01-Oct-17) - Change: Updated documentation - Fix: Area.ContextMenu didn't work with Group objects (reported by Tony Canazza) - Fix: Slider.Stringify didn't work for Numericbutton class (reported by Petteri Valli) - New: Added Notify.ExportID [ISG]; this can be used to load and save the states of certain MUI gadgets like string, radio, cycle, listview, text, etc. (requested by Artur Ostrowski) - New: Added Application.Load() and Application.Save() methods to easily load and save the current GUI state configuration (requested by Artur Ostrowski) - New: Added mui.FreeImage(); this allows you to free an image in MUI Royale's internal image cache; you have to pass the number of the brush you want to free or -1 to free all images; note that you must make sure that the image you free is no longer used by any widget or MUI Royale might crash; note that normally it isn't necessary to call mui.FreeImage() because all images are freed automatically when MUI Royale quits; it's only necessary in case you want to reuse the same brush number with a new image or free memory used by an image (requested by Lazar Zoltan and Petteri Valli) - New: Added mui.HaveObject(); this allows you to check whether the specified MUI object exists (requested by Tony Canazza) Version 1.6 (08-May-17) - Change: Updated documentation - Fix: Virtual groups didn't work inside scrollgroups (reported by Kai Stegemann) Version 1.5 (06-May-17) - Change: Updated documentation - New: Virtgroup class can now also be used outside of groups managed by Scrollgroup class (requested by Tony Canazza) - Change: About MUI Royale logo is stored with compression now; saves about 80kb in the final executable size - New: Added support for Numericbutton MUI class; it uses exactly the same attributes as Slider class (requested by Petteri Valli) - Fix: Button.HiChar and Text.HiChar were documented and implemented as ISG but their real applicability is just I (reported by Petteri Valli) - Fix: Application.DoubleStart never triggered (reported by Petteri Valli) - New: Added Slider.Pressed [N]; this can be used to listen to mouse clicks on the slider knob (requested by Tony Canazza) - New: Added Area.ShowSelState; this is only interesting for people wishing to do advanced stuff with MUI Royale - Change: Moved Button.Pressed and Button.Selected attributes to Area class; this is necessary for you to make full use of the new Area.InputMode attribute - New: Added Area.InputMode [I]; use this with care as typically this is set by the individual MUI gadgets themselves so setting an alternate input mode is potentially dangerous (requested by Tony Canazza) - New: Added Area.BackgroundBrush [IS] (requested by Tony Canazza) - New: Hollywood class supports the "VanillaKey" event handler now if Hollywood 7 is available; this event handler allows you to listen to Unicode keys - New: Added Unicode support if Hollywood 7 is available; of course, AmigaOS doesn't support Unicode itself so you'll always be limited to the system charset but at least MUI Royale always uses UTF-8 internally now so as soon as AmigaOS or MUI gets full Unicode support MUI Royale can support it too Version 1.4 (25-Sep-16) - Change: Updated documentation - Fix: Escape sequences are now filtered from the string gadget created by Poplist class (reported by Richard Lake) - New: Added Listview.AutoLineHeight [I] and Listtree.AutoLineHeight [I]; these are more convenient than xxx.MinLineHeight but they require at least MUI 4.0 - New: Added support for TextEditor.ImportHook and TextEditor.ExportHook (requested by Jean-Noel Roueste) - New: Added support for MUI's Busy class; this is useful for indicating progress when the total processing time is unknown - Fix: Memory access fault in mui.Set() under special, rare circumstances - New: Added support for MUI's Scrollbar.mui class; this is a subclass of Prop.mui - New: mui.Request() supports an additional argument now which allows you to specify an icon to be shown in the requester; this is currently only supported with the MUI4 maintained by Thore Böckelmann (requested by Jean-Noel Roueste) - Fix: Wrong virtgroup layout e.g. in Virtual.hws - Fix: Crash in Register.AddPage() in case an error occurred - Fix: Crash in mui.CreateObject() in case an error occurred while creating the object - Fix: Notify on String.Contents didn't work - Change: Removed TextEditor.FlushColors() and TextEditor.Pen; these are superfluous now because colored text is no longer pen-based - Change: TextEditor.SetColor() and TextEditor.Color use TextEditor.mcc's inbuilt RGB text mode now which is a much better solution than the previous pen-based approach; as a result, TextEditor.mcc 15.47 is now required by MUI Royale! - New: Added Listtree.Quiet [S] which can be used to turn off refresh when adding lots of items (requested by Richard Lake) - New: Register.InsertPage() allows you to insert tabs into arbitrary position (requested by Richard Lake) - Fix: Listtree.Insert() and Listtree.Rename() didn't support images using the \33A sequence (reported by Richard Lake) - New: Listtree.MinLineHeight allows you to set a minimum line height for the Listtree object - Fix: In some rare cases mui.Set() didn't report a correct error message - Fix: Menuitem.Selected, Poppen.RGB, String/Popfile/Popdrawer/Popfont.Contents, String/ Popfile/Popdrawer/Popfont.Acknowledge notifications didn't set TriggerValue correctly - New: Listview.Jump() can handle the special values "Active", "Top", "Bottom", "Up", and "Down" now - Fix [AROS]: Hollywood class didn't handle satellite bitmap pixel formats correctly; this didn't have any practical consequences for Hollywood versions <= 6.0 because of a bug in these Hollywood versions; this bug was fixed in Hollywood 6.1, though, and then prevented embedded Hollywood displays from working correctly - New: Added support for palette-based screens; when calling @REQUIRE and the front-most screen is palette-based, MUI Royale will automatically install a display adapter which supports palette-based screens; if you want to open Hollywood displays you also need the Plananarama plugin and you need to @REQUIRE the Plananarama plugin *before* MUI Royale! Version 1.3 (27-Jun-15) - Change: Updated documentation - Change: Installer automatically integrates the MUI Royale examples into Hollywood 6.0's example tree now so that you can conveniently launch them from the Hollywood GUI - Fix: Listtree.Remove() didn't remove the nodes and items from MUI Royale's internal object collection which meant that you could still access them through mui.Set() and mui.Get() - Fix: Listtree.Insert() returns an error now if the id is already used by another object - Fix: Listtree.Insert() didn't make new nodes and items available to MUI Royale's internal object collection which meant that you couldn't access newly inserted nodes and items using mui.Set() and mui.Get() for example to associate user data with them (reported by Richard Lake) - Fix: Getting Listviewcolumn.Hidden didn't work correctly when the user manually hid a column using the context menu in the listview's title bar (reported by Rüdiger Solbach) - Fix: Getting Group.ActivePage no longer returns "First" for the very first page but numeric indices for all pages (reported by Lazar Zoltan) - Fix: Qualifiers like shift, alt, command... didn't work with Hollywood 6.0 (reported by Jörg Renkert) - Fix: Memory access fault when calling mui.Request() before mui.CreateGUI() (reported by Simone Monsignori) - Fix: Listview.GetEntry() didn't make sure that there is enough stack space for storing the return values (reported by Lazar Zoltan) - Fix: Read from recently freed memory in mui.FreeObject() and when shutting down the application (reported by Thore Böckelmann) - New: Menuitem.Title supports text formatting codes now if MUI 4.0 is available; please note that text formatting codes only work for context menus, not for screen bar menus (requested by Richard Lake) - New: Added several new functions to deal with string objects: String.Copy(), String.Cut(), String.Paste(), String.Insert(), String.Undo(), String.Redo() as well as the attributes String.MarkStart [ISG], String.MarkEnd [ISG] and String.CursorPos [SG]; all of these methods and attributes require at least MUI 4.0 (suggested by bitRocky) - Fix: Area.Hide didn't work correctly with text editor objects that have a slider attached (reported by Lazar Zoltan) - Fix [Doc]: PopFile.Pattern was wrongly documented as PopFile.InitialPattern (reported by Jörg Renkert) - Fix [Doc]: Tutorial code contained a bug concerning the way "ShowWindow" and "HideWindow" were handled (reported by Damaso Dominguez) - Change: Merged code of muiroyale.hwc into the main plugin; muiroyale.hwc is no longer necessary now - Fix: Setting Group.Title on a group object that hadn't been attached to a register group yet caused a crash - Fix: Register.AddPage() ran the text formatter again for the register title which led to errors in case embedded images were used (reported by Richard Lake) Version 1.2 (02-Jul-14) - Change: Updated documentation - New: Added 4 examples that show how to use the new functions mui.CreateObject() and mui.FreeObject() to dynamically create MUI objects at runtime (Dynamic1.hws, Dynamic2.hws, Dynamic3.hws, Dynamic4.hws) - Change: TextEditor.hws example script now uses TextEditor.Color instead of TextEditor.Pen to guarantee a consistent visual experience on all systems - Change [OS3]: Now that MUI 3.9 is also available for OS3, MUI Royale will check on startup whether 3.9 is installed and will enable all 3.9 features if it is - New: Added TextEditor.ColorMap [G] attribute to retrieve the current color map; you need this to parse the text returned by TextEditor.Contents - New: Added TextEditor.SetColor() method which allows you to change the color of a text block - New: TextEditor.SetBold(), TextEditor.SetItalic(), TextEditor.SetUnderline() and TextEditor.SetAlign() support the special values "Min" and "Max" now to conveniently specify the minimum and maximum positions available - New: Added TextEditor.FlushColors() method which can be used to flush the internal pen mapping of a text editor object (in case you're running out of pens) - New: Added TextEditor.Color which has an applicability of SGN (requested by Marko) - New: Added Area.BackgroundRGB and Area.BackgroundImage (requested by Marko) - New: Application.ConfigChange allows you to get notified whenever the user changes the MUI settings for your application, e.g. moves it to another screen; this is only supported on MUI 4 (requested by Jörg Renkert) - Change: Window.PubScreen now always returns the name of the screen the window is currently on even if it has been set by the user using the MUI preferences (requested by Jörg Renkert) - New: Group.Title now has an applicability of ISG and it can also handle text formatting tags now, e.g. it is possible to include images in the tab titles now; both features require MUI 4; if MUI 4 is unavailable, Group.Title will have the old applicability of just I - New: Group.ChildList attribute can be used to get a list of children that are members of the group; Group.ChildList returns a table containing as many elements as the group has children; each element contains the fields "ID", "Class", and "MUIClass" - New: Added Application.WindowList attribute [G]; this will return a table containing a list of all windows currently attached to the application object - New: mui.IsVersion4() allows you to check whether the user is running MUI 4 - New: Added Register.Position [I] and Register.Pages [G] attributes; these require MUI 4.0 - New: Added Register.Closable [I] and Register.CloseRequest [N] attributes; by using these attributes you can add a close gadget to the tabs of your Register object and react to the user pressing these gadgets; these attributes require MUI 4.0 - New: Added Register.GetPageID() method which returns the ID of the group object at the specified tab index; this method requires MUI 4.0 - New: Added Register.AddPage() and Register.ClosePage() which allow you to dynamically add and remove tabs from a Register object; these two methods require at least MUI 4.0 (requested by Richard Lake) - New: All Menustrip methods are also available to Menu class now - New: Added Menustrip.AddHead() and Menustrip.AddTail() methods to add menu objects to the head or tail of a menu - New: Added Application.AddWindow() and Application.RemoveWindow() to dynamically add/remove windows to/from the Application object - New: Added Group.InitChange(), Group.ExitChange(), Group.AddHead(), Group.AddTail(), Group.Insert(), and Group.Remove() methods which can be used to insert dynamically created MUI objects into an existing group or remove MUI objects from a group and add them to the loose object stock; note that you must not call mui.FreeObject() on objects that have been added to a group because they will be freed with the group then; mui.FreeObject() must only be called with loose objects which have either been created by mui.CreateObject() or removed from an existing object tree; note that Group.ExitChange() accepts an additional argument which can be used to specify whether or not MUI should force a refresh - New: Added support for dynamic creation of MUI objects: you can create MUI objects at runtime now using the new mui.CreateObject() and mui.FreeObject() functions; MUI objects created at runtime can then be added to existing objects using new methods (see above) - New: Added Listview.SortFunc attribute; this allows you to specify a custom callback function that will be called whenever your listview requires sorting; this allows you to customize listview sorting, e.g. implement reverse alphabetical sorting or other customized criteria; your callback needs to return "-1" if entry 1 should be placed before entry 2 or "1" if it is to be placed after entry 2; if the two entries are the same, return "0" (requested by Richard Lake) - Fix [Doc]: ISGN applicability of Slider.Stringify() wasn't documented - Fix: Slider.Stringify didn't work with mui.Get() - New: Added Listview.Quiet attribute which allows you to temporarily disable listview refresh to quickly add/remove multiple items (requested by Richard Lake) Version 1.1 (07-May-14) - Change: Updated documentation - New: VideoPlayer example allows you to switch between antialias interpolation and simple scaling - Fix: Fixed a bug in the Slider.Stringify; it didn't block Hollywood's refresh server which could lead to a deadlock, for example in the VideoPlayer.hws example; this fix requires a Hollywood version newer than 5.3 - New: Added Texteditor.GetText method; this allows you to get the partial contents from a text editor gadget (requested by Richard Lake) - New: Window.PubScreen allows you to open windows on all public screens; use this only if you have good reasons because normally this is something that the user should decide (requested by Richard Lake) - Fix: Window.Borderless didn't work because MUI Royale enforced a window title (reported by Jörg Renkert) - New: Popfile, Popdrawer, Popfont, and Poplist classes support the AdvanceOnCR attribute now for their string gadgets (requested by Richard Lake) - New: Window.ActiveObject can also be used as a notification attribute now (requested by Richard Lake) - Fix: Application.AboutMUIRoyale() didn't work when MUIRoyale.hwp was in a folder that contained spaces (reported by Achim Kern) - New: All of the Column class attributes have an applicability of ISG now which means that you can also change them during runtime - New: Added Listviewcolumn.Hidden attribute which can be used to show/hide single columns; this requires at least MUI 3.9 (requested by Richard Lake) - New: Added Listview.Rename() method that allows you to rename entries in a listview row (requested by Richard Lake) - Fix: Listview.Sort() didn't work correctly; it now accepts an additional argument which tells according to which column the list view should be sorted (reported by Richard Lake) - New: Area.ContextMenu can be used with mui.Set() now to change the context menu of a MUI object; to remove the context menu from an object completely, pass the special constant "(none)" in mui.Set() (requested by Richard Lake) - New [OS4/MorphOS]: Listview.TitleClick allows you to get notified about clicks on the title bars of a listview (requested by Richard Lake) - Fix [AROS]: MUI Royale uses relative search paths now when looking for TextEditor.mcc and TheBar.mcc custom classes (reported by Nigel Tromans) - Fix: Area.ContextMenuTrigger didn't set the TriggerValue correctly (reported by Richard Lake) - Fix: When using Listview.GetEntry together with "Active" on a Dirlist object in which no entry was active, MUI Royale crashed (reported by Richard Lake) - New [OS4]: Pixel-exact virtgroup resizing now possible because it is now supported by OS4's MUI now, too - Fix: "Selected" attribute in class <button> did not work when used with "True" or "False" (reported by Matthias Rustler) - Fix: Installer didn't work with paths that had spaces in them (reported by Richard Lake) Version 1.0 (30-Dec-12) - First Release