summaryrefslogtreecommitdiffstats
path: root/interfaces/ktexteditor/editinterface.h
blob: baea99803700ea87880d97f3a0e6c769d032dd51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/* This file is part of the KDE libraries
   Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org>

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License version 2 as published by the Free Software Foundation.

   This library 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
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public License
   along with this library; see the file COPYING.LIB.  If not, write to
   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.
*/

#ifndef __ktexteditor_editinterface_h__
#define __ktexteditor_editinterface_h__

#include <qstring.h>

#include <kdelibs_export.h>

namespace KTextEditor
{

/**
* This is the main interface for accessing and modifying
* text of the Document class.
*/
class KTEXTEDITOR_EXPORT EditInterface
{
  friend class PrivateEditInterface;

  public:
    EditInterface();
    virtual ~EditInterface();

    uint editInterfaceNumber () const;

  protected:  
    void setEditInterfaceDCOPSuffix (const QCString &suffix);  
    
  public:
  /**
  * slots !!!
  */
    /**
    * @return the complete document as a single QString
    */
    virtual QString text () const = 0;

    /**
    * @return a QString
    */
    virtual QString text ( uint startLine, uint startCol, uint endLine, uint endCol ) const = 0;

    /**
    * @return All the text from the requested line.
    */
    virtual QString textLine ( uint line ) const = 0;

    /**
    * @return The current number of lines in the document
    */
    virtual uint numLines () const = 0;

    /**
    * @return the number of characters in the document
    */
    virtual uint length () const = 0;

    /**
    * @return the number of characters in the line (-1 if no line "line")
    */
    virtual int lineLength ( uint line ) const = 0;

    /**
    * Set the given text into the view.
    * Warning: This will overwrite any data currently held in this view.
    */
    virtual bool setText ( const QString &text ) = 0;

    /**
    *  clears the document
    * Warning: This will overwrite any data currently held in this view.
    */
    virtual bool clear () = 0;

    /**
    *  Inserts text at line "line", column "col"
    *  returns true if success
    *  Use insertText(numLines(), ...) to append text at end of document
    */
    virtual bool insertText ( uint line, uint col, const QString &text ) = 0;

    /**
    *  remove text at line "line", column "col"
    *  returns true if success
    */
    virtual bool removeText ( uint startLine, uint startCol, uint endLine, uint endCol ) = 0;

    /**
    * Insert line(s) at the given line number. 
    * Use insertLine(numLines(), text) to append line at end of document
    */
    virtual bool insertLine ( uint line, const QString &text ) = 0;

    /**
    * Remove line(s) at the given line number.
    */
    virtual bool removeLine ( uint line ) = 0;

  /**
  * signals !!!
  */
  public:
    virtual void textChanged () = 0;

    virtual void charactersInteractivelyInserted(int ,int ,const QString&)=0; //line, col, characters if you don't support this, don't create a signal, just overload it.

  /**
  * only for the interface itself - REAL PRIVATE
  */
  private:
    class PrivateEditInterface *d;
    static uint globalEditInterfaceNumber;
    uint myEditInterfaceNumber;
};

KTEXTEDITOR_EXPORT EditInterface *editInterface (class Document *doc);

}

#endif