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,13 +68,11 @@ 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"), 'label': i18n("AC"),
'regexp': "^(ac|bat).*" 'regexp': "^(ac|bat).*"
@ -132,49 +130,6 @@ Item {
'regexp': "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)
}
}
}