//Auto-generated by kalyptus. DO NOT EDIT.
namespace Kimono {
    using System;
    using Qyoto;
    /// <remarks>
    ///  A KActionMenu is an action that has several properties specific to holding a
    ///  sub-menu of other actions.
    ///  Any QAction can be used to create a submenu.
    ///  Plugged in a popupmenu, it will create a submenu.
    ///  Plugged in a toolbar, it will create a button with a popup menu.
    ///  This is the action used by the XMLGUI since it holds other actions.
    ///  If you want a submenu for selecting one tool among many (without icons), see KSelectAction.
    ///  See also setDelayed about the main action.
    ///  </remarks>        <short>    A KActionMenu is an action that has several properties specific to holding a  sub-menu of other actions.</short>
    [SmokeClass("KActionMenu")]
    public class KActionMenu : KAction, IDisposable {
        protected KActionMenu(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(KActionMenu), this);
        }
        [Q_PROPERTY("bool", "delayed")]
        public bool Delayed {
            get { return (bool) interceptor.Invoke("delayed", "delayed()", typeof(bool)); }
            set { interceptor.Invoke("setDelayed$", "setDelayed(bool)", typeof(void), typeof(bool), value); }
        }
        [Q_PROPERTY("bool", "stickyMenu")]
        public bool StickyMenu {
            get { return (bool) interceptor.Invoke("stickyMenu", "stickyMenu()", typeof(bool)); }
            set { interceptor.Invoke("setStickyMenu$", "setStickyMenu(bool)", typeof(void), typeof(bool), value); }
        }
        public KActionMenu(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KActionMenu#", "KActionMenu(QObject*)", typeof(void), typeof(QObject), parent);
        }
        public KActionMenu(string text, QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KActionMenu$#", "KActionMenu(const QString&, QObject*)", typeof(void), typeof(string), text, typeof(QObject), parent);
        }
        public KActionMenu(KIcon icon, string text, QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KActionMenu#$#", "KActionMenu(const KIcon&, const QString&, QObject*)", typeof(void), typeof(KIcon), icon, typeof(string), text, typeof(QObject), parent);
        }
        public void AddAction(QAction action) {
            interceptor.Invoke("addAction#", "addAction(QAction*)", typeof(void), typeof(QAction), action);
        }
        public QAction AddSeparator() {
            return (QAction) interceptor.Invoke("addSeparator", "addSeparator()", typeof(QAction));
        }
        public void InsertAction(QAction before, QAction action) {
            interceptor.Invoke("insertAction##", "insertAction(QAction*, QAction*)", typeof(void), typeof(QAction), before, typeof(QAction), action);
        }
        public QAction InsertSeparator(QAction before) {
            return (QAction) interceptor.Invoke("insertSeparator#", "insertSeparator(QAction*)", typeof(QAction), typeof(QAction), before);
        }
        public void RemoveAction(QAction action) {
            interceptor.Invoke("removeAction#", "removeAction(QAction*)", typeof(void), typeof(QAction), action);
        }
        /// <remarks>
        ///  Returns this action's menu as a KMenu, if it is one.
        ///  If none exists, one will be created.
        ///      </remarks>        <short>    Returns this action's menu as a KMenu, if it is one.</short>
        public KMenu Menu() {
            return (KMenu) interceptor.Invoke("menu", "menu()", typeof(KMenu));
        }
        public void SetMenu(KMenu menu) {
            interceptor.Invoke("setMenu#", "setMenu(KMenu*)", typeof(void), typeof(KMenu), menu);
        }
        [SmokeMethod("createWidget(QWidget*)")]
        public new virtual QWidget CreateWidget(QWidget parent) {
            return (QWidget) interceptor.Invoke("createWidget#", "createWidget(QWidget*)", typeof(QWidget), typeof(QWidget), parent);
        }
        ~KActionMenu() {
            interceptor.Invoke("~KActionMenu", "~KActionMenu()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~KActionMenu", "~KActionMenu()", typeof(void));
        }
        protected new IKActionMenuSignals Emit {
            get { return (IKActionMenuSignals) Q_EMIT; }
        }
    }

    public interface IKActionMenuSignals : IKActionSignals {
    }
}
