diff options
Diffstat (limited to 'mixgtk/mixgtk_cmd_dispatcher.c')
-rw-r--r-- | mixgtk/mixgtk_cmd_dispatcher.c | 62 |
1 files changed, 56 insertions, 6 deletions
diff --git a/mixgtk/mixgtk_cmd_dispatcher.c b/mixgtk/mixgtk_cmd_dispatcher.c index c5fef58..dc64f2f 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/02/26 03:15:18 jose" + * Last change: Time-stamp: "01/03/07 23:17:54 jose" * ------------------------------------------------------------------ * Copyright (C) 2001 Free Software Foundation, Inc. * @@ -26,6 +26,8 @@ #include <stdio.h> #include <mixlib/mix_vm_command.h> #include "mixgtk_cmd_dispatcher.h" +#include "mixgtk_mixvm.h" + /* a mix vm command dispatcher */ struct mixgtk_dispatch_ @@ -61,7 +63,7 @@ global_pre_hook_ (mix_vm_cmd_dispatcher_t *dis, else { gtk_text_insert (GTK_TEXT (dis_data_.log), NULL, NULL, NULL, - _("*** Invalid command\n"), -1); + _("\n*** Invalid command ***\n"), -1); } } @@ -76,6 +78,25 @@ global_post_hook_ (mix_vm_cmd_dispatcher_t *dis, dis_data_.out_buffer, dis_data_.out_buffer_size); } rewind (dis_data_.out); + mixgtk_mixvm_update_vm_widgets (); +} + +static void +load_post_hook_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg, + gpointer data) +{ +} + +static void +run_post_hook_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg, + gpointer data) +{ +} + +static void +next_post_hook_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg, + gpointer data) +{ } @@ -98,14 +119,41 @@ mixgtk_cmd_dispatcher_init (void) if (!out) return FALSE; dis_data_.out = out; dis_data_.dispatcher = mix_vm_cmd_dispatcher_new (out, out); - mix_vm_cmd_dispatcher_global_pre_hook(dis_data_.dispatcher, - global_pre_hook_, NULL); - mix_vm_cmd_dispatcher_global_post_hook(dis_data_.dispatcher, - global_post_hook_, NULL); + mix_vm_cmd_dispatcher_global_pre_hook (dis_data_.dispatcher, + global_pre_hook_, NULL); + mix_vm_cmd_dispatcher_global_post_hook (dis_data_.dispatcher, + global_post_hook_, NULL); + mix_vm_cmd_dispatcher_post_hook (dis_data_.dispatcher, + MIX_CMD_LOAD, load_post_hook_, + NULL); + mix_vm_cmd_dispatcher_post_hook (dis_data_.dispatcher, + MIX_CMD_RUN, run_post_hook_, + NULL); + mix_vm_cmd_dispatcher_post_hook (dis_data_.dispatcher, + MIX_CMD_NEXT, next_post_hook_, + NULL); } return TRUE; } +/* dispatch an externally provided command */ +void +mixgtk_cmd_dispatcher_dispatch (const gchar *command) +{ + GtkWidget *entry = mixgtk_widget_factory_get (MIXGTK_WIDGET_PROMPT); + g_return_if_fail (command != NULL); + g_assert (entry != NULL); + gtk_entry_set_text (GTK_ENTRY (entry), command); + on_mixvm_cmd_entry_activate (entry, NULL); +} + +/* get the underlying vm */ +extern mix_vm_t * +mixgtk_cmd_dispatcher_get_vm (void) +{ + return (mix_vm_t *) mix_vm_cmd_dispatcher_get_vm (dis_data_.dispatcher); +} + /* process new command */ void on_mixvm_cmd_entry_activate (GtkWidget *w, gpointer e) @@ -115,3 +163,5 @@ on_mixvm_cmd_entry_activate (GtkWidget *w, gpointer e) mix_vm_cmd_dispatcher_dispatch_text (dis_data_.dispatcher, text); gtk_entry_set_text (GTK_ENTRY (w), ""); } + + |