add tag selector row

This commit is contained in:
Evgenii Alekseev 2016-10-13 00:12:46 +03:00
parent eea636c6f1
commit 57ad8a0a2b
2 changed files with 143 additions and 106 deletions

View File

@ -68,113 +68,68 @@ Item {
textArea: textPattern textArea: textPattern
} }
Row { AWTagSelector {
height: implicitHeight backend: awKeys
width: parent.width notifyBackend: awActions
QtControls.ComboBox { textArea: textPattern
width: parent.width * 2 / 5 groups: [
textRole: "label" {
model: [ 'label': i18n("AC"),
{ 'regexp': "^(ac|bat).*"
'label': i18n("AC"), },
'regexp': "^(ac|bat).*" {
}, 'label': i18n("Bars"),
{ 'regexp': "^bar.*"
'label': i18n("Bars"), },
'regexp': "^bar.*" {
}, 'label': i18n("CPU"),
{ 'regexp': "^(cpu|gpu|la|ps|temp(?!erature)).*"
'label': i18n("CPU"), },
'regexp': "^(cpu|gpu|la|ps|temp(?!erature)).*" {
}, 'label': i18n("Desktops"),
{ 'regexp': "^(n|t)?desktop(s)?"
'label': i18n("Desktops"), },
'regexp': "^(n|t)?desktop(s)?" {
}, 'label': i18n("HDD"),
{ 'regexp': "^hdd.*"
'label': i18n("HDD"), },
'regexp': "^hdd.*" {
}, 'label': i18n("Memory"),
{ 'regexp': "^(mem|swap).*"
'label': i18n("Memory"), },
'regexp': "^(mem|swap).*" {
}, 'label': i18n("Network"),
{ 'regexp': "^(netdev|(down|up(?!time)).*)"
'label': i18n("Network"), },
'regexp': "^(netdev|(down|up(?!time)).*)" {
}, 'label': i18n("Music player"),
{ 'regexp': "(^|d|s)(album|artist|duration|progress|title)"
'label': i18n("Music player"), },
'regexp': "(^|d|s)(album|artist|duration|progress|title)" {
}, 'label': i18n("Scripts"),
{ 'regexp': "^custom.*"
'label': i18n("Scripts"), },
'regexp': "^custom.*" {
}, 'label': i18n("Time"),
{ 'regexp': ".*time$"
'label': i18n("Time"), },
'regexp': ".*time$" {
}, 'label': i18n("Quotes"),
{ 'regexp': "^(perc)?(ask|bid|price)(chg)?.*"
'label': i18n("Quotes"), },
'regexp': "^(perc)?(ask|bid|price)(chg)?.*" {
}, 'label': i18n("Upgrades"),
{ 'regexp': "^pkgcount.*"
'label': i18n("Upgrades"), },
'regexp': "^pkgcount.*" {
}, 'label': i18n("Weathers"),
{ 'regexp': "^(weather(Id)?|humidity|pressure|temperature|timestamp)"
'label': i18n("Weathers"), },
'regexp': "^(weather(Id)?|humidity|pressure|temperature|timestamp)" {
}, 'label': i18n("Functions"),
{ 'regexp': "functions"
'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
} }
} ]
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 += "<br>"
message += i18n("Value: %1", awKeys.valueByKey(tags.currentText))
message += "<br>"
message += i18n("Info: %1", awKeys.infoByKey(tags.currentText))
awActions.sendNotification("tag", message)
}
}
} }
Row { Row {

View File

@ -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 += "<br>"
message += i18n("Value: %1", backend.valueByKey(tags.currentText))
message += "<br>"
message += i18n("Info: %1", backend.infoByKey(tags.currentText))
notifyBackend.sendNotification("tag", message)
}
}
}