edbee - Qt Editor Library
Signals | Public Member Functions | List of all members
edbee::TextDocument Class Referenceabstract

This is the base and abstract class of a text document A TextDocument is the model part of the editor. More...

#include <textdocument.h>

+ Inheritance diagram for edbee::TextDocument:
+ Collaboration diagram for edbee::TextDocument:

Signals

void textAboutToBeChanged (edbee::TextBufferChange change)
 
void textChanged (edbee::TextBufferChange change)
 
void persistedChanged (bool persisted)
 This signal is emitted if the persisted state is changed. More...
 
void languageGrammarChanged ()
 This signal is emitted if the grammar has been changed. More...
 
void lastScopedOffsetChanged (int previousOffset, int lastScopedOffset)
 this signal is emitted if the scoped range has been changed More...
 

Public Member Functions

 TextDocument (QObject *parent=0)
 Constructs the textdocument. More...
 
virtual ~TextDocument ()
 Destroys the textdocument. More...
 
virtual TextBufferbuffer () const =0
 This method should return the active textbuffer Warning you should NEVER directly modify the textbuffer unless you're absolutely sure what you're doing! More...
 
virtual void setLineDataFieldsPerLine (int count)
 This method can be used to change the number of reserved fields by the document Increasing the amount will result in a realoc Decreasting the fieldcount reults in the lost of the 'old' fields At least the 'PredefinedFieldCount' amont of fields are required. More...
 
virtual TextLineDataManagerlineDataManager ()=0
 this method can be used to give a 'custom' line data item to a given line More...
 
virtual void giveLineData (int line, int field, TextLineData *dataItem)
 This method gives a given data item to a text line. More...
 
virtual TextLineDatagetLineData (int line, int field)
 Returns the line specific data at the given line. More...
 
virtual TextDocumentScopesscopes ()=0
 Should return the document-scopes of this document. More...
 
virtual TextCodecencoding ()=0
 This method should return the current encoding. More...
 
virtual void setEncoding (TextCodec *codec)=0
 
virtual const LineEndinglineEnding ()=0
 This method should return the current line ending. More...
 
virtual void setLineEnding (const LineEnding *lineENding)=0
 
virtual TextLexertextLexer ()=0
 Should return the current document lexer. More...
 
virtual TextGrammarlanguageGrammar ()=0
 This method should return the current language grammar. More...
 
virtual void setLanguageGrammar (TextGrammar *grammar)=0
 Changes the language grammar. This method should emit a grammarChanged signal (if the grammar is changed) More...
 
virtual TextUndoStacktextUndoStack ()=0
 this method should return a reference to the undo stack More...
 
virtual void beginUndoGroup (ChangeGroup *group)
 Starts an undo group. More...
 
virtual void endUndoGroup (int coalesceId, bool flatten=false)
 Ends the current undo group. More...
 
virtual void endUndoGroupAndDiscard ()
 Ends the undo group and discards all recorded information Warning it does NOT undo all made changes!!! More...
 
virtual bool isUndoCollectionEnabled ()
 this method return true if the undo stack is enabled More...
 
virtual void setUndoCollectionEnabled (bool enabled)
 Enables or disables the collection of undo commands. More...
 
virtual bool isUndoRunning ()
 This method should return true if the current change is the cause of an undo operation. More...
 
virtual bool isRedoRunning ()
 Checks if currently an undo operation is running. More...
 
virtual bool isUndoOrRedoRunning ()
 Is it an undo or redo (which means all commands area already available) More...
 
virtual bool isPersisted ()
 Checks if the document is in a persited state. More...
 
virtual void setPersisted (bool enabled=true)
 Calc this method to mark current state as persisted. More...
 
virtual TextEditorConfigconfig () const =0
 this method should return the config More...
 
virtual void setDocumentFilter (TextDocumentFilter *filter)
 Sets the document filter without tranfering the ownership. More...
 
virtual void giveDocumentFilter (TextDocumentFilter *filter)
 this method sets the document filter You can give a 0 pointer to delte the old filter! More...
 
virtual TextDocumentFilterdocumentFilter ()
 This method returns the document filter. More...
 
void beginChanges (TextEditorController *controller)
 Start the changes. More...
 
void replaceRangeSet (TextRangeSet &rangeSet, const QString &text)
 Replaces the given rangeset. More...
 
void replaceRangeSet (TextRangeSet &rangeSet, const QStringList &texts)
 replaces the given rangeset More...
 
void giveSelection (TextEditorController *controller, TextRangeSet *rangeSet)
 sets the selectioin for the current rangeset The selection may never be empty More...
 
void endChanges (int coalesceId)
 
ChangeexecuteAndGiveChange (Change *change, int coalesceId)
 call this method to execute a change. The change is first passed to the filter so the documentFilter can handle the processing of the change When not filter is active the 'execute' method is called on the change More...
 
