TheBigUndo is a module that allows RealStudio developers to add undo/redo
functionality to their projects with little effort yet can be fully customized to provide
undos for difficult situations.
To Add TheBigUndo to a project, just drag the module and the CustomUndo Interface
to the project pane and add TheBigUndo.init to the app's open event. This will
provide basic undo functions to most controls.
Undos are created via an automatic check loop by default, but can also be manually
triggered. Undo check timing can be adjusted or the undo loop can be prevented from
running at all by passing -1 to initUndo or by setting UndoPeriod to -1.
Class extensions provide simple access to features like control.UpdateUndoStateNow
which can be used for manual updates, or to make the state current before a call to
Windows and Custom controls can be given undo functionality by utilizing
the CustomUndo class interface
Thanks for trying TheBigUndo!
This software is distributed as-is. Use of this software is without warranty, written
or implied. This software and it's source code are the exclusive intellectual property
of piDog Software.
Purchase of a license allows you to include TheBigUndo and TheBigUndoPreferencesWindow
in your projects and products. A Single User License means one user under one licensed copy of
RealStudio at one time. Multi-User licenses are also available.
Any attempt to reverse-engineer TheBigUndo, attempt to circumvent encryption or licensing or sharing of license keys
will be considered a violation of the license agreement and may be a violation of copyright
laws. piDog Software reserves the right to terminate a violator's license(s) and to prosecute any
Copyright piDog Software 2012-2015
TheBigUndo may be licensed for use and distribution in applications built using Xojo by Xojo inc.
A license allows use by the registered developer only. Additional licenses must be purchased for each
Any attempt to break or bypass TheBigUndo's encryption will be a violation of this agreement.
Any attempt to reverse engineer TheBigUndo will be a violation of this agreement.
Sharing, selling or any other form of distributing a license key, intentional or accidental will be
a violation of this agreement.
Any violation of this agreement will result in the termination of the licensee's right to include TheBigUndo in
Copyright 2012-2015 piDog Software.
Updated for Xojo 2014r3
Removed external images from demo app.
Fixed a bug when building an app
Fixed a bug causing a KeyNotFoundException when RadioButtons were placed on a ContainerControl
Added Undo and Redo methods to the module to allow manually calling Undo/Redo actions from code
Added TheBigUndo_StateChangedNotifier interface to allow creation of custom controls to invoke undos
Fixed a possible KeyNotFoundException related to ContainerControls
ContainerControls are now detected automatically!
Listbox now supported in window.xml
ListBox RowPicture now supported in undo/redo and window.xml
Updated Documentation and Demo.
Now Xojo compaible!
Fixed a bug where undos in Styled TextAreas could become garbled if styled text was copied and pasted repeatedly.
Fixed GTK lib calls to work under Ubuntu 12.10 and other current linux flavors
Minor internal efficiency improvements
If UndosAreManual is set for a control, the control is now checked before the Undo Menu is enabled
Added UndoSetsContentsChangedFlag extension to Window Class
Added a Cocoa workaround for sliders to handle setting a value of 0 in an undo/redo
Made some improvements in listbox behavior where an object in a tag is an unknown type (ie plugin class) it is ignored
Listbox checkboxes are now undoable.
Dictionaries and Tag (celltag, rowtag) Picture values now more efficient.
Fixed some issues with the demo project file
Fixed a bug with UndoInFrontWindowOnly that prevented undos in non-document windows
Now correctly ignores all non-undoable controls
Made the Module an internal item in the demo project
Rearranged Modules and supporting items items so they can be used as external items.
Fixed a bug causing container controls not to be checked correctly.
Fixed a bug causing demo to crash on Linux when viewing methods/properties
Fixed a Cocoa bug in TextAreas
Renamed internal calls to avoid conflicts with globals in other modules
Redesigned Styled TextArea Undo handling. CPU usage is now negligible under normal conditions.
Win32 TextArea's no longer "jump around" during undo's
Removed multi-threaded operations to avoid rare, yet possible, crashes.
Updated documentation accordingly.
Fixed UpdateUndoStateNow to clear any pending redo's
Fixed a glitch in the contacts list demo
Moved everything into one Module for ease of use.
CustomUndo interface is now TheBigUndo_CustomUndo interface.
Added documentation to methods inside TheBigUndo module.
Fixed a possible Cocoa crashing bug with control.handle.
TheBigUndo.Init now blocks from being called from multiple locations.
RadioButtons now undo as groups rather than individual controls.
Now handles multibyte characters properly.
TextAreas and TextFields now select text added in an undo or redo action.
Added AddUndoMenuToMenuBar(theMenuBar) for use with multiple menubar apps.
Added SetsContentChangedFlags property to control setting the ContentsChanged flag for windows with available Undo's
Added an XML extension to the window class. Allows getting and setting window state to and from XML.
Added a ClearUndos flag to XML setter to allow users to back out of a "Default Settings" action. ie Preferences Windows.
Added "View"/"Window as XML" menu to the demo project.
Added Window.SimpleDictionary for easy (and multithreaded) access to TheBigUndo_PreferenceWindow values.
Added an internal Cocoa Wrapper class to eliminate some memory leaks.
Added default ListBox Undo handling.
ContactsDemo now uses default Listbox Undo's.
Added Window.SavedState property to allow specifying a state where a window's ContentChanged will be false
CustomUndo now works again.
Fixed a situation that could cause container controls to not record undo's
Removes all references to controls in closed windows
Now completely ignores all non-undoable controls
Demo now sets IgnoreUndos in the main demo window
Demo now sets MonitorFrontWindowOnly
Demo now calls PauseUndoChecking on deactivate and ResumeUndoChecking on activate
Added a throttle to increase checking delay in cpu heavy controls
Calling Window.UpdateUndoStateNow now works as intended again
Improved initial state capture for newly opened windows
Reworked some other state tracking during undo's for more reliability and speed
Reduced CPU usage some more.
Minor edits to documentation.
Updated documentation for CustomUndo Interface.
Now ignores textfields where password=true
Fixed a delay when calling control.DeleteUndos()
Changed CustomUndo Function names to begin with CustomUndo_
Fixed a crashing bug under Cocoa. controlMacControlHandleGetter
Added a more in depth Custom TextArea example.
Initial beta release