LINUX.ORG.RU

gtk2, GtkTextBuffer, загрузка текста по нажатию кнопки


0

0

/* ... */
static void load_text(GtkTextBuffer *buffer, gpointer data)
{ 
  GtkTextBuffer *b =  data;
   g_assert(b != NULL);
  gtk_text_buffer_set_text (b, tmp, -1);
}
/* ... */
 GtkWidget *textedit; 
 GtkTextBuffer *buf;

 textedit = gtk_text_view_new();
 buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textedit));

 g_signal_connect(G_OBJECT(show_log), "button-press-event", 
                  G_CALLBACK(load_text), buf);
/* ^^^соединение сигнала кнопки и функции загрузки текста^^^ */

Есть код, в котором создаётся текстовое поле ввода GtkTextView. 
Нужно чтобы по щелчку кнопки в него загружался 
заранее заданный текст. 
Вызываемой по щелчку по кнопке функции load_text() передаётся 
текстовый буфер (GtkTextBuffer) данного поля, и в ней 
символьный массив присваивается этому буферу. 
Не понятно, как правильно это реализовать. В разных примерах 
вызывающими всегда были обьекты, производные от GtkWidget, к 
указателю на который преобразовывался передаваемый gpointer. 
Например как здесь:  

static void cb_button_click(GtkButton *button, gpointer data)
{
  GtkWidget *label = GTK_WIDGET(data);

  g_assert(label != NULL);
  gtk_label_set_text(GTK_LABEL (label), choose_greeting());
}

А как поступать в случае с GtkTextBuffer, производного от 
GObject? 
Только начинаю изучать gtk2, поэтму особо не пинайте за такой 
глупый вопрос. Спасибо.
anonymous

ну, какой тип передаёш, в такой и касть в функции. типо

GtkTextBuffer * tb = GTK_TEXT_BUFFER (data);

это будет удобнее, сразу можно будет чёто днлать без дополнительных кастов.

bugmaker ★★★★☆
()
Ответ на: комментарий от anonymous

Ну так код свой выложи, разберёмся. Чего просто так гадать

welkam ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.