From f414c6e19f743412aea40611da447f073fabeea8 Mon Sep 17 00:00:00 2001 From: Dominik Wenger Date: Wed, 10 Sep 2008 19:41:18 +0000 Subject: WpsEditor: add linenumbrs WpsEditor: Add linenumbers to the WPS Code, and highlight the error line, if parsing fails. (FS#9362) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18483 a1c6a512-1295-4272-9138-f99709370657 --- utils/wpseditor/gui/src/qwpseditorwindow.cpp | 48 +++++++++++++++++++--------- 1 file changed, 33 insertions(+), 15 deletions(-) (limited to 'utils/wpseditor/gui/src/qwpseditorwindow.cpp') diff --git a/utils/wpseditor/gui/src/qwpseditorwindow.cpp b/utils/wpseditor/gui/src/qwpseditorwindow.cpp index 29887c3..1527fef 100644 --- a/utils/wpseditor/gui/src/qwpseditorwindow.cpp +++ b/utils/wpseditor/gui/src/qwpseditorwindow.cpp @@ -47,6 +47,7 @@ const char *playmodeNames[] = { QWpsEditorWindow::QWpsEditorWindow( QWidget * parent, Qt::WFlags f) : QMainWindow(parent, f) { logEdit = 0; + scrollingLine = -1; setupUi(this); drawer = new QWpsDrawer(&wpsState,&trackState, this); QWpsDrawer::api.verbose = 1; @@ -54,7 +55,8 @@ QWpsEditorWindow::QWpsEditorWindow( QWidget * parent, Qt::WFlags f) connectActions(); m_propertyEditor->addObject(&trackState); m_propertyEditor->addObject(&wpsState); - new QSyntaxer(plainWpsEdit->document()); + new QSyntaxer(plainWpsEdit->textEdit()->document()); + plainWpsEdit->markLine(-1); } void QWpsEditorWindow::connectActions() { @@ -65,7 +67,7 @@ void QWpsEditorWindow::connectActions() { connect(actShowGrid, SIGNAL(triggered(bool)), drawer, SLOT(slotShowGrid(bool))); connect(actUpdatePlainWps, SIGNAL(triggered()), SLOT(slotUpdatePlainWps())); - connect(plainWpsEdit->document(),SIGNAL(modificationChanged(bool)),SLOT(slotPlainDocModChanged(bool))); + connect(plainWpsEdit->textEdit()->document(),SIGNAL(modificationChanged(bool)),SLOT(slotPlainDocModChanged(bool))); connect(&wpsState, SIGNAL(stateChanged(wpsstate)), drawer, SLOT(slotWpsStateChanged(wpsstate))); connect(&trackState, SIGNAL(stateChanged(trackstate)), drawer, SLOT(slotTrackStateChanged(trackstate))); @@ -124,17 +126,23 @@ void QWpsEditorWindow::slotOpenWps() { DEBUGF1(tr("File wasn't chosen")); return; } - m_propertyEditor->setEnabled(true); + scrollingLine = -1; drawer->WpsInit(wpsfile); - plainWpsEdit->clear(); - plainWpsEdit->append(drawer->wpsString()); - trackState.setAlbum(trackState.album()); ////updating property editor - actGroupAudios->setEnabled(true); - + plainWpsEdit->textEdit()->clear(); + plainWpsEdit->textEdit()->append(drawer->wpsString()); + postWpsUpdate(); } void QWpsEditorWindow::logMsg(QString s) { logEdit->append(s); + // check for error line: + if (s.contains("ERR: Failed parsing on line ")) { + QRegExp error("\\d+"); + if (error.indexIn(s) != -1) { + scrollingLine = error.cap(0).toInt(); + plainWpsEdit->markLine(scrollingLine); + } + } } void QWpsEditorWindow::slotVerboseLevel() { @@ -146,18 +154,18 @@ void QWpsEditorWindow::slotVerboseLevel() { void QWpsEditorWindow::slotUpdatePlainWps() { DEBUGF1(tr("Updating WPS")); - plainWpsEdit->document()->setModified(false); - drawer->WpsInit(plainWpsEdit->toPlainText(),false); - m_propertyEditor->setEnabled(true); - actGroupAudios->setEnabled(true); - trackState.setAlbum(trackState.album()); //updating property editor + scrollingLine = -1; + drawer->WpsInit(plainWpsEdit->textEdit()->toPlainText(),false); + postWpsUpdate(); } void QWpsEditorWindow::slotPlainDocModChanged(bool changed) { - if (changed) + if (changed) { dockPlainWps->setWindowTitle(tr("PlainWps*")); - else + plainWpsEdit->markLine(-1); + } else { dockPlainWps->setWindowTitle(tr("PlainWps")); + } } void QWpsEditorWindow::slotSetTarget(const QString & target) { if (drawer->setTarget(target)) { @@ -169,5 +177,15 @@ void QWpsEditorWindow::slotSetTarget(const QString & target) { slotUpdatePlainWps(); } +void QWpsEditorWindow::postWpsUpdate() { + m_propertyEditor->setEnabled(true); + actGroupAudios->setEnabled(true); + trackState.setAlbum(trackState.album()); ////updating property editor + plainWpsEdit->markLine(scrollingLine); + plainWpsEdit->textEdit()->document()->setModified(false); + plainWpsEdit->scrolltoLine(scrollingLine); + scrollingLine = -1; +} + -- cgit v1.1