summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk_cmd_dispatcher.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixgtk/mixgtk_cmd_dispatcher.c')
-rw-r--r--mixgtk/mixgtk_cmd_dispatcher.c68
1 files changed, 36 insertions, 32 deletions
diff --git a/mixgtk/mixgtk_cmd_dispatcher.c b/mixgtk/mixgtk_cmd_dispatcher.c
index 024c09d..f034cd3 100644
--- a/mixgtk/mixgtk_cmd_dispatcher.c
+++ b/mixgtk/mixgtk_cmd_dispatcher.c
@@ -58,6 +58,14 @@ typedef struct mixgtk_dispatch_
static struct mixgtk_dispatch_ dis_data_ = {NULL};
+static GtkWidget *ext_dlg_ = NULL;
+static GtkWidget *ed_entry_ = NULL;
+static GtkWidget *asm_entry_ = NULL;
+
+static const gchar *ED_NAME_ = "editor_entry";
+static const gchar *ASM_NAME_ = "mixasm_entry";
+
+
static void
log_command_ (mixgtk_dispatch_data_t *dis, const gchar *cmd)
{
@@ -247,13 +255,6 @@ read_config_ (void)
}
-static GtkWidget *ext_dlg_ = NULL;
-static GtkWidget *ed_entry_ = NULL;
-static GtkWidget *asm_entry_ = NULL;
-
-static const gchar *ED_NAME_ = "editor_entry";
-static const gchar *ASM_NAME_ = "mixasm_entry";
-
void
on_external_programs_activate ()
{
@@ -298,24 +299,27 @@ on_extern_ok_button_clicked ()
gboolean
mixgtk_cmd_dispatcher_init (mixgtk_dialog_id_t top)
{
- if (!dis_data_.prompt)
- {
- dis_data_.prompt =
- mixgtk_widget_factory_get (top, MIXGTK_WIDGET_PROMPT);
- g_return_val_if_fail (dis_data_.prompt != NULL, FALSE);
- dis_data_.log =
- mixgtk_widget_factory_get (top, MIXGTK_WIDGET_LOG);
- g_return_val_if_fail (dis_data_.log != NULL, FALSE);
- }
+ static gboolean restart = FALSE;
+
+ ext_dlg_ = NULL;
+ ed_entry_ = NULL;
+ asm_entry_ = NULL;
+
+ dis_data_.prompt =
+ mixgtk_widget_factory_get (top, MIXGTK_WIDGET_PROMPT);
+ g_return_val_if_fail (dis_data_.prompt != NULL, FALSE);
+ dis_data_.log =
+ mixgtk_widget_factory_get (top, MIXGTK_WIDGET_LOG);
+ g_return_val_if_fail (dis_data_.log != NULL, FALSE);
if (!dis_data_.dispatcher)
{
int r = pipe (dis_data_.fildes);
g_return_val_if_fail (r == 0, FALSE);
- /* connect stdout/stderr to the pipe's write end */
+ /* connect stdout/stderr to the pipe's write end
if (dup2 (dis_data_.fildes[1], STDOUT_FILENO) == -1
|| dup2 (dis_data_.fildes[1], STDERR_FILENO) == -1)
- return FALSE;
+ return FALSE;*/
dis_data_.out = fdopen (dis_data_.fildes[1], "w");
g_return_val_if_fail (dis_data_.out != NULL, FALSE);
r = fcntl (dis_data_.fildes[0], F_GETFL, 0);
@@ -330,24 +334,24 @@ mixgtk_cmd_dispatcher_init (mixgtk_dialog_id_t top)
install_hooks_ ();
}
- if (!dis_data_.status)
- {
- dis_data_.status =
- mixgtk_widget_factory_get (MIXGTK_MAIN, 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");
- }
-
+ dis_data_.status =
+ mixgtk_widget_factory_get (MIXGTK_MAIN, 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_ ();
- read_config_ ();
+ if (!restart) read_config_ ();
#ifdef HAVE_LIBHISTORY
- using_history ();
- stifle_history (MAX_HISTORY_);
+ if (!restart)
+ {
+ using_history ();
+ stifle_history (MAX_HISTORY_);
+ }
#endif
-
+
+ restart = TRUE;
return TRUE;
}