//Auto-generated by kalyptus. DO NOT EDIT.
namespace Kimono {
    using System;
    using Qyoto;
    /// <remarks>
    ///  A pushbutton for choosing an icon. Pressing on the button will open a
    ///  KIconDialog for the user to select an icon. The current icon will be
    ///  displayed on the button.
    ///  See <see cref="IKIconButtonSignals"></see> for signals emitted by KIconButton
    /// </remarks>        <short> A push button that allows selection of an icon.  </short>
    ///         <see> KIconDialog</see>
    [SmokeClass("KIconButton")]
    public class KIconButton : QPushButton, IDisposable {
        protected KIconButton(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(KIconButton), this);
        }
        [Q_PROPERTY("QString", "icon")]
        public string icon {
            get { return (string) interceptor.Invoke("icon", "icon()", typeof(string)); }
            set { interceptor.Invoke("setIcon$", "setIcon(QString)", typeof(void), typeof(string), value); }
        }
        [Q_PROPERTY("int", "iconSize")]
        public new int IconSize {
            get { return (int) interceptor.Invoke("iconSize", "iconSize()", typeof(int)); }
            set { interceptor.Invoke("setIconSize$", "setIconSize(int)", typeof(void), typeof(int), value); }
        }
        [Q_PROPERTY("bool", "strictIconSize")]
        public bool StrictIconSize {
            get { return (bool) interceptor.Invoke("strictIconSize", "strictIconSize()", typeof(bool)); }
            set { interceptor.Invoke("setStrictIconSize$", "setStrictIconSize(bool)", typeof(void), typeof(bool), value); }
        }
        /// <remarks>
        ///  Constructs a KIconButton using the global iconloader.
        /// <param> name="parent" The parent widget.
        ///      </param></remarks>        <short>    Constructs a KIconButton using the global iconloader.</short>
        public KIconButton(QWidget parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KIconButton#", "KIconButton(QWidget*)", typeof(void), typeof(QWidget), parent);
        }
        public KIconButton() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KIconButton", "KIconButton()", typeof(void));
        }
        /// <remarks>
        ///  Constructs a KIconButton using a specific KIconLoader.
        /// <param> name="loader" The icon loader to use.
        /// </param><param> name="parent" The parent widget.
        ///      </param></remarks>        <short>    Constructs a KIconButton using a specific KIconLoader.</short>
        public KIconButton(KIconLoader loader, QWidget parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KIconButton##", "KIconButton(KIconLoader*, QWidget*)", typeof(void), typeof(KIconLoader), loader, typeof(QWidget), parent);
        }
        /// <remarks>
        ///  Sets the icon group and context. Use KIconLoader.NoGroup if you want to
        ///  allow icons for any group in the given context.
        ///      </remarks>        <short>    Sets the icon group and context.</short>
        public void SetIconType(KIconLoader.Group group, KIconLoader.Context context, bool user) {
            interceptor.Invoke("setIconType$$$", "setIconType(KIconLoader::Group, KIconLoader::Context, bool)", typeof(void), typeof(KIconLoader.Group), group, typeof(KIconLoader.Context), context, typeof(bool), user);
        }
        public void SetIconType(KIconLoader.Group group, KIconLoader.Context context) {
            interceptor.Invoke("setIconType$$", "setIconType(KIconLoader::Group, KIconLoader::Context)", typeof(void), typeof(KIconLoader.Group), group, typeof(KIconLoader.Context), context);
        }
        /// <remarks>
        ///  Resets the icon (reverts to an empty button).
        ///      </remarks>        <short>    Resets the icon (reverts to an empty button).</short>
        public void ResetIcon() {
            interceptor.Invoke("resetIcon", "resetIcon()", typeof(void));
        }
        /// <remarks>
        ///  Sets the size of the icon to be shown on the button
        /// </remarks>        <short>    Sets the size of the icon to be shown on the button </short>
        ///         <see> KIconLoader.StdSizes</see>
        ///         <see> buttonIconSize</see>
        public void SetButtonIconSize(int size) {
            interceptor.Invoke("setButtonIconSize$", "setButtonIconSize(int)", typeof(void), typeof(int), size);
        }
        /// <remarks>
        ///  Returns the Button's Icon-Size
        /// </remarks>        <short>    Returns the Button's Icon-Size </short>
        public int ButtonIconSize() {
            return (int) interceptor.Invoke("buttonIconSize", "buttonIconSize() const", typeof(int));
        }
        ~KIconButton() {
            interceptor.Invoke("~KIconButton", "~KIconButton()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~KIconButton", "~KIconButton()", typeof(void));
        }
        protected new IKIconButtonSignals Emit {
            get { return (IKIconButtonSignals) Q_EMIT; }
        }
    }

    public interface IKIconButtonSignals : IQPushButtonSignals {
        /// <remarks>
        ///  Emitted when the icon has changed.
        ///      </remarks>        <short>    Emitted when the icon has changed.</short>
        [Q_SIGNAL("void iconChanged(QString)")]
        void IconChanged(string icon);
    }
}
