katecursor.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef kate_cursor_h
00023 #define kate_cursor_h
00024
00025 #include "../interfaces/document.h"
00026
00027 class KateDocument;
00028
00032 class KateTextCursor
00033 {
00034 public:
00035 KateTextCursor() : m_line(0), m_col(0) {};
00036 KateTextCursor(int line, int col) : m_line(line), m_col(col) {};
00037 virtual ~KateTextCursor () {};
00038
00039 friend bool operator==(const KateTextCursor& c1, const KateTextCursor& c2)
00040 { return c1.m_line == c2.m_line && c1.m_col == c2.m_col; }
00041
00042 friend bool operator!=(const KateTextCursor& c1, const KateTextCursor& c2)
00043 { return !(c1 == c2); }
00044
00045 friend bool operator>(const KateTextCursor& c1, const KateTextCursor& c2)
00046 { return c1.m_line > c2.m_line || (c1.m_line == c2.m_line && c1.m_col > c2.m_col); }
00047
00048 friend bool operator>=(const KateTextCursor& c1, const KateTextCursor& c2)
00049 { return c1.m_line > c2.m_line || (c1.m_line == c2.m_line && c1.m_col >= c2.m_col); }
00050
00051 friend bool operator<(const KateTextCursor& c1, const KateTextCursor& c2)
00052 { return !(c1 >= c2); }
00053
00054 friend bool operator<=(const KateTextCursor& c1, const KateTextCursor& c2)
00055 { return !(c1 > c2); }
00056
00057 inline void pos(int *pline, int *pcol) const {
00058 if(pline) *pline = m_line;
00059 if(pcol) *pcol = m_col;
00060 }
00061
00062 inline int line() const { return m_line; };
00063 inline int col() const { return m_col; };
00064
00065 virtual void setLine(int line) { m_line = line; };
00066 virtual void setCol(int col) { m_col = col; };
00067 virtual void setPos(const KateTextCursor& pos) { m_line = pos.line(); m_col = pos.col(); };
00068 virtual void setPos(int line, int col) { m_line = line; m_col = col; };
00069
00070 protected:
00071 int m_line;
00072 int m_col;
00073 };
00074
00078 class KateDocCursor : public KateTextCursor
00079 {
00080 public:
00081 KateDocCursor(KateDocument *doc);
00082 KateDocCursor(int line, int col, KateDocument *doc);
00083 virtual ~KateDocCursor() {};
00084
00085 bool validPosition(uint line, uint col);
00086 bool validPosition();
00087
00088 bool gotoNextLine();
00089 bool gotoPreviousLine();
00090 bool gotoEndOfNextLine();
00091 bool gotoEndOfPreviousLine();
00092
00093 int nbCharsOnLineAfter();
00094 bool moveForward(uint nbChar);
00095 bool moveBackward(uint nbChar);
00096
00097
00098 void position(uint *line, uint *col) const;
00099 bool setPosition(uint line, uint col);
00100 bool insertText(const QString& text);
00101 bool removeText(uint numberOfCharacters);
00102 QChar currentChar() const;
00103
00104 uchar currentAttrib() const;
00105
00114 bool nextNonSpaceChar();
00115
00124 bool previousNonSpaceChar();
00125
00126 protected:
00127 KateDocument *m_doc;
00128 };
00129
00130 class KateRange
00131 {
00132 public:
00133 KateRange () {};
00134 virtual ~KateRange () {};
00135
00136 virtual bool isValid() const = 0;
00137 virtual KateTextCursor& start() = 0;
00138 virtual KateTextCursor& end() = 0;
00139 virtual const KateTextCursor& start() const = 0;
00140 virtual const KateTextCursor& end() const = 0;
00141 };
00142
00143 class KateTextRange : public KateRange
00144 {
00145 public:
00146 KateTextRange()
00147 : m_valid(false)
00148 {
00149 };
00150
00151 KateTextRange(int startline, int startcol, int endline, int endcol)
00152 : m_start(startline, startcol)
00153 , m_end(endline, endcol)
00154 , m_valid(true)
00155 {
00156 };
00157
00158 KateTextRange(const KateTextCursor& start, const KateTextCursor& end)
00159 : m_start(start)
00160 , m_end(end)
00161 , m_valid(true)
00162 {
00163 };
00164
00165 virtual ~KateTextRange () {};
00166
00167 virtual bool isValid() const { return m_valid; };
00168 void setValid(bool valid) { m_valid = valid; };
00169
00170 virtual KateTextCursor& start() { return m_start; };
00171 virtual KateTextCursor& end() { return m_end; };
00172 virtual const KateTextCursor& start() const { return m_start; };
00173 virtual const KateTextCursor& end() const { return m_end; };
00174
00175 protected:
00176 KateTextCursor m_start, m_end;
00177 bool m_valid;
00178 };
00179
00180 #endif
00181
00182
This file is part of the documentation for kate Library Version 3.3.2.