//
//     Copyright 2009 Simon Edwards <simon@simonzone.com>

//                 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/>.

namespace Marble
{

class RenderPlugin : QObject, Marble::RenderPluginInterface /Abstract/
{
%TypeHeaderCode
#include <RenderPlugin.h>
%End

public:
    QAction*                action () const;
    bool                    enabled () const;
    bool                    visible () const;
    void                    setEnabled (bool enabled);
    void                    setVisible (bool visible);


protected:
    bool                    eventFilter (QObject*, QEvent*);

public:
    virtual ~RenderPlugin ();
    virtual QHash<QString,QVariant>  settings () const;
signals:
    void                    settingsChanged (QString nameId);
    void                    actionGroupsChanged ();
public:
    const Marble::MarbleModel*  marbleModel () const;
    void                    restoreDefaultSettings ();
signals:
    void                    repaintNeeded (QRegion dirtyRegion = QRegion());
    void                    enabledChanged (bool enable);
public:
                            RenderPlugin (const Marble::MarbleModel* marbleModel);
    virtual QString         guiString () const=0;
    virtual Marble::RenderPlugin*  newInstance (const Marble::MarbleModel* marbleModel) const=0;
    virtual void            setSettings (const QHash<QString,QVariant>& settings);
signals:
    void                    visibilityChanged (bool visible, const QString& nameId);
public:
    virtual QString         runtimeTrace () const;
    QStringList             settingKeys ();
    bool                    setSetting (const QString& key, const QVariant& value);
    QVariant                setting (const QString& key);
    enum RenderType
    {
        UnknownRenderType,
        TopLevelRenderType,
        PanelRenderType,
        OnlineRenderType,
        ThemeRenderType
    };
    virtual const QList<QActionGroup*>*  actionGroups () const;
    virtual const QList<QActionGroup*>*  toolbarActionGroups () const;
    bool                    isUserCheckable () const;
    virtual Marble::RenderPlugin::RenderType  renderType () const;
    void                    setUserCheckable (bool isUserCheckable);
signals:
    void                    userCheckableChanged (bool isUserCheckable);
};
// RenderPlugin

};
// Marble


