From f85701602031a8eb522576ba6486b28559427ec4 Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Tue, 2 Jan 2018 12:46:46 -0500 Subject: Improved some of the code in the screensaver plugins file --- src-qt5/src-cpp/plugins-screensaver.cpp | 41 ++++++++------------------------- src-qt5/src-cpp/plugins-screensaver.h | 9 +++----- 2 files changed, 13 insertions(+), 37 deletions(-) diff --git a/src-qt5/src-cpp/plugins-screensaver.cpp b/src-qt5/src-cpp/plugins-screensaver.cpp index 50796a52..0ceed8e8 100644 --- a/src-qt5/src-cpp/plugins-screensaver.cpp +++ b/src-qt5/src-cpp/plugins-screensaver.cpp @@ -39,21 +39,17 @@ bool SSPlugin::isLoaded(){ return !data.isEmpty(); } +/** + * Check if the plugin is valid as long as the JSON is not empty, + * it contains at least a "name", "qml", and "description" object, + * and the "name" and "description" objects contain a "default" key. +**/ bool SSPlugin::isValid(){ if(data.isEmpty()){ return false; } bool ok = data.contains("name") && data.contains("qml") && data.contains("description"); - if(ok){ - //go to the next name level and see if required sub-items exist - QJsonObject tmp = data.value("name").toObject(); - ok = tmp.contains("default"); - } - if(ok){ - //go to the next description level and see if required sub-items exist - QJsonObject tmp = data.value("description").toObject(); - ok = tmp.contains("default"); - } -if(ok){ - //go to the next qml level and see if required sub-items exist + ok &= containsDefault("name"); + ok &= containsDefault("description"); + if(ok) { QJsonObject tmp = data.value("qml").toObject(); QStringList mustexist; QString exec = tmp.value("exec").toString(); @@ -62,7 +58,6 @@ if(ok){ QJsonArray tmpA = data.value("additional_files").toArray(); for(int i=0; i Date: Tue, 2 Jan 2018 14:39:59 -0500 Subject: add absolute paths to autoarchive --- src-qt5/desktop-utils/lumina-archiver/MainUI.cpp | 4 +++- src-qt5/desktop-utils/lumina-archiver/MainUI.h | 9 +++++---- src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp | 13 +++++++------ src-qt5/desktop-utils/lumina-archiver/TarBackend.h | 2 +- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp b/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp index 47c6bfe1..3d901e8c 100644 --- a/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp +++ b/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp @@ -67,6 +67,8 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ ui->actionUSB_Image->setEnabled(false); loadIcons(); ui->tree_contents->setHeaderLabels( QStringList() << tr("File") << tr("MimeType") << tr("Size")+" " ); + + preservePaths = false; } MainUI::~MainUI(){ @@ -296,7 +298,7 @@ void MainUI::simpleExtractFiles(){ void MainUI::autoArchiveFiles(){ qDebug() << "Auto Archive Files:" << aaFileList; ui->label_progress->setText(tr("Adding Items...")); - BACKEND->startAdd(aaFileList); + BACKEND->startAdd(aaFileList, true); } void MainUI::extractSelection(){ diff --git a/src-qt5/desktop-utils/lumina-archiver/MainUI.h b/src-qt5/desktop-utils/lumina-archiver/MainUI.h index 1a9d287c..0a5c094c 100644 --- a/src-qt5/desktop-utils/lumina-archiver/MainUI.h +++ b/src-qt5/desktop-utils/lumina-archiver/MainUI.h @@ -26,13 +26,14 @@ public: void LoadArguments(QStringList); void loadIcons(); + bool preservePaths; private: Ui::MainUI *ui; - Backend *BACKEND; - QStringList aaFileList, sxList; - QString sxPath, sxFile; - QTimer *delayClose; + Backend *BACKEND; + QStringList aaFileList, sxList; + QString sxPath, sxFile; + QTimer *delayClose; QTreeWidgetItem* findItem(QString path, QTreeWidgetItem *start = 0); bool cleanItems(QStringList list, QTreeWidgetItem *start = 0); //returns true if anything gets cleaned diff --git a/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp b/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp index 5338efec..91e233d0 100644 --- a/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp +++ b/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp @@ -91,7 +91,7 @@ QString Backend::linkTo(QString file){ } //Modification routines -void Backend::startAdd(QStringList paths){ +void Backend::startAdd(QStringList paths, bool absolutePaths){ //if(paths.isEmpty() && !insertQueue.isEmpty()){ paths = insertQueue; } //load the queue if(paths.contains(filepath)){ paths.removeAll(filepath); } if(paths.isEmpty()){ return; } @@ -109,11 +109,12 @@ void Backend::startAdd(QStringList paths){ args << "-c" << "-a"; args << flags; //Now setup the parent dir - for(int i=0; i Date: Tue, 2 Jan 2018 15:09:49 -0500 Subject: Started a framework for desktop plugins and modified the screensaver plugins to inherit from a base plugin system --- .../src-screensaver/SSBaseWidget.cpp | 7 +- .../src-screensaver/SSBaseWidget.h | 5 +- src-qt5/src-cpp/plugins-base.cpp | 50 ++++++++++ src-qt5/src-cpp/plugins-base.h | 107 +++++++++++++++++++++ src-qt5/src-cpp/plugins-base.pri | 8 ++ src-qt5/src-cpp/plugins-desktop.cpp | 40 ++++++++ src-qt5/src-cpp/plugins-desktop.h | 29 ++++++ src-qt5/src-cpp/plugins-screensaver.cpp | 91 ------------------ src-qt5/src-cpp/plugins-screensaver.h | 34 ++----- 9 files changed, 250 insertions(+), 121 deletions(-) create mode 100644 src-qt5/src-cpp/plugins-base.cpp create mode 100644 src-qt5/src-cpp/plugins-base.h create mode 100644 src-qt5/src-cpp/plugins-base.pri create mode 100644 src-qt5/src-cpp/plugins-desktop.cpp create mode 100644 src-qt5/src-cpp/plugins-desktop.h diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp index 7c098887..aa3214a2 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp @@ -7,6 +7,9 @@ #include "SSBaseWidget.h" +//Relative directory to search along the XDG paths for screensavers +#define REL_DIR QString("/lumina-desktop/screensavers") + #define DEBUG 0 // ======== @@ -39,10 +42,10 @@ void SSBaseWidget::startPainting(){ stopPainting(); //If a random plugin - grab one of the known plugins if(plugType=="random"){ - QList valid = SSPluginSystem::findAllPlugins(); + QList valid = PluginSystem::findAllPlugins(REL_DIR); if(!valid.isEmpty()){ cplug = valid[ qrand()%valid.length() ]; } //grab a random plugin }else if(plugType!="none"){ - cplug = SSPluginSystem::findPlugin(plugType); + cplug = PluginSystem::findPlugin(plugType, REL_DIR); } if(DEBUG){ qDebug() << " - Screen Saver:" << plugType << cplug.scriptURL() << cplug.isValid(); } if(cplug.isValid()){ diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.h index 72e02702..e0a03d17 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.h @@ -10,6 +10,7 @@ #define _LUMINA_DESKTOP_SCREEN_SAVER_BASE_WIDGET_H #include "global-includes.h" +#include #include class SSBaseWidget : public QQuickView{ @@ -25,8 +26,8 @@ public slots: void stopPainting(); private: - QString plugType; - SSPlugin cplug; + QString plugType; + SSPlugin cplug; QTimer *restartTimer; private slots: diff --git a/src-qt5/src-cpp/plugins-base.cpp b/src-qt5/src-cpp/plugins-base.cpp new file mode 100644 index 00000000..f38374df --- /dev/null +++ b/src-qt5/src-cpp/plugins-base.cpp @@ -0,0 +1,50 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "plugins-base.h" + +// ============ +// Base PLUGIN +// ============ +BasePlugin::BasePlugin(){ + +} + +BasePlugin::~BasePlugin(){ + +} + +void BasePlugin::loadFile(QString path){ + data = QJsonObject(); + currentfile = path; + QFile file(path); + if(!file.exists() || !file.open(QIODevice::ReadOnly)){ return; } + data = QJsonDocument::fromJson(file.readAll()).object(); + //qDebug() << "Loaded ScreenSaver Data:" << currentfile << data; + file.close(); +} + +QString BasePlugin::translatedObject(QString obj){ + QJsonObject tmp = data.value(obj).toObject(); + //Get the current locale + QString locale = getenv("LC_ALL"); + if(locale.isEmpty()){ locale = getenv("LC_MEBaseAGES"); } + if(locale.isEmpty()){ locale = getenv("LANG"); } + if(locale.isEmpty()){ locale = "default"; } + if(locale.contains(".")){ locale = locale.section(".",0,0); } //chop any charset code off the end + //Now find which localized string is available and return it + if(tmp.contains(locale)){ return tmp.value(locale).toString(); } + locale = locale.section("_",0,0); //full locale not found - look for shortened form + if(tmp.contains(locale)){ return tmp.value(locale).toString(); } + return tmp.value("default").toString(); //use the default version +} + +QUrl BasePlugin::scriptURL(){ + QString exec = data.value("qml").toObject().value("exec").toString(); + if(!exec.startsWith("/")){ exec.prepend( currentfile.section("/",0,-2)+"/" ); } + return QUrl::fromLocalFile(exec); +} + diff --git a/src-qt5/src-cpp/plugins-base.h b/src-qt5/src-cpp/plugins-base.h new file mode 100644 index 00000000..26b0eacc --- /dev/null +++ b/src-qt5/src-cpp/plugins-base.h @@ -0,0 +1,107 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is a simple class for managing all the various desktop +// screensaver plugins that could be available +//=========================================== +// NOTE: +// This class has a heirarchy-based lookup system +// USER plugins > SYSTEM plugins +// XDG_DATA_HOME/lumina-desktop/screensavers > XDG_DATA_DIRS/lumina-desktop/screensavers +//=========================================== +#ifndef _LUMINA_DESKTOP_BASE_PLUGINS_CLASS_H +#define _LUMINA_DESKTOP_BASE_PLUGINS_CLASS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class BasePlugin{ +protected: + QString currentfile; + +public: + BasePlugin(); + virtual ~BasePlugin(); + + virtual void loadFile(QString path); + bool isLoaded() { return !data.isEmpty(); }; + bool containsDefault(QString obj) { return data.value(obj).toObject().contains("default"); } + + /** + * Check if the plugin is valid as long as the JSON is not empty, + * it contains at least a "name", "qml", and "description" object, + * and the "name" and "description" objects contain a "default" key. + **/ + virtual bool isValid() = 0; + + virtual QString translatedObject(QString obj); + virtual QUrl scriptURL(); + + QJsonObject data; //Hazardous to manually modify + QString relDir; +}; + +class PluginSystem{ +public: + template + static T findPlugin(QString, QString); + + template + static QList findAllPlugins(QString, bool validonly=true); +}; + +// =================== +// Base PLUGIN SYSTEM +// =================== +template +T PluginSystem::findPlugin(QString name, QString REL_DIR){ + //qDebug() << "FindPlugin:" << name; + T BaseP; + if(name.startsWith("/") && QFile::exists(name)){ BaseP.loadFile(name); return BaseP;} //absolute path give - just load that one + //Cleanup the input name and ensure it has the right suffix + name = name.section("/",-1); + if(!name.endsWith(".json")){ name.append(".json"); } + //Get the list of directories to search + QStringList dirs; + dirs << QString(getenv("XDG_DATA_HOME")) << QString(getenv("XDG_DATA_DIRS")).split(":"); + //Look for that file within these directories and return the first one found + for(int i=0; i +QList PluginSystem::findAllPlugins(QString REL_DIR, bool validonly) { + QList LIST; + //Get the list of directories to search + QStringList dirs; + dirs << QString(getenv("XDG_DATA_HOME")) << QString(getenv("XDG_DATA_DIRS")).split(":"); + //Look for that file within these directories and return the first one found + for(int i=0; i +#include +#include +#include +#include +#include +#include +#include +#include + +class DTPlugin : public BasePlugin{ +public: + DTPlugin(); + ~DTPlugin(); + + virtual bool isValid() Q_DECL_OVERRIDE; +}; + +#endif diff --git a/src-qt5/src-cpp/plugins-screensaver.cpp b/src-qt5/src-cpp/plugins-screensaver.cpp index 0ceed8e8..6370b068 100644 --- a/src-qt5/src-cpp/plugins-screensaver.cpp +++ b/src-qt5/src-cpp/plugins-screensaver.cpp @@ -5,14 +5,6 @@ // See the LICENSE file for full details //=========================================== #include "plugins-screensaver.h" -#include -#include -#include -#include -#include - -//Relative directory to search along the XDG paths for screensavers -#define REL_DIR QString("/lumina-desktop/screensavers") // ============ // SS PLUGIN @@ -25,25 +17,6 @@ SSPlugin::~SSPlugin(){ } -void SSPlugin::loadFile(QString path){ - data = QJsonObject(); - currentfile = path; - QFile file(path); - if(!file.exists() || !file.open(QIODevice::ReadOnly)){ return; } - data = QJsonDocument::fromJson(file.readAll()).object(); - //qDebug() << "Loaded ScreenSaver Data:" << currentfile << data; - file.close(); -} - -bool SSPlugin::isLoaded(){ - return !data.isEmpty(); -} - -/** - * Check if the plugin is valid as long as the JSON is not empty, - * it contains at least a "name", "qml", and "description" object, - * and the "name" and "description" objects contain a "default" key. -**/ bool SSPlugin::isValid(){ if(data.isEmpty()){ return false; } bool ok = data.contains("name") && data.contains("qml") && data.contains("description"); @@ -65,67 +38,3 @@ bool SSPlugin::isValid(){ } return ok; } - -QString SSPlugin::translatedObject(QString obj){ - QJsonObject tmp = data.value(obj).toObject(); - //Get the current locale - QString locale = getenv("LC_ALL"); - if(locale.isEmpty()){ locale = getenv("LC_MESSAGES"); } - if(locale.isEmpty()){ locale = getenv("LANG"); } - if(locale.isEmpty()){ locale = "default"; } - if(locale.contains(".")){ locale = locale.section(".",0,0); } //chop any charset code off the end - //Now find which localized string is available and return it - if(tmp.contains(locale)){ return tmp.value(locale).toString(); } - locale = locale.section("_",0,0); //full locale not found - look for shortened form - if(tmp.contains(locale)){ return tmp.value(locale).toString(); } - return tmp.value("default").toString(); //use the default version -} - -QUrl SSPlugin::scriptURL(){ - QString exec = data.value("qml").toObject().value("exec").toString(); - if(!exec.startsWith("/")){ exec.prepend( currentfile.section("/",0,-2)+"/" ); } - return QUrl::fromLocalFile(exec); -} - -// =================== -// SS PLUGIN SYSTEM -// =================== -SSPlugin SSPluginSystem::findPlugin(QString name){ - //qDebug() << "FindPlugin:" << name; - SSPlugin SSP; - if(name.startsWith("/") && QFile::exists(name)){ SSP.loadFile(name); return SSP;} //absolute path give - just load that one - //Cleanup the input name and ensure it has the right suffix - name = name.section("/",-1); - if(!name.endsWith(".json")){ name.append(".json"); } - //Get the list of directories to search - QStringList dirs; - dirs << QString(getenv("XDG_DATA_HOME")) << QString(getenv("XDG_DATA_DIRS")).split(":"); - //Look for that file within these directories and return the first one found - for(int i=0; i SSPluginSystem::findAllPlugins(bool validonly){ - QList LIST; - //Get the list of directories to search - QStringList dirs; - dirs << QString(getenv("XDG_DATA_HOME")) << QString(getenv("XDG_DATA_DIRS")).split(":"); - //Look for that file within these directories and return the first one found - for(int i=0; i SYSTEM plugins -// XDG_DATA_HOME/lumina-desktop/screensavers > XDG_DATA_DIRS/lumina-desktop/screensavers -//=========================================== #ifndef _LUMINA_DESKTOP_SCREENSAVER_PLUGINS_CLASS_H #define _LUMINA_DESKTOP_SCREENSAVER_PLUGINS_CLASS_H +#include "plugins-base.h" #include #include #include #include +#include +#include +#include +#include +#include -class SSPlugin{ -private: - QString currentfile; - QJsonObject data; //Hazardous to manually modify - bool containsDefault(QString obj) { return data.value(obj).toObject().contains("default"); } - +class SSPlugin : public BasePlugin { public: SSPlugin(); ~SSPlugin(); - void loadFile(QString path); - bool isLoaded(); - bool isValid(); - QString translatedObject(QString obj); - QUrl scriptURL(); -}; - -class SSPluginSystem{ -public: - static SSPlugin findPlugin(QString name); - static QList findAllPlugins(bool validonly = true); - + virtual bool isValid() Q_DECL_OVERRIDE; }; #endif -- cgit From cd0e1184c246689cfd20222a1c42bf50773c26c1 Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Tue, 2 Jan 2018 15:10:44 -0500 Subject: Updated .gitignore --- .gitignore | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 95c5c594..6e6c1570 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ global.h *.qm Makefile.Debug -Makefile.Release -*.o +Makefile.Release +*.o *.qmake.stash moc_*.cpp ui_*.h @@ -27,6 +27,20 @@ src-qt5/desktop-utils/lumina-archiver/lumina-archiver src-qt5/desktop-utils/lumina-calculator/lumina-calculator src-qt5/desktop-utils/lumina-pdf/lumina-pdf src-qt5/desktop-utils/lumina-notify/lumina-notify + +src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/ +src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/.build/ +src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/Makefile +src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/liblthemeengine.so +src-qt5/core/lumina-theme-engine/src/lthemeengine-sstest/Makefile +src-qt5/core/lumina-theme-engine/src/lthemeengine-sstest/lthemeengine-sstest +src-qt5/core/lumina-theme-engine/src/lthemeengine-style/.build/ +src-qt5/core/lumina-theme-engine/src/lthemeengine-style/Makefile +src-qt5/core/lumina-theme-engine/src/lthemeengine-style/liblthemeengine-style.so +src-qt5/core/lumina-theme-engine/src/lthemeengine/Makefile +src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine +src-qt5/desktop-utils/lumina-mediaplayer/lumina-mediaplayer + src-qt5/Makefile src-qt5/*/Makefile src-qt5/*/*/Makefile @@ -34,3 +48,7 @@ src-qt5/*/*/*/Makefile dev-tools/*/Makefile dev-tools/systray-tester/test-tray dev-tools/test-dbus/test + +icon-theme/Makefile +icon-theme/*/Makefile +Makefile -- cgit From d28d6a5ca51a96307ae0b306947100c67432a383 Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Tue, 2 Jan 2018 15:11:16 -0500 Subject: Removed extra whitespace from .gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 6e6c1570..7ab4a9e7 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ src-qt5/desktop-utils/lumina-archiver/lumina-archiver src-qt5/desktop-utils/lumina-calculator/lumina-calculator src-qt5/desktop-utils/lumina-pdf/lumina-pdf src-qt5/desktop-utils/lumina-notify/lumina-notify - src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/ src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/.build/ src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/Makefile @@ -40,7 +39,6 @@ src-qt5/core/lumina-theme-engine/src/lthemeengine-style/liblthemeengine-style.so src-qt5/core/lumina-theme-engine/src/lthemeengine/Makefile src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine src-qt5/desktop-utils/lumina-mediaplayer/lumina-mediaplayer - src-qt5/Makefile src-qt5/*/Makefile src-qt5/*/*/Makefile @@ -48,7 +46,6 @@ src-qt5/*/*/*/Makefile dev-tools/*/Makefile dev-tools/systray-tester/test-tray dev-tools/test-dbus/test - icon-theme/Makefile icon-theme/*/Makefile Makefile -- cgit From ba2374687bf3e1919d039ca38c52aac681a9d048 Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Tue, 2 Jan 2018 15:12:20 -0500 Subject: Updated project files for plugin system --- src-qt5/core/lumina-desktop-unified/lumina-desktop.pro | 2 +- src-qt5/src-cpp/plugins-screensaver.pri | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 src-qt5/src-cpp/plugins-screensaver.pri diff --git a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro index ebc13b6f..bb987e25 100644 --- a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro +++ b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro @@ -24,7 +24,7 @@ include(../libLumina/ExternalProcess.pri) include(../../src-cpp/NativeWindow.pri) include(../libLumina/XDGMime.pri) -include(../../src-cpp/plugins-screensaver.pri) +include(../../src-cpp/plugins-base.pri) #include all the main individual source groups include(src-screensaver/screensaver.pri) diff --git a/src-qt5/src-cpp/plugins-screensaver.pri b/src-qt5/src-cpp/plugins-screensaver.pri deleted file mode 100644 index ad03f34c..00000000 --- a/src-qt5/src-cpp/plugins-screensaver.pri +++ /dev/null @@ -1,4 +0,0 @@ -HEADERS *= $${PWD}/plugins-screensaver.h -SOURCES *= $${PWD}/plugins-screensaver.cpp - -INCLUDEPATH *= $${PWD} -- cgit From 9d8cd9d74a1ab5271cc8d48738712344daa04018 Mon Sep 17 00:00:00 2001 From: Sebastião Luiz Guerra Date: Tue, 2 Jan 2018 20:53:03 +0000 Subject: Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (33 of 33 strings) Translation: lumina/lumina-calculator Translate-URL: http://weblate.trueos.org/projects/lumina/lumina-calculator/pt_BR/ --- .../lumina-calculator/i18n/l-calc_pt_BR.ts | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt_BR.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt_BR.ts index 153a01b4..e26ecb58 100644 --- a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt_BR.ts +++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt_BR.ts @@ -6,67 +6,67 @@ Multimedia - + Multimídia Development - + Desenvolvimento Education - + Educação Games - + Jogos Graphics - + Gráficos Network - + Rede Office - + Escritório Science - + Ciência Settings - + Configurações System - + Sistema Utility - + Utilitários Wine - + Wine Unsorted - + Não classificado -- cgit From 03345f796a1dc3df8733baacaa8722079d9c263e Mon Sep 17 00:00:00 2001 From: scootergrisen Date: Mon, 18 Dec 2017 21:08:51 +0000 Subject: Translated using Weblate (Danish) Currently translated at 100.0% (33 of 33 strings) Translation: lumina/lumina-calculator Translate-URL: http://weblate.trueos.org/projects/lumina/lumina-calculator/da/ --- src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts index 5cdf9fa4..7ae80a69 100644 --- a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts +++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts @@ -16,7 +16,7 @@ Education - Uddannelse + Læring @@ -41,7 +41,7 @@ Science - Videnskab + Naturvidenskab @@ -56,7 +56,7 @@ Utility - Hjælpeværktøj + Redskab -- cgit From c4930a8b049fa256e58e99b71af35f2cfcac35e5 Mon Sep 17 00:00:00 2001 From: Remko van der Pluijm Date: Mon, 27 Nov 2017 10:17:55 +0000 Subject: Translated using Weblate (Dutch) Currently translated at 51.5% (17 of 33 strings) Translation: lumina/lumina-calculator Translate-URL: http://weblate.trueos.org/projects/lumina/lumina-calculator/nl/ --- .../lumina-calculator/i18n/l-calc_nl.ts | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nl.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nl.ts index 9947da6d..1cba660b 100644 --- a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nl.ts +++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nl.ts @@ -6,67 +6,67 @@ Multimedia - + Multimedia Development - + Ontwikkeling Education - + Onderwijs Games - + Spellen Graphics - + Grafisch Network - + Netwerk Office - + Kantoor Science - + Wetenschappelijk Settings - + Instellingen System - + Systeem Utility - + Hulpmiddel Wine - + Wine Unsorted - + Ongesorteerd @@ -75,22 +75,22 @@ Calculator - + Rekenmachine Advanced Operations - + Geavanceerde bewerkingen Percentage %1 - + Percentage %1 Power %1 - + Prestatie %1 -- cgit