Opa pessoal!
Segue mais uma diquinha interessante que eu demorei “um cadinho” pra descobrir.
Algumas vezes não queremos colocar scroll horizontal em nossos TextViews. Então colocamos uma ScrolledWindow, o nosso GtkTextView dentro dele, e configuramos o container para ter scroll somente na vertical. Correto?
Porem o texto ainda continua correndo na horizontal. Isso por que existe um método do GtkTextView, chamado set_wrap_mode(). Com ele você pode fazer ele quebrar linha por palavra, por caractere, ou por caractere e quando der por palavra, ou inda não quebrar linha nenhuma, que é o valor padrão.
Os modos podem ser encontrados em http://gtk.php.net/manual/en/gtk.enum.wrapmode.php
Segue o código exemplo para me entenderem.
set_size_request(284, 284);
$scrolled->set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_ALWAYS); // Horizontal Never
$fixed->put($scrolled, 8, 8);
// ---------------------------------------------------------------------------------------------------------
// Cria o textview
// @since rev 1
$this->widgets['txtObservacoes'] = new GtkTextView();
$this->widgets['txtObservacoes']->set_wrap_mode(Gtk::WRAP_WORD_CHAR); // Quebra de linha por palavra ou Char
$scrolled->add($this->widgets['txtObservacoes']);
// ---------------------------------------------------------------------------------------------------------
// Cria a janela
// @since rev 1
$this->widgets['frmTeste'] = new GtkWindow();
$this->widgets['frmTeste']->set_size_request(300, 300);
$this->widgets['frmTeste']->set_resizable(FALSE);
$this->widgets['frmTeste']->set_title("Teste");
$this->widgets['frmTeste']->add($fixed);
$this->widgets['frmTeste']->set_position(GTK::WIN_POS_CENTER);
$this->widgets['frmTeste']->show_all();
// ---------------------------------------------------------------------------------------------------------
// Conecta o destroy
// @since rev 1
$this->widgets['frmTeste']->connect_simple("destroy", array("Gtk", "main_quit"));
}
}
// -----------------------------------------------------------------------------------------------------------------
// Inicia a aplicação
// @since rev 1
$teste = new Teste();
gtk::main();
Valeu! =)