summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk_cmd_dispatcher.c
diff options
context:
space:
mode:
authorjaortega <jaortega>2001-03-15 17:26:39 +0000
committerjaortega <jaortega>2001-03-15 17:26:39 +0000
commit44984f46aa6fdc81fe8e5af29e09c9c624d864c5 (patch)
tree83bd0d7c26bdb603aa295c5341344420782c25a3 /mixgtk/mixgtk_cmd_dispatcher.c
parent52cac8c41a50145c385c0c13b95ee290a1628c97 (diff)
downloadmdk-44984f46aa6fdc81fe8e5af29e09c9c624d864c5.tar.gz
mdk-44984f46aa6fdc81fe8e5af29e09c9c624d864c5.tar.bz2
0.3 pre-release
Diffstat (limited to 'mixgtk/mixgtk_cmd_dispatcher.c')
-rw-r--r--mixgtk/mixgtk_cmd_dispatcher.c36
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;