mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 19:25:39 +00:00
Present to Abdel: Syntax highlighting for LaTeX Log. (I know I should have been reading windows installers :-)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17561 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
a33f6ed840
commit
07cc619a4c
@ -701,6 +701,7 @@ src_frontends_qt4_moc_files = Split('''
|
||||
QIncludeDialog.C
|
||||
QIndexDialog.C
|
||||
Action.C
|
||||
QLog.C
|
||||
QLogDialog.C
|
||||
QViewSourceDialog.C
|
||||
QViewSource.C
|
||||
|
@ -14,6 +14,8 @@
|
||||
#include "QLogDialog.h"
|
||||
#include "qt_helpers.h"
|
||||
|
||||
#include "frontends/Application.h"
|
||||
|
||||
#include "controllers/ControlLog.h"
|
||||
|
||||
#include <sstream>
|
||||
@ -31,9 +33,56 @@ QLog::QLog(Dialog & parent)
|
||||
{}
|
||||
|
||||
|
||||
logHighlighter::logHighlighter(QTextDocument * parent) :
|
||||
QSyntaxHighlighter(parent)
|
||||
{
|
||||
infoFormat.setForeground(Qt::gray);
|
||||
warningFormat.setForeground(Qt::darkBlue);
|
||||
errorFormat.setForeground(Qt::red);
|
||||
}
|
||||
|
||||
|
||||
void logHighlighter::highlightBlock(QString const & text)
|
||||
{
|
||||
// Info
|
||||
QRegExp exprInfo("^(Document Class:|LaTeX Font Info:|File:|Package:|Language:|Underfull|Overfull|\\(|\\\\).*$");
|
||||
int index = text.indexOf(exprInfo);
|
||||
while (index >= 0) {
|
||||
int length = exprInfo.matchedLength();
|
||||
setFormat(index, length, infoFormat);
|
||||
index = text.indexOf(exprInfo, index + length);
|
||||
}
|
||||
// LaTeX Warning:
|
||||
QRegExp exprWarning("^LaTeX Warning.*$");
|
||||
index = text.indexOf(exprWarning);
|
||||
while (index >= 0) {
|
||||
int length = exprWarning.matchedLength();
|
||||
setFormat(index, length, warningFormat);
|
||||
index = text.indexOf(exprWarning, index + length);
|
||||
}
|
||||
// ! error
|
||||
QRegExp exprError("^!.*$");
|
||||
index = text.indexOf(exprError);
|
||||
while (index >= 0) {
|
||||
int length = exprError.matchedLength();
|
||||
setFormat(index, length, errorFormat);
|
||||
index = text.indexOf(exprError, index + length);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void QLog::build_dialog()
|
||||
{
|
||||
dialog_.reset(new QLogDialog(this));
|
||||
// set syntax highlighting
|
||||
highlighter = new logHighlighter(dialog_->logTB->document());
|
||||
//
|
||||
dialog_->logTB->setReadOnly(true);
|
||||
QFont font(toqstr(theApp()->typewriterFontName()));
|
||||
font.setKerning(false);
|
||||
font.setFixedPitch(true);
|
||||
font.setStyleHint(QFont::TypeWriter);
|
||||
dialog_->logTB->setFont(font);
|
||||
}
|
||||
|
||||
|
||||
@ -49,3 +98,5 @@ void QLog::update_contents()
|
||||
|
||||
} // namespace frontend
|
||||
} // namespace lyx
|
||||
|
||||
#include "QLog_moc.cpp"
|
||||
|
@ -15,10 +15,13 @@
|
||||
#include "QDialogView.h"
|
||||
#include "QLogDialog.h"
|
||||
|
||||
#include <QSyntaxHighlighter>
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
|
||||
class ControlLog;
|
||||
class logHighlighter;
|
||||
|
||||
///
|
||||
class QLog
|
||||
@ -36,8 +39,30 @@ private:
|
||||
virtual void update_contents();
|
||||
/// build the dialog
|
||||
virtual void build_dialog();
|
||||
/// log syntax highlighter
|
||||
logHighlighter * highlighter;
|
||||
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
class logHighlighter : public QSyntaxHighlighter
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
logHighlighter(QTextDocument * parent);
|
||||
|
||||
protected:
|
||||
void highlightBlock(QString const & text);
|
||||
|
||||
private:
|
||||
QTextCharFormat infoFormat;
|
||||
QTextCharFormat warningFormat;
|
||||
QTextCharFormat errorFormat;
|
||||
};
|
||||
|
||||
|
||||
} // namespace frontend
|
||||
} // namespace lyx
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user