Вот наконец и добрался до последней части или о том, как вывести иконки погоды.
Для вывода иконок используем функцию
function display_images(t)
-- забираем картинку
image = (t.image)
-- создаём имидж изображения
local image_bg = cairo_image_surface_create_from_png (image)
-- забираем данные о ширине и высоте изображения из образа
local w_image = cairo_image_surface_get_width (image_bg)
local h_image = cairo_image_surface_get_height (image_bg)
-- т.к. начальная точка, левый верхний угол, вывода изображения находится в левом верхнем углу окна конки, переносим изображение
cairo_translate (cr, t.x, t.y)
-- масштабтруем изображение
cairo_scale (cr, t.width/w_image, t.height/h_image)
-- выводим изображение
cairo_set_source_surface (cr, image_bg, 0, 0)
cairo_paint (cr)
cairo_surface_destroy (image_bg)
end
Помещаем функцию в самый конец скрипта.
Далее необходимо взять набор иконок, я использую иконки от conkyForecast. Можно в сети найти любые иконки, главное, что бы они были в формате png.
Иконки помещаем в отдельную папку, в моем случае иконки находятся в папке ~/weathericons. Поэтому делаем ссылку на место хранения иконок
-- определяем домашнюю директорию, для возможности работы под любым пользователем
usrhome = os.getenv("HOME")
-- место хранения иконок погоды, для своих иконок измените путь к папке с иконками
weathericons = usrhome .. "/weathericons/"
В скрипте создаем таблицу соответствия названий получаемых с сайта иконок и иконок которые мы имеем. Эта таблица имеет такой вид
wimage = {
clear_dl = "32", -- Clear day
clear_ds = "32", -- Clear day
clear_nl = "31", -- Clear night
sunny_dl = "32", -- Clear day
sunny_ds = "32", -- Clear day
cloudy_dl = "26", -- Cloudy day
cloudy_ds = "26", -- Cloudy day
snow_dl = "16", -- Snow day
snow_ds = "16", -- Snow day
clear_nl = "31", -- Clear night
partly_clear_dl = "30", -- Partly Cloudy day
partly_clear_ds = "30", -- Partly Cloudy day
partly_clear_nl = "27", -- Partly Cloudy day
mostly_cloudy_dl = "28", -- Mostly Cloudy
mostly_cloudy_nl = "28", -- Mostly Cloudy
mostly_cloudy_ds = "28", -- Mostly Cloudy
mostly_clear_dl = "28", -- Mostly Cloudy
}
Это конечно не вся таблица, так как полный список названий получаемых с сайта иконок мне не известно. Просто при появлении новых названий их надо добавить в таблицу.
Строки, обрабатывающие названия иконок заменяем на такие
-- иконка прогноза погоды
local s,f,t = string.find(allweather, "weather_icons/([%a%p]*).gif", start)
if t ~= nil then
-- перекодировка иконок прогноза погоды
table.insert(weather_icon, weathericons .. wimage[t] .. ".png")
else
table.insert(weather_icon, weathericons .. "25.png")
end
-- иконка погоды
local s,f,t = string.find(nowweather, "weather_icons/([%a%p]*).gif\" width")
if t ~= nil then
now["weather_icon"] = weathericons .. wimage[t] .. ".png"
else
now["weather_icon"] = weathericons .. "25.png"
end
Окончательный вариант вместе с иконками можно взять здесь http://dl.dropbox.com/u/22038871/weater.tar.gz
А так всё это выглядит
Комментариев нет:
Отправить комментарий