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


//                 Generated by preSip


// 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 KTextEditor
{

class SmartInterface
{
%TypeHeaderCode
#include <ktexteditor/smartinterface.h>
%End


public:
                         SmartInterface ();
    QMutex*              smartMutex () const;
    virtual void         clearSmartInterface ()  = 0;
    bool                 clearOnDocumentReload () const;
    void                 setClearOnDocumentReload (bool);
    virtual int          currentRevision () const = 0;
    virtual void         releaseRevision (int) const = 0;
    virtual void         useRevision (int)  = 0;
    void                 clearRevision ();
    virtual KTextEditor::Cursor translateFromRevision (const KTextEditor::Cursor&, KTextEditor::SmartCursor::InsertBehavior = KTextEditor::SmartCursor::StayOnInsert ) const;
    virtual KTextEditor::Range translateFromRevision (const KTextEditor::Range&, KTextEditor::SmartRange::InsertBehaviors) const;
    virtual KTextEditor::SmartCursor* newSmartCursor (const KTextEditor::Cursor& = KTextEditor::Cursor::start (), KTextEditor::SmartCursor::InsertBehavior = KTextEditor::SmartCursor::MoveOnInsert )  = 0;
    KTextEditor::SmartCursor* newSmartCursor (int, int, KTextEditor::SmartCursor::InsertBehavior = KTextEditor::SmartCursor::MoveOnInsert );
    virtual void         deleteCursors ()  = 0;
    virtual KTextEditor::SmartRange* newSmartRange (const KTextEditor::Range& = KTextEditor::Range (), KTextEditor::SmartRange* = 0, KTextEditor::SmartRange::InsertBehaviors = KTextEditor::SmartRange::DoNotExpand )  = 0;
    KTextEditor::SmartRange* newSmartRange (const KTextEditor::Cursor&, const KTextEditor::Cursor&, KTextEditor::SmartRange* = 0, KTextEditor::SmartRange::InsertBehaviors = KTextEditor::SmartRange::DoNotExpand );
    KTextEditor::SmartRange* newSmartRange (int, int, int, int, KTextEditor::SmartRange* = 0, KTextEditor::SmartRange::InsertBehaviors = KTextEditor::SmartRange::DoNotExpand );
    virtual KTextEditor::SmartRange* newSmartRange (KTextEditor::SmartCursor*, KTextEditor::SmartCursor*, KTextEditor::SmartRange* = 0, KTextEditor::SmartRange::InsertBehaviors = KTextEditor::SmartRange::DoNotExpand )  = 0;
    virtual void         unbindSmartRange (KTextEditor::SmartRange*)  = 0;
    virtual void         deleteRanges ()  = 0;
    virtual void         addHighlightToDocument (KTextEditor::SmartRange*, bool = 0)  = 0;
    virtual void         removeHighlightFromDocument (KTextEditor::SmartRange*)  = 0;
    virtual const QList<KTextEditor::SmartRange*> documentHighlights () const = 0;
    virtual void         clearDocumentHighlights ()  = 0;
    virtual void         addHighlightToView (KTextEditor::View*, KTextEditor::SmartRange*, bool = 0)  = 0;
    virtual void         removeHighlightFromView (KTextEditor::View*, KTextEditor::SmartRange*)  = 0;
    virtual const QList<KTextEditor::SmartRange*> viewHighlights (KTextEditor::View*) const = 0;
    virtual void         clearViewHighlights (KTextEditor::View*)  = 0;
    virtual void         addActionsToDocument (KTextEditor::SmartRange*)  = 0;
    virtual void         removeActionsFromDocument (KTextEditor::SmartRange*)  = 0;
    virtual const QList<KTextEditor::SmartRange*> documentActions () const = 0;
    virtual void         clearDocumentActions ()  = 0;
    virtual void         addActionsToView (KTextEditor::View*, KTextEditor::SmartRange*)  = 0;
    virtual void         removeActionsFromView (KTextEditor::View*, KTextEditor::SmartRange*)  = 0;
    virtual const QList<KTextEditor::SmartRange*> viewActions (KTextEditor::View*) const = 0;
    virtual void         clearViewActions (KTextEditor::View*)  = 0;

protected:
    virtual void         attributeDynamic (KTextEditor::Attribute::Ptr)  = 0;
    virtual void         attributeNotDynamic (KTextEditor::Attribute::Ptr)  = 0;
private:
                         SmartInterface (const KTextEditor::SmartInterface &other);

};  // class SmartInterface

};  // namespace KTextEditor