virtual ChangegiveChangeWithoutFilter (Change *change, int coalesceId)=0
 
void append (const QString &text, int coalesceId=0)
 Appends the given text to the document. More...
 
void replace (int offset, int length, const QString &text, int coalesceId=0)
 Appends the given text. More...
 
void setText (const QString &text)
 Changes the compelte document text. More...
 
void rawAppendBegin ()
 begins the raw append modes. In raw append mode data is directly streamed to the textdocument-buffer. No undo-data is collected and no events are fired More...
 
void rawAppendEnd ()
 When then raw appending is done. The events are fired that the document has been changed The undo-collection is enabled again. More...
 
void rawAppend (QChar c)
 Appends a single char in raw append mode. More...
 
void rawAppend (const QChar *chars, int length)
 Appends an array of characters. More...
 
int length ()
 Returns the length of the document in characters default implementation is to forward this call to the textbuffer. More...
 
int lineCount ()
 Returns the number of lines. More...
 
QChar charAt (int idx)
 Returns the character at the given position. More...
 
QChar charAtOrNull (int idx)
 returns the char at the given index if the index is valid else the null character is returned More...
 
int offsetFromLine (int line)
 Retrieves the character-offset of the given line. More...
 
int lineFromOffset (int offset)
 returns the line number which contains the given offset More...
 
int columnFromOffsetAndLine (int offset, int line=-1)
 return the column position for the given offset and line More...
 
int offsetFromLineAndColumn (int line, int column)
 Returns the character offset of the given line and column. More...
 
int lineLength (int line)
 Returns the length of the given line. More...
 
int lineLengthWithoutNewline (int line)
 returns the length of the given lilne without the newline More...
 
QString text ()
 Returns the document text as a QString. More...
 
QString textPart (int offset, int length)
 Returns the given part of the text. More...
 
QString lineWithoutNewline (int line)
 Returns the given line without the trailing
character. More...
 
QString line (int line)
 line the line number to retrieve More...
 

Detailed Description

This is the base and abstract class of a text document A TextDocument is the model part of the editor.

It's the main owner of the following objects:

Constructor & Destructor Documentation

◆ TextDocument()

edbee::TextDocument::TextDocument ( QObject *  parent = 0)

Constructs the textdocument.

◆ ~TextDocument()

edbee::TextDocument::~TextDocument ( )
virtual

Destroys the textdocument.

Member Function Documentation

◆ append()

void edbee::TextDocument::append ( const QString &  text,
int  coalesceId = 0 
)

Appends the given text to the document.

Parameters
textthe text to append
coalesceId(default 0) the coalesceId to use. Whe using the same number changes could be merged to one change. CoalesceId of 0 means no merging

◆ beginChanges()

void edbee::TextDocument::beginChanges ( TextEditorController controller)

Start the changes.

◆ beginUndoGroup()

void edbee::TextDocument::beginUndoGroup ( ChangeGroup group)
virtual

Starts an undo group.

Parameters
groupthe textchange group that groups the undo operations

◆ buffer()

virtual TextBuffer* edbee::TextDocument::buffer ( ) const
pure virtual

This method should return the active textbuffer Warning you should NEVER directly modify the textbuffer unless you're absolutely sure what you're doing!

Implemented in edbee::CharTextDocument.

◆ charAt()

QChar edbee::TextDocument::charAt ( int  idx)

Returns the character at the given position.

◆ charAtOrNull()

QChar edbee::TextDocument::charAtOrNull ( int  idx)

returns the char at the given index if the index is valid else the null character is returned

Parameters
idxthe index to retrieve
Returns
the character at the given index or the null-character

◆ columnFromOffsetAndLine()

int edbee::TextDocument::columnFromOffsetAndLine ( int  offset,
int  line = -1 
)

return the column position for the given offset and line

Parameters
offsetthe offset position
linethe line number which contains this offset. (When -1 the line number is calculated)
Returns
the column position of the given offset

◆ config()

virtual TextEditorConfig* edbee::TextDocument::config ( ) const
pure virtual

this method should return the config

Implemented in edbee::CharTextDocument.

◆ documentFilter()

TextDocumentFilter * edbee::TextDocument::documentFilter ( )
virtual

This method returns the document filter.

◆ encoding()

virtual TextCodec* edbee::TextDocument::encoding ( )
pure virtual

This method should return the current encoding.

Implemented in edbee::CharTextDocument.

◆ endChanges()

void edbee::TextDocument::endChanges ( int  coalesceId)

◆ endUndoGroup()

void edbee::TextDocument::endUndoGroup ( int  coalesceId,
bool  flatten = false 
)
virtual

Ends the current undo group.

Parameters
coalesceIdthe coalesceId
flattenshould the operation be flatten (flattens undo-group trees)

◆ endUndoGroupAndDiscard()

