diff --git a/CHANGELOG b/CHANGELOG index c71753d..2467516 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,9 +1,15 @@ ++ implement fitlers support to ExtScripts (ApiVer = 3) (#53) ++ implement ability to wrap `\n` as new lines (#53) ++ implement key sorting in comboboxes +- fix bug with invalid html parsing +* some part of refactoring + Ver.2.2.2: + add quotes support (#46) + add support of properties height and width (#47) + add transtaltion support to the plugins (#50) + add support of key caching -+ add support of X-AW-Number to ExtScript and ExtUpgrade (ApiVer=2) ++ add support of X-AW-Number to ExtScript and ExtUpgrade (ApiVer = 2) + add reconnection to DataEngine (in some cases some values are not updated) + add widgets width and height update - fix bug with Ext* items update (#49) diff --git a/sources/awesome-widget/package/contents/config/main.xml b/sources/awesome-widget/package/contents/config/main.xml index 1ee02a5..70c645b 100644 --- a/sources/awesome-widget/package/contents/config/main.xml +++ b/sources/awesome-widget/package/contents/config/main.xml @@ -23,6 +23,9 @@ true + + false + true diff --git a/sources/awesome-widget/package/contents/ui/advanced.qml b/sources/awesome-widget/package/contents/ui/advanced.qml index d89b7b4..acd4c64 100644 --- a/sources/awesome-widget/package/contents/ui/advanced.qml +++ b/sources/awesome-widget/package/contents/ui/advanced.qml @@ -33,6 +33,7 @@ Item { property alias cfg_height: widgetHeight.value property alias cfg_width: widgetWidth.value property alias cfg_notify: notify.checked + property alias cfg_wrapNewLines: wrapNewLines.checked property alias cfg_background: background.checked property alias cfg_customTime: customTime.text property alias cfg_customUptime: customUptime.text @@ -98,6 +99,20 @@ Item { } } + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: parent.heigth + width: parent.width * 2 / 5 + } + QtControls.CheckBox { + id: wrapNewLines + width: parent.width * 3 / 5 + text: i18n("Wrap new lines") + } + } + Row { height: implicitHeight width: parent.width diff --git a/sources/awesome-widget/package/contents/ui/dataengine.qml b/sources/awesome-widget/package/contents/ui/dataengine.qml index 80e8075..e25d76f 100644 --- a/sources/awesome-widget/package/contents/ui/dataengine.qml +++ b/sources/awesome-widget/package/contents/ui/dataengine.qml @@ -273,7 +273,7 @@ Item { if (debug) console.log("[dataengine::onCompleted]") // init submodule - AWKeys.initKeys(plasmoid.configuration.text, tooltipSettings) + AWKeys.initKeys(plasmoid.configuration.text) } Component.onDestruction: { diff --git a/sources/awesome-widget/package/contents/ui/main.qml b/sources/awesome-widget/package/contents/ui/main.qml index cf34151..2f701e5 100644 --- a/sources/awesome-widget/package/contents/ui/main.qml +++ b/sources/awesome-widget/package/contents/ui/main.qml @@ -199,7 +199,10 @@ Item { if (debug) console.log("[main::onUserConfiguringChanged]") // init submodule - AWKeys.initKeys(plasmoid.configuration.text, tooltipSettings, plasmoid.configuration.notify) + AWKeys.initKeys(plasmoid.configuration.text) + AWKeys.initTooltip(tooltipSettings) + AWKeys.setPopupEnabled(plasmoid.configuration.notify) + AWKeys.setWrapNewLines(plasmoid.configuration.wrapNewLines) needUpdate() } diff --git a/sources/awesome-widget/package/contents/ui/widget.qml b/sources/awesome-widget/package/contents/ui/widget.qml index 6784341..9a1eae7 100644 --- a/sources/awesome-widget/package/contents/ui/widget.qml +++ b/sources/awesome-widget/package/contents/ui/widget.qml @@ -310,7 +310,7 @@ Item { if (debug) console.log("[widget::onCompleted]") // init submodule - AWKeys.initKeys(plasmoid.configuration.text, tooltipSettings) - tags.model = AWKeys.dictKeys() + AWKeys.initKeys(plasmoid.configuration.text) + tags.model = AWKeys.dictKeys(true) } } diff --git a/sources/awesome-widget/plugin/awactions.cpp b/sources/awesome-widget/plugin/awactions.cpp index fb5a05f..1044b08 100644 --- a/sources/awesome-widget/plugin/awactions.cpp +++ b/sources/awesome-widget/plugin/awactions.cpp @@ -130,11 +130,11 @@ QString AWActions::getAboutText(const QString type) } -QMap AWActions::getFont(const QMap defaultFont) +QVariantMap AWActions::getFont(const QVariantMap defaultFont) { if (debug) qDebug() << PDEBUG; - QMap fontMap; + QVariantMap fontMap; CFont defaultCFont = CFont(defaultFont[QString("family")].toString(), defaultFont[QString("size")].toInt(), 400, false, defaultFont[QString("color")].toString()); @@ -148,14 +148,14 @@ QMap AWActions::getFont(const QMap default } -QMap AWActions::readDataEngineConfiguration() +QVariantMap AWActions::readDataEngineConfiguration() { if (debug) qDebug() << PDEBUG; QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, QString("plasma-dataengine-extsysmon.conf")); if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; QSettings settings(fileName, QSettings::IniFormat); - QMap configuration; + QVariantMap configuration; settings.beginGroup(QString("Configuration")); configuration[QString("ACPIPATH")] = settings.value(QString("ACPIPATH"), QString("/sys/class/power_supply/")); @@ -172,7 +172,7 @@ QMap AWActions::readDataEngineConfiguration() } -void AWActions::writeDataEngineConfiguration(const QMap configuration) +void AWActions::writeDataEngineConfiguration(const QVariantMap configuration) { if (debug) qDebug() << PDEBUG; diff --git a/sources/awesome-widget/plugin/awactions.h b/sources/awesome-widget/plugin/awactions.h index 26906b2..60a3dc1 100644 --- a/sources/awesome-widget/plugin/awactions.h +++ b/sources/awesome-widget/plugin/awactions.h @@ -40,10 +40,10 @@ public: Q_INVOKABLE void showReadme(); // configuration slots Q_INVOKABLE QString getAboutText(const QString type = QString("header")); - Q_INVOKABLE QMap getFont(const QMap defaultFont); + Q_INVOKABLE QVariantMap getFont(const QVariantMap defaultFont); // dataengine - Q_INVOKABLE QMap readDataEngineConfiguration(); - Q_INVOKABLE void writeDataEngineConfiguration(const QMap configuration); + Q_INVOKABLE QVariantMap readDataEngineConfiguration(); + Q_INVOKABLE void writeDataEngineConfiguration(const QVariantMap configuration); public slots: Q_INVOKABLE static void sendNotification(const QString eventId, const QString message, diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index 211f5c5..c66eff3 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -86,9 +86,7 @@ AWKeys::~AWKeys() } -void AWKeys::initKeys(const QString currentPattern, - const QMap tooltipParams, - const bool popup) +void AWKeys::initKeys(const QString currentPattern) { if (debug) qDebug() << PDEBUG; @@ -100,7 +98,6 @@ void AWKeys::initKeys(const QString currentPattern, keys.clear(); foundBars.clear(); foundKeys.clear(); - if (toolTip != nullptr) delete toolTip; // init pattern = currentPattern; @@ -113,12 +110,34 @@ void AWKeys::initKeys(const QString currentPattern, addKeyToCache(QString("Network")); loadKeysFromCache(); reinitKeys(); +} + + +void AWKeys::initTooltip(const QVariantMap tooltipParams) +{ + if (debug) qDebug() << PDEBUG; + + if (toolTip != nullptr) delete toolTip; toolTip = new AWToolTip(this, tooltipParams); +} + + +void AWKeys::setPopupEnabled(const bool popup) +{ + if (debug) qDebug() << PDEBUG; enablePopup = popup; } +void AWKeys::setWrapNewLines(const bool wrap) +{ + if (debug) qDebug() << PDEBUG; + + wrapNewLines = wrap; +} + + bool AWKeys::isDebugEnabled() { if (debug) qDebug() << PDEBUG; @@ -135,11 +154,12 @@ QString AWKeys::parsePattern() QString parsed = pattern; parsed.replace(QString("$$"), QString("$\\$\\")); for (int i=0; iimage(valueByKey(foundBars[i]).toFloat())); parsed.replace(QString("$\\$\\"), QString("$$")); + // wrap new lines if required + if (wrapNewLines) parsed.replace(QString("\n"), QString("
")); return parsed; } @@ -148,6 +168,7 @@ QString AWKeys::parsePattern() QString AWKeys::toolTipImage() { if(debug) qDebug() << PDEBUG; + if (toolTip == nullptr) return QString(""); if (keys.isEmpty()) return QString(); @@ -163,6 +184,7 @@ QString AWKeys::toolTipImage() QSize AWKeys::toolTipSize() { if (debug) qDebug() << PDEBUG; + if (toolTip == nullptr) return QSize(); return toolTip->getSize(); } @@ -194,7 +216,7 @@ void AWKeys::addDevice(const QString source) } -QStringList AWKeys::dictKeys() +QStringList AWKeys::dictKeys(const bool sorted) { if (debug) qDebug() << PDEBUG; @@ -312,6 +334,9 @@ QStringList AWKeys::dictKeys() for (int i=graphicalItemsKeys.count()-1; i>=0; i--) allKeys.append(graphicalItemsKeys[i]); + // sort if required + if (sorted) allKeys.sort(); + return allKeys; } @@ -329,9 +354,8 @@ QStringList AWKeys::getHddDevices() } -bool AWKeys::setDataBySource(const QString sourceName, - const QMap data, - const QMap params) +bool AWKeys::setDataBySource(const QString sourceName, const QVariantMap data, + const QVariantMap params) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Source" << sourceName; @@ -373,7 +397,9 @@ bool AWKeys::setDataBySource(const QString sourceName, values[QString("ac")] = params[QString("acOffline")].toString(); } else { values[data.keys()[i]] = QString("%1").arg(data[data.keys()[i]].toFloat(), 3, 'f', 0); - toolTip->setData(QString("batTooltip"), data[data.keys()[i]].toFloat(), data[QString("ac")].toBool()); + if (toolTip != nullptr) toolTip->setData(QString("batTooltip"), + data[data.keys()[i]].toFloat(), + data[QString("ac")].toBool()); } } } else if (sourceName == QString("cpu/system/TotalLoad")) { @@ -383,7 +409,8 @@ bool AWKeys::setDataBySource(const QString sourceName, AWActions::sendNotification(QString("event"), i18n("High CPU load"), enablePopup); // value values[QString("cpu")] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1); - toolTip->setData(QString("cpuTooltip"), data[QString("value")].toFloat()); + if (toolTip != nullptr) toolTip->setData(QString("cpuTooltip"), + data[QString("value")].toFloat()); } else if (sourceName.contains(cpuRegExp)) { // cpus QString number = sourceName; @@ -392,7 +419,8 @@ bool AWKeys::setDataBySource(const QString sourceName, } else if (sourceName == QString("cpu/system/AverageClock")) { // cpucl values[QString("cpucl")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); - toolTip->setData(QString("cpuclTooltip"), data[QString("value")].toFloat()); + if (toolTip != nullptr) toolTip->setData(QString("cpuclTooltip"), + data[QString("value")].toFloat()); } else if (sourceName.contains(cpuclRegExp)) { // cpucls QString number = sourceName; @@ -511,7 +539,8 @@ bool AWKeys::setDataBySource(const QString sourceName, AWActions::sendNotification(QString("event"), i18n("High memory usage"), enablePopup); // value values[QString("mem")] = QString("%1").arg(value, 5, 'f', 1); - toolTip->setData(QString("memTooltip"), values[QString("mem")].toFloat()); + if (toolTip != nullptr) toolTip->setData(QString("memTooltip"), + values[QString("mem")].toFloat()); } else if (sourceName == QString("netdev")) { // network device // notification @@ -533,7 +562,8 @@ bool AWKeys::setDataBySource(const QString sourceName, } if (device == networkDevice()) { values[QString("down")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); - toolTip->setData(QString("downTooltip"), data[QString("value")].toFloat()); + if (toolTip != nullptr) toolTip->setData(QString("downTooltip"), + data[QString("value")].toFloat()); } } else if (sourceName.contains(netTransRegExp)) { // upload speed @@ -547,7 +577,8 @@ bool AWKeys::setDataBySource(const QString sourceName, } if (device == networkDevice()) { values[QString("up")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); - toolTip->setData(QString("upTooltip"), data[QString("value")].toFloat()); + if (toolTip != nullptr) toolTip->setData(QString("upTooltip"), + data[QString("value")].toFloat()); } } else if (sourceName == QString("pkg")) { // package manager @@ -589,7 +620,8 @@ bool AWKeys::setDataBySource(const QString sourceName, AWActions::sendNotification(QString("event"), i18n("Swap is used"), enablePopup); // value values[QString("swap")] = QString("%1").arg(value, 5, 'f', 1); - toolTip->setData(QString("swapTooltip"), values[QString("swap")].toFloat()); + if (toolTip != nullptr) toolTip->setData(QString("swapTooltip"), + values[QString("swap")].toFloat()); } else if (sourceName.contains(tempRegExp)) { // temperature devices if (data[QString("units")].toString() == QString("rpm")) { @@ -646,8 +678,8 @@ void AWKeys::graphicalValueByKey() if (debug) qDebug() << PDEBUG; bool ok; - QString tag = QInputDialog::getItem(0, i18n("Select tag"), - i18n("Tag"), keys, 0, false, &ok); + QString tag = QInputDialog::getItem(0, i18n("Select tag"), i18n("Tag"), + dictKeys(true), 0, false, &ok); if ((!ok) || (tag.isEmpty())) return; QString message = i18n("Tag: %1", tag); @@ -1247,7 +1279,7 @@ void AWKeys::addKeyToCache(const QString type, const QString key) } -bool AWKeys::checkKeys(const QMap data) +bool AWKeys::checkKeys(const QVariantMap data) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Data" << data; @@ -1256,6 +1288,18 @@ bool AWKeys::checkKeys(const QMap data) } +QString AWKeys::htmlValue(QString key) +{ + if (debug) qDebug() << PDEBUG; + if (debug) qDebug() << PDEBUG << ":" << "Requested key" << key; + + QString value = values[key]; + if (!key.startsWith(QString("custom"))) + value.replace(QString(" "), QString(" ")); + return value; +} + + QString AWKeys::networkDevice() { if (debug) qDebug() << PDEBUG; diff --git a/sources/awesome-widget/plugin/awkeys.h b/sources/awesome-widget/plugin/awkeys.h index 87e7937..eb4603d 100644 --- a/sources/awesome-widget/plugin/awkeys.h +++ b/sources/awesome-widget/plugin/awkeys.h @@ -51,20 +51,20 @@ public: AWKeys(QObject *parent = nullptr); ~AWKeys(); - Q_INVOKABLE void initKeys(const QString currentPattern, - const QMap tooltipParams, - const bool popup = false); + Q_INVOKABLE void initKeys(const QString currentPattern); + Q_INVOKABLE void initTooltip(const QVariantMap tooltipParams); + Q_INVOKABLE void setPopupEnabled(const bool popup = false); + Q_INVOKABLE void setWrapNewLines(const bool wrap = false); Q_INVOKABLE bool isDebugEnabled(); Q_INVOKABLE QString parsePattern(); Q_INVOKABLE QString toolTipImage(); Q_INVOKABLE QSize toolTipSize(); // keys Q_INVOKABLE void addDevice(const QString source); - Q_INVOKABLE QStringList dictKeys(); + Q_INVOKABLE QStringList dictKeys(const bool sorted = false); Q_INVOKABLE QStringList getHddDevices(); - Q_INVOKABLE bool setDataBySource(const QString sourceName, - const QMap data, - const QMap params); + Q_INVOKABLE bool setDataBySource(const QString sourceName, const QVariantMap data, + const QVariantMap params); // values Q_INVOKABLE void graphicalValueByKey(); Q_INVOKABLE QString infoByKey(QString key); @@ -85,7 +85,8 @@ private slots: private: // methods void addKeyToCache(const QString type, const QString key = QString("")); - bool checkKeys(const QMap data); + bool checkKeys(const QVariantMap data); + QString htmlValue(QString key); QString networkDevice(); int numberCpus(); float temperature(const float temp, const QString units); @@ -111,6 +112,7 @@ private: // variables bool debug = false; bool enablePopup = false; + bool wrapNewLines = false; QList graphicalItems; QList extQuotes; QList extScripts; diff --git a/sources/awesome-widget/plugin/awtooltip.cpp b/sources/awesome-widget/plugin/awtooltip.cpp index 0c6c5d0..568c139 100644 --- a/sources/awesome-widget/plugin/awtooltip.cpp +++ b/sources/awesome-widget/plugin/awtooltip.cpp @@ -24,8 +24,7 @@ #include -AWToolTip::AWToolTip(QObject *parent, - QMap settings) +AWToolTip::AWToolTip(QObject *parent, QVariantMap settings) : QObject(parent), configuration(settings) { diff --git a/sources/awesome-widget/plugin/awtooltip.h b/sources/awesome-widget/plugin/awtooltip.h index 94adfae..ad1ab16 100644 --- a/sources/awesome-widget/plugin/awtooltip.h +++ b/sources/awesome-widget/plugin/awtooltip.h @@ -32,8 +32,7 @@ class AWToolTip : public QObject Q_OBJECT public: - AWToolTip(QObject *parent = nullptr, - QMap settings = QMap()); + AWToolTip(QObject *parent = nullptr, QVariantMap settings = QVariantMap()); ~AWToolTip(); QSize getSize(); @@ -48,7 +47,7 @@ private: // variables bool debug = false; int counts = 0; - QMap configuration; + QVariantMap configuration; QMap boundaries; QMap> data; QStringList requiredKeys; diff --git a/sources/desktop-panel/plugin/dpadds.cpp b/sources/desktop-panel/plugin/dpadds.cpp index 11f4b45..eb30b8d 100644 --- a/sources/desktop-panel/plugin/dpadds.cpp +++ b/sources/desktop-panel/plugin/dpadds.cpp @@ -189,7 +189,6 @@ QString DPAdds::parsePattern(const QString pattern, const int desktop) parsed.replace(QString("$$"), QString("$\\$\\")); for (int i=0; i tooltipData) +void DPAdds::setToolTipData(const QVariantMap tooltipData) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Data" << tooltipData; @@ -240,9 +239,10 @@ QString DPAdds::valueByKey(const QString key, int desktop) QString currentMark = currentDesktop() == desktop ? mark : QString(""); if (key == QString("mark")) - return QString("%1").arg(currentMark, mark.count(), QLatin1Char(' ')); + return QString("%1").arg(currentMark, mark.count(), QLatin1Char(' ')) + .replace(QString(" "), QString(" ")); else if (key == QString("name")) - return KWindowSystem::desktopName(desktop); + return KWindowSystem::desktopName(desktop).replace(QString(" "), QString(" ")); else if (key == QString("number")) return QString::number(desktop); else if (key == QString("total")) @@ -339,11 +339,11 @@ QString DPAdds::getAboutText(const QString type) } -QMap DPAdds::getFont(const QMap defaultFont) +QVariantMap DPAdds::getFont(const QVariantMap defaultFont) { if (debug) qDebug() << PDEBUG; - QMap fontMap; + QVariantMap fontMap; CFont defaultCFont = CFont(defaultFont[QString("family")].toString(), defaultFont[QString("size")].toInt(), 400, false, defaultFont[QString("color")].toString()); diff --git a/sources/desktop-panel/plugin/dpadds.h b/sources/desktop-panel/plugin/dpadds.h index bb87b58..d1027ba 100644 --- a/sources/desktop-panel/plugin/dpadds.h +++ b/sources/desktop-panel/plugin/dpadds.h @@ -55,12 +55,12 @@ public: // values Q_INVOKABLE void setMark(const QString newMark); Q_INVOKABLE void setPanelsToControl(const QString newPanels); - Q_INVOKABLE void setToolTipData(const QMap tooltipData); + Q_INVOKABLE void setToolTipData(const QVariantMap tooltipData); Q_INVOKABLE QString valueByKey(const QString key, int desktop = -1); // configuration slots Q_INVOKABLE QString editPanelsToContol(const QString current); Q_INVOKABLE QString getAboutText(const QString type = "header"); - Q_INVOKABLE QMap getFont(const QMap defaultFont); + Q_INVOKABLE QVariantMap getFont(const QVariantMap defaultFont); signals: void desktopChanged(); diff --git a/sources/extsysmon/extscript.cpp b/sources/extsysmon/extscript.cpp index ad03d54..7e63f02 100644 --- a/sources/extsysmon/extscript.cpp +++ b/sources/extsysmon/extscript.cpp @@ -20,7 +20,9 @@ #include #include +#include #include +#include #include #include @@ -38,6 +40,7 @@ ExtScript::ExtScript(QWidget *parent, const QString scriptName, const QStringLis { m_name = m_fileName; readConfiguration(); + readJsonFilters(); // init process process = new QProcess(this); connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(updateValue())); @@ -89,7 +92,7 @@ QString ExtScript::fileName() } -QList ExtScript::filters() +QStringList ExtScript::filters() { if (debug) qDebug() << PDEBUG; @@ -153,28 +156,6 @@ ExtScript::Redirect ExtScript::redirect() } -QStringList ExtScript::strFilters() -{ - if (debug) qDebug() << PDEBUG; - - QStringList value; - for (int i=0; i _filters) +void ExtScript::setFilters(const QStringList _filters) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Filters" << _filters; - m_filters = _filters; + for (int i=0; i<_filters.count(); i++) + updateFilter(_filters[i]); } @@ -311,19 +293,6 @@ void ExtScript::setRedirect(const Redirect _redirect) } -void ExtScript::setStrFilters(const QStringList _filters) -{ - if (debug) qDebug() << PDEBUG; - if (debug) qDebug() << PDEBUG << ":" << "Filters" << _filters; - - for (int i=0; i<_filters.count(); i++) - if (_filters[i] == QString("color")) - updateFilter(wrapAnsiColor); - else if (_filters[i] == QString("newline")) - updateFilter(wrapNewLine); -} - - void ExtScript::setStrRedirect(const QString _redirect) { if (debug) qDebug() << PDEBUG; @@ -338,54 +307,27 @@ void ExtScript::setStrRedirect(const QString _redirect) } -QString ExtScript::applyColorFilter(QString _value) +QString ExtScript::applyFilters(QString _value) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Value" << _value; - // black - _value.replace(QString("\\[\\033[0;30m\\]"), QString("")); - _value.replace(QString("\\[\\033[1;30m\\]"), QString("")); - // red - _value.replace(QString("\\[\\033[0;31m\\]"), QString("")); - _value.replace(QString("\\[\\033[1;31m\\]"), QString("")); - // green - _value.replace(QString("\\[\\033[0;32m\\]"), QString("")); - _value.replace(QString("\\[\\033[1;32m\\]"), QString("")); - // yellow - _value.replace(QString("\\[\\033[0;33m\\]"), QString("")); - _value.replace(QString("\\[\\033[1;33m\\]"), QString("")); - // blue - _value.replace(QString("\\[\\033[0;34m\\]"), QString("")); - _value.replace(QString("\\[\\033[1;34m\\]"), QString("")); - // purple - _value.replace(QString("\\[\\033[0;35m\\]"), QString("")); - _value.replace(QString("\\[\\033[1;35m\\]"), QString("")); - // cyan - _value.replace(QString("\\[\\033[0;36m\\]"), QString("")); - _value.replace(QString("\\[\\033[1;36m\\]"), QString("")); - // white - _value.replace(QString("\\[\\033[0;37m\\]"), QString("")); - _value.replace(QString("\\[\\033[1;37m\\]"), QString("")); - // exit - _value.replace(QString("\\[\\033[0m\\]"), QString("")); + for (int i=0; i")); - - return _value; -} - - -void ExtScript::updateFilter(const ExtScript::Filter _filter, const bool _add) +void ExtScript::updateFilter(const QString _filter, const bool _add) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Filter" << _filter; @@ -418,9 +360,11 @@ void ExtScript::readConfiguration() setHasOutput(settings.value(QString("X-AW-Output"), QVariant(m_output)).toString() == QString("true")); setStrRedirect(settings.value(QString("X-AW-Redirect"), strRedirect()).toString()); setInterval(settings.value(QString("X-AW-Interval"), m_interval).toInt()); - setStrFilters(settings.value(QString("X-AW-Filters"), strFilters()).toStringList()); // api == 2 setNumber(settings.value(QString("X-AW-Number"), m_number).toInt()); + // api == 3 + setFilters(settings.value(QString("X-AW-Filters"), m_filters).toString() + .split(QChar(','), QString::SkipEmptyParts)); settings.endGroup(); } @@ -435,6 +379,26 @@ void ExtScript::readConfiguration() } +void ExtScript::readJsonFilters() +{ + if (debug) qDebug() << PDEBUG; + + QString fileName = QStandardPaths::locate(QStandardPaths::GenericDataLocation, + QString("awesomewidgets/scripts/awesomewidgets-extscripts-filters.json")); + if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; + QFile jsonFile(fileName); + if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) + return; + QString jsonText = jsonFile.readAll(); + jsonFile.close(); + + QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8()); + jsonFilters = jsonDoc.toVariant().toMap(); + + if (debug) qDebug() << PDEBUG << ":" << "Filters" << jsonFilters; +} + + QString ExtScript::run() { if (debug) qDebug() << PDEBUG; @@ -468,8 +432,9 @@ int ExtScript::showConfiguration() ui->comboBox_redirect->setCurrentIndex(static_cast(m_redirect)); ui->spinBox_interval->setValue(m_interval); // filters - ui->checkBox_colorFilter->setCheckState(m_filters.contains(wrapAnsiColor) ? Qt::Checked : Qt::Unchecked); - ui->checkBox_linesFilter->setCheckState(m_filters.contains(wrapNewLine) ? Qt::Checked : Qt::Unchecked); + ui->checkBox_colorFilter->setCheckState(m_filters.contains(QString("color")) ? Qt::Checked : Qt::Unchecked); + ui->checkBox_linesFilter->setCheckState(m_filters.contains(QString("newline")) ? Qt::Checked : Qt::Unchecked); + ui->checkBox_spaceFilter->setCheckState(m_filters.contains(QString("space")) ? Qt::Checked : Qt::Unchecked); int ret = exec(); if (ret != 1) return ret; @@ -484,8 +449,9 @@ int ExtScript::showConfiguration() setStrRedirect(ui->comboBox_redirect->currentText()); setInterval(ui->spinBox_interval->value()); // filters - updateFilter(wrapAnsiColor, ui->checkBox_colorFilter->checkState() == Qt::Checked); - updateFilter(wrapNewLine, ui->checkBox_linesFilter->checkState() == Qt::Checked); + updateFilter(QString("color"), ui->checkBox_colorFilter->checkState() == Qt::Checked); + updateFilter(QString("newline"), ui->checkBox_linesFilter->checkState() == Qt::Checked); + updateFilter(QString("space"), ui->checkBox_spaceFilter->checkState() == Qt::Checked); writeConfiguration(); return ret; @@ -526,7 +492,7 @@ void ExtScript::writeConfiguration() settings.setValue(QString("X-AW-Redirect"), strRedirect()); settings.setValue(QString("X-AW-Interval"), m_interval); settings.setValue(QString("X-AW-Number"), m_number); - settings.setValue(QString("X-AW-Filters"), strFilters()); + settings.setValue(QString("X-AW-Filters"), m_filters.join(QChar(','))); settings.endGroup(); settings.sync(); @@ -556,4 +522,7 @@ void ExtScript::updateValue() value = qoutput; break; } + + // filters + value = applyFilters(value); } diff --git a/sources/extsysmon/extscript.h b/sources/extsysmon/extscript.h index 3b5eb33..bfb15cf 100644 --- a/sources/extsysmon/extscript.h +++ b/sources/extsysmon/extscript.h @@ -34,7 +34,7 @@ class ExtScript : public QDialog Q_PROPERTY(int apiVersion READ apiVersion WRITE setApiVersion) Q_PROPERTY(QString comment READ comment WRITE setComment) Q_PROPERTY(QString executable READ executable WRITE setExecutable) - Q_PROPERTY(QList filters READ filters WRITE setFilters) + Q_PROPERTY(QStringList filters READ filters WRITE setFilters) Q_PROPERTY(int interval READ interval WRITE setInterval) Q_PROPERTY(QString name READ name WRITE setName) Q_PROPERTY(int number READ number WRITE setNumber) @@ -48,11 +48,6 @@ public: nothing, stderr2stdout }; - enum Filter { - none = -1, - wrapNewLine, - wrapAnsiColor - }; explicit ExtScript(QWidget *parent = nullptr, const QString scriptName = QString(), const QStringList directories = QStringList(), const bool debugCmd = false); @@ -62,7 +57,7 @@ public: QString comment(); QString executable(); QString fileName(); - QList filters(); + QStringList filters(); bool hasOutput(); int interval(); bool isActive(); @@ -71,7 +66,6 @@ public: QString prefix(); Redirect redirect(); // derivatives - QStringList strFilters(); QString strRedirect(); QString tag(); // set methods @@ -79,22 +73,21 @@ public: void setActive(const bool _state = true); void setComment(const QString _comment = QString("empty")); void setExecutable(const QString _executable = QString("/usr/bin/true")); - void setFilters(const QList _filters = QList()); + void setFilters(const QStringList _filters = QStringList()); void setHasOutput(const bool _state = true); void setInterval(const int _interval = 1); void setName(const QString _name = QString("none")); void setNumber(int _number = -1); void setPrefix(const QString _prefix = QString("")); void setRedirect(const Redirect _redirect = nothing); - void setStrFilters(const QStringList _filters = QStringList()); void setStrRedirect(const QString _redirect = QString("nothing")); // filters - QString applyColorFilter(QString _value); - QString applyNewLineFilter(QString _value); - void updateFilter(const Filter _filter = none, const bool _add = true); + QString applyFilters(QString _value); + void updateFilter(const QString _filter, const bool _add = true); public slots: void readConfiguration(); + void readJsonFilters(); QString run(); int showConfiguration(); bool tryDelete(); @@ -114,7 +107,7 @@ private: bool m_active = true; QString m_comment = QString("empty"); QString m_executable = QString("/usr/bin/true"); - QList m_filters = QList(); + QStringList m_filters = QStringList(); int m_interval = 1; QString m_name = QString("none"); int m_number = -1; @@ -123,6 +116,7 @@ private: Redirect m_redirect = nothing; // internal properties Q_PID childProcess = 0; + QVariantMap jsonFilters = QVariantMap(); int times = 0; QString value = QString(); }; diff --git a/sources/extsysmon/extscript.ui b/sources/extsysmon/extscript.ui index 355f67d..f4295cd 100644 --- a/sources/extsysmon/extscript.ui +++ b/sources/extsysmon/extscript.ui @@ -310,6 +310,36 @@ + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Wrap spaces + + + + + diff --git a/sources/extsysmon/extsysmon.cpp b/sources/extsysmon/extsysmon.cpp index f0da21f..a5b85a1 100644 --- a/sources/extsysmon/extsysmon.cpp +++ b/sources/extsysmon/extsysmon.cpp @@ -303,12 +303,12 @@ QMap ExtendedSysMon::updateConfiguration(QMap ExtendedSysMon::getBattery(const QString acpiPath) +QVariantMap ExtendedSysMon::getBattery(const QString acpiPath) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "ACPI path" << acpiPath; - QMap battery; + QVariantMap battery; battery[QString("ac")] = false; battery[QString("bat")] = 0; QFile acFile(acpiPath + QString("/AC/online")); @@ -344,13 +344,13 @@ QMap ExtendedSysMon::getBattery(const QString acpiPath) } -QMap ExtendedSysMon::getCurrentDesktop() +QVariantMap ExtendedSysMon::getCurrentDesktop() { if (debug) qDebug() << PDEBUG; int number = KWindowSystem::currentDesktop(); int total = KWindowSystem::numberOfDesktops(); - QMap currentDesktop; + QVariantMap currentDesktop; currentDesktop[QString("currentName")] = KWindowSystem::desktopName(number); currentDesktop[QString("currentNumber")] = number; QStringList list; @@ -499,17 +499,15 @@ QString ExtendedSysMon::getNetworkDevice() } -QMap ExtendedSysMon::getPlayerInfo(const QString playerName, - const QString mpdAddress, - const QString mpdPort, - QString mpris) +QVariantMap ExtendedSysMon::getPlayerInfo(const QString playerName, const QString mpdAddress, + const QString mpdPort, QString mpris) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "player" << playerName; - if (debug) qDebug() << PDEBUG << ":" << "MPD" << mpdAddress + QString(":") + mpdPort; + if (debug) qDebug() << PDEBUG << ":" << "MPD" << QString("%1:%2").arg(mpdAddress).arg(mpdPort); if (debug) qDebug() << PDEBUG << ":" << "MPRIS" << mpris; - QMap info; + QVariantMap info; info[QString("album")] = QString("unknown"); info[QString("artist")] = QString("unknown"); info[QString("duration")] = QString("0"); @@ -530,13 +528,12 @@ QMap ExtendedSysMon::getPlayerInfo(const QString playerName, } -QMap ExtendedSysMon::getPlayerMpdInfo(const QString mpdAddress, - const QString mpdPort) +QVariantMap ExtendedSysMon::getPlayerMpdInfo(const QString mpdAddress, const QString mpdPort) { if (debug) qDebug() << PDEBUG; - if (debug) qDebug() << PDEBUG << ":" << "MPD" << mpdAddress + QString(":") + mpdPort; + if (debug) qDebug() << PDEBUG << ":" << "MPD" << QString("%1:%2").arg(mpdAddress).arg(mpdPort); - QMap info; + QVariantMap info; info[QString("album")] = QString("unknown"); info[QString("artist")] = QString("unknown"); info[QString("duration")] = QString("0"); @@ -572,12 +569,12 @@ QMap ExtendedSysMon::getPlayerMpdInfo(const QString mpdAddres } -QMap ExtendedSysMon::getPlayerMprisInfo(const QString mpris) +QVariantMap ExtendedSysMon::getPlayerMprisInfo(const QString mpris) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << "MPRIS" << mpris; - QMap info; + QVariantMap info; info[QString("album")] = QString("unknown"); info[QString("artist")] = QString("unknown"); info[QString("duration")] = 0; @@ -622,7 +619,7 @@ QMap ExtendedSysMon::getPlayerMprisInfo(const QString mpris) } -QMap ExtendedSysMon::getPsStats() +QVariantMap ExtendedSysMon::getPsStats() { if (debug) qDebug() << PDEBUG; @@ -641,7 +638,7 @@ QMap ExtendedSysMon::getPsStats() if (output.contains(QString("running"))) running.append(cmdFile.readAll()); } - QMap psStats; + QVariantMap psStats; psStats[QString("pscount")] = running.count(); psStats[QString("ps")] = running.join(QString(",")); psStats[QString("pstotal")] = directories.count(); @@ -665,7 +662,7 @@ bool ExtendedSysMon::updateSourceEvent(const QString &source) if (debug) qDebug() << PDEBUG << ":" << "Source" << source; if (source == QString("battery")) { - QMap battery = getBattery(configuration[QString("ACPIPATH")]); + QVariantMap battery = getBattery(configuration[QString("ACPIPATH")]); setData(source, QString("ac"), battery[QString("ac")].toBool()); for (int i=0; itag(), externalScripts[i]->run()); } else if (source == QString("desktop")) { - QMap desktop = getCurrentDesktop(); + QVariantMap desktop = getCurrentDesktop(); for (int i=0; itag(), externalUpgrade[i]->run()); } else if (source == QString("player")) { - QMap player = getPlayerInfo(configuration[QString("PLAYER")], - configuration[QString("MPDADDRESS")], - configuration[QString("MPDPORT")], - configuration[QString("MPRIS")]); + QVariantMap player = getPlayerInfo(configuration[QString("PLAYER")], + configuration[QString("MPDADDRESS")], + configuration[QString("MPDPORT")], + configuration[QString("MPRIS")]); for (int i=0; i ps = getPsStats(); + QVariantMap ps = getPsStats(); for (int i=0; i getBattery(const QString acpiPath); - QMap getCurrentDesktop(); + QVariantMap getBattery(const QString acpiPath); + QVariantMap getCurrentDesktop(); float getGpu(const QString device); float getGpuTemp(const QString device); float getHddTemp(const QString cmd, const QString device); QString getNetworkDevice(); - QMap getPlayerInfo(const QString playerName, - const QString mpdAddress = QString(), - const QString mpdPort = QString(), - const QString mpris = QString()); - QMap getPlayerMpdInfo(const QString mpdAddress = QString(), - const QString mpdPort = QString()); - QMap getPlayerMprisInfo(const QString mpris = QString()); - QMap getPsStats(); + QVariantMap getPlayerInfo(const QString playerName, + const QString mpdAddress = QString(), + const QString mpdPort = QString(), + const QString mpris = QString()); + QVariantMap getPlayerMpdInfo(const QString mpdAddress = QString(), + const QString mpdPort = QString()); + QVariantMap getPlayerMprisInfo(const QString mpris = QString()); + QVariantMap getPsStats(); protected: bool sourceRequestEvent(const QString &source); diff --git a/sources/extsysmon/scripts/awesomewidgets-extscripts-filters.json b/sources/extsysmon/scripts/awesomewidgets-extscripts-filters.json new file mode 100644 index 0000000..c5d9426 --- /dev/null +++ b/sources/extsysmon/scripts/awesomewidgets-extscripts-filters.json @@ -0,0 +1,28 @@ +{ + "color": { + "\u001b[0;30m": "", + "\u001b[1;30m": "", + "\u001b[0;31m": "", + "\u001b[1;31m": "", + "\u001b[0;32m": "", + "\u001b[1;32m": "", + "\u001b[0;33m": "", + "\u001b[1;33m": "", + "\u001b[0;34m": "", + "\u001b[1;34m": "", + "\u001b[0;35m": "", + "\u001b[1;35m": "", + "\u001b[0;36m": "", + "\u001b[1;36m": "", + "\u001b[0;37m": "", + "\u001b[1;37m": "", + "\u001b[0m": "" + }, + "newline": { + "\n": "
", + "\t": " " + }, + "space": { + " ": " " + } +}