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": {
+ " ": " "
+ }
+}