вторник, 31 мая 2011 г.

Conky-Lense. Надписи и линии

Одними иконками сложно отображать полезную информацию. А значит под каждым значком должна быть поясняющая надпись. Кроме того, если внимательно рассмотреть меню приложений, можно увидеть разбивку по категориям и разделительные линии. Их тоже необходимо добавить на Conky.


Из конфигурации в конфигурацию переходят функции написанные почти год назад. Немного подправив под нынешние реалии, получаем такой вывод текста с выравниванием по центру:

--[[Функция вывода текста с выравниванием по центру]]--

function fDrawTextCenter (nXCenter, nYCenter, sText)

-- nXCenter, nYCenter - координаты центра для вывода
-- sText - отображаемый текст

local extents = cairo_text_extents_t:create()
cairo_text_extents (cr, sText, extents)
local nXSpace = nXCenter-(extents.width/2)
local nYSpace = nYCenter
cairo_move_to (cr, nXSpace, nYSpace)
cairo_show_text(cr, sText)

end


С циклами опять же не будем заморачиваться. Одна строчка кода - одна надпись. Добавим лишь переменные для общих координат:

noXStringIcon=noXIcon+22
noYStringIcon=noYIcon+70
local nXStringStep=200
local nYStringStep=180
local nYBWStep=20

Далее пойдут стоки такого типа:

cairo_select_font_face (cr, 'Ubuntu', 0, 0)
cairo_set_font_size (cr, 16)
cairo_set_source_rgba(cr, fRGBtoARGB (0xffffff, 1))

fDrawTextCenter (noXStringIcon, noYStringIcon, 'Надпись')
fDrawTextCenter (noXStringIcon, noYStringIcon+nYBWStep, 'Подробности')
fDrawTextCenter (nXStringStep+noXStringIcon, noYStringIcon, 'Надпись')
fDrawTextCenter (nXStringStep+noXStringIcon, noYStringIcon+nYBWStep, 'Подробности')
fDrawTextCenter (2*nXStringStep+noXStringIcon, noYStringIcon, 'Надпись')
fDrawTextCenter (2*nXStringStep+noXStringIcon, noYStringIcon+nYBWStep, 'Подробности')



fDrawTextCenter (noXStringIcon, nYStringStep+noYStringIcon, 'Надпись')
fDrawTextCenter (noXStringIcon, nYStringStep+noYStringIcon+nYBWStep, 'Подробности')
fDrawTextCenter (nXStringStep+noXStringIcon, nYStringStep+noYStringIcon, 'Надпись')
fDrawTextCenter (nXStringStep+noXStringIcon, nYStringStep+noYStringIcon+nYBWStep, 'Подробности')
fDrawTextCenter (2*nXStringStep+noXStringIcon, nYStringStep+noYStringIcon, 'Надпись')
fDrawTextCenter (2*nXStringStep+noXStringIcon, nYStringStep+noYStringIcon+nYBWStep, 'Подробности')



fDrawTextCenter (noXStringIcon, 2*nYStringStep+noYStringIcon, 'Надпись')
fDrawTextCenter (noXStringIcon, 2*nYStringStep+noYStringIcon+nYBWStep, 'Подробности')
fDrawTextCenter (nXStringStep+noXStringIcon, 2*nYStringStep+noYStringIcon, 'Надпись')
fDrawTextCenter (nXStringStep+noXStringIcon, 2*nYStringStep+noYStringIcon+nYBWStep, 'Подробности')
fDrawTextCenter (2*nXStringStep+noXStringIcon, 2*nYStringStep+noYStringIcon, 'Надпись')
fDrawTextCenter (2*nXStringStep+noXStringIcon, 2*nYStringStep+noYStringIcon+nYBWStep, 'Подробности')



За многоточием скрывается код, который можно написать по аналогии.
Затем добавляем категории с миниатюрными иконками:

cairo_set_font_size (cr, 18)
cairo_move_to (cr, 60, 60)
cairo_show_text(cr, 'Категория')
cairo_move_to (cr, 60, 240)
cairo_show_text(cr, 'Категория')
cairo_move_to (cr, 60, 420)
cairo_show_text(cr, 'Категория')

fShowIcon (30, 43, '/путь/до/иконки.png')
fShowIcon (30, 223, '/путь/до/иконки.png')
fShowIcon (30, 403, '/путь/до/иконки.png')

И последний штрих - разделительные линии:

cairo_set_source_rgba(cr, fRGBtoARGB(0x808080, 0.6))
cairo_set_line_width (cr, 1)
cairo_move_to(cr, 25, 205)
cairo_line_to(cr, nWidth-25, 205)
cairo_move_to(cr, 25, 385)
cairo_line_to(cr, nWidth-25, 385)
cairo_stroke(cr)

На этом основу можно считать законченной. Дальнейшее развитие зависит от вашей богатой фантазии. В следующей статье напишу, что добавил сам, хотя, по значку жесткого диска можно догадаться, что же там будет.


Послесловие:
В мире очень много красивых мест, одно из таких - ратуша в Несвиже, возведенная в Белоруси в конце 16-го века. Ратуша окружена торговыми рядами, которые, если судить по фотографиям на vandrouka.by, предают ей довольно внушительный вид.

Смотри также:
Conky-Lense. Расставляем иконки

0 коммент.:

Отправить комментарий