[gnome-builder: 9/11] debuggerui: feed text into the terminal when running commands



commit 4a58afdcd81b3c08a1f2306bce7e32534a31a221
Author: Christian Hergert <chergert redhat com>
Date:   Sat Jul 4 10:19:01 2020 -0700

    debuggerui: feed text into the terminal when running commands

 src/plugins/debuggerui/ide-debugger-log-view.c | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)
---
diff --git a/src/plugins/debuggerui/ide-debugger-log-view.c b/src/plugins/debuggerui/ide-debugger-log-view.c
index 0f73f9c5d..b051dcf53 100644
--- a/src/plugins/debuggerui/ide-debugger-log-view.c
+++ b/src/plugins/debuggerui/ide-debugger-log-view.c
@@ -99,17 +99,32 @@ ide_debugger_log_view_set_property (GObject      *object,
 
 static void
 on_entry_activate_cb (GObject      *source,
-                      GAsyncResult *res,
+                      GAsyncResult *result,
                       gpointer      user_data)
 {
+  IdeDebugger *debugger = (IdeDebugger *)source;
   g_autoptr(IdeDebuggerLogView) self = user_data;
+  g_autoptr(GError) error = NULL;
 
-  g_return_if_fail (IDE_IS_DEBUGGER_LOG_VIEW (self));
-  g_return_if_fail (IDE_IS_TASK (res));
+  IDE_ENTRY;
+
+  g_assert (IDE_IS_DEBUGGER (debugger));
+  g_assert (G_IS_ASYNC_RESULT (result));
+  g_assert (IDE_IS_DEBUGGER_LOG_VIEW (self));
 
   gtk_entry_set_text (self->commandentry, "");
   gtk_widget_set_sensitive (GTK_WIDGET (self->commandentry), TRUE);
   gtk_widget_grab_focus (GTK_WIDGET (self->commandentry));
+
+  if (!ide_debugger_interpret_finish (debugger, result, &error))
+    {
+      vte_terminal_feed (VTE_TERMINAL (self->terminal),
+                         error->message,
+                         strlen (error->message));
+      vte_terminal_feed (VTE_TERMINAL (self->terminal), "\r\n", 2);
+    }
+
+  IDE_EXIT;
 }
 
 static void
@@ -125,6 +140,10 @@ on_entry_activate (IdeDebuggerLogView *self,
   if (ide_str_empty0 (text))
     return;
 
+  vte_terminal_feed (VTE_TERMINAL (self->terminal), "> ", 2);
+  vte_terminal_feed (VTE_TERMINAL (self->terminal), text, strlen (text));
+  vte_terminal_feed (VTE_TERMINAL (self->terminal), "\r\n", 2);
+
   if (self->debugger != NULL)
     {
       gtk_widget_set_sensitive (GTK_WIDGET (self->commandentry), FALSE);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]