void edbee::TextDocument::endUndoGroupAndDiscard ( )
virtual

Ends the undo group and discards all recorded information Warning it does NOT undo all made changes!!!

◆ executeAndGiveChange()

Change * edbee::TextDocument::executeAndGiveChange ( Change change,
int  coalesceId 
)

call this method to execute a change. The change is first passed to the filter so the documentFilter can handle the processing of the change When not filter is active the 'execute' method is called on the change

WARNING, you should never Access the change pointer given to this method It's possible the change gets deleted

This method should return the effective text-change (or 0 if no text-change has been stored)

◆ getLineData()

TextLineData * edbee::TextDocument::getLineData ( int  line,
int  field 
)
virtual

Returns the line specific data at the given line.

Parameters
linethe line number to retrieve the line data for
fieldthe field to retrieve the data for
Returns
TextLineData the associated line data

◆ giveChangeWithoutFilter()

virtual Change* edbee::TextDocument::giveChangeWithoutFilter ( Change change,
int  coalesceId 
)
pure virtual

Implemented in edbee::CharTextDocument.

◆ giveDocumentFilter()

void edbee::TextDocument::giveDocumentFilter ( TextDocumentFilter filter)
virtual

this method sets the document filter You can give a 0 pointer to delte the old filter!

◆ giveLineData()

void edbee::TextDocument::giveLineData ( int  line,
int  field,
TextLineData dataItem 
)
virtual

This method gives a given data item to a text line.

◆ giveSelection()

void edbee::TextDocument::giveSelection ( TextEditorController controller,
TextRangeSet rangeSet 
)

sets the selectioin for the current rangeset The selection may never be empty

Parameters
controllerthe controller to given the selection for
rangeSetthe rangeset with the new selection

◆ isPersisted()

bool edbee::TextDocument::isPersisted ( )
virtual

Checks if the document is in a persited state.

◆ isRedoRunning()

bool edbee::TextDocument::isRedoRunning ( )
virtual

Checks if currently an undo operation is running.

◆ isUndoCollectionEnabled()

bool edbee::TextDocument::isUndoCollectionEnabled ( )
virtual

this method return true if the undo stack is enabled

◆ isUndoOrRedoRunning()

bool edbee::TextDocument::isUndoOrRedoRunning ( )
virtual

Is it an undo or redo (which means all commands area already available)

◆ isUndoRunning()

bool edbee::TextDocument::isUndoRunning ( )
virtual

This method should return true if the current change is the cause of an undo operation.

◆ languageGrammar()

virtual TextGrammar* edbee::TextDocument::languageGrammar ( )
pure virtual

This method should return the current language grammar.

Implemented in edbee::CharTextDocument.

◆ languageGrammarChanged

void edbee::TextDocument::languageGrammarChanged ( )
signal

This signal is emitted if the grammar has been changed.

◆ lastScopedOffsetChanged

void edbee::TextDocument::lastScopedOffsetChanged ( int  previousOffset,
int  lastScopedOffset 
)
signal

this signal is emitted if the scoped range has been changed

◆ length()

int edbee::TextDocument::length ( )

Returns the length of the document in characters default implementation is to forward this call to the textbuffer.

◆ line()

QString edbee::TextDocument::line ( int  line)

line the line number to retrieve

Returns
the line at the given position

◆ lineCount()

int edbee::TextDocument::lineCount ( )

Returns the number of lines.

◆ lineDataManager()

virtual TextLineDataManager* edbee::TextDocument::lineDataManager ( )
pure virtual

this method can be used to give a 'custom' line data item to a given line

Implemented in edbee::CharTextDocument.

◆ lineEnding()

virtual const LineEnding* edbee::TextDocument::lineEnding ( )
pure virtual

This method should return the current line ending.

Implemented in edbee::CharTextDocument.

◆ lineFromOffset()

int edbee::TextDocument::lineFromOffset ( int  offset)

returns the line number which contains the given offset

Parameters
offsetthe character offset
Returns
the line number (0 is the first line )

◆ lineLength()

int edbee::TextDocument::lineLength ( int  line)

Returns the length of the given line.

Parameters
linethe line number
Returns
the line length

◆ lineLengthWithoutNewline()

int edbee::TextDocument::lineLengthWithoutNewline ( int  line)

returns the length of the given lilne without the newline

Parameters
linethe line number
Returns
the length of the line excluding the newline character

◆ lineWithoutNewline()

QString edbee::TextDocument::lineWithoutNewline ( int  line)

Returns the given line without the trailing
character.

Parameters
linethe line number to retrieve the data for
Returns
the content at the given line

◆ offsetFromLine()

int edbee::TextDocument::offsetFromLine ( int  line)

Retrieves the character-offset of the given line.

Parameters
linethe line number (0-based) to retrieve the offset for
Returns
the character offset

