/**
  * Busca o texto do textview
  * 
  * @name get_text()
  * @return string $text Texto escrito no textview
  */
 public function get_text()
 {
     // Busca o buffer
     $buffer = parent::get_buffer();
     // Busca o inicio e fim do text
     $start = $buffer->get_start_iter();
     $end = $buffer->get_end_iter();
     // Retorna o texto
     return $buffer->get_text($start, $end);
 }
예제 #2
0
 /**
  * Class Constructor
  * @param  $message    A string containint the question
  * @param  $action_yes Action taken for YES response
  * @param  $action_no  Action taken for NO  response
  */
 public function __construct($message, TAction $action_yes, TAction $action_no = NULL)
 {
     $buttons = array(Gtk::STOCK_YES, Gtk::RESPONSE_YES);
     if ($action_no instanceof TAction) {
         $buttons[] = Gtk::STOCK_NO;
         $buttons[] = Gtk::RESPONSE_NO;
     }
     $buttons[] = Gtk::STOCK_CANCEL;
     $buttons[] = Gtk::RESPONSE_CANCEL;
     parent::__construct('', NULL, Gtk::DIALOG_MODAL, $buttons);
     parent::set_position(Gtk::WIN_POS_CENTER);
     parent::set_size_request(500, 300);
     $textview = new GtkTextView();
     $textview->set_wrap_mode(Gtk::WRAP_WORD);
     $textview->set_border_width(12);
     $textbuffer = $textview->get_buffer();
     $tagtable = $textbuffer->get_tag_table();
     $customTag = new GtkTextTag();
     $tagtable->add($customTag);
     $customTag->set_property('foreground', '#525252');
     $tagBegin = $textbuffer->create_mark('tagBegin', $textbuffer->get_end_iter(), true);
     $textbuffer->insert_at_cursor("\n   " . $message);
     $tagEnd = $textbuffer->create_mark('tagEnd', $textbuffer->get_end_iter(), true);
     $start = $textbuffer->get_iter_at_mark($tagBegin);
     $end = $textbuffer->get_iter_at_mark($tagEnd);
     $textbuffer->apply_tag($customTag, $start, $end);
     $textview->set_editable(FALSE);
     $textview->set_cursor_visible(FALSE);
     $pango = new PangoFontDescription('Sans 14');
     $textview->modify_font($pango);
     $image = GtkImage::new_from_stock(Gtk::STOCK_DIALOG_QUESTION, Gtk::ICON_SIZE_DIALOG);
     $scroll = new GtkScrolledWindow();
     $scroll->set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_ALWAYS);
     $scroll->add($textview);
     $hbox = new GtkHBox();
     $this->vbox->pack_start($hbox);
     $hbox->pack_start($image, FALSE, FALSE);
     $hbox->pack_start($scroll, TRUE, TRUE);
     $this->show_all();
     $result = parent::run();
     if ($result == Gtk::RESPONSE_YES) {
         parent::destroy();
         call_user_func_array($action_yes->getAction(), array($action_yes->getParameters()));
     } else {
         if ($result == Gtk::RESPONSE_NO) {
             parent::destroy();
             call_user_func_array($action_no->getAction(), array($action_no->getParameters()));
         } else {
             parent::destroy();
         }
     }
 }
