From 12a46018fe242f129bbbd7ae564b7e2b8e42dac6 Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 16 Mar 2016 01:11:14 -0400 Subject: [PATCH 1/8] Fixed error in mapmap.pro related to translations. --- mapmap.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapmap.pro b/mapmap.pro index 6466a48..119e9f4 100644 --- a/mapmap.pro +++ b/mapmap.pro @@ -85,7 +85,7 @@ SOURCES = \ main.cpp RESOURCES = mapmap.qrc -TRANSLATIONS = resources/texts/mapmap_*.ts +TRANSLATIONS = resources/texts/mapmap_fr.ts include(contrib/qtpropertybrowser/src/qtpropertybrowser.pri) include(contrib/qtpropertybrowser-extension/qtpropertybrowser-extension.pri) From a98b164aee6fcef9a45bf5791a43619ce478ff8b Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 16 Mar 2016 01:11:38 -0400 Subject: [PATCH 2/8] Added option on the commandline to force language. --- main.cpp | 22 ++++++++++++++++++++-- mapmap.qrc | 3 +++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index 9dd2ea0..9a58424 100644 --- a/main.cpp +++ b/main.cpp @@ -111,6 +111,10 @@ int main(int argc, char *argv[]) QCommandLineOption oscPortOption(QStringList() << "p" << "osc-port", "Use OSC port number .", "osc-port", ""); parser.addOption(oscPortOption); + // --lang option + QCommandLineOption localeOption(QStringList() << "l" << "lang", "Use language .", "lang", "en"); + parser.addOption(localeOption); + // Positional argument: file parser.addPositionalArgument("file", "Load project from that file."); @@ -124,6 +128,20 @@ int main(int argc, char *argv[]) Util::eraseSettings(); } + // IMPORTANT: Translator must be set *before* the MainWindow is created for it to work. + QString langValue = parser.value("lang"); + QTranslator translator; + if (translator.load(QString(":/translation-%1").arg(langValue))) + { + qDebug() << "Setting language to " << langValue << "." << endl; + app.installTranslator(&translator); + QLocale::setDefault(QLocale(langValue)); + } + else if (langValue != "en") + { + qWarning() << "Unrecognized/unsupported language: " << langValue << "." << endl; + } + #endif // USING_QT_5 if (! QGLFormat::hasOpenGL()) @@ -157,8 +175,6 @@ int main(int argc, char *argv[]) stylesheet.open(QFile::ReadOnly); app.setStyleSheet(QLatin1String(stylesheet.readAll())); - //win.setLocale(QLocale("fr")); - #if USING_QT_5 // read positional argument: const QStringList args = parser.positionalArguments(); @@ -186,8 +202,10 @@ int main(int argc, char *argv[]) { win->setOscPort(oscPortNumberValue); } + #endif + // Terminate splash. splash.showMessage(" " + QObject::tr("Done."), Qt::AlignLeft | Qt::AlignTop, MM::WHITE); diff --git a/mapmap.qrc b/mapmap.qrc index 871ee18..9071a7c 100644 --- a/mapmap.qrc +++ b/mapmap.qrc @@ -37,5 +37,8 @@ resources/images/icons/small/visible_w.png resources/images/icons/small/duplicate_w.png resources/images/icons/small/solo_w.png + + resources/texts/mapmap_fr.qm + From 296772d34ccf45e5fb4373e04ac0f80b1c9a18ad Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 16 Mar 2016 01:11:50 -0400 Subject: [PATCH 3/8] Some cleanup in mapmap.qrc. --- mapmap.qrc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mapmap.qrc b/mapmap.qrc index 9071a7c..45ffc66 100644 --- a/mapmap.qrc +++ b/mapmap.qrc @@ -26,18 +26,19 @@ resources/fonts/DroidSans.otf resources/fonts/DroidSans.otf resources/images/test-signal/test-signal.svg - resources/qss/mapmap.qss resources/images/icons/zoom_reset_w.png resources/images/icons/zoom_in_w.png resources/images/icons/zoom_out_w.png resources/images/icons/zoom_fit_w.png - resources/fonts/Hack-Regular.otf resources/images/icons/small/delete_w.png resources/images/icons/small/lock_w.png resources/images/icons/small/visible_w.png resources/images/icons/small/duplicate_w.png resources/images/icons/small/solo_w.png + resources/qss/mapmap.qss + resources/fonts/Hack-Regular.otf + resources/texts/mapmap_fr.qm From 448d9e877c8a5cfeaefe80d3e6a81b92ff67cb00 Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 16 Mar 2016 01:12:21 -0400 Subject: [PATCH 4/8] Made source and destination panel QWidgets part of the MainWindow class. --- MainWindow.cpp | 4 ++-- MainWindow.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index d110865..2d35171 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -1398,7 +1398,7 @@ void MainWindow::createLayout() sourceCanvasToolbar = new MapperGLCanvasToolbar(sourceCanvas, this); QVBoxLayout* sourceLayout = new QVBoxLayout; - QWidget* sourcePanel = new QWidget(this); + sourcePanel = new QWidget(this); sourceLayout->setContentsMargins(0, 0, 0, 0); sourceLayout->addWidget(sourceCanvas); @@ -1412,7 +1412,7 @@ void MainWindow::createLayout() destinationCanvasToolbar = new MapperGLCanvasToolbar(destinationCanvas, this); QVBoxLayout* destinationLayout = new QVBoxLayout; - QWidget* destinationPanel = new QWidget(this); + destinationPanel = new QWidget(this); destinationLayout->setContentsMargins(0, 0, 0, 0); destinationLayout->addWidget(destinationCanvas); diff --git a/MainWindow.h b/MainWindow.h index 3a51dfb..fec4b4d 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -370,8 +370,10 @@ private: MapperGLCanvas* sourceCanvas; MapperGLCanvasToolbar* sourceCanvasToolbar; + QWidget* sourcePanel; MapperGLCanvas* destinationCanvas; MapperGLCanvasToolbar* destinationCanvasToolbar; + QWidget* destinationPanel; OutputGLWindow* outputWindow; ConsoleWindow* consoleWindow; From c708fc24e40d9c9fa5ce40f46478c4a2f152a5c7 Mon Sep 17 00:00:00 2001 From: Bay Dam Date: Wed, 16 Mar 2016 11:08:34 +0100 Subject: [PATCH 5/8] Preparing for Windows operating system --- Commands.cpp | 23 +++++++++++++++++++++++ Commands.h | 5 +++-- MapperGLCanvas.cpp | 1 + MappingGui.h | 7 +------ Maths.h | 4 ---- Paint.cpp | 1 - Shape.h | 1 - ShapeGraphicsItem.cpp | 4 ---- VideoImpl.cpp | 2 +- mapmap.pro | 28 +++++++++++++--------------- 10 files changed, 42 insertions(+), 34 deletions(-) diff --git a/Commands.cpp b/Commands.cpp index 514c0b7..b1e0146 100644 --- a/Commands.cpp +++ b/Commands.cpp @@ -1,3 +1,26 @@ +/* + * Commands.cpp + * + * (c) 2014 Sofian Audry -- info(@)sofianaudry(.)com + * (c) 2014 Alexandre Quessy -- alexandre(@)quessy(.)net + * (c) 2014 Dame Diongue -- baydamd(@)gmail(.)com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "MainWindow.h" +#include "MapperGLCanvas.h" #include "Commands.h" diff --git a/Commands.h b/Commands.h index ee5a7d3..4d53faf 100644 --- a/Commands.h +++ b/Commands.h @@ -23,8 +23,6 @@ #define COMMANDS_H_ #include -#include "MainWindow.h" -#include "MapperGLCanvas.h" enum CommandId { CMD_KEY_MOVE_VERTEX, @@ -33,6 +31,9 @@ enum CommandId { CMD_MOUSE_TRANSLATE_SHAPE, }; +class MainWindow; +class MapperGLCanvas; + class AddShapesCommand : public QUndoCommand { public: diff --git a/MapperGLCanvas.cpp b/MapperGLCanvas.cpp index af798c9..db57a40 100644 --- a/MapperGLCanvas.cpp +++ b/MapperGLCanvas.cpp @@ -18,6 +18,7 @@ * along with this program. If not, see . */ +#include "ShapeGraphicsItem.h" #include "MapperGLCanvas.h" #include "MainWindow.h" diff --git a/MappingGui.h b/MappingGui.h index 63d434a..116cade 100644 --- a/MappingGui.h +++ b/MappingGui.h @@ -39,11 +39,10 @@ #include "MapperGLCanvas.h" -#ifndef WIN32 #include "ShapeGraphicsItem.h" #include "ShapeControlPainter.h" + #include "Util.h" -#endif #include "qtpropertymanager.h" #include "qtvariantproperty.h" @@ -54,10 +53,6 @@ #include "variantmanager.h" #include "variantfactory.h" -class MapperGLCanvas; -class ShapeGraphicsItem; -class ShapeControlPainter; - /** * This is the "view" side of the Mapping class (model). It contains the graphic items for * both input and output as well as the properties editor. diff --git a/Maths.h b/Maths.h index d14ba3e..0d28f6e 100644 --- a/Maths.h +++ b/Maths.h @@ -25,10 +25,6 @@ #include #include -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif - /// Converts from degrees to radians. inline qreal degreesToRadians(qreal degrees) { return degrees / 180.0f * M_PI; } diff --git a/Paint.cpp b/Paint.cpp index 5da1cfe..4611b57 100644 --- a/Paint.cpp +++ b/Paint.cpp @@ -235,7 +235,6 @@ bool Video::_generateThumbnail() // Copy bits into thumbnail QImage. QImage thumbnail(getWidth(), getHeight(), QImage::Format_ARGB32); - int i=0; for (int y=0; y -#include #include diff --git a/ShapeGraphicsItem.cpp b/ShapeGraphicsItem.cpp index c3d656f..678ffd0 100644 --- a/ShapeGraphicsItem.cpp +++ b/ShapeGraphicsItem.cpp @@ -22,10 +22,6 @@ #include "MainWindow.h" -#ifdef WIN32 -#include "Util.h" -#endif - ShapeGraphicsItem::ShapeGraphicsItem(Mapping::ptr mapping, bool output) : _mapping(mapping), _output(output) { diff --git a/VideoImpl.cpp b/VideoImpl.cpp index 39fe02c..d70095b 100644 --- a/VideoImpl.cpp +++ b/VideoImpl.cpp @@ -296,7 +296,7 @@ void VideoImpl::resetMovie() if (_seekEnabled) { if (_rate > 0) - seekTo(0UL); + seekTo((guint64)0); else { // NOTE: Untested. diff --git a/mapmap.pro b/mapmap.pro index 119e9f4..9212c0b 100644 --- a/mapmap.pro +++ b/mapmap.pro @@ -163,25 +163,23 @@ mac { # Windows-specific: win32 { DEFINES += WIN32 - INCLUDEPATH += \ - C:/gstreamer/include \ - C:/gstreamer/include/libxml2 \ - C:/gstreamer/include/glib-2.0 \ - C:/gstreamer/lib/glib-2.0/include \ - C:/gstreamer/include/gstreamer-0.10 - LIBS += -L"C:/gstreamer/lib" \ - -L"C:/gstreamer/bin" \ - -lgstreamer-0.10 \ - -lglib-2.0 \ - -lgmodule-2.0 \ + INCLUDEPATH += C:/gstreamer/1.0/x86/lib/gstreamer-1.0/include \ + C:/gstreamer/1.0/x86/include/glib-2.0 \ + C:/gstreamer/1.0/x86/lib/glib-2.0/include \ + C:/gstreamer/1.0/x86/include/gstreamer-1.0 + LIBS += -LC:/gstreamer/1.0/x86/lib \ + -lgstapp-1.0 \ + -lgstbase-1.0 \ + -lgstpbutils-1.0 \ + -lgstreamer-1.0 \ -lgobject-2.0 \ - -lgthread-2.0 \ - -lgstinterfaces-0.10 \ - -lopengl32 \ - -lglu32 + -lglib-2.0 \ + -lopengl32 + # Add console to the CONFIG to see debug messages printed in # the console on Windows CONFIG += console + QMAKE_CXXFLAGS += -D_USE_MATH_DEFINES } # Adds the tarball target From afb771ba22649843cc8c99cc27b3aa00bdc99ad1 Mon Sep 17 00:00:00 2001 From: baydam Date: Wed, 16 Mar 2016 10:41:28 +0000 Subject: [PATCH 6/8] Fix compilation error --- .gitignore | 1 + resources/texts/mapmap_fr.qm | Bin 0 -> 8843 bytes 2 files changed, 1 insertion(+) create mode 100644 resources/texts/mapmap_fr.qm diff --git a/.gitignore b/.gitignore index 7c99f78..f3d6d30 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ Release/ *.tar *.rar *.qm +!resources/texts/*.qm *.psd *.ai *.gif diff --git a/resources/texts/mapmap_fr.qm b/resources/texts/mapmap_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..00e08cd76a7e015918edc69ca3833e8b4741b23b GIT binary patch literal 8843 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 Date: Wed, 16 Mar 2016 10:56:46 -0400 Subject: [PATCH 7/8] Integrated the lrelease process of *.ts to *.qm to avoid "RCC: Error in 'mapmap.qrc': Cannot find file 'mapmap_fr.qm'" errors. --- build.sh | 2 -- mapmap.pro | 19 +++++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/build.sh b/build.sh index df50b7c..3eac91b 100755 --- a/build.sh +++ b/build.sh @@ -67,12 +67,10 @@ if [[ $unamestr == "Darwin" ]]; then make macdeployqt MapMap.app #cp -R /Library/Frameworks/GStreamer.framework ./MapMap.app/Contents/Frameworks/ - lrelease resources/texts/mapmap_fr.ts # do_fix_qt_plugins_in_app do_create_dmg elif [[ $unamestr == "Linux" ]]; then qmake make - lrelease resources/texts/mapmap_*.ts fi diff --git a/mapmap.pro b/mapmap.pro index 119e9f4..232a8e6 100644 --- a/mapmap.pro +++ b/mapmap.pro @@ -84,11 +84,26 @@ SOURCES = \ Util.cpp \ main.cpp -RESOURCES = mapmap.qrc -TRANSLATIONS = resources/texts/mapmap_fr.ts + include(contrib/qtpropertybrowser/src/qtpropertybrowser.pri) include(contrib/qtpropertybrowser-extension/qtpropertybrowser-extension.pri) +TRANSLATIONS = resources/texts/mapmap_fr.ts +RESOURCES = mapmap.qrc + +# Manage lrelease (for translations) +isEmpty(QMAKE_LRELEASE) { + win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\lrelease.exe + else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease +} +updateqm.input = TRANSLATIONS +updateqm.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.qm +updateqm.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.qm +updateqm.CONFIG += no_link +QMAKE_EXTRA_COMPILERS += updateqm +PRE_TARGETDEPS += compiler_updateqm_make_all +system(lrelease mapmap.pro) # Run lrelease + # Add the docs target: docs.depends = $(HEADERS) $(SOURCES) docs.commands = (cat Doxyfile; echo "INPUT = $?") | doxygen - From 470b360d14bf4eabe6457d0e1b9e6937eacf66ad Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 16 Mar 2016 11:03:26 -0400 Subject: [PATCH 8/8] Reverts commit afb771ba22649843cc8c99cc27b3aa00bdc99ad1 which has been fixed by adb076ab12417173d0b2b66ff71d95f831627d32. --- .gitignore | 1 - resources/texts/mapmap_fr.qm | Bin 8843 -> 0 bytes 2 files changed, 1 deletion(-) delete mode 100644 resources/texts/mapmap_fr.qm diff --git a/.gitignore b/.gitignore index f3d6d30..7c99f78 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ Release/ *.tar *.rar *.qm -!resources/texts/*.qm *.psd *.ai *.gif diff --git a/resources/texts/mapmap_fr.qm b/resources/texts/mapmap_fr.qm deleted file mode 100644 index 00e08cd76a7e015918edc69ca3833e8b4741b23b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8843 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