update widget
This commit is contained in:
parent
4239563581
commit
e58b95c480
|
@ -3,12 +3,9 @@
|
||||||
-- https://tech.yandex.com/translate/
|
-- https://tech.yandex.com/translate/
|
||||||
|
|
||||||
-- @author Pavel Makhov
|
-- @author Pavel Makhov
|
||||||
-- @copyright 2017 Pavel Makhov
|
-- @copyright 2018 Pavel Makhov
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
--package.path = package.path .. ";/home/streetturtle/.config/awesome/awesome-wm-widgets/secrets.lua"
|
|
||||||
local secrets = require("secrets")
|
|
||||||
|
|
||||||
local awful = require("awful")
|
local awful = require("awful")
|
||||||
local capi = {keygrabber = keygrabber }
|
local capi = {keygrabber = keygrabber }
|
||||||
local https = require("ssl.https")
|
local https = require("ssl.https")
|
||||||
|
@ -16,8 +13,8 @@ local json = require("json")
|
||||||
local naughty = require("naughty")
|
local naughty = require("naughty")
|
||||||
local wibox = require("wibox")
|
local wibox = require("wibox")
|
||||||
|
|
||||||
local API_KEY = secrets.translate_widget_api_key
|
|
||||||
local BASE_URL = 'https://translate.yandex.net/api/v1.5/tr.json/translate'
|
local BASE_URL = 'https://translate.yandex.net/api/v1.5/tr.json/translate'
|
||||||
|
local ICON = '/usr/share/icons/Papirus-Dark/48x48/apps/gnome-translate.svg'
|
||||||
|
|
||||||
--- Returns two values - string to translate and direction:
|
--- Returns two values - string to translate and direction:
|
||||||
-- 'dog enfr' -> 'dog', 'en-fr'
|
-- 'dog enfr' -> 'dog', 'en-fr'
|
||||||
|
@ -61,7 +58,7 @@ local w = wibox {
|
||||||
w:setup {
|
w:setup {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
image = '/usr/share/icons/Papirus-Dark/48x48/apps/gnome-translate.svg',
|
image = ICON,
|
||||||
widget = wibox.widget.imagebox,
|
widget = wibox.widget.imagebox,
|
||||||
resize = false
|
resize = false
|
||||||
},
|
},
|
||||||
|
@ -88,10 +85,12 @@ w:setup {
|
||||||
layout = wibox.layout.fixed.horizontal
|
layout = wibox.layout.fixed.horizontal
|
||||||
}
|
}
|
||||||
|
|
||||||
--- Main function - takes the user input and shows the widget with translations
|
--- Main function - takes the user input and shows the widget with translation
|
||||||
local function translate(request_string)
|
-- @param request_string - user input (dog enfr)
|
||||||
|
-- @param api_key - Yandex.Translate api key
|
||||||
|
local function translate(request_string, api_key)
|
||||||
local to_translate, lang = extract(request_string)
|
local to_translate, lang = extract(request_string)
|
||||||
local urll = BASE_URL .. '?lang=' .. lang .. '&text=' .. urlencode(to_translate) .. '&key=' .. API_KEY
|
local urll = BASE_URL .. '?lang=' .. lang .. '&text=' .. urlencode(to_translate) .. '&key=' .. api_key
|
||||||
|
|
||||||
local resp_json, code = https.request(urll)
|
local resp_json, code = https.request(urll)
|
||||||
if (code == 200 and resp_json ~= nil) then
|
if (code == 200 and resp_json ~= nil) then
|
||||||
|
@ -101,13 +100,15 @@ local function translate(request_string)
|
||||||
w.left.text.src:set_markup('<b>' .. lang:sub(1,2) .. '</b>: <span color="#FFFFFF"> ' .. to_translate .. '</span>')
|
w.left.text.src:set_markup('<b>' .. lang:sub(1,2) .. '</b>: <span color="#FFFFFF"> ' .. to_translate .. '</span>')
|
||||||
w.left.text.res:set_markup('<b>' .. lang:sub(4) .. '</b>: <span color="#FFFFFF"> ' .. resp .. '</span>')
|
w.left.text.res:set_markup('<b>' .. lang:sub(4) .. '</b>: <span color="#FFFFFF"> ' .. resp .. '</span>')
|
||||||
|
|
||||||
awful.placement.top(w, { margins = {top = 25}})
|
awful.placement.top(w, { margins = {top = 40}})
|
||||||
|
|
||||||
local h1 = w.left.text.header:get_height_for_width(w.width, w.screen)
|
local h1 = w.left.text.header:get_height_for_width(w.width, w.screen)
|
||||||
local h2 = w.left.text.src:get_height_for_width(w.width, w.screen)
|
local h2 = w.left.text.src:get_height_for_width(w.width, w.screen)
|
||||||
local h3 = w.left.text.res:get_height_for_width(w.width, w.screen)
|
local h3 = w.left.text.res:get_height_for_width(w.width, w.screen)
|
||||||
|
|
||||||
|
-- calculate height of the widget
|
||||||
w.height = h1 + h2 + h3 + 20
|
w.height = h1 + h2 + h3 + 20
|
||||||
|
-- try to vetrtically align the icon
|
||||||
w.left.img:set_top((h1 + h2 + h3 + 20 - 48)/2)
|
w.left.img:set_top((h1 + h2 + h3 + 20 - 48)/2)
|
||||||
|
|
||||||
w.visible = true
|
w.visible = true
|
||||||
|
@ -135,7 +136,7 @@ local function translate(request_string)
|
||||||
naughty.notify({
|
naughty.notify({
|
||||||
preset = naughty.config.presets.critical,
|
preset = naughty.config.presets.critical,
|
||||||
title = 'Translate Widget Error',
|
title = 'Translate Widget Error',
|
||||||
text = 'resp_json',
|
text = resp_json,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue