summaryrefslogtreecommitdiff
path: root/utils/wpseditor/gui/src
diff options
context:
space:
mode:
Diffstat (limited to 'utils/wpseditor/gui/src')
-rw-r--r--utils/wpseditor/gui/src/QPropertyEditor/QPropertyEditor.pro2
-rw-r--r--utils/wpseditor/gui/src/qsyntaxer.cpp44
-rw-r--r--utils/wpseditor/gui/src/qsyntaxer.h21
-rw-r--r--utils/wpseditor/gui/src/qtrackstate.h5
-rw-r--r--utils/wpseditor/gui/src/qwpsdrawer.cpp112
-rw-r--r--utils/wpseditor/gui/src/qwpsdrawer.h27
-rw-r--r--utils/wpseditor/gui/src/qwpsdrawer_static.cpp7
-rw-r--r--utils/wpseditor/gui/src/qwpseditorwindow.cpp70
-rw-r--r--utils/wpseditor/gui/src/qwpseditorwindow.h18
-rw-r--r--utils/wpseditor/gui/src/slider.cpp7
-rw-r--r--utils/wpseditor/gui/src/slider.h1
-rw-r--r--utils/wpseditor/gui/src/utils.cpp1
-rw-r--r--utils/wpseditor/gui/src/utils.h1
13 files changed, 236 insertions, 80 deletions
diff --git a/utils/wpseditor/gui/src/QPropertyEditor/QPropertyEditor.pro b/utils/wpseditor/gui/src/QPropertyEditor/QPropertyEditor.pro
index 85fd29ee2c..ad1e31ce9a 100644
--- a/utils/wpseditor/gui/src/QPropertyEditor/QPropertyEditor.pro
+++ b/utils/wpseditor/gui/src/QPropertyEditor/QPropertyEditor.pro
@@ -1,5 +1,5 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += staticlib debug_and_release 2CONFIG += staticlib debug
3SOURCES = ColorCombo.cpp \ 3SOURCES = ColorCombo.cpp \
4 Property.cpp \ 4 Property.cpp \
5 QPropertyEditorWidget.cpp \ 5 QPropertyEditorWidget.cpp \
diff --git a/utils/wpseditor/gui/src/qsyntaxer.cpp b/utils/wpseditor/gui/src/qsyntaxer.cpp
new file mode 100644
index 0000000000..412ca38148
--- /dev/null
+++ b/utils/wpseditor/gui/src/qsyntaxer.cpp
@@ -0,0 +1,44 @@
1#include <QTextCharFormat>
2
3#include "qsyntaxer.h"
4
5QSyntaxer::QSyntaxer(QTextDocument *parent)
6 : QSyntaxHighlighter(parent) {
7 HighlightingRule rule;
8
9 hrules["operator"].pattern = QRegExp("%[^\\| \n<\\?%]{1,2}");
10 hrules["operator"].format.setFontWeight(QFont::Bold);
11 hrules["operator"].format.setForeground(Qt::darkBlue);
12
13
14 hrules["question"].pattern = QRegExp("%[\\?]{1}[^<]{1,2}");
15 hrules["question"].format.setForeground(Qt::darkMagenta);
16
17 hrules["question2"].pattern = QRegExp("(<|>)");
18 hrules["question2"].format.setForeground(Qt::red);
19
20
21 hrules["limiter"].pattern = QRegExp("\\|");
22 hrules["limiter"].format.setForeground(Qt::darkRed);
23
24 hrules["comment"].pattern = QRegExp("#[^\n]*");
25 hrules["comment"].format.setForeground(Qt::darkGreen);
26 hrules["comment"].format.setFontItalic(true);
27}
28//
29void QSyntaxer::highlightBlock(const QString &text) {
30 QTextCharFormat wholeText;
31 wholeText.setFont(QFont("arial",11,QFont::Normal));
32 setFormat(0,text.length(),wholeText);
33
34 foreach (HighlightingRule rule, hrules) {
35 QRegExp expression(rule.pattern);
36 int index = text.indexOf(expression);
37 while (index >= 0) {
38 int length = expression.matchedLength();
39 setFormat(index, length, rule.format);
40 index = text.indexOf(expression, index + length);
41 }
42 }
43
44}
diff --git a/utils/wpseditor/gui/src/qsyntaxer.h b/utils/wpseditor/gui/src/qsyntaxer.h
new file mode 100644
index 0000000000..9cecd3e5ed
--- /dev/null
+++ b/utils/wpseditor/gui/src/qsyntaxer.h
@@ -0,0 +1,21 @@
1#ifndef QSYNTAXER_H
2#define QSYNTAXER_H
3//
4#include <QSyntaxHighlighter>
5
6class QTextCharFormat;
7
8class QSyntaxer : public QSyntaxHighlighter {
9 Q_OBJECT
10 struct HighlightingRule {
11 QRegExp pattern;
12 QTextCharFormat format;
13 };
14 QMap<QString,HighlightingRule> hrules;
15public:
16 QSyntaxer(QTextDocument *parent = 0);
17
18protected:
19 void highlightBlock(const QString &text);
20};
21#endif
diff --git a/utils/wpseditor/gui/src/qtrackstate.h b/utils/wpseditor/gui/src/qtrackstate.h
index b57f7a8376..9c3f324be6 100644
--- a/utils/wpseditor/gui/src/qtrackstate.h
+++ b/utils/wpseditor/gui/src/qtrackstate.h
@@ -4,11 +4,9 @@
4#include "wpsstate.h" 4#include "wpsstate.h"
5#include <QObject> 5#include <QObject>
6 6
7class QWpsState;
8
9class QTrackState : public QObject { 7class QTrackState : public QObject {
10 Q_OBJECT 8 Q_OBJECT
11 Q_CLASSINFO ( "QTrackState", "Mp3 State" ); 9 Q_CLASSINFO ( "QTrackState", "Track State" );
12 Q_PROPERTY ( QString Title READ title WRITE setTitle DESIGNABLE true USER true ) 10 Q_PROPERTY ( QString Title READ title WRITE setTitle DESIGNABLE true USER true )
13 Q_PROPERTY ( QString Artist READ artist WRITE setArtist DESIGNABLE true USER true ) 11 Q_PROPERTY ( QString Artist READ artist WRITE setArtist DESIGNABLE true USER true )
14 Q_PROPERTY ( QString Album READ album WRITE setAlbum DESIGNABLE true USER true ) 12 Q_PROPERTY ( QString Album READ album WRITE setAlbum DESIGNABLE true USER true )
@@ -17,7 +15,6 @@ class QTrackState : public QObject {
17 Q_PROPERTY ( int Elapsed READ elapsed WRITE setElapsed DESIGNABLE true USER true ) 15 Q_PROPERTY ( int Elapsed READ elapsed WRITE setElapsed DESIGNABLE true USER true )
18 Q_CLASSINFO("Elapsed", "minimum=0;maximum=100;value=50"); 16 Q_CLASSINFO("Elapsed", "minimum=0;maximum=100;value=50");
19 17
20
21 trackstate state; 18 trackstate state;
22 19
23public: 20public:
diff --git a/utils/wpseditor/gui/src/qwpsdrawer.cpp b/utils/wpseditor/gui/src/qwpsdrawer.cpp
index ab8a4b32d6..a506d5c03b 100644
--- a/utils/wpseditor/gui/src/qwpsdrawer.cpp
+++ b/utils/wpseditor/gui/src/qwpsdrawer.cpp
@@ -1,11 +1,14 @@
1#include "qwpsdrawer.h" 1#include <stdarg.h>
2#include "slider.h" 2
3#include "utils.h"
4#include <QtGui> 3#include <QtGui>
5#include <QLibrary> 4#include <QLibrary>
6#include <stdarg.h>
7//
8 5
6#include "qwpsdrawer.h"
7#include "slider.h"
8#include "utils.h"
9#include "qtrackstate.h"
10#include "qwpsstate.h"
11#include "api.h"
9 12
10QPointer<QWpsDrawer> drawer; 13QPointer<QWpsDrawer> drawer;
11QPixmap *QWpsDrawer::pix = NULL; 14QPixmap *QWpsDrawer::pix = NULL;
@@ -14,34 +17,38 @@ QImage QWpsDrawer::backdrop;
14proxy_api QWpsDrawer::api; 17proxy_api QWpsDrawer::api;
15 18
16QWpsDrawer::QWpsDrawer( QWpsState *ws,QTrackState *ms, QWidget *parent ) 19QWpsDrawer::QWpsDrawer( QWpsState *ws,QTrackState *ms, QWidget *parent )
17 : QWidget(parent),wpsState(ws),trackState(ms),showGrid(false),mTargetLibName("libwps") { 20 : QWidget(parent),wpsState(ws),trackState(ms),showGrid(false),mCurTarget("h10_5gb") {
18 21
19 tryResolve(); 22 tryResolve();
20 memset(&api,0,sizeof(struct proxy_api));
21
22 api.verbose = 2;
23 api.putsxy = &QWpsDrawer::putsxy;
24 api.transparent_bitmap_part = &QWpsDrawer::transparent_bitmap_part;
25 api.bitmap_part = &QWpsDrawer::bitmap_part;
26 api.drawpixel = &QWpsDrawer::drawpixel;
27 api.fillrect = &QWpsDrawer::fillrect;
28 api.hline = &QWpsDrawer::hline;
29 api.vline = &QWpsDrawer::vline;
30 api.clear_viewport = &QWpsDrawer::clear_viewport;
31 api.load_wps_backdrop = &QWpsDrawer::load_wps_backdrop;
32 api.read_bmp_file = &QWpsDrawer::read_bmp_file;
33 api.debugf = &qlogger;
34 newTempWps(); 23 newTempWps();
35} 24}
36 25
37bool QWpsDrawer::tryResolve() { 26bool QWpsDrawer::tryResolve() {
38 QLibrary lib(qApp->applicationDirPath()+"/"+mTargetLibName); 27 QLibrary lib(qApp->applicationDirPath()+"/libwps_"+mCurTarget);
39 wps_init = (pfwps_init)lib.resolve("wps_init"); 28 lib_wps_init = (pfwps_init)lib.resolve("wps_init");
40 wps_display = (pfwps_display)lib.resolve("wps_display"); 29 lib_wps_display = (pfwps_display)lib.resolve("wps_display");
41 wps_refresh = (pfwps_refresh)lib.resolve("wps_refresh"); 30 lib_wps_refresh = (pfwps_refresh)lib.resolve("wps_refresh");
42 mResolved = wps_init && wps_display && wps_refresh; 31 lib_get_model_name = (pfget_model_name)lib.resolve("get_model_name");
32 mResolved = lib_wps_init && lib_wps_display && lib_wps_refresh && lib_get_model_name;
43 if (!mResolved) 33 if (!mResolved)
44 DEBUGF1(tr("ERR: Failed to resolve funcs!")); 34 DEBUGF1(tr("ERR: Failed to resolve funcs!"));
35 else {
36 int v = api.verbose;
37 memset(&api,0,sizeof(struct proxy_api));
38 api.verbose = v;
39 api.putsxy = &QWpsDrawer::putsxy;
40 api.transparent_bitmap_part = &QWpsDrawer::transparent_bitmap_part;
41 api.bitmap_part = &QWpsDrawer::bitmap_part;
42 api.drawpixel = &QWpsDrawer::drawpixel;
43 api.fillrect = &QWpsDrawer::fillrect;
44 api.hline = &QWpsDrawer::hline;
45 api.vline = &QWpsDrawer::vline;
46 api.clear_viewport = &QWpsDrawer::clear_viewport;
47 api.load_wps_backdrop = &QWpsDrawer::load_wps_backdrop;
48 api.read_bmp_file = &QWpsDrawer::read_bmp_file;
49 api.debugf = &qlogger;
50 qDebug()<<(qApp->applicationDirPath()+"/libwps_"+mCurTarget+" resolved");
51 }
45 return mResolved; 52 return mResolved;
46} 53}
47QWpsDrawer::~QWpsDrawer() { 54QWpsDrawer::~QWpsDrawer() {
@@ -56,20 +63,20 @@ void QWpsDrawer::mouseReleaseEvent ( QMouseEvent * event ) {
56 DEBUGF1("x=%d,y=%d",x,y);*/ 63 DEBUGF1("x=%d,y=%d",x,y);*/
57} 64}
58void QWpsDrawer::newTempWps() { 65void QWpsDrawer::newTempWps() {
59 QTemporaryFile tmpWps; 66 QTemporaryFile tmpWps;
60 tmpWps.setAutoRemove(false); 67 tmpWps.setAutoRemove(false);
61 tmpWps.setFileTemplate(QDir::tempPath()+"/XXXXXXXXXX.wps"); 68 tmpWps.setFileTemplate(QDir::tempPath()+"/XXXXXXXXXX.wps");
62 if (tmpWps.open()) { 69 if (tmpWps.open()) {
63 QString tmpDir = tmpWps.fileName().left(tmpWps.fileName().length()-4); 70 QString tmpDir = tmpWps.fileName().left(tmpWps.fileName().length()-4);
64 if (QDir::temp().mkpath(tmpDir)) { 71 if (QDir::temp().mkpath(tmpDir)) {
65 mTmpWpsString = tmpDir; 72 mTmpWpsString = tmpDir;
66 DEBUGF1(mTmpWpsString); 73 DEBUGF3(QString("Created :"+mTmpWpsString).toAscii());
67 } 74 }
68 } 75 }
69} 76}
70 77
71void QWpsDrawer::WpsInit(QString buffer, bool isFile) { 78void QWpsDrawer::WpsInit(QString buffer, bool isFile) {
72 79 DEBUGF3("QWpsDrawer::WpsInit");
73 if (!mResolved) 80 if (!mResolved)
74 if (!tryResolve()) 81 if (!tryResolve())
75 return; 82 return;
@@ -87,22 +94,24 @@ void QWpsDrawer::WpsInit(QString buffer, bool isFile) {
87 if (tfile.open(QIODevice::WriteOnly | QIODevice::Text)) 94 if (tfile.open(QIODevice::WriteOnly | QIODevice::Text))
88 tfile.write(mWpsString.toAscii(),mWpsString.length()); 95 tfile.write(mWpsString.toAscii(),mWpsString.length());
89 } 96 }
90 97 backdrop.fill(Qt::black);
98 DEBUGF3("clear backdrop");
91 if (isFile) 99 if (isFile)
92 wps_init(buffer.toAscii(), &api, isFile); 100 lib_wps_init(buffer.toAscii(), &api, isFile);
93 else 101 else
94 wps_init(QString(mTmpWpsString+".wps").toAscii(), &api, true); 102 lib_wps_init(QString(mTmpWpsString+".wps").toAscii(), &api, true);
95 pix = new QPixmap(api.getwidth(),api.getheight()); 103 pix = new QPixmap(api.getwidth(),api.getheight());
104 pix->fill(Qt::black);
96 105
97 drawBackdrop(); 106 drawBackdrop();
98 107
99 setMinimumWidth(api.getwidth()); 108 setMinimumWidth(api.getwidth());
100 setMinimumHeight(api.getheight()); 109 setMinimumHeight(api.getheight());
101
102 update(); 110 update();
103} 111}
104 112
105void QWpsDrawer::paintEvent(QPaintEvent * event) { 113void QWpsDrawer::paintEvent(QPaintEvent * event) {
114 DEBUGF3("QWpsDrawer::paintEvent()");
106 if (!mResolved) 115 if (!mResolved)
107 return; 116 return;
108 if (pix==NULL) 117 if (pix==NULL)
@@ -111,7 +120,7 @@ void QWpsDrawer::paintEvent(QPaintEvent * event) {
111 QRect rect = event->rect(); 120 QRect rect = event->rect();
112 121
113 drawBackdrop(); 122 drawBackdrop();
114 wps_refresh(); 123 lib_wps_refresh();
115 124
116 if (showGrid) { 125 if (showGrid) {
117 QPainter g(pix); 126 QPainter g(pix);
@@ -172,10 +181,13 @@ void QWpsDrawer::slotShowGrid(bool show) {
172} 181}
173 182
174void QWpsDrawer::drawBackdrop() { 183void QWpsDrawer::drawBackdrop() {
184 DEBUGF3("QWpsDrawer::drawBackdrop()");
185 if (backdrop.isNull())
186 return;
175 QPainter b(pix); 187 QPainter b(pix);
176 QImage pink = backdrop.createMaskFromColor(qRgb(255,0,255),Qt::MaskOutColor); 188 QImage pink = backdrop.createMaskFromColor(qRgb(255,0,255),Qt::MaskOutColor);
177 backdrop.setAlphaChannel(pink); 189 backdrop.setAlphaChannel(pink);
178 b.drawImage(0,0,backdrop); 190 b.drawImage(0,0,backdrop,0,0,pix->width(),pix->height());
179} 191}
180 192
181void QWpsDrawer::slotSetAudioStatus(int status) { 193void QWpsDrawer::slotSetAudioStatus(int status) {
@@ -198,3 +210,35 @@ void QWpsDrawer::closeEvent(QCloseEvent *event) {
198 cleanTemp(); 210 cleanTemp();
199 event->accept(); 211 event->accept();
200} 212}
213
214QString QWpsDrawer::getModelName(QString libraryName) {
215 QLibrary lib(libraryName);
216 if ((pfget_model_name)lib.resolve("get_model_name"))
217 return ((pfget_model_name)lib.resolve("get_model_name"))();
218 DEBUGF1("ERR: failed to resolve <get_model_name>");
219 return "unknown";
220}
221
222QList<QString> QWpsDrawer::getTargets() {
223 QList<QString> list ;
224 QDir d = QDir(qApp->applicationDirPath());
225 QFileInfoList libs = d.entryInfoList(QStringList("libwps*"));
226 qDebug() << libs.size()<<"libs found";
227 for (int i = 0; i < libs.size(); i++) {
228 QString modelName = getModelName(libs[i].absoluteFilePath());
229 qDebug() << libs[i].fileName()<<modelName;
230 if (modelName == "unknown")
231 continue;
232 list.append(modelName);
233 }
234 return list;
235}
236bool QWpsDrawer::setTarget(QString target) {
237 QLibrary lib(qApp->applicationDirPath()+"/libwps_"+mCurTarget);
238 //lib.unload();
239 if (getModelName("libwps_"+target)!="unknown") {
240 mCurTarget = target;
241 return tryResolve();
242 }
243 return false;
244}
diff --git a/utils/wpseditor/gui/src/qwpsdrawer.h b/utils/wpseditor/gui/src/qwpsdrawer.h
index d4dfa6c7a2..65e98723f5 100644
--- a/utils/wpseditor/gui/src/qwpsdrawer.h
+++ b/utils/wpseditor/gui/src/qwpsdrawer.h
@@ -1,25 +1,30 @@
1#ifndef WPSDRAWER_H 1#ifndef WPSDRAWER_H
2#define WPSDRAWER_H 2#define WPSDRAWER_H
3// 3
4#include <QWidget> 4#include <QWidget>
5#include <QPixmap> 5#include <QPixmap>
6#include <QPointer> 6#include <QPointer>
7#include <QTemporaryFile> 7#include <QTemporaryFile>
8#include "api.h" 8
9#include "qtrackstate.h" 9#include "wpsstate.h"
10#include "qwpsstate.h" 10
11// 11struct proxy_api;
12
13class QWpsState;
14class QTrackState;
12 15
13typedef int (*pfwps_init)(const char* buff,struct proxy_api *api, bool isfile); 16typedef int (*pfwps_init)(const char* buff,struct proxy_api *api, bool isfile);
14typedef int (*pfwps_display)(); 17typedef int (*pfwps_display)();
15typedef int (*pfwps_refresh)(); 18typedef int (*pfwps_refresh)();
19typedef const char* (*pfget_model_name)();
16 20
17class QWpsDrawer : public QWidget { 21class QWpsDrawer : public QWidget {
18 Q_OBJECT 22 Q_OBJECT
19 23
20 pfwps_init wps_init; 24 pfwps_init lib_wps_init;
21 pfwps_display wps_display; 25 pfwps_display lib_wps_display;
22 pfwps_refresh wps_refresh; 26 pfwps_refresh lib_wps_refresh;
27 pfget_model_name lib_get_model_name;
23 28
24 static QPixmap *pix; 29 static QPixmap *pix;
25 static QImage backdrop; 30 static QImage backdrop;
@@ -30,7 +35,7 @@ class QWpsDrawer : public QWidget {
30 bool showGrid; 35 bool showGrid;
31 bool mResolved; 36 bool mResolved;
32 QString mWpsString; 37 QString mWpsString;
33 QString mTargetLibName; 38 QString mCurTarget;
34 static QString mTmpWpsString; 39 static QString mTmpWpsString;
35 40
36 41
@@ -42,6 +47,7 @@ protected:
42 void newTempWps(); 47 void newTempWps();
43 void cleanTemp(bool fileToo=true); 48 void cleanTemp(bool fileToo=true);
44 bool tryResolve(); 49 bool tryResolve();
50 QString getModelName(QString libraryName);
45public: 51public:
46 QWpsDrawer(QWpsState *ws,QTrackState *ms, QWidget *parent=0); 52 QWpsDrawer(QWpsState *ws,QTrackState *ms, QWidget *parent=0);
47 ~QWpsDrawer(); 53 ~QWpsDrawer();
@@ -53,6 +59,8 @@ public:
53 QString tempWps() const { 59 QString tempWps() const {
54 return mTmpWpsString; 60 return mTmpWpsString;
55 }; 61 };
62 QList<QString> getTargets();
63 bool setTarget(QString target);
56 64
57 65
58 static proxy_api api; 66 static proxy_api api;
@@ -73,7 +81,6 @@ public:
73public slots: 81public slots:
74 void slotSetVolume(); 82 void slotSetVolume();
75 void slotSetProgress(); 83 void slotSetProgress();
76
77 void slotShowGrid(bool); 84 void slotShowGrid(bool);
78 void slotWpsStateChanged(wpsstate); 85 void slotWpsStateChanged(wpsstate);
79 void slotTrackStateChanged(trackstate); 86 void slotTrackStateChanged(trackstate);
diff --git a/utils/wpseditor/gui/src/qwpsdrawer_static.cpp b/utils/wpseditor/gui/src/qwpsdrawer_static.cpp
index bf94d28a5a..a9346ae430 100644
--- a/utils/wpseditor/gui/src/qwpsdrawer_static.cpp
+++ b/utils/wpseditor/gui/src/qwpsdrawer_static.cpp
@@ -3,14 +3,14 @@
3#include <QFile> 3#include <QFile>
4#include <QFileInfo> 4#include <QFileInfo>
5#include "utils.h" 5#include "utils.h"
6#include "api.h"
6 7
7void QWpsDrawer::putsxy(int x, int y, const unsigned char *str) { 8void QWpsDrawer::putsxy(int x, int y, const unsigned char *str) {
9 DEBUGF3("putsxy(int x=%d, int y=%d, *str=%s)",x,y,str);
8 QPainter p(pix); 10 QPainter p(pix);
9 viewport_api avp; 11 viewport_api avp;
10 api.get_current_vp(&avp); 12 api.get_current_vp(&avp);
11 p.setPen(Qt::gray); 13 p.setPen(Qt::gray);
12
13
14 QFont font("times",avp.fontheight,QFont::Bold); 14 QFont font("times",avp.fontheight,QFont::Bold);
15 p.setFont(font); 15 p.setFont(font);
16 p.drawText(x+avp.x,y + avp.fontheight + avp.y,(char*)str); 16 p.drawText(x+avp.x,y + avp.fontheight + avp.y,(char*)str);
@@ -54,7 +54,7 @@ void QWpsDrawer::vline(int x, int y1, int y2) {
54 p.drawLine(x,y1,x,y2); 54 p.drawLine(x,y1,x,y2);
55} 55}
56bool QWpsDrawer::load_wps_backdrop(char* filename) { 56bool QWpsDrawer::load_wps_backdrop(char* filename) {
57 DEBUGF2("load backdrop: %s", filename); 57 DEBUGF3("load backdrop: %s", filename);
58 QFile file(filename); 58 QFile file(filename);
59 QFileInfo info(file); 59 QFileInfo info(file);
60 file.copy(mTmpWpsString+"/"+info.fileName()); 60 file.copy(mTmpWpsString+"/"+info.fileName());
@@ -70,7 +70,6 @@ int QWpsDrawer::read_bmp_file(const char* filename,int *width, int *height) {
70 file.copy(mTmpWpsString+"/"+info.fileName()); 70 file.copy(mTmpWpsString+"/"+info.fileName());
71 71
72 img.load(filename); 72 img.load(filename);
73 //qDebug()<<"QWpsDrawer::read_bmp_file"<<img.width()<<img.height();
74 *width = img.width(); 73 *width = img.width();
75 *height = img.height(); 74 *height = img.height();
76 return 1; 75 return 1;
diff --git a/utils/wpseditor/gui/src/qwpseditorwindow.cpp b/utils/wpseditor/gui/src/qwpseditorwindow.cpp
index c3090bd027..74d18ffe23 100644
--- a/utils/wpseditor/gui/src/qwpseditorwindow.cpp
+++ b/utils/wpseditor/gui/src/qwpseditorwindow.cpp
@@ -1,9 +1,11 @@
1#include "qwpseditorwindow.h"
2#include "qwpsdrawer.h"
3#include "utils.h"
4#include <QFileDialog> 1#include <QFileDialog>
5#include <QDebug> 2#include <QDebug>
6#include <QInputDialog> 3#include <QInputDialog>
4#include "api.h"
5#include "qwpseditorwindow.h"
6#include "utils.h"
7#include "qsyntaxer.h"
8
7 9
8enum api_playmode playmodes[PLAYMODES_NUM] = { 10enum api_playmode playmodes[PLAYMODES_NUM] = {
9 API_STATUS_PLAY, 11 API_STATUS_PLAY,
@@ -27,45 +29,61 @@ QWpsEditorWindow::QWpsEditorWindow( QWidget * parent, Qt::WFlags f)
27 setupUi(this); 29 setupUi(this);
28 drawer = new QWpsDrawer(&wpsState,&trackState, this); 30 drawer = new QWpsDrawer(&wpsState,&trackState, this);
29 QWpsDrawer::api.verbose = 1; 31 QWpsDrawer::api.verbose = 1;
30 //drawer->WpsInit("iCatcher.wps");
31 setCentralWidget(drawer); 32 setCentralWidget(drawer);
32 connectActions(); 33 connectActions();
33 m_propertyEditor->addObject(&trackState); 34 m_propertyEditor->addObject(&trackState);
34 m_propertyEditor->addObject(&wpsState); 35 m_propertyEditor->addObject(&wpsState);
36 new QSyntaxer(plainWpsEdit->document());
35} 37}
36 38
37void QWpsEditorWindow::connectActions() { 39void QWpsEditorWindow::connectActions() {
38 qDebug()<<"connect actions"; 40 DEBUGF3("connect actions");
39 connect(actOpenWps, SIGNAL(triggered()), this, SLOT(slotOpenWps())); 41 connect(actOpenWps, SIGNAL(triggered()), this, SLOT(slotOpenWps()));
40 connect(actSetVolume, SIGNAL(triggered()), drawer, SLOT(slotSetVolume())); 42 connect(actSetVolume, SIGNAL(triggered()), drawer, SLOT(slotSetVolume()));
41 connect(actSetProgress, SIGNAL(triggered()), drawer, SLOT(slotSetProgress())); 43 connect(actSetProgress, SIGNAL(triggered()), drawer, SLOT(slotSetProgress()));
42 connect(actShowGrid, SIGNAL(triggered(bool)), drawer, SLOT(slotShowGrid(bool))); 44 connect(actShowGrid, SIGNAL(triggered(bool)), drawer, SLOT(slotShowGrid(bool)));
43 45
44 connect(actUpdatePlainWps, SIGNAL(triggered()), SLOT(slotUpdatePlainWps())); 46 connect(actUpdatePlainWps, SIGNAL(triggered()), SLOT(slotUpdatePlainWps()));
45 connect(plainWpsEdit->document(), SIGNAL(modificationChanged(bool)), SLOT(slotPlainDocModChanged(bool))); 47 connect(plainWpsEdit->document(),SIGNAL(modificationChanged(bool)),SLOT(slotPlainDocModChanged(bool)));
46 48
47 connect(&wpsState, SIGNAL(stateChanged(wpsstate)), drawer, SLOT(slotWpsStateChanged(wpsstate))); 49 connect(&wpsState, SIGNAL(stateChanged(wpsstate)), drawer, SLOT(slotWpsStateChanged(wpsstate)));
48 connect(&trackState, SIGNAL(stateChanged(trackstate)), drawer, SLOT(slotTrackStateChanged(trackstate))); 50 connect(&trackState, SIGNAL(stateChanged(trackstate)), drawer, SLOT(slotTrackStateChanged(trackstate)));
49 connect(&wpsState, SIGNAL(stateChanged(wpsstate)), this, SLOT(slotWpsStateChanged(wpsstate))); 51 connect(&wpsState, SIGNAL(stateChanged(wpsstate)), this, SLOT(slotWpsStateChanged(wpsstate)));
50 connect(&trackState, SIGNAL(stateChanged(trackstate)), this, SLOT(slotTrackStateChanged(trackstate))); 52 connect(&trackState, SIGNAL(stateChanged(trackstate)), this, SLOT(slotTrackStateChanged(trackstate)));
51 53
52 connect(actClearLog, SIGNAL(triggered()), logEdit, SLOT(clear())); 54 connect(actClearLog, SIGNAL(triggered()), logEdit, SLOT(clear()));
53 connect(actVerboseLevel, SIGNAL(triggered()), SLOT(slotVerboseLevel())); 55 connect(actVerboseLevel, SIGNAL(triggered()), SLOT(slotVerboseLevel()));
54 56
55 actGroupAudios = new QActionGroup(this); 57 actGroupAudios = new QActionGroup(this);
56 signalMapper = new QSignalMapper(this); 58 audiosSignalMapper = new QSignalMapper(this);
57 for (int i=0;i<PLAYMODES_NUM;i++) { 59 for (int i=0;i<PLAYMODES_NUM;i++) {
58 QAction *act = new QAction(playmodeNames[i],this); 60 QAction *act = new QAction(playmodeNames[i],this);
59 act->setCheckable(true); 61 act->setCheckable(true);
60 actGroupAudios->addAction(act); 62 actGroupAudios->addAction(act);
61 connect(act,SIGNAL(triggered()),signalMapper,SLOT(map())); 63 connect(act,SIGNAL(triggered()),audiosSignalMapper,SLOT(map()));
62 signalMapper->setMapping(act, i); 64 audiosSignalMapper->setMapping(act, i);
63 menuPlay->addAction(act); 65 menuPlay->addAction(act);
64 actAudios[playmodes[i]] = act; 66 actAudios[playmodes[i]] = act;
65 } 67 }
66 connect(signalMapper, SIGNAL(mapped(int)), SIGNAL(signalAudioStatusChanged(int))); 68 connect(audiosSignalMapper, SIGNAL(mapped(int)), SIGNAL(signalAudioStatusChanged(int)));
67 connect(this, SIGNAL(signalAudioStatusChanged(int)), drawer, SLOT(slotSetAudioStatus(int))); 69 connect(this, SIGNAL(signalAudioStatusChanged(int)), drawer, SLOT(slotSetAudioStatus(int)));
68 actGroupAudios->setEnabled(false); 70 actGroupAudios->setEnabled(false);
71
72 QList<QString> targets = drawer->getTargets();
73 actGroupTargets = new QActionGroup(this);
74 targetsSignalMapper = new QSignalMapper(this);
75
76 for (int i=0;i<targets.size();i++) {
77 QAction *act = new QAction(targets[i],this);
78 act->setCheckable(true);
79 actGroupTargets->addAction(act);
80 connect(act,SIGNAL(triggered()),targetsSignalMapper,SLOT(map()));
81 targetsSignalMapper->setMapping(act, targets[i]);
82 menuTarget->addAction(act);
83 actTargets[targets[i]] = act;
84 }
85 connect(targetsSignalMapper, SIGNAL(mapped(const QString &)),this, SIGNAL(signalSetTarget(const QString &)));
86 connect(this, SIGNAL(signalSetTarget(const QString &)),this, SLOT(slotSetTarget(const QString &)));
69} 87}
70 88
71void QWpsEditorWindow::slotWpsStateChanged(wpsstate) { 89void QWpsEditorWindow::slotWpsStateChanged(wpsstate) {
@@ -89,8 +107,9 @@ void QWpsEditorWindow::slotOpenWps() {
89 drawer->WpsInit(wpsfile); 107 drawer->WpsInit(wpsfile);
90 plainWpsEdit->clear(); 108 plainWpsEdit->clear();
91 plainWpsEdit->append(drawer->wpsString()); 109 plainWpsEdit->append(drawer->wpsString());
92 trackState.setAlbum(trackState.album()); 110 trackState.setAlbum(trackState.album()); ////updating property editor
93 actGroupAudios->setEnabled(true); 111 actGroupAudios->setEnabled(true);
112
94} 113}
95 114
96void QWpsEditorWindow::logMsg(QString s) { 115void QWpsEditorWindow::logMsg(QString s) {
@@ -108,7 +127,9 @@ void QWpsEditorWindow::slotUpdatePlainWps() {
108 DEBUGF1(tr("Updating WPS")); 127 DEBUGF1(tr("Updating WPS"));
109 plainWpsEdit->document()->setModified(false); 128 plainWpsEdit->document()->setModified(false);
110 drawer->WpsInit(plainWpsEdit->toPlainText(),false); 129 drawer->WpsInit(plainWpsEdit->toPlainText(),false);
111 130 m_propertyEditor->setEnabled(true);
131 actGroupAudios->setEnabled(true);
132 trackState.setAlbum(trackState.album()); //updating property editor
112} 133}
113 134
114void QWpsEditorWindow::slotPlainDocModChanged(bool changed) { 135void QWpsEditorWindow::slotPlainDocModChanged(bool changed) {
@@ -117,4 +138,15 @@ void QWpsEditorWindow::slotPlainDocModChanged(bool changed) {
117 else 138 else
118 dockPlainWps->setWindowTitle(tr("PlainWps")); 139 dockPlainWps->setWindowTitle(tr("PlainWps"));
119} 140}
141void QWpsEditorWindow::slotSetTarget(const QString & target) {
142 if (drawer->setTarget(target)) {
143 DEBUGF1(tr("New target <%1> switched").arg(target));
144 actTargets[target]->setChecked(true);
145 } else
146 DEBUGF1(tr("ERR: Target <%1> failed!").arg(target));
147 update();
148 slotUpdatePlainWps();
149}
150
151
120 152
diff --git a/utils/wpseditor/gui/src/qwpseditorwindow.h b/utils/wpseditor/gui/src/qwpseditorwindow.h
index 019eb63808..1becd74885 100644
--- a/utils/wpseditor/gui/src/qwpseditorwindow.h
+++ b/utils/wpseditor/gui/src/qwpseditorwindow.h
@@ -4,22 +4,29 @@
4#include <QMainWindow> 4#include <QMainWindow>
5#include <QActionGroup> 5#include <QActionGroup>
6#include <QSignalMapper> 6#include <QSignalMapper>
7
8#include "wpsstate.h"
7#include "ui_mainwindow.h" 9#include "ui_mainwindow.h"
8#include "wpsstate.h" 10#include "wpsstate.h"
9#include "qwpsdrawer.h"
10#include "qwpsstate.h" 11#include "qwpsstate.h"
11#include "qtrackstate.h" 12#include "qtrackstate.h"
12// 13#include "qwpsdrawer.h"
14
13class QWpsEditorWindow : public QMainWindow, public Ui::MainWindow { 15class QWpsEditorWindow : public QMainWindow, public Ui::MainWindow {
14 Q_OBJECT 16 Q_OBJECT
17
15 QWpsState wpsState; 18 QWpsState wpsState;
16 QTrackState trackState; 19 QTrackState trackState;
17 QPointer<QWpsDrawer> drawer; 20 QPointer<QWpsDrawer> drawer;
18 21
19 QHash<int, QAction*> actAudios; 22 QHash<int, QAction*> actAudios;
20 QActionGroup *actGroupAudios; 23 QActionGroup *actGroupAudios;
21 QSignalMapper *signalMapper; 24 QSignalMapper *audiosSignalMapper;
22 25
26 QHash<QString,QAction *> actTargets;
27 QActionGroup *actGroupTargets;
28 QSignalMapper *targetsSignalMapper;
29
23protected: 30protected:
24 void connectActions(); 31 void connectActions();
25public: 32public:
@@ -33,9 +40,11 @@ private slots:
33 40
34 void slotUpdatePlainWps(); 41 void slotUpdatePlainWps();
35 void slotPlainDocModChanged(bool m); 42 void slotPlainDocModChanged(bool m);
43 void slotSetTarget(const QString &);
36 44
37signals: 45signals:
38 void signalAudioStatusChanged(int); 46 void signalAudioStatusChanged(int);
47 void signalSetTarget(const QString &);
39 48
40}; 49};
41#endif 50#endif
@@ -43,3 +52,4 @@ signals:
43 52
44 53
45 54
55
diff --git a/utils/wpseditor/gui/src/slider.cpp b/utils/wpseditor/gui/src/slider.cpp
index 7e3c9a942c..4cbc714507 100644
--- a/utils/wpseditor/gui/src/slider.cpp
+++ b/utils/wpseditor/gui/src/slider.cpp
@@ -1,11 +1,11 @@
1#include "slider.h" 1#include "slider.h"
2#include <QDebug> 2#include <QDebug>
3// 3//
4Slider::Slider(QWidget *parent, QString caption, int min, int max ):QDialog(parent) { 4Slider::Slider(QWidget *parent, QString caption, int min, int max ):QDialog(parent),mCaption(caption) {
5 setupUi ( this ); 5 setupUi ( this );
6 connect(horslider, SIGNAL(valueChanged(int)), this, SIGNAL(valueChanged(int))); 6 connect(horslider, SIGNAL(valueChanged(int)), this, SIGNAL(valueChanged(int)));
7 connect(this, SIGNAL(valueChanged(int)), this, SLOT(slotValueChanged(int))); 7 connect(this, SIGNAL(valueChanged(int)), this, SLOT(slotValueChanged(int)));
8 setWindowTitle(caption); 8 setWindowTitle(mCaption);
9 horslider->setMinimum(min); 9 horslider->setMinimum(min);
10 horslider->setMaximum(max); 10 horslider->setMaximum(max);
11} 11}
@@ -14,7 +14,8 @@ int Slider::value() {
14 return horslider->value(); 14 return horslider->value();
15} 15}
16void Slider::slotValueChanged(int step) { 16void Slider::slotValueChanged(int step) {
17 setWindowTitle(tr("Value =%1 ").arg(step)); 17 setWindowTitle(tr("%1 = %2 ").arg(mCaption).arg(step));
18} 18}
19 19
20 20
21
diff --git a/utils/wpseditor/gui/src/slider.h b/utils/wpseditor/gui/src/slider.h
index 2620731644..8b8c1990d8 100644
--- a/utils/wpseditor/gui/src/slider.h
+++ b/utils/wpseditor/gui/src/slider.h
@@ -7,6 +7,7 @@
7// 7//
8class Slider : public QDialog , Ui::slider { 8class Slider : public QDialog , Ui::slider {
9 Q_OBJECT 9 Q_OBJECT
10 QString mCaption;
10public slots: 11public slots:
11 void slotValueChanged(int step); 12 void slotValueChanged(int step);
12signals: 13signals:
diff --git a/utils/wpseditor/gui/src/utils.cpp b/utils/wpseditor/gui/src/utils.cpp
index f18442555b..5b35f752a3 100644
--- a/utils/wpseditor/gui/src/utils.cpp
+++ b/utils/wpseditor/gui/src/utils.cpp
@@ -19,7 +19,6 @@ int qlogger(const char* fmt,...) {
19 s = "<font color=red>"+s+"</font>"; 19 s = "<font color=red>"+s+"</font>";
20 if (win!=0) 20 if (win!=0)
21 win->logMsg(s); 21 win->logMsg(s);
22 va_end(ap);
23 return s.length(); 22 return s.length();
24} 23}
25 24
diff --git a/utils/wpseditor/gui/src/utils.h b/utils/wpseditor/gui/src/utils.h
index ae88d78249..f1a05d3397 100644
--- a/utils/wpseditor/gui/src/utils.h
+++ b/utils/wpseditor/gui/src/utils.h
@@ -5,6 +5,7 @@
5 5
6#define DEBUGF1 qlogger 6#define DEBUGF1 qlogger
7#define DEBUGF2(...) 7#define DEBUGF2(...)
8#define DEBUGF3 qDebug
8 9
9extern int qlogger(const char* fmt,...); 10extern int qlogger(const char* fmt,...);
10extern int qlogger(const QString& s); 11extern int qlogger(const QString& s);