Непосредственно сам редактор у нас займёт только четыре строчки:
$buffer = new GtkTextBuffer();
$buffer->set_text("Привет, мир!\nЯ - текстовый редактор на PHP-GTK2 :)");
$text = new GtkTextView();
$text->set_buffer($buffer);
Сначала создаём буфер, содержащий текст, затем текстовое поле и добавляем в это поле текст из буфера.
Для того, чтобы обрабатывать длинные тексты поместим GtkTextView в контейнер с полосами прокрутки.
$scroll = new GtkScrolledWindow();
$scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
$scroll->add($text);
Каркас готов. В следующих статьях мы приведём его в более пристойный вид. Полный код программы:
<?php
$window = new GtkWindow();
$window->set_size_request(300, 150);
$window->set_position(Gtk::WIN_POS_CENTER);
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
$buffer = new GtkTextBuffer();
$buffer->set_text("Привет, мир!\nЯ - текстовый редактор на PHP-GTK2 :)");
$text = new GtkTextView();
$text->set_buffer($buffer);
$scroll = new GtkScrolledWindow();
$scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
$scroll->add($text);
$window->add($scroll);
$window->show_all();
Gtk::main();
?>
2 комментария:
А зачем сначала помещать текст в буфер? Почему нельзя текст поместить сразу же в текстовое поле?
Потому что GtkTextView предназначен для отображения GtkTextBuffer, как некий контейнер, но напрямую (без буфера) текст ему передать нельзя.
Отправить комментарий