diff --git a/src/widgets/gm-world-view.c b/src/widgets/gm-world-view.c index 417c337..a3d0462 100644 --- a/src/widgets/gm-world-view.c +++ b/src/widgets/gm-world-view.c @@ -41,11 +41,14 @@ void on_gm_world_view_world_state_changing(GmWorld *world, guint state, GmWorldView *view); void on_gm_world_view_world_active_changed(GmWorld *world, gboolean active, GmWorldView *view); +void on_gm_world_view_world_status_changed(GmWorld *world, gchar const *text, + GmWorldView *view); + gboolean on_gm_world_view_world_text_view_scroll_event(GmWorldView *view, GdkEventScroll *event, GmWorldTextView *text); gboolean on_gm_world_view_world_input_view_key_pressed(GtkWidget *widget, GdkEventKey *event, GmWorldView *view); - + /* Signals */ /*enum { @@ -68,6 +71,8 @@ gm_world_view_finalize(GObject *object) { G_CALLBACK(on_gm_world_view_world_state_changing), view); g_signal_handlers_disconnect_by_func(view->priv->world, G_CALLBACK(on_gm_world_view_world_active_changed), view); + g_signal_handlers_disconnect_by_func(view->priv->world, + G_CALLBACK(on_gm_world_view_world_status_changed), view); g_object_unref(view->priv->world); G_OBJECT_CLASS(gm_world_view_parent_class)->finalize(object); @@ -176,6 +181,19 @@ gm_world_view_create_world_text_view(GmWorldView *view) { return scrolled_window; } +void +gm_world_view_update_status(GmWorldView *view, gchar const *status) { + gtk_statusbar_pop(view->priv->statusbar, 0); + + if (status == NULL) { + gtk_statusbar_push(view->priv->statusbar, 0, + _("Welcome to GnoeMoe, explorer of new worlds!")); + } else { + gtk_statusbar_push(view->priv->statusbar, 0, + status); + } +} + GtkWidget * gm_world_view_world_page_new(GmWorldView *view) { GtkWidget *vbox = gtk_vbox_new(FALSE, 0); @@ -193,15 +211,15 @@ gm_world_view_world_page_new(GmWorldView *view) { gtk_paned_pack2(GTK_PANED(hpaned), gm_world_view_userlist_new(view), FALSE, TRUE); - gtk_statusbar_push(GTK_STATUSBAR(status), 0, - _("Welcome to GnoeMoe, explorer of new worlds!")); gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(status), FALSE); gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), status, FALSE, FALSE, 0); - + view->priv->statusbar = GTK_STATUSBAR(status); view->priv->hpaned = GTK_HPANED(hpaned); + + gm_world_view_update_status(view, NULL); return vbox; } @@ -259,6 +277,9 @@ gm_world_view_new(GmWorld *world) { G_CALLBACK(on_gm_world_view_world_state_changing), view); g_signal_connect(world, "active_changed", G_CALLBACK(on_gm_world_view_world_active_changed), view); + g_signal_connect(world, "status_changed", + G_CALLBACK(on_gm_world_view_world_status_changed), view); + g_signal_connect(view->priv->text_view_input, "text_activate", G_CALLBACK(on_gm_world_input_view_world_text_activate), view); g_signal_connect(view, "destroy", @@ -493,16 +514,22 @@ on_gm_world_view_world_active_changed(GmWorld *world, gboolean active, } } +void +on_gm_world_view_world_status_changed(GmWorld *world, gchar const *text, + GmWorldView *view) { + gm_world_view_update_status(view, text); +} + gboolean on_gm_world_view_world_text_view_scroll_event(GmWorldView *view, GdkEventScroll *event, GmWorldTextView *text) { if (event->state & GDK_CONTROL_MASK) { switch (event->direction) { case GDK_SCROLL_UP: - // Font kleiner maken + // Decrease font size gm_world_view_change_font_size(view, -1); break; case GDK_SCROLL_DOWN: - // Font groter maken + // Increase font size gm_world_view_change_font_size(view, 1); break; default: