diff --git a/sources/awesome-widget/package/contents/ui/widget.qml b/sources/awesome-widget/package/contents/ui/widget.qml
index 726cd54..a90b784 100644
--- a/sources/awesome-widget/package/contents/ui/widget.qml
+++ b/sources/awesome-widget/package/contents/ui/widget.qml
@@ -68,113 +68,68 @@ Item {
textArea: textPattern
}
- Row {
- height: implicitHeight
- width: parent.width
- QtControls.ComboBox {
- width: parent.width * 2 / 5
- textRole: "label"
- model: [
- {
- 'label': i18n("AC"),
- 'regexp': "^(ac|bat).*"
- },
- {
- 'label': i18n("Bars"),
- 'regexp': "^bar.*"
- },
- {
- 'label': i18n("CPU"),
- 'regexp': "^(cpu|gpu|la|ps|temp(?!erature)).*"
- },
- {
- 'label': i18n("Desktops"),
- 'regexp': "^(n|t)?desktop(s)?"
- },
- {
- 'label': i18n("HDD"),
- 'regexp': "^hdd.*"
- },
- {
- 'label': i18n("Memory"),
- 'regexp': "^(mem|swap).*"
- },
- {
- 'label': i18n("Network"),
- 'regexp': "^(netdev|(down|up(?!time)).*)"
- },
- {
- 'label': i18n("Music player"),
- 'regexp': "(^|d|s)(album|artist|duration|progress|title)"
- },
- {
- 'label': i18n("Scripts"),
- 'regexp': "^custom.*"
- },
- {
- 'label': i18n("Time"),
- 'regexp': ".*time$"
- },
- {
- 'label': i18n("Quotes"),
- 'regexp': "^(perc)?(ask|bid|price)(chg)?.*"
- },
- {
- 'label': i18n("Upgrades"),
- 'regexp': "^pkgcount.*"
- },
- {
- 'label': i18n("Weathers"),
- 'regexp': "^(weather(Id)?|humidity|pressure|temperature|timestamp)"
- },
- {
- 'label': i18n("Functions"),
- 'regexp': "functions"
- }
- ]
- onCurrentIndexChanged: {
- if (debug) console.debug()
- if (model[currentIndex]["regexp"] == "functions")
- tags.model = ["{{\n\n}}", "template{{\n\n}}",
- "aw_all<>{{}}", "aw_count<>{{}}", "aw_keys<>{{}}",
- "aw_macro<>{{}}", "aw_names<>{{}}"]
- else
- tags.model = awKeys.dictKeys(true, model[currentIndex]["regexp"])
- if (debug) console.info("Init model", tags.model, "for", model[currentIndex]["label"])
- tags.currentIndex = -1
+ AWTagSelector {
+ backend: awKeys
+ notifyBackend: awActions
+ textArea: textPattern
+ groups: [
+ {
+ 'label': i18n("AC"),
+ 'regexp': "^(ac|bat).*"
+ },
+ {
+ 'label': i18n("Bars"),
+ 'regexp': "^bar.*"
+ },
+ {
+ 'label': i18n("CPU"),
+ 'regexp': "^(cpu|gpu|la|ps|temp(?!erature)).*"
+ },
+ {
+ 'label': i18n("Desktops"),
+ 'regexp': "^(n|t)?desktop(s)?"
+ },
+ {
+ 'label': i18n("HDD"),
+ 'regexp': "^hdd.*"
+ },
+ {
+ 'label': i18n("Memory"),
+ 'regexp': "^(mem|swap).*"
+ },
+ {
+ 'label': i18n("Network"),
+ 'regexp': "^(netdev|(down|up(?!time)).*)"
+ },
+ {
+ 'label': i18n("Music player"),
+ 'regexp': "(^|d|s)(album|artist|duration|progress|title)"
+ },
+ {
+ 'label': i18n("Scripts"),
+ 'regexp': "^custom.*"
+ },
+ {
+ 'label': i18n("Time"),
+ 'regexp': ".*time$"
+ },
+ {
+ 'label': i18n("Quotes"),
+ 'regexp': "^(perc)?(ask|bid|price)(chg)?.*"
+ },
+ {
+ 'label': i18n("Upgrades"),
+ 'regexp': "^pkgcount.*"
+ },
+ {
+ 'label': i18n("Weathers"),
+ 'regexp': "^(weather(Id)?|humidity|pressure|temperature|timestamp)"
+ },
+ {
+ 'label': i18n("Functions"),
+ 'regexp': "functions"
}
- }
- QtControls.ComboBox {
- id: tags
- width: parent.width * 1 / 5
- }
- QtControls.Button {
- width: parent.width * 1 / 5
- text: i18n("Add")
-
- onClicked: {
- if (!tags.currentText) return
- if (debug) console.debug("Add tag button")
- var selected = textPattern.selectedText
- textPattern.remove(textPattern.selectionStart, textPattern.selectionEnd)
- textPattern.insert(textPattern.cursorPosition, selected + "$" + tags.currentText)
- }
- }
- QtControls.Button {
- width: parent.width * 1 / 5
- text: i18n("Show value")
-
- onClicked: {
- if (!tags.currentText) return
- if (debug) console.debug("Show tag button")
- var message = i18n("Tag: %1", tags.currentText)
- message += "
"
- message += i18n("Value: %1", awKeys.valueByKey(tags.currentText))
- message += "
"
- message += i18n("Info: %1", awKeys.infoByKey(tags.currentText))
- awActions.sendNotification("tag", message)
- }
- }
+ ]
}
Row {
diff --git a/sources/qml/AWTagSelector.qml b/sources/qml/AWTagSelector.qml
new file mode 100644
index 0000000..b6268f0
--- /dev/null
+++ b/sources/qml/AWTagSelector.qml
@@ -0,0 +1,82 @@
+/***************************************************************************
+ * This file is part of awesome-widgets *
+ * *
+ * awesome-widgets is free software: you can redistribute it and/or *
+ * modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation, either version 3 of the *
+ * License, or (at your option) any later version. *
+ * *
+ * awesome-widgets is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
+ ***************************************************************************/
+
+import QtQuick 2.2
+import QtQuick.Controls 1.3 as QtControls
+
+
+Row {
+ height: implicitHeight
+ width: parent.width
+
+ // backend
+ property var backend
+ property var notifyBackend
+ // parent object in which text will be replaced
+ property var textArea
+ property alias groups: tagGroups.model
+
+ QtControls.ComboBox {
+ id: tagGroups
+ width: parent.width * 2 / 5
+ textRole: "label"
+
+ onCurrentIndexChanged: {
+ if (model[currentIndex]["regexp"] == "functions")
+ tags.model = ["{{\n\n}}", "template{{\n\n}}",
+ "aw_all<>{{}}", "aw_count<>{{}}", "aw_keys<>{{}}",
+ "aw_macro<>{{}}", "aw_names<>{{}}"]
+ else
+ tags.model = backend.dictKeys(true, model[currentIndex]["regexp"])
+ tags.currentIndex = -1
+ }
+ }
+
+ QtControls.ComboBox {
+ id: tags
+ width: parent.width * 1 / 5
+ }
+
+ QtControls.Button {
+ width: parent.width * 1 / 5
+ text: i18n("Add")
+
+ onClicked: {
+ if (!tags.currentText)
+ return
+ textArea.insert(textArea.cursorPosition, "$" + tags.currentText)
+ }
+ }
+
+ QtControls.Button {
+ width: parent.width * 1 / 5
+ text: i18n("Show value")
+
+ onClicked: {
+ if ((!notifyBackend)
+ || (!tags.currentText))
+ return
+ // generate message
+ var message = i18n("Tag: %1", tags.currentText)
+ message += "
"
+ message += i18n("Value: %1", backend.valueByKey(tags.currentText))
+ message += "
"
+ message += i18n("Info: %1", backend.infoByKey(tags.currentText))
+ notifyBackend.sendNotification("tag", message)
+ }
+ }
+}