edbee - Qt Editor Library
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
edbee::TextSelection Class Reference

The class textselection is a RangeSet that is used by the view of the document. More...

#include <textselection.h>

+ Inheritance diagram for edbee::TextSelection:
+ Collaboration diagram for edbee::TextSelection:

Public Member Functions

 TextSelection (TextEditorController *controller)
 Constructs the textextselection object. More...
 
 TextSelection (const TextSelection &selection)
 A copy constructor for copying a text-selection. More...
 
virtual ~TextSelection ()
 The text selection destructor. More...
 
virtual TextEditorControllertextEditorController () const
 Returns the controller for this selection. More...
 
- Public Member Functions inherited from edbee::TextRangeSet
 TextRangeSet (TextDocument *doc)
 Constructs a textrange set. More...
 
 TextRangeSet (const TextRangeSet &sel)
 the copy constructor for copying a selection More...
 
 TextRangeSet (const TextRangeSet *sel)
 
virtual ~TextRangeSet ()
 
TextRangeSetoperator= (const TextRangeSet &sel)
 copy the value from the rangeset More...
 
TextRangeSetclone () const
 
virtual int rangeCount () const
 
virtual TextRangerange (int idx)
 returns the selection range More...
 
virtual const TextRangeconstRange (int idx) const
 Returns a const reference from the. More...
 
virtual void addRange (int anchor, int caret)
 Adds a text range. More...
 
virtual void addRange (const TextRange &range)
 adds a range More...
 
virtual void removeRange (int idx)
 this method removes the range More...
 
virtual void clear ()
 This method removes ALL carets except the 'global' selection. More...
 
virtual void toSingleRange ()
 Converts the range to a single range selection. More...
 
virtual void sortRanges ()
 Sorts the ranges. More...
 
- Public Member Functions inherited from edbee::TextRangeSetBase
 TextRangeSetBase (TextDocument *doc)
 
virtual ~TextRangeSetBase ()
 
TextRangelastRange ()
 this method returns the last range More...
 
TextRangefirstRange ()
 the first range More...
 
int rangeIndexAtOffset (int offset)
 This method returns the range index at the given offset. More...
 
bool rangesBetweenOffsets (int offsetBegin, int offsetEnd, int &firstIndex, int &lastIndex)
 returns the range indices that are being overlapped by the given offsetBegin and offsetEnd More...
 
bool rangesBetweenOffsetsExlusiveEnd (int offsetBegin, int offsetEnd, int &firstIndex, int &lastIndex)
 returns the range indices that are being overlapped by the given offsetBegin and offsetEnd More...
 
bool rangesAtLine (int line, int &firstIndex, int &lastIndex)
 Returns the range indices that are being used on the given line. More...
 
bool hasSelection ()
 This method checks if there's a selection available A selection is an range with a different anchor then it's caret. More...
 
bool equals (TextRangeSetBase &sel)
 This method checks if two selections are equal. More...
 
void replaceAll (const TextRangeSetBase &base)
 Replaces all ranges with the supplied ranges. More...
 
QString getSelectedText ()
 This method returns all selected text For every filled selection range a line is returned. More...
 
QString getSelectedTextExpandedToFullLines ()
 Returns ALL lines that are touched by the selection. This means Full lines are always returned. More...
 
QString rangesAsString () const
 This method converts the selection ranges as a string, in the format: anchor>caret,anchor>caret. More...
 
void beginChanges ()
 This method starts the changes. More...
 
void endChanges ()
 
void endChangesWithoutProcessing ()
 Ends the changes without processing. WARNING, you should ONLY call this method if the operation you performed kept the rangeset in a valid state. This (at least) means the ranges need to be sorted. More...
 
bool changing () const
 Checks if the current rangeset is in a changing state. More...
 
void resetAnchors ()
 This method resets all anchors to the positions of the carets. More...
 
void clearSelection ()
 This method moves all carets to the anchor positions. More...
 
void addTextRanges (const TextRangeSetBase &sel)
 An union operation This method adds all text selection-items. Merges all ranges. More...
 
void substractTextRanges (const TextRangeSetBase &sel)
 The difference operation This method substracts the text-selection from the current selection. More...
 
void substractRange (int min, int max)
 This method substracts a single range from the ranges list. More...
 
void expandToFullLines (int amount)
 Expands the selection so it selects full lines. More...
 
void expandToWords (const QString &whitespace, const QStringList &characterGroups)
 Expands the selection to full words. More...
 
void selectWordAt (int offset, const QString &whitespace, const QStringList &characterGroups)
 Selects the word at the given offset. More...
 
void toggleWordSelectionAt (int offset, const QString &whitespace, const QStringList &characterGroups)
 Toggles a word selection at the given location The idea is the following, double-click an empty place to select the wordt at the given location Double click an existing selection to remove the selection (and caret) More...
 
void moveCarets (int amount)
 This method moves the carets by character. More...
 
void moveCaretsOrDeselect (int amount)
 This method moves the carets or deslects the given character. More...
 
void moveCaretsByCharGroup (int amount, const QString &whitespace, const QStringList &charGroups)
 This method moves the carets. More...
 
void moveCaretsToLineBoundary (int direction, const QString &whitespace)
 Moves al carets to the given line boundary (line-boundary automaticly switches between column 0 and first non-whitespace character) More...
 
void moveCaretsByLine (int amount)
 
void changeSpatial (int pos, int length, int newLength, bool sticky=false, bool performDelete=false)
 This method adds (or removes) the given spatial length at the given location. More...
 
void setRange (int anchor, int caret, int index=0)
 This mehtod sets the first range item. More...
 
void setRange (const TextRange &range, int index=0)
 Sets the range at the given index. Make sure the given index exists!! More...
 
TextDocumenttextDocument () const
 Returns the associated textdocument. More...
 
void mergeOverlappingRanges (bool joinBorders)
 This method merges overlapping ranges. More...
 

Static Public Member Functions

static void moveCaretsByLine (TextEditorController *controller, TextRangeSet *rangeSet, int amount)
 This method is for moving the carets up or down This method can be executed on (this) when a 0 pointer is given. More...
 
static void moveCaretsByPage (TextEditorController *controller, TextRangeSet *rangeSet, int amount)
 Moves the carets by page. More...
 
static void addRangesByLine (TextEditorController *controller, TextRangeSet *rangeSet, int amount)
 This method adds the ranges by line. More...
 

Protected Member Functions

virtual void processChangesIfRequired (bool joinBorders=false)
 This method process the changes if required. More...
 
virtual void processChangesIfRequiredKeepCaretCache (bool joinBorders=false)
 This method process the changes if required. More...
 

Additional Inherited Members

- Protected Attributes inherited from edbee::TextRangeSetBase
TextDocumenttextDocumentRef_
 The reference to the textbuffer. More...
 
int changing_
 A (integer) boolean for handling changes between beginChagnes and endChanges. More...
 

Detailed Description

The class textselection is a RangeSet that is used by the view of the document.

The textselection is placed in the view directory because it closely relates to the view of the textdocument

For instance moving line/up and line/down isn an operation that isn't possible on the document side. Because we support variable font widts.. Also 'remembering' the caret screen-x and -y positions isn't relevant for a docuemnt. That is stuff that needs to be placed in the view side

Constructor & Destructor Documentation

◆ TextSelection() [1/2]

edbee::TextSelection::TextSelection ( TextEditorController controller)

Constructs the textextselection object.

Parameters
controllerthe controller this selection is for

◆ TextSelection() [2/2]

edbee::TextSelection::TextSelection ( const TextSelection selection)

A copy constructor for copying a text-selection.

◆ ~TextSelection()

edbee::TextSelection::~TextSelection ( )
virtual

The text selection destructor.

Member Function Documentation

◆ addRangesByLine()

void edbee::TextSelection::addRangesByLine ( TextEditorController controller,
TextRangeSet rangeSet,
int  amount 
)
static

This method adds the ranges by line.

◆ moveCaretsByLine()

void edbee::TextSelection::moveCaretsByLine ( TextEditorController controller,
TextRangeSet rangeSet,
int  amount 
)
static

This method is for moving the carets up or down This method can be executed on (this) when a 0 pointer is given.

Todo:
need a cleaner API for this)
Parameters
controllerthe controller for this operation
rangeSetthe rangeset to apply this operation on
amountthe number of lines to move

◆ moveCaretsByPage()

void edbee::TextSelection::moveCaretsByPage ( TextEditorController controller,
TextRangeSet rangeSet,
int  amount 
)
static

Moves the carets by page.

Parameters
controllerthe controller for this operation
rangeSetthe rangeset to apply this operation
amountthe number of pages

◆ processChangesIfRequired()

void edbee::TextSelection::processChangesIfRequired ( bool  joinBorders = false)
protectedvirtual

This method process the changes if required.

Reimplemented from edbee::TextRangeSetBase.

◆ processChangesIfRequiredKeepCaretCache()

void edbee::TextSelection::processChangesIfRequiredKeepCaretCache ( bool  joinBorders = false)
protectedvirtual

This method process the changes if required.

◆ textEditorController()

TextEditorController * edbee::TextSelection::textEditorController ( ) const
virtual

Returns the controller for this selection.


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