Сведения об изменении структуры графического интерфейса блокнота.
Графический интерфейс блокнота Zim создан с применением инструментария GTK.
GTK (аббревиатура от GIMP ToolKit) представляет собой кроссплатформенную библиотеку элементов интерфейса пользователя (виджетов). Элементы интерфейса организованы в иерархию классов. Каждый пользовательский интерфейс создаётся путём добавления в окно кнопок, текстовых меток, полей ввода, выпадающих меню и т.д. Кроме того, GTK управляет событиями. Отслеживает нажатия кнопок мыши и клавиатуры, изменение размеров окна.
Библиотека GTK популярна в графических интерфейсах Wayland и X Window System.
В свою очередь инструментарий GTK зависит от следующих библиотек:
Cairo — отрисовка векторной графики;
GLib — графическое расширение библиотеки libc;
Pango — библиотека отображения текста на разных языках, содержащая различные способы отображения шрифтов;
ATK (GNOME ATK) — инструментарий для построения интерфейсов в среде рабочего стола GNOME.
Подробнее о библиотеке GTK можно ознакомиться на сайте проекта.
Язык программирования Python — на котором написан Zim, — позволяет строить интерфейс, используя библиотеку GTK. Для этого применяется GObject-интроспекция через PyGI.
Описание интерфейса Zim расположено в отдельном файле gtkrc, который обычно сохранён в домашнем каталоге пользователя в виде ~/.gtkrc-2.0 или ~/.gtkrc-3.0.
Блокнот Zim управляет следующими элементами интерфейса GTK:
zim-pageview — отображает страницу (textview);
zim-pageindex — отображает индекс страниц (treeview) в боковой панели блокнота.
Пример изменения шрифта, используемого в индексе страниц, следует указать параметры шрифта в файле gtkrc:
style "zim-pageindex-style"
{
font_name = "Sans 8"
}
widget "*.zim-pageindex" style "zim-pageindex-style"
Пример компактного отображения дерева страниц:
style "gtkcompact"
{
GtkTreeView::vertical-separator=0
GtkTreeView::horizontal-separator=0
GtkTreeView::expander-size=6
GtkTreeView::fixed-height-mode=TRUE
GtkWidget::focus_padding=0
}
class "GtkWidget" style "gtkcompact"
Пример изменения цвета элементов страницы:
style "mycolors"
{
base[NORMAL]: "black"
base[SELECTED]: "#6699cc"
text[NORMAL]: "#c0c0c0"
}
widget "*.zim-pageview" style "mycolors"