about summary refs log tree commit diff stats
path: root/src/ui/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/core.c')
-rw-r--r--src/ui/core.c38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/ui/core.c b/src/ui/core.c
index 48999319..f80c6ad2 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -219,18 +219,28 @@ _ui_duck_exists(void)
     return wins_duck_exists();
 }
 
+static gboolean
+_ui_xmlconsole_exists(void)
+{
+    return wins_xmlconsole_exists();
+}
+
 static void
 _ui_handle_stanza(const char * const msg)
 {
-    ProfWin *console = wins_get_console();
-    if (g_str_has_prefix(msg, "SENT:")) {
-        win_vprint_line(console, '!', COLOUR_ONLINE, "<- %s", &msg[6]);
-    } else if (g_str_has_prefix(msg, "RECV:")) {
-        win_vprint_line(console, '!', COLOUR_AWAY, "-> %s", &msg[6]);
-    }
-    win_update_virtual(console);
-    if (wins_is_current(console)) {
-        ui_current_page_off();
+    if (ui_xmlconsole_exists()) {
+        ProfWin *xmlconsole = wins_get_xmlconsole();
+	    
+        if (g_str_has_prefix(msg, "SENT:")) {
+	    win_vprint_line(xmlconsole, '!', COLOUR_ONLINE, "<- %s", &msg[6]);
+	} else if (g_str_has_prefix(msg, "RECV:")) {
+	    win_vprint_line(xmlconsole, '!', COLOUR_AWAY, "-> %s", &msg[6]);
+	}
+
+	win_update_virtual(xmlconsole);
+	if (wins_is_current(xmlconsole)) {
+	    ui_current_page_off();
+	}
     }
 }
 
@@ -1118,6 +1128,14 @@ _ui_create_duck_win(void)
 }
 
 static void
+_ui_create_xmlconsole_win(void)
+{
+    ProfWin *window = wins_new("XML Console", WIN_XML);
+    int num = wins_get_num(window);
+    ui_switch_win(num);
+}
+
+static void
 _ui_open_duck_win(void)
 {
     ProfWin *window = wins_get_by_recipient("DuckDuckGo search");
@@ -1939,4 +1957,6 @@ ui_init_module(void)
     ui_replace_input = _ui_replace_input;
     ui_invalid_command_usage = _ui_invalid_command_usage;
     ui_handle_stanza = _ui_handle_stanza;
+    ui_create_xmlconsole_win = _ui_create_xmlconsole_win;
+    ui_xmlconsole_exists = _ui_xmlconsole_exists;
 }