//Auto-generated by kalyptus. DO NOT EDIT.
namespace Kimono {
    using System;
    using Qyoto;
    using System.Collections.Generic;

    public interface IKXMLGUIBuilder {
        IKXMLGUIClient BuilderClient();
        void SetBuilderClient(IKXMLGUIClient client);
        KComponentData BuilderComponentData();
        void SetBuilderComponentData(KComponentData componentData);
        QWidget Widget();
        List<string> ContainerTags();
        void RemoveContainer(QWidget container, QWidget parent, QDomElement element, QAction containerAction);
        List<string> CustomTags();
        QAction CreateCustomElement(QWidget parent, int index, QDomElement element);
        void RemoveCustomElement(QWidget parent, QAction action);
        void FinalizeGUI(IKXMLGUIClient client);
    }
    /// <remarks>
    ///  Implements the creation of the GUI (menubar, menus and toolbars)
    ///  as requested by the GUI factory.
    ///  The methods are mostly for historical reasons, there isn't really
    ///  a need to derive from KXMLGUIBuilder anymore.
    ///  </remarks>        <short>    Implements the creation of the GUI (menubar, menus and toolbars)  as requested by the GUI factory.</short>
    [SmokeClass("KXMLGUIBuilder")]
    public class KXMLGUIBuilder : Object, IKXMLGUIBuilder, IDisposable {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected KXMLGUIBuilder(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(KXMLGUIBuilder), this);
        }
        // QWidget* createContainer(QWidget* arg1,int arg2,const QDomElement& arg3,QAction*& arg4); >>>> NOT CONVERTED
        public KXMLGUIBuilder(QWidget widget) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KXMLGUIBuilder#", "KXMLGUIBuilder(QWidget*)", typeof(void), typeof(QWidget), widget);
        }
        public IKXMLGUIClient BuilderClient() {
            return (IKXMLGUIClient) interceptor.Invoke("builderClient", "builderClient() const", typeof(IKXMLGUIClient));
        }
        public void SetBuilderClient(IKXMLGUIClient client) {
            interceptor.Invoke("setBuilderClient#", "setBuilderClient(KXMLGUIClient*)", typeof(void), typeof(IKXMLGUIClient), client);
        }
        public KComponentData BuilderComponentData() {
            return (KComponentData) interceptor.Invoke("builderComponentData", "builderComponentData() const", typeof(KComponentData));
        }
        public void SetBuilderComponentData(KComponentData componentData) {
            interceptor.Invoke("setBuilderComponentData#", "setBuilderComponentData(const KComponentData&)", typeof(void), typeof(KComponentData), componentData);
        }
        public QWidget Widget() {
            return (QWidget) interceptor.Invoke("widget", "widget()", typeof(QWidget));
        }
        [SmokeMethod("containerTags() const")]
        public virtual List<string> ContainerTags() {
            return (List<string>) interceptor.Invoke("containerTags", "containerTags() const", typeof(List<string>));
        }
        /// <remarks>
        ///  Creates a container (menubar/menu/toolbar/statusbar/separator/...)
        ///  from an element in the XML file
        /// <param> name="parent" The parent for the container
        /// </param><param> name="index" The index where the container should be inserted
        ///               into the parent container/widget
        /// </param><param> name="element" The element from the DOM tree describing the
        ///                 container (use it to access container specified
        ///                 attributes or child elements)
        /// </param><param> name="action" The action created for this container; used for e.g. passing to removeContainer.
        ///    </param></remarks>        <short>    Creates a container (menubar/menu/toolbar/statusbar/separator/.</short>
        /// <remarks>
        ///  Removes the given (and previously via createContainer )
        ///  created container.
        ///    </remarks>        <short>    Removes the given (and previously via createContainer )  created container.</short>
        [SmokeMethod("removeContainer(QWidget*, QWidget*, QDomElement&, QAction*)")]
        public virtual void RemoveContainer(QWidget container, QWidget parent, QDomElement element, QAction containerAction) {
            interceptor.Invoke("removeContainer####", "removeContainer(QWidget*, QWidget*, QDomElement&, QAction*)", typeof(void), typeof(QWidget), container, typeof(QWidget), parent, typeof(QDomElement), element, typeof(QAction), containerAction);
        }
        [SmokeMethod("customTags() const")]
        public virtual List<string> CustomTags() {
            return (List<string>) interceptor.Invoke("customTags", "customTags() const", typeof(List<string>));
        }
        [SmokeMethod("createCustomElement(QWidget*, int, const QDomElement&)")]
        public virtual QAction CreateCustomElement(QWidget parent, int index, QDomElement element) {
            return (QAction) interceptor.Invoke("createCustomElement#$#", "createCustomElement(QWidget*, int, const QDomElement&)", typeof(QAction), typeof(QWidget), parent, typeof(int), index, typeof(QDomElement), element);
        }
        [SmokeMethod("removeCustomElement(QWidget*, QAction*)")]
        public virtual void RemoveCustomElement(QWidget parent, QAction action) {
            interceptor.Invoke("removeCustomElement##", "removeCustomElement(QWidget*, QAction*)", typeof(void), typeof(QWidget), parent, typeof(QAction), action);
        }
        [SmokeMethod("finalizeGUI(KXMLGUIClient*)")]
        public virtual void FinalizeGUI(IKXMLGUIClient client) {
            interceptor.Invoke("finalizeGUI#", "finalizeGUI(KXMLGUIClient*)", typeof(void), typeof(IKXMLGUIClient), client);
        }
        ~KXMLGUIBuilder() {
            interceptor.Invoke("~KXMLGUIBuilder", "~KXMLGUIBuilder()", typeof(void));
        }
        public void Dispose() {
            interceptor.Invoke("~KXMLGUIBuilder", "~KXMLGUIBuilder()", typeof(void));
        }
    }
}
