/// <summary>
        /// Remove a button from a toolbar.
        /// </summary>
        public override bool Undo(Installer installer)
        {
            CuiFile cui = new CuiFile(CuiFile.MaxGetActiveCuiFile());
            if (!cui.Read())
                return false;

            Int32 numRemoved = 0;
            foreach (CuiToolbar toolbar in cui.Toolbars)
            {
               numRemoved += toolbar.RemoveButton(this.MacroName, this.MacroCategory);
            }

            if (numRemoved > 0)
            {
               if (!cui.Write())
                  return false;
               else
                  cui.MaxLoadCuiFile();
            }

            return true;
        }
        /// <summary>
        /// Create a button on a toolbar.
        /// </summary>
        public override bool Do(Installer installer)
        {
            //TODO: save config before reading (to catch modifications made in current session).
            CuiFile cui = new CuiFile(CuiFile.MaxGetActiveCuiFile());
            if (!cui.Read())
                return false;

            CuiToolbar toolbar = cui.GetToolbar(this.ToolbarName);
            if (toolbar != null)
            {
               toolbar.AddButton(this.MacroName, this.MacroCategory, this.TooltipText, this.ButtonText);
               if (cui.Write())
                  cui.MaxLoadCuiFile();
               else
                  return false;
            }

            return true;
        }
        /// <summary>
        /// Creates a new toolbar.
        /// </summary>
        public override bool Do(Installer installer)
        {
            //TODO: save config before reading (to catch modifications made in current session).
            CuiFile cui = new CuiFile(CuiFile.MaxGetActiveCuiFile());
            if (!cui.Read())
                return false;

            if (!cui.ContainsToolbar(this.ToolbarName))
            {
               cui.AddToolbar(this.ToolbarName, 5, 0); //TODO: Store size somewhere in action?

               if (!cui.Write())
                  return false;
               else
                  cui.MaxLoadCuiFile();
            }

            return true;
        }
        /// <summary>
        /// Creates a separator on the toolbar.
        /// </summary>
        public override bool Do(Installer installer)
        {
            //TODO: save config before reading (to catch modifications made in current session).
            CuiFile cui = new CuiFile(CuiFile.MaxGetActiveCuiFile());
            if (!cui.Read())
                return false;

            CuiToolbar toolbar = cui.GetToolbar(this.ToolbarName);
            if (toolbar != null)
            {
               toolbar.AddSeparator();
               if (cui.Write())
                  cui.MaxLoadCuiFile();  //TODO: Find way to not have to hard-reload for every action. (Post-install event?)
               else
                  return false;
            }

            return true;
        }
        /// <summary>
        /// Removes the created toolbar.
        /// </summary>
        public override bool Undo(Installer installer)
        {
            CuiFile cui = new CuiFile(CuiFile.MaxGetActiveCuiFile());
            if (!cui.Read())
                return false;

            if (cui.RemoveToolbar(this.ToolbarName))
            {
                if (!cui.Write())
                    return false;
                else
                    cui.MaxLoadCuiFile();
            }

            return true;
        }