Source-highlight Qt Library
srchiliteqt::Qt3SyntaxHighlighter Class Reference

An implementation of QSyntaxHighlighter using GNU Source-highlight library (by relying on GNUSyntaxHighlighter provided by the common part of this library). More...

#include <Qt3SyntaxHighlighter.h>

Inheritance diagram for srchiliteqt::Qt3SyntaxHighlighter:
Collaboration diagram for srchiliteqt::Qt3SyntaxHighlighter:

Public Member Functions

 Qt3SyntaxHighlighter (QTextEdit *parent=0)
void init (const std::string &langFile)
 Initializes this highlighter with the specified language definition file.
void formatString (int start, int count, const QFont &font, const QColor &color)
 This function is applied to the syntax highlighter's current text block (i.e.
void formatString (int start, int count, const QFont &font)
const QString & getLangFile () const
srchilite::HighlightStatePtr getHighlightState (const QString &file)
 Given a language definition file name, returns the corresponding highlight state.
void initHighlighter (const QString &file)
 Given a language definition file name, initializes the Source-highlight's highlighter.
const QString getLangDefFileFromFileName (const QString &filename)
 Returns the the lang def file name by using the file name for detecting the syntax of the file (e.g., foo.cpp brings to cpp.lang, ChangeLog brings to changelog.lang).
srchilite::SourceHighlighter * getHighlighter () const
const TextFormatterMap & getTextFormatterMap (TextFormatterFactory &formatterFactory, const QString &styleFile="default.style")
 Given a TextFormatterFactory, it uses to build the TextFormatterMap, by reading a specified source-highlight style file.
srchilite::FormatterManager * getFormatterManager () const
void highlightLine (const QString &line, HighlightStateData *&stateData)
 Highlights the passed line.
srchilite::LangDefManager * getLangDefManager () const
srchilite::LangMap * getLangMap () const
srchilite::LangMap * getOutLangMap () const
const QString & getForegroundColor () const
const QString & getBackgroundColor () const
void setForegroundColor (const QString &f)
void setBackgroundColor (const QString &b)
bool isReadOnly () const
void setReadOnly (bool r)
 Specifies that we highlight readonly contents.
bool isDefaultToMonospace () const
void setDefaultToMonospace (bool d)
 Whether the highlighter should use monospace font by default if nothing is specified about the font family.

Protected Member Functions

int highlightParagraph (const QString &text, int endStateOfLastPara)

Protected Attributes

ParagraphMap paragraphMap
 used internally to associate HighlightStateData to paragraphs
srchilite::FormatterManager * formatterManager
 This will be used by subclasses to generate the right table of formatters.

Detailed Description

An implementation of QSyntaxHighlighter using GNU Source-highlight library (by relying on GNUSyntaxHighlighter provided by the common part of this library).

You can use such highlighter with a QTextEdit, and initialize the highlighter with the language definition file, e.g.,

QTextEdit *editor = new QTextEdit;
new srchiliteqt::Qt3SyntaxHighlighter(editor->document());
highlighter->init("java.lang");

Member Function Documentation

void srchiliteqt::Qt3SyntaxHighlighter::formatString ( int  start,
int  count,
const QFont &  font,
const QColor &  color 
)
inline

This function is applied to the syntax highlighter's current text block (i.e.

the text that is passed to the highlightParagraph() method).

The specified font and color are applied to the text from the start position for a length of count characters (if count is 0, nothing is done). The formatting properties set in format are merged at display time with the formatting information stored directly in the document, for example as previously set with QTextCursor's functions.

Note that this helper function will be called by the corresponding TextFormatter, from Source-highglight library code, and relies on the corresponding protected method of QSyntaxHighlighter: setFormat).

