diff options
Diffstat (limited to 'utils/wpseditor/gui/src')
-rw-r--r-- | utils/wpseditor/gui/src/QPropertyEditor/QPropertyEditor.pro | 2 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/qsyntaxer.cpp | 44 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/qsyntaxer.h | 21 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/qtrackstate.h | 5 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/qwpsdrawer.cpp | 112 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/qwpsdrawer.h | 27 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/qwpsdrawer_static.cpp | 7 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/qwpseditorwindow.cpp | 70 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/qwpseditorwindow.h | 18 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/slider.cpp | 7 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/slider.h | 1 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/utils.cpp | 1 | ||||
-rw-r--r-- | utils/wpseditor/gui/src/utils.h | 1 |
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 @@ | |||
1 | TEMPLATE = lib | 1 | TEMPLATE = lib |
2 | CONFIG += staticlib debug_and_release | 2 | CONFIG += staticlib debug |
3 | SOURCES = ColorCombo.cpp \ | 3 | SOURCES = 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 | |||
5 | QSyntaxer::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 | // | ||
29 | void 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 | |||
6 | class QTextCharFormat; | ||
7 | |||
8 | class QSyntaxer : public QSyntaxHighlighter { | ||
9 | Q_OBJECT | ||
10 | struct HighlightingRule { | ||
11 | QRegExp pattern; | ||
12 | QTextCharFormat format; | ||
13 | }; | ||
14 | QMap<QString,HighlightingRule> hrules; | ||
15 | public: | ||
16 | QSyntaxer(QTextDocument *parent = 0); | ||
17 | |||
18 | protected: | ||
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 | ||
7 | class QWpsState; | ||
8 | |||
9 | class QTrackState : public QObject { | 7 | class 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 | ||
23 | public: | 20 | public: |
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 | ||
10 | QPointer<QWpsDrawer> drawer; | 13 | QPointer<QWpsDrawer> drawer; |
11 | QPixmap *QWpsDrawer::pix = NULL; | 14 | QPixmap *QWpsDrawer::pix = NULL; |
@@ -14,34 +17,38 @@ QImage QWpsDrawer::backdrop; | |||
14 | proxy_api QWpsDrawer::api; | 17 | proxy_api QWpsDrawer::api; |
15 | 18 | ||
16 | QWpsDrawer::QWpsDrawer( QWpsState *ws,QTrackState *ms, QWidget *parent ) | 19 | QWpsDrawer::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 | ||
37 | bool QWpsDrawer::tryResolve() { | 26 | bool 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 | } |
47 | QWpsDrawer::~QWpsDrawer() { | 54 | QWpsDrawer::~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 | } |
58 | void QWpsDrawer::newTempWps() { | 65 | void 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 | ||
71 | void QWpsDrawer::WpsInit(QString buffer, bool isFile) { | 78 | void 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 | ||
105 | void QWpsDrawer::paintEvent(QPaintEvent * event) { | 113 | void 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 | ||
174 | void QWpsDrawer::drawBackdrop() { | 183 | void 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 | ||
181 | void QWpsDrawer::slotSetAudioStatus(int status) { | 193 | void 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 | |||
214 | QString 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 | |||
222 | QList<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 | } | ||
236 | bool 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 | // | 11 | struct proxy_api; |
12 | |||
13 | class QWpsState; | ||
14 | class QTrackState; | ||
12 | 15 | ||
13 | typedef int (*pfwps_init)(const char* buff,struct proxy_api *api, bool isfile); | 16 | typedef int (*pfwps_init)(const char* buff,struct proxy_api *api, bool isfile); |
14 | typedef int (*pfwps_display)(); | 17 | typedef int (*pfwps_display)(); |
15 | typedef int (*pfwps_refresh)(); | 18 | typedef int (*pfwps_refresh)(); |
19 | typedef const char* (*pfget_model_name)(); | ||
16 | 20 | ||
17 | class QWpsDrawer : public QWidget { | 21 | class 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); | ||
45 | public: | 51 | public: |
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: | |||
73 | public slots: | 81 | public 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 | ||
7 | void QWpsDrawer::putsxy(int x, int y, const unsigned char *str) { | 8 | void 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 | } |
56 | bool QWpsDrawer::load_wps_backdrop(char* filename) { | 56 | bool 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 | ||
8 | enum api_playmode playmodes[PLAYMODES_NUM] = { | 10 | enum 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 | ||
37 | void QWpsEditorWindow::connectActions() { | 39 | void 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 | ||
71 | void QWpsEditorWindow::slotWpsStateChanged(wpsstate) { | 89 | void 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 | ||
96 | void QWpsEditorWindow::logMsg(QString s) { | 115 | void 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 | ||
114 | void QWpsEditorWindow::slotPlainDocModChanged(bool changed) { | 135 | void 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 | } |
141 | void 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 | |||
13 | class QWpsEditorWindow : public QMainWindow, public Ui::MainWindow { | 15 | class 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 | |||
23 | protected: | 30 | protected: |
24 | void connectActions(); | 31 | void connectActions(); |
25 | public: | 32 | public: |
@@ -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 | ||
37 | signals: | 45 | signals: |
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 | // |
4 | Slider::Slider(QWidget *parent, QString caption, int min, int max ):QDialog(parent) { | 4 | Slider::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 | } |
16 | void Slider::slotValueChanged(int step) { | 16 | void 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 | // |
8 | class Slider : public QDialog , Ui::slider { | 8 | class Slider : public QDialog , Ui::slider { |
9 | Q_OBJECT | 9 | Q_OBJECT |
10 | QString mCaption; | ||
10 | public slots: | 11 | public slots: |
11 | void slotValueChanged(int step); | 12 | void slotValueChanged(int step); |
12 | signals: | 13 | signals: |
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 | ||
9 | extern int qlogger(const char* fmt,...); | 10 | extern int qlogger(const char* fmt,...); |
10 | extern int qlogger(const QString& s); | 11 | extern int qlogger(const QString& s); |