예제 #3
0
 /**
  * Class Constructor
  * @param $type    Type of the message (info, error)
  * @param $message Message to be shown
  * @param $action  Action to be processed when closing the dialog
  */
 public function __construct($type, $message, TAction $action = NULL)
 {
     parent::__construct('', NULL, Gtk::DIALOG_MODAL, array(Gtk::STOCK_OK, Gtk::RESPONSE_OK));
     parent::set_position(Gtk::WIN_POS_CENTER);
     parent::set_size_request(500, 300);
     $textview = new GtkTextView();
     $textview->set_wrap_mode(Gtk::WRAP_WORD);
     $textview->set_border_width(12);
     $textbuffer = $textview->get_buffer();
     $tagtable = $textbuffer->get_tag_table();
     $customTag = new GtkTextTag();
     $tagtable->add($customTag);
     $customTag->set_property('foreground', '#525252');
     $message = "\n   " . str_replace('<br>', "\n   ", $message);
     $tagBegin = $textbuffer->create_mark('tagBegin', $textbuffer->get_end_iter(), true);
     $textbuffer->insert_at_cursor(strip_tags($message));
     $tagEnd = $textbuffer->create_mark('tagEnd', $textbuffer->get_end_iter(), true);
     $start = $textbuffer->get_iter_at_mark($tagBegin);
     $end = $textbuffer->get_iter_at_mark($tagEnd);
     $textbuffer->apply_tag($customTag, $start, $end);
     $textview->set_editable(FALSE);
     $textview->set_cursor_visible(FALSE);
     $pango = new PangoFontDescription('Sans 14');
     $textview->modify_font($pango);
     $image = $type == 'info' ? GtkImage::new_from_stock(Gtk::STOCK_DIALOG_INFO, Gtk::ICON_SIZE_DIALOG) : GtkImage::new_from_stock(Gtk::STOCK_DIALOG_ERROR, Gtk::ICON_SIZE_DIALOG);
     $scroll = new GtkScrolledWindow();
     $scroll->set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_ALWAYS);
     $scroll->add($textview);
     $hbox = new GtkHBox();
     $this->vbox->pack_start($hbox);
     $hbox->pack_start($image, FALSE, FALSE);
     $hbox->pack_start($scroll, TRUE, TRUE);
     $this->show_all();
     parent::connect('key_press_event', array($this, 'onClose'));
     $result = parent::run();
     if ($result == Gtk::RESPONSE_OK) {
         if ($action) {
             $parameters = $action->getParameters();
             call_user_func_array($action->getAction(), array($parameters));
         }
     }
     parent::destroy();
 }
        $mark2 = $buffer->get_mark('selection_bound');
    } else {
        $mark2 = $buffer->get_mark('insert');
    }
    // Get the iter at the other mark.
    $iter2 = $buffer->get_iter_at_offset(0);
    $buffer->get_iter_at_mark($iter2, $mark2);
    echo 'Iter1: ' . $iter->get_offset() . "\t";
    echo 'Iter2: ' . $iter2->get_offset() . "\t";
    // Print the text between the two iters.
    echo 'SELECTION: ' . $buffer->get_text($iter, $iter2) . "\n";
}
// Create a GtkTextView.
$text = new GtkTextView();
// Get the buffer from the view.
$buffer = $text->get_buffer();
// Add some text.
$buffer->set_text('Moving a mark is done with either move_mark or move_mark_by_name.');
// Connect the printSelected method.
$buffer->connect('mark-set', 'printSelected');
// How NOT to move the cursor to the beginning of the text.
echo "Move to start\n";
$buffer->move_mark_by_name('insert', $buffer->get_start_iter());
$buffer->move_mark_by_name('selection_bound', $buffer->get_start_iter());
// How NOT to select a range of text.
echo "Select range\n";
$buffer->move_mark_by_name('selection_bound', $buffer->get_iter_at_offset(7));
$buffer->move_mark_by_name('insert', $buffer->get_iter_at_offset(16));
// The better way to move the cursor to the beginning of the text.
echo "Move to start\n";
$buffer->place_cursor($buffer->get_start_iter());
<?php

function varDumpTag($tag)
{
    var_dump($tag);
}
$view = new GtkTextView();
$buffer = $view->get_buffer();
$textTable = $buffer->get_tag_table();
$tag = new GtkTextTag('Bob');
$textTable->add($tag);
$textTable->lookup('Bob');
$textTable->foreach('varDumpTag');
예제 #6
0
	/**
	 * Returns the text from a textview.
	 * @param GtkTextView $tv The textview where the text should be read from.
	*/
	function textview_gettext(GtkTextView $tv){
		return $tv->get_buffer()->get_text(
			$tv->get_buffer()->get_start_iter(),
			$tv->get_buffer()->get_end_iter()
		);
	}