◆ offsetFromLineAndColumn()

int edbee::TextDocument::offsetFromLineAndColumn ( int  line,
int  column 
)

Returns the character offset of the given line and column.

Parameters
linethe line number
columnthe column position
Returns
the character offset in the document

◆ persistedChanged

void edbee::TextDocument::persistedChanged ( bool  persisted)
signal

This signal is emitted if the persisted state is changed.

◆ rawAppend() [1/2]

void edbee::TextDocument::rawAppend ( QChar  c)

Appends a single char in raw append mode.

◆ rawAppend() [2/2]

void edbee::TextDocument::rawAppend ( const QChar *  chars,
int  length 
)

Appends an array of characters.

◆ rawAppendBegin()

void edbee::TextDocument::rawAppendBegin ( )

begins the raw append modes. In raw append mode data is directly streamed to the textdocument-buffer. No undo-data is collected and no events are fired

◆ rawAppendEnd()

void edbee::TextDocument::rawAppendEnd ( )

When then raw appending is done. The events are fired that the document has been changed The undo-collection is enabled again.

◆ replace()

void edbee::TextDocument::replace ( int  offset,
int  length,
const QString &  text,
int  coalesceId = 0 
)

Appends the given text.

Parameters
textthe text to append
coalesceId(default 0) the coalesceId to use. Whe using the same number changes could be merged to one change. CoalesceId of 0 means no merging

◆ replaceRangeSet() [1/2]

void edbee::TextDocument::replaceRangeSet ( TextRangeSet rangeSet,
const QString &  text 
)

Replaces the given rangeset.

◆ replaceRangeSet() [2/2]

void edbee::TextDocument::replaceRangeSet ( TextRangeSet rangeSet,
const QStringList &  texts 
)

replaces the given rangeset

◆ scopes()

virtual TextDocumentScopes* edbee::TextDocument::scopes ( )
pure virtual

Should return the document-scopes of this document.

Implemented in edbee::CharTextDocument.

◆ setDocumentFilter()

void edbee::TextDocument::setDocumentFilter ( TextDocumentFilter filter)
virtual

Sets the document filter without tranfering the ownership.

◆ setEncoding()

virtual void edbee::TextDocument::setEncoding ( TextCodec codec)
pure virtual

Implemented in edbee::CharTextDocument.

◆ setLanguageGrammar()

virtual void edbee::TextDocument::setLanguageGrammar ( TextGrammar grammar)
pure virtual

Changes the language grammar. This method should emit a grammarChanged signal (if the grammar is changed)

Implemented in edbee::CharTextDocument.

◆ setLineDataFieldsPerLine()

void edbee::TextDocument::setLineDataFieldsPerLine ( int  count)
virtual

This method can be used to change the number of reserved fields by the document Increasing the amount will result in a realoc Decreasting the fieldcount reults in the lost of the 'old' fields At least the 'PredefinedFieldCount' amont of fields are required.

This method can be used to change the number of reserved fields by the document Increasing the amount will result in a realoc Decreasting the fieldcount reults in the lost of the 'old' fields At least the 'PredefinedFieldCount' amont of fields are required This method EMPTIES the undo-stack. So after this call all undo history is gone!

◆ setLineEnding()

virtual void edbee::TextDocument::setLineEnding ( const LineEnding lineENding)
pure virtual

Implemented in edbee::CharTextDocument.

◆ setPersisted()

void edbee::TextDocument::setPersisted ( bool  enabled = true)
virtual

Calc this method to mark current state as persisted.

◆ setText()

void edbee::TextDocument::setText ( const QString &  text)

Changes the compelte document text.

Parameters
textthe new document text

◆ setUndoCollectionEnabled()

void edbee::TextDocument::setUndoCollectionEnabled ( bool  enabled)
virtual

Enables or disables the collection of undo commands.

◆ text()

QString edbee::TextDocument::text ( )

Returns the document text as a QString.

Returns
the complete document context

◆ textAboutToBeChanged

void edbee::TextDocument::textAboutToBeChanged ( edbee::TextBufferChange  change)
signal

◆ textChanged

void edbee::TextDocument::textChanged ( edbee::TextBufferChange  change)
signal

◆ textLexer()

virtual TextLexer* edbee::TextDocument::textLexer ( )
pure virtual

Should return the current document lexer.

Implemented in edbee::CharTextDocument.

◆ textPart()

QString edbee::TextDocument::textPart ( int  offset,
int  length 
)

Returns the given part of the text.

Parameters
offsetthe character offset in the document
lengththe length of the part in characters
Returns
the text at the given positions

◆ textUndoStack()

virtual TextUndoStack* edbee::TextDocument::textUndoStack ( )
pure virtual

this method should return a reference to the undo stack

Implemented in edbee::CharTextDocument.


The documentation for this class was generated from the following files: