//
//     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 SmartCursor : KTextEditor::Cursor
{
%TypeHeaderCode
#include <ktexteditor/smartcursor.h>
%End


public:
    virtual bool         isSmartCursor () const;
    virtual KTextEditor::SmartCursor* toSmartCursor () const;
    KTextEditor::SmartRange* smartRange () const;
    KTextEditor::Document* document () const;
    virtual bool         atEndOfLine () const;
    virtual bool         atEndOfDocument () const;
    virtual bool         isValid () const;
    QChar                character () const;
    virtual bool         insertText (const QStringList&, bool = 0);

    enum AdvanceMode
    {
        ByCharacter, 
        ByCursorPosition
    };

    virtual bool         advance (int, KTextEditor::SmartCursor::AdvanceMode = KTextEditor::SmartCursor::ByCharacter );

    enum InsertBehavior
    {
        StayOnInsert, 
        MoveOnInsert
    };

    KTextEditor::SmartCursor::InsertBehavior insertBehavior () const;
    void                 setInsertBehavior (KTextEditor::SmartCursor::InsertBehavior);
    virtual bool         hasNotifier () const = 0;
    virtual KTextEditor::SmartCursorNotifier* notifier ()  = 0;
    virtual void         deleteNotifier ()  = 0;
    virtual KTextEditor::SmartCursorWatcher* watcher () const = 0;
    virtual void         setWatcher (KTextEditor::SmartCursorWatcher* = 0)  = 0;

protected:
                         SmartCursor (const KTextEditor::Cursor&, KTextEditor::Document*, KTextEditor::SmartCursor::InsertBehavior);

private:
                         SmartCursor (const KTextEditor::SmartCursor&);

};  // class SmartCursor

};  // namespace KTextEditor

