From 73c7c463adda5101f53112cff24ed02ea9e1f7f5 Mon Sep 17 00:00:00 2001 From: Jesse van den Kieboom Date: Fri, 23 Dec 2005 13:23:51 +0000 Subject: [PATCH] Added grabbing focus --- gnoemoe/widgets/gm-world-view.c | 64 +++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 6 deletions(-) diff --git a/gnoemoe/widgets/gm-world-view.c b/gnoemoe/widgets/gm-world-view.c index fd11107..e3b4e5a 100644 --- a/gnoemoe/widgets/gm-world-view.c +++ b/gnoemoe/widgets/gm-world-view.c @@ -9,6 +9,7 @@ #include "gm-editor-view.h" #include "gm-embedded-view.h" #include "gm-external-view.h" +#include "gm-log-view.h" #include "../gm-debug.h" #include "../gm-support.h" @@ -60,7 +61,11 @@ void on_gm_world_view_world_text_view_url_activate(GmWorldView *view, gchar const *url); void on_gm_world_view_editor_view_close_clicked(GtkButton *button, GtkWidget *view); - +void on_gm_world_view_log_view_close_clicked(GtkButton *button, + GtkWidget *view); + +void on_gm_world_view_switch_page(GmWorldView *view, GtkNotebookPage *page, + guint page_num, gpointer user_data); gboolean on_gm_world_view_world_input_view_key_pressed(GtkWidget *widget, GdkEventKey *event, GmWorldView *view); @@ -197,13 +202,36 @@ gm_world_view_update_status(GmWorldView *view, gchar const *status) { GtkWidget * gm_world_view_log_page_new(GmWorldView *view, gchar const *filename) { - /*GtkWidget *label; + gchar *text = gm_read_file(filename); + gchar *base; GmLabelInfo info; - GtkWidget *scrolled_window = gtk_scrolled_window_new(); - GtkWidget *text_view; + GtkWidget *log_view; + GtkWidget *label; - label = gm_create_tab_label("editor_text.xpm", */ - return NULL; + if (text == NULL) { + return NULL; + } + + base = g_path_get_basename(filename); + label = gm_create_tab_label("editor_text.xpm", base, TRUE, &info); + g_free(base); + + log_view = GTK_WIDGET(gm_log_view_new()); + gtk_widget_show(log_view); + + gtk_notebook_append_page(GTK_NOTEBOOK(view), log_view, label); + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(view), TRUE); + gtk_notebook_set_current_page(GTK_NOTEBOOK(view), + gtk_notebook_page_num(GTK_NOTEBOOK(view), log_view)); + + g_signal_connect(info.button_exit, "clicked", + G_CALLBACK(on_gm_world_view_log_view_close_clicked), + log_view); + + gm_log_view_set_text(GM_LOG_VIEW(log_view), text); + g_free(text); + + return log_view; } GtkWidget * @@ -310,6 +338,9 @@ gm_world_view_init(GmWorldView *view) { label = gm_create_tab_label("world.svg", _("World"), FALSE, &info); gtk_notebook_append_page(GTK_NOTEBOOK(view), gm_world_view_world_page_new(view), label); + + g_signal_connect(view, "switch-page", + G_CALLBACK(on_gm_world_view_switch_page), NULL); } void @@ -550,6 +581,12 @@ on_gm_world_view_editor_view_close_clicked(GtkButton *button, } } +void +on_gm_world_view_log_view_close_clicked(GtkButton *button, + GtkWidget *view) { + gtk_widget_destroy(view); +} + void on_gm_world_view_editor_view_modified_changed(GmEditorView *editor_view, @@ -759,3 +796,18 @@ on_gm_world_view_world_text_view_url_activate(GmWorldView *view, gchar const *url) { gm_open_url(url); } + +gboolean +gm_world_view_input_grab_focus(GmWorldView *view) { + gtk_widget_grab_focus(GTK_WIDGET(view->priv->text_view_input)); + return FALSE; +} + +void +on_gm_world_view_switch_page(GmWorldView *view, GtkNotebookPage *page, + guint page_num, gpointer user_data) { + if (page_num == 0) { + g_idle_add((GSourceFunc)gm_world_view_input_grab_focus, view); + } +} +