С первого взгляда представленное на скриншоте окно имеет сложную структуру, но на самом деле процесс его создания очень прост. Для этого существует специальный класс GtkFontSelectionDialog(), который в качестве единственного параметра принимает строку, которая будет заголовком окна:
$dialog = new GtkFontSelectionDialog('Выбор шрифта');
По умолчанию в поле "Образец" вписан текст "абвгде АБВГДЕ abcde ABCDE", который зачастую не даёт полного представления о выбранном шрифте. Для изменения этого текста существует метод set_preview_text():
$dialog->set_preview_text('Текст предварительного просмотра');
Для того, чтобы явно указать выбранный изначально шрифт применяется set_font_name(), иначе выбирается системный шрифт. Если указанного шрифта найти не удалось, то, так же, выбирается системный:
$dialog->set_font_name('Sans 14');
Как видите, в самом низу имеется три кнопки. Повесим определённые действия на нажатие на них:
$dialog->apply_button->connect_simple('clicked', 'on_apply');
$dialog->cancel_button->connect_simple('clicked', 'on_cancel');
$dialog->ok_button->connect_simple('clicked', 'on_ok', $dialog);
function on_apply()
{
echo "Нажата кнопка 'Применить'\n";
}
function on_cancel()
{
echo "Нажата кнопка 'Отменить'\n";
}
function on_ok($dialog)
{
echo "Выбран шрифт '".$dialog->get_font_name()."'\n";
}
Функция on_ok() с помощью метода get_font_name() печатает выбранный шрифт, это значение в последствие можно подставить в set_font_name().
Замечание: если вам не нужна кнопка "Применить", то для отображения диалога вместо show_all() применяйте show(), так как эта кнопка по умолчанию скрыта, а show_all() не обращая на это внимания отображает все имеющиеся в окне виджеты.
Полный код программы:
<?php
$dialog = new GtkFontSelectionDialog('Выбор шрифта');
$dialog->set_position(Gtk::WIN_POS_CENTER);
$dialog->connect_simple('destroy', 'Gtk::main_quit');
$dialog->set_preview_text('Текст предварительного просмотра');
$dialog->set_font_name('Sans 14');
$dialog->apply_button->connect_simple('clicked', 'on_apply');
$dialog->cancel_button->connect_simple('clicked', 'on_cancel');
$dialog->ok_button->connect_simple('clicked', 'on_ok', $dialog);
function on_apply()
{
echo "Нажата кнопка 'Применить'\n";
}
function on_cancel()
{
echo "Нажата кнопка 'Отменить'\n";
}
function on_ok($dialog)
{
echo "Выбран шрифт '".$dialog->get_font_name()."'\n";
}
$dialog->show_all();
Gtk::main();
?>
1 комментарий:
Прикольно, с нетерпением жду следующих статей. Автор, спасибо тебе
Отправить комментарий