//
//     Copyright 2008 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2007 Jim Bublitz also apply

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.


class KXMLGUIClient
{
%TypeHeaderCode
#include <kxmlguiclient.h>
%End
//force
                            KXMLGUIClient (const KXMLGUIClient& other);

//end
public:
                            KXMLGUIClient ();
    explicit                KXMLGUIClient (KXMLGUIClient* parent);
    QAction*                action (const char* name) const;
    virtual QAction*        action (const QDomElement& element) const;
    virtual KActionCollection*  actionCollection () const;
    virtual KComponentData  componentData () const;
    virtual QDomDocument    domDocument () const;
    virtual QString         xmlFile () const;
    virtual QString         localXMLFile () const;
    void                    setXMLGUIBuildDocument (const QDomDocument& doc);
    QDomDocument            xmlguiBuildDocument () const;
    void                    setFactory (KXMLGUIFactory* factory);
    KXMLGUIFactory*         factory () const;
    KXMLGUIClient*          parentClient () const;
    void                    insertChildClient (KXMLGUIClient* child);
    void                    removeChildClient (KXMLGUIClient* child);
    QList<KXMLGUIClient*>   childClients ();
    void                    setClientBuilder (KXMLGUIBuilder* builder);
    KXMLGUIBuilder*         clientBuilder () const;
    void                    reloadXML ();
    void                    plugActionList (const QString& name, const QList<QAction*>& actionList);
    void                    unplugActionList (const QString& name);
    static QString          findMostRecentXMLFile (const QStringList& files, QString& doc);
    void                    addStateActionEnabled (const QString& state, const QString& action);
    void                    addStateActionDisabled (const QString& state, const QString& action);

    enum ReverseStateChange
    {
        StateNoReverse,
        StateReverse
    };


    class StateChange
    {

    public:
        QStringList actionsToEnable;
        QStringList actionsToDisable;
    };
// StateChange


    KXMLGUIClient::StateChange  getActionsToChangeForState (const QString& state);
    void                    beginXMLPlug (QWidget*);
    void                    endXMLPlug ();
    void                    prepareXMLUnplug (QWidget*);

protected:
    virtual void            setComponentData (const KComponentData& componentData);
    virtual void            setXMLFile (const QString& file, bool merge = 0, bool setXMLDoc = 1);
    virtual void            setLocalXMLFile (const QString& file);
    virtual void            setXML (const QString& document, bool merge = 0);
    virtual void            setDOMDocument (const QDomDocument& document, bool merge = 0);
    virtual void            stateChanged (const QString& newstate, KXMLGUIClient::ReverseStateChange reverse = KXMLGUIClient::StateNoReverse);
//ig    virtual void            virtual_hook (int id, void* data);
public:
    ~KXMLGUIClient ();
    void                    replaceXMLFile (const QString& xmlfile, const QString& localxmlfile, bool merge = 0);
protected:
    void                    loadStandardsXmlFile ();
};
// KXMLGUIClient


