summaryrefslogtreecommitdiffstats
path: root/utils/wpseditor/gui/src/qwpseditorwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/wpseditor/gui/src/qwpseditorwindow.cpp')
-rw-r--r--utils/wpseditor/gui/src/qwpseditorwindow.cpp48
1 files changed, 33 insertions, 15 deletions
diff --git a/utils/wpseditor/gui/src/qwpseditorwindow.cpp b/utils/wpseditor/gui/src/qwpseditorwindow.cpp
index 29887c38bb..1527fef57a 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;
+}
+