Problem
You want to read a text file into a GtkTextView as shown below:
Solution
- Read the entire file into a string with
file_get_contents($filename)
. - Insert the text into the text buffer with GtkTextbuffer::set_text().
Sample Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 28 29 30 31 32 33 34 35 36 37 38 | <?php $window = new GtkWindow(); $window->set_size_request(400, 240); $window->connect_simple('destroy', array('Gtk','main_quit')); $window->add($vbox = new GtkVBox()); // display title $title = new GtkLabel("Read a text file into GtkTextView"); $title->modify_font(new PangoFontDescription("Times New Roman Italic 10")); $title->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#0000ff")); $title->set_size_request(-1, 40); $vbox->pack_start($title, 0, 0); $vbox->pack_start(new GtkLabel(), 0, 0); // Create a new buffer and a new view to show the buffer. $filename = $argv[0]; // note 1 $contents = file_get_contents($filename); // note 2 $buffer = new GtkTextBuffer(); // note 3 $buffer->set_text($contents); // note 4 $view = new GtkTextView(); // note 5 $view->set_buffer($buffer); // note 6 $view->set_wrap_mode(Gtk::WRAP_WORD); $scrolled_win = new GtkScrolledWindow(); $scrolled_win->set_policy( Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); $vbox->pack_start($scrolled_win); $scrolled_win->add($view); $window->show_all(); Gtk::main(); ?> |
Output
As shown above.Explanation
- Set your filename in the variable
$filename
. Here I just use the filename of the script you are running. - Read in the entire file.
- Create a new text buffer.
- Insert the text into the text buffer.
- Create a new text view.
- Binds the text buffer to the text view.
Read more...