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) + } + } +}