Настроить графический интерфейс
Общие сведения о GTK
При создании графического интерфейса блокнота Zim применён инструментарий GTK.
GTK (аббревиатура от GIMP ToolKit) представляет собой кроссплатформенную библиотеку элементов интерфейса пользователя (виджетов). Элементы интерфейса организованы в иерархию классов. В каждый пользовательский интерфейс добавляют кнопки, текстовые метки, поля ввода, выпадающие меню и т.п. Кроме того, GTK управляет событиями: отслеживает нажатие кнопок мыши и клавиатуры или изменение размеров окна.
Библиотека GTK популярна в графических интерфейсах Wayland и X Window System.
В свою очередь инструментарий GTK зависит от следующих библиотек:
Cairo— отрисовка векторной графики;GLib— графическое расширение библиотекиlibc;Pango— библиотека отображения текста на разных языках, содержащая различные способы отображения шрифтов;ATK(GNOME ATK) — инструментарий для построения интерфейсов в среде рабочего стола GNOME.
GTK можно прочитать на вебсайте проекта.Описание интерфейса Zim
Язык программирования 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"