]> git.cworth.org Git - grrobot/blobdiff - src/grrobot.c
Added drag-and-drop (works but for handling queued notices).
[grrobot] / src / grrobot.c
index 332cca55206501cda7a77790f9ec1ad1cfaf6132..0154c0eb244e0dc4ca7527b3df5bedf59f5cb409 100644 (file)
@@ -176,17 +176,33 @@ grr_game_read_notices (grr_game_t *game)
 }
 
 static void
-command_callback (GtkWidget *widget,
-                 grr_game_t *game)
+grr_game_entry_callback (GtkWidget *widget,
+                        grr_game_t *game)
 {
+    rr_status_t status;
     const gchar *entry_text;
     char **response;
+    int i;
 
     entry_text = gtk_entry_get_text (GTK_ENTRY (game->command_entry));
-    gtk_text_buffer_insert_at_cursor (game->message_buffer, entry_text, -1);
-    gtk_text_buffer_insert_at_cursor (game->message_buffer, "\n", -1);
 
-    rr_client_request (game->client, entry_text, &response);
+    status = rr_client_request (game->client, entry_text, &response);
+    if (status) {
+       gtk_text_buffer_insert_at_cursor (game->message_buffer,
+                                         "ERROR: ", -1);
+       gtk_text_buffer_insert_at_cursor (game->message_buffer,
+                                         rr_status_str (status), -1);
+       gtk_text_buffer_insert_at_cursor (game->message_buffer,
+                                         "\n", -1);
+    } else {
+       for (i=0; response[i]; i++) {
+           gtk_text_buffer_insert_at_cursor (game->message_buffer,
+                                             response[i], -1);
+           gtk_text_buffer_insert_at_cursor (game->message_buffer,
+                                             " ", -1);
+       }
+       gtk_text_buffer_insert_at_cursor (game->message_buffer, "\n", -1);
+    }
 
     gtk_entry_set_text (GTK_ENTRY (game->command_entry), "");
 
@@ -227,6 +243,8 @@ grr_game_start_gui (grr_game_t *game)
        gtk_paned_pack1 (GTK_PANED (vpaned), board_frame, TRUE, TRUE);
        {
            game->board_view = grr_board_view_new (game->board);
+           grr_board_view_set_client (GRR_BOARD_VIEW (game->board_view),
+                                      game->client);
 
            gtk_container_add (GTK_CONTAINER (board_frame), game->board_view);
            gtk_widget_show (game->board_view);
@@ -256,7 +274,7 @@ grr_game_start_gui (grr_game_t *game)
            gtk_container_add (GTK_CONTAINER (vbox), command_entry);
            gtk_widget_show (command_entry);
            g_signal_connect (G_OBJECT (command_entry), "activate",
-                             G_CALLBACK (command_callback),
+                             G_CALLBACK (grr_game_entry_callback),
                              (gpointer) game);
        }
        gtk_widget_show (vbox);