<?
// test.php
function quit()
{
Gtk::main_quit();
}
function print_text()
{
global $textbuffer;
// 创建文本缓冲区的起始位置
$start = $textbuffer->get_start_iter();
// 创建文本缓冲区的结束位置
$end = $textbuffer->get_end_iter();
// 获取缓冲区的内容
/*
因为之前已经把textbuffer绑定到了textview了,所以textbuffer的文本就是textview的文本
*/
$text = $textbuffer->get_text($start,$end);
echo $text."n";
}
function insert_text()
{
global $textbuffer;
$end = $textbuffer->get_end_iter();
// 向文本缓冲区的结束位置插入文本
$textbuffer->insert($end,"nnew line",-1);
/*
如果想在最开始的位置插入,可以这样做
$start = $textbuffer->get_start_iter();
$textbuffer->insert($start,"nnew line",-1);
*/
}
$window = new GtkWindow();
$window->set_default_size(260,100);
$window->set_title("GTK TEXTVIEW");
$window->connect("destroy","quit");
// 创建GtkTextView
$textview = new GtkTextView();
// 创建GktTextBuffer
$textbuffer = new GtkTextBuffer();
// 设置textbuffer的文本为cccccc
$textbuffer->set_text("cccccc");
// 把textbuffer绑定到textview
$textview->set_buffer($textbuffer);
$button1 = new GtkButton("print text");
// 鼠标点击button1时执行print_text函数
$button1->connect("clicked","print_text");
$button2 = new GtkButton("insert text");
// 鼠标点击button2时执行insert_text函数
$button2->connect("clicked","insert_text");
$vbox = new GtkVBox(False,1);
$vbox->pack_start($textview,True,True);
$vbox->pack_start($button1,False,False);
$vbox->pack_start($button2,False,False);
$window->add($vbox);
$window->show_all();
Gtk::main();
?>