All pastes #188800 Raw Edit

Stuff

public text v1 · immutable
·published 2006-10-02 14:45 UTC
rendered paste body
#include <gtk/gtk.h>
#include <string.h>

GtkWidget *view;

static void
print(const char *text)
{
	gtk_text_buffer_insert_at_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)),
			text, strlen(text));
	gtk_text_buffer_insert_at_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)),
			"\n\n", 2);
}

static gboolean
grab_focus(gpointer null)
{
	gtk_widget_grab_focus(view);
	return FALSE;
}

static gboolean
mouse_action(const char *text)
{
	print(text);
	g_timeout_add(0, grab_focus, NULL);;
	return FALSE;
}

int main()
{
	gtk_init(NULL, NULL);

	GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL), *label;

	GtkWidget *notebook = gtk_notebook_new();

	gtk_container_add(GTK_CONTAINER(win), notebook);

	GtkWidget *page = gtk_vbox_new(FALSE, 0);
	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, label = gtk_label_new("Page 1"));

	page = gtk_vbox_new(FALSE, 0);
	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, label = gtk_label_new("Page 2"));

	view = gtk_text_view_new();
	gtk_container_add(GTK_CONTAINER(page), view);

	g_signal_connect_swapped(G_OBJECT(notebook), "button_press_event", G_CALLBACK(mouse_action), "mouse down");

	g_signal_connect_swapped(G_OBJECT(notebook), "focus_tab", G_CALLBACK(print), "focus-tab");
	g_signal_connect_swapped(G_OBJECT(notebook), "select_page", G_CALLBACK(print), "select-page");
	g_signal_connect_swapped(G_OBJECT(notebook), "switch_page", G_CALLBACK(print), "switch-page");

	gtk_widget_show_all(win);

	gtk_main();

	return 0;
}