diff options
Diffstat (limited to 'mixgtk/mixgtk_cmd_dispatcher.c')
-rw-r--r-- | mixgtk/mixgtk_cmd_dispatcher.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/mixgtk/mixgtk_cmd_dispatcher.c b/mixgtk/mixgtk_cmd_dispatcher.c index 71b5877..11acc1d 100644 --- a/mixgtk/mixgtk_cmd_dispatcher.c +++ b/mixgtk/mixgtk_cmd_dispatcher.c @@ -1,7 +1,7 @@ /* -*-c-*- -------------- mixgtk_cmd_dispatcher.c : * Implementation of the functions declared in mixgtk_cmd_dispatcher.h * ------------------------------------------------------------------ - * Last change: Time-stamp: "01/03/12 02:05:43 jose" + * Last change: Time-stamp: "01/03/15 16:01:43 jose" * ------------------------------------------------------------------ * Copyright (C) 2001 Free Software Foundation, Inc. * @@ -40,6 +40,8 @@ struct mixgtk_dispatch_ size_t out_buffer_size; GtkWidget *prompt; GtkWidget *log; + GtkWidget *status; + guint context; GCompletion *completions; }; @@ -101,8 +103,21 @@ static void load_post_hook_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg, gpointer data) { - mixgtk_mixal_load_file (); - mixgtk_mixal_update (); + static glong id = -1; + + if (mix_vm_cmd_dispatcher_get_last_result (dis)) + { + gchar *file = g_strdup (arg); + mixgtk_mixal_load_file (); + mixgtk_mixal_update (); + + if (id != -1) + gtk_statusbar_remove (GTK_STATUSBAR (dis_data_.status), + dis_data_.context, (guint)id); + id = + gtk_statusbar_push (GTK_STATUSBAR (dis_data_.status), dis_data_.context, + file); + } } static void @@ -182,22 +197,31 @@ mixgtk_cmd_dispatcher_init (void) if (!dis_data_.prompt) { dis_data_.prompt = mixgtk_widget_factory_get (MIXGTK_WIDGET_PROMPT); - if (!dis_data_.prompt) return FALSE; + g_return_val_if_fail (dis_data_.prompt != NULL, FALSE); dis_data_.log = mixgtk_widget_factory_get (MIXGTK_WIDGET_LOG); - if (!dis_data_.log) return FALSE; + g_return_val_if_fail (dis_data_.log != NULL, FALSE); } if (!dis_data_.dispatcher) { FILE *out = open_memstream (&(dis_data_.out_buffer), &(dis_data_.out_buffer_size)); - if (!out) return FALSE; + g_return_val_if_fail (out != NULL, FALSE); dis_data_.out = out; dis_data_.dispatcher = mix_vm_cmd_dispatcher_new (out, out); mix_vm_cmd_dispatcher_print_time (dis_data_.dispatcher, FALSE); install_hooks_ (); } + if (!dis_data_.status) + { + dis_data_.status = mixgtk_widget_factory_get (MIXGTK_WIDGET_STATUSBAR); + g_return_val_if_fail (dis_data_.status != NULL, FALSE); + dis_data_.context = gtk_statusbar_get_context_id (GTK_STATUSBAR + (dis_data_.status), + "cmd_dis_context"); + } + if (!dis_data_.completions) init_completions_ (); return TRUE; |