const QString& srchiliteqt::GNUSyntaxHighlighter::getBackgroundColor ( ) const
inlineinherited
Returns
the background color string (can be empty)
const QString& srchiliteqt::GNUSyntaxHighlighter::getForegroundColor ( ) const
inlineinherited
Returns
the foreground color string (can be empty)
srchilite::FormatterManager* srchiliteqt::GNUSyntaxHighlighter::getFormatterManager ( ) const
inlineinherited
Returns
the Source-highlight FormatterManager
srchilite::SourceHighlighter* srchiliteqt::GNUSyntaxHighlighter::getHighlighter ( ) const
inlineinherited
Returns
the Source-highlight SourceHighlighter (can be null)
srchilite::HighlightStatePtr srchiliteqt::GNUSyntaxHighlighter::getHighlightState ( const QString &  file)
inherited

Given a language definition file name, returns the corresponding highlight state.

This method is mainly for testing purposes.

Parameters
file
Returns
the corresponding highlight state
Exceptions
srchilite::ParserException
const QString srchiliteqt::GNUSyntaxHighlighter::getLangDefFileFromFileName ( const QString &  filename)
inherited

Returns the the lang def file name by using the file name for detecting the syntax of the file (e.g., foo.cpp brings to cpp.lang, ChangeLog brings to changelog.lang).

Parameters
filename
Returns
the lang def file name or the empty string if no mapping exists
srchilite::LangDefManager * srchiliteqt::GNUSyntaxHighlighter::getLangDefManager ( ) const
inherited
Returns
the LangDefManager object used by this highlighter
srchilite::LangMap * srchiliteqt::GNUSyntaxHighlighter::getLangMap ( ) const
inherited
Returns
the LangMap dealing with language definition files.
srchilite::LangMap * srchiliteqt::GNUSyntaxHighlighter::getOutLangMap ( ) const
inherited
Returns
the LangMap dealing with output language definition files.
const TextFormatterMap & srchiliteqt::GNUSyntaxHighlighter::getTextFormatterMap ( TextFormatterFactory formatterFactory,
const QString &  styleFile = "default.style" 
)
inherited

Given a TextFormatterFactory, it uses to build the TextFormatterMap, by reading a specified source-highlight style file.

If the TextFormatterFactory already contains some formatters, then simpy returns its TextFormatterMap, without rebuilding it.

Parameters
formatterFactorythe formatter factory to create formatters
styleFilethe style file name (can be a .style file or a .css file - in this case it must be a css file that source-highlight is able to handle)
Returns
the TextFormatterMap
Exceptions
ParserExceptionin case of parsing error of the style file
void srchiliteqt::GNUSyntaxHighlighter::highlightLine ( const QString &  line,
HighlightStateData *&  stateData 
)
inherited

Highlights the passed line.

This method assumes that all the fields are already initialized (e.g., the FormatterManager).

The passed HighlightStateData is used to configure the SourceHighlighter with info like the current highlighting state and the state stack. If it is null, we simply ignore it.

This method can modify the bassed pointer and even make it NULL (after deleting it).

Parameters
line
stateDatathe highlight state data to use
Returns
in case after highlighting the stack changed we return either the original stateData (after updating) or a new HighlightStateData (again with the updated information)
void srchiliteqt::Qt3SyntaxHighlighter::init ( const std::string &  langFile)

Initializes this highlighter with the specified language definition file.

Parameters
langFile
void srchiliteqt::GNUSyntaxHighlighter::initHighlighter ( const QString &  file)
inherited

Given a language definition file name, initializes the Source-highlight's highlighter.

Parameters
filethe lang file of Source-highlight
Exceptions
srchilite::ParserException
bool srchiliteqt::GNUSyntaxHighlighter::isReadOnly ( ) const
inlineinherited
Returns
whether we must highlight readonly contents
void srchiliteqt::GNUSyntaxHighlighter::setDefaultToMonospace ( bool  d)
inlineinherited

Whether the highlighter should use monospace font by default if nothing is specified about the font family.

Parameters
d
void srchiliteqt::GNUSyntaxHighlighter::setReadOnly ( bool  r)
inlineinherited

Specifies that we highlight readonly contents.

This optimizes the highlighting: being readonly, we must not keep track of the state of the previous line, and this saves time and memory.

Parameters
r

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