QCodeEdit
2.2
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
lib
document
qdocumentcommand.h
Go to the documentation of this file.
1
/****************************************************************************
2
**
3
** Copyright (C) 2006-2009 fullmetalcoder <fullmetalcoder@hotmail.fr>
4
**
5
** This file is part of the Edyuk project <http://edyuk.org>
6
**
7
** This file may be used under the terms of the GNU General Public License
8
** version 3 as published by the Free Software Foundation and appearing in the
9
** file GPL.txt included in the packaging of this file.
10
**
11
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13
**
14
****************************************************************************/
15
16
#ifndef _QDOCUMENT_COMMAND_H_
17
#define _QDOCUMENT_COMMAND_H_
18
19
#include "
qce-config.h
"
20
26
#include <QUndoCommand>
27
28
#include "
qdocument.h
"
29
30
class
QDocumentLine
;
31
class
QDocumentLineHandle
;
32
class
QDocumentCursorHandle
;
33
34
class
QCE_EXPORT
QDocumentCommand
:
public
QUndoCommand
35
{
36
public
:
37
enum
Command
38
{
39
None,
40
Insert,
41
Erase,
42
Replace,
43
Custom
44
};
45
46
struct
TextCommandData
47
{
48
QString begin, end;
49
int
lineNumber, startOffset, endOffset;
50
QList<QDocumentLineHandle*>
handles;
51
};
52
53
QDocumentCommand
(Command c,
QDocument
*d,
QDocumentCommand
*p = 0);
54
virtual
~
QDocumentCommand
();
55
56
virtual
int
id()
const
;
57
58
virtual
bool
mergeWith(
const
QUndoCommand
*command);
59
60
virtual
void
redo();
61
virtual
void
undo();
62
63
bool
isSilent()
const
;
64
void
setSilent(
bool
y);
65
66
bool
keepAnchor()
const
;
67
void
setKeepAnchor(
bool
y);
68
69
void
setTargetCursor(
QDocumentCursorHandle
*h);
70
71
void
setRedoOffset(
int
off);
72
void
setUndoOffset(
int
off);
73
74
static
bool
isAutoUpdated(
const
QDocumentCursorHandle
*h);
75
static
void
enableAutoUpdate(
QDocumentCursorHandle
*h);
76
static
void
disableAutoUpdate(
QDocumentCursorHandle
*h);
77
static
void
discardHandlesFromDocument(
QDocument
*d);
78
79
protected
:
80
bool
m_state, m_first;
81
QDocument
*m_doc;
82
int
m_redoOffset, m_undoOffset;
83
84
void
markRedone(
QDocumentLineHandle
*h,
bool
firstTime);
85
void
markUndone(
QDocumentLineHandle
*h);
86
87
void
updateTarget(
int
l,
int
offset);
88
89
void
insertText(
int
line,
int
pos,
const
QString& s);
90
void
removeText(
int
line,
int
pos,
int
length);
91
92
void
insertLines(
int
after,
const
QList<QDocumentLineHandle*>
& l);
93
void
removeLines(
int
after,
int
n);
94
95
void
updateCursorsOnInsertion(
int
line,
int
column,
int
prefixLength,
int
numLines,
int
suffixLength);
96
void
updateCursorsOnDeletion(
int
line,
int
column,
int
prefixLength,
int
numLines,
int
suffixLength);
97
98
private
:
99
bool
m_silent;
100
bool
m_keepAnchor;
101
Command m_command;
102
QDocumentCursorHandle
*m_cursor;
103
104
static
QList<QDocumentCursorHandle*>
m_autoUpdated;
105
};
106
107
Q_DECLARE_TYPEINFO(
QDocumentCommand::TextCommandData
, Q_MOVABLE_TYPE);
108
109
class
QCE_EXPORT
QDocumentInsertCommand
:
public
QDocumentCommand
110
{
111
public
:
112
QDocumentInsertCommand
(
int
l,
int
offset,
113
const
QString& text,
114
QDocument
*doc,
115
QDocumentCommand
*p = 0);
116
117
virtual
~
QDocumentInsertCommand
();
118
119
virtual
bool
mergeWith
(
const
QUndoCommand
*command);
120
121
virtual
void
redo
();
122
virtual
void
undo
();
123
124
private
:
125
TextCommandData
m_data;
126
};
127
128
class
QCE_EXPORT
QDocumentEraseCommand
:
public
QDocumentCommand
129
{
130
public
:
131
QDocumentEraseCommand
(
int
bl,
int
bo,
132
int
el,
int
eo,
133
QDocument
*doc,
134
QDocumentCommand
*p = 0);
135
136
virtual
~
QDocumentEraseCommand
();
137
138
virtual
bool
mergeWith
(
const
QUndoCommand
*command);
139
140
virtual
void
redo
();
141
virtual
void
undo
();
142
143
private
:
144
TextCommandData m_data;
145
};
146
147
class
QCE_EXPORT
QDocumentCommandBlock
:
public
QDocumentCommand
148
{
149
public
:
150
QDocumentCommandBlock
(
QDocument
*d);
151
virtual
~
QDocumentCommandBlock
();
152
153
virtual
void
redo
();
154
virtual
void
undo
();
155
156
void
setWeakLock(
bool
l);
157
bool
isWeakLocked()
const
;
158
159
virtual
void
addCommand(
QDocumentCommand
*c);
160
virtual
void
removeCommand(
QDocumentCommand
*c);
161
162
private
:
163
bool
m_weakLocked;
164
QList<QDocumentCommand*>
m_commands;
165
};
166
167
#endif
Generated by
1.8.1.1