From 40d4b16f3d253de036a7192da8fce63f99df5371 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Fri, 8 Jun 2001 22:27:45 +0000 Subject: edit and compile menu entries added --- mixgtk/mixgtk_gen_handlers.c | 92 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 75 insertions(+), 17 deletions(-) (limited to 'mixgtk/mixgtk_gen_handlers.c') diff --git a/mixgtk/mixgtk_gen_handlers.c b/mixgtk/mixgtk_gen_handlers.c index b687a6d..904bcb3 100644 --- a/mixgtk/mixgtk_gen_handlers.c +++ b/mixgtk/mixgtk_gen_handlers.c @@ -26,39 +26,35 @@ #include "mixgtk_cmd_dispatcher.h" #include "mixgtk_config.h" -void -on_main_window_destroy (GtkWidget *w, gpointer data) -{ - gtk_main_quit (); -} +typedef void (*file_callback_t)(const gchar *file); + +static file_callback_t callback_ = NULL; static void -on_file_open_ok_ (GtkWidget *w, gpointer fs) +on_file_ok_ (GtkWidget *w, gpointer fs) { const gchar *file = gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)); - gchar *command = g_strdup_printf ("%s %s", - mix_vm_command_to_string (MIX_CMD_LOAD), - file); gtk_widget_destroy (GTK_WIDGET (fs)); - mixgtk_cmd_dispatcher_dispatch (command); - g_free (command); + if (callback_) callback_ (file); } static void -on_file_open_destroy_ (GtkWidget *w, gpointer data) +on_file_destroy_ (GtkWidget *w, gpointer data) { gtk_grab_remove (GTK_WIDGET (w)); } -void -on_file_open_activate (GtkWidget *w, gpointer data) +static void show_dlg_ (const gchar *title, const gchar *pattern) { - GtkWidget *file = gtk_file_selection_new ("Open program"); + GtkWidget *file = gtk_file_selection_new (title); + if (pattern) + gtk_file_selection_complete (GTK_FILE_SELECTION (file), pattern); + gtk_signal_connect (GTK_OBJECT (file), "destroy", - (GtkSignalFunc) on_file_open_destroy_, + (GtkSignalFunc) on_file_destroy_, GTK_OBJECT (file)); gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (file)->ok_button), - "clicked", (GtkSignalFunc) on_file_open_ok_, + "clicked", (GtkSignalFunc) on_file_ok_, GTK_OBJECT (file)); gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (file)->cancel_button), @@ -68,6 +64,68 @@ on_file_open_activate (GtkWidget *w, gpointer data) gtk_grab_add (file); } +/* exec prompt command */ +static void exec_cmd_ (mix_vm_command_t cmd, const gchar *arg) +{ + gchar *command; + if (arg) + command = g_strdup_printf ("%s %s", + mix_vm_command_to_string (cmd), + arg); + else + command = g_strdup (mix_vm_command_to_string (cmd)); + mixgtk_cmd_dispatcher_dispatch (command); + g_free (command); +} + +/* load mix binary */ +static void open_cb_ (const gchar *file) +{ + if (file) + exec_cmd_ (MIX_CMD_LOAD, file); +} + +void +on_file_open_activate (GtkWidget *w, gpointer data) +{ + callback_ = open_cb_; + show_dlg_ ("Load MIX program...", "*.mix"); +} + +/* edit mixal source */ +static void edit_cb_ (const gchar *file) +{ + exec_cmd_ (MIX_CMD_EDIT, file); +} + +void +on_file_edit_activate (GtkWidget *w, gpointer data) +{ + callback_ = edit_cb_; + show_dlg_ ("Edit MIXAL source file...", + mixgtk_cmd_dispatcher_get_src_path ()); +} + +/* compile mixal source */ +static void compile_cb_ (const gchar *file) +{ + exec_cmd_ (MIX_CMD_COMPILE, file); +} + +void +on_file_compile_activate (GtkWidget *w, gpointer data) +{ + callback_ = compile_cb_; + show_dlg_ ("Compile MIXAL source file...", + mixgtk_cmd_dispatcher_get_src_path ()); +} + +void +on_main_window_destroy (GtkWidget *w, gpointer data) +{ + gtk_main_quit (); +} + void on_debug_run_activate (GtkWidget *w, gpointer p) { -- cgit v1.2.3