From: Carl Worth Date: Sun, 15 Jun 2003 01:39:15 +0000 (+0000) Subject: Fixed layout of text entry widget to fixed height X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=896ccb45a1062b041bbb6d1456def5598596a57a;p=grrobot Fixed layout of text entry widget to fixed height --- diff --git a/src/grr_board_view.c b/src/grr_board_view.c index 0903ff1..d4d0d26 100644 --- a/src/grr_board_view.c +++ b/src/grr_board_view.c @@ -138,30 +138,29 @@ grr_board_view_get_type () static void grr_board_view_class_init (grr_board_view_class_t *class) { - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; + object_class = (GtkObjectClass*) class; + widget_class = (GtkWidgetClass*) class; - parent_class = gtk_type_class (gtk_widget_get_type ()); + parent_class = gtk_type_class (gtk_widget_get_type ()); - object_class->destroy = grr_board_view_destroy; + object_class->destroy = grr_board_view_destroy; - widget_class->realize = grr_board_view_realize; - widget_class->expose_event = grr_board_view_expose; - widget_class->size_request = grr_board_view_size_request; - widget_class->size_allocate = grr_board_view_size_allocate; - widget_class->button_press_event = grr_board_view_button_press; - widget_class->button_release_event = grr_board_view_button_release; - widget_class->motion_notify_event = grr_board_view_motion_notify; + widget_class->realize = grr_board_view_realize; + widget_class->expose_event = grr_board_view_expose; + widget_class->size_request = grr_board_view_size_request; + widget_class->size_allocate = grr_board_view_size_allocate; + widget_class->button_press_event = grr_board_view_button_press; + widget_class->button_release_event = grr_board_view_button_release; + widget_class->motion_notify_event = grr_board_view_motion_notify; } static void grr_board_view_init (grr_board_view_t *view) { view->board = NULL; - view->owns_board = 0; view->client = NULL; view->button = 0; @@ -175,16 +174,21 @@ grr_board_view_new (rr_board_t *board) view = g_object_new (grr_board_view_get_type (), NULL); - if (board == NULL) { - board = rr_board_create (16, 16); - view->owns_board = 1; - } + view->board = board; - grr_board_view_set_board (view, board); + grr_board_view_update (view); return GTK_WIDGET (view); } +void +grr_board_view_set_client (grr_board_view_t *view, rr_client_t *client) +{ + g_return_if_fail (view != NULL); + + view->client = client; +} + static void grr_board_view_destroy (GtkObject *object) { @@ -195,37 +199,13 @@ grr_board_view_destroy (GtkObject *object) view = GRR_BOARD_VIEW (object); - rr_board_destroy (view->board); - - if (view->board && view->owns_board) { - rr_board_destroy (view->board); - view->board = NULL; - } + view->board = NULL; + view->client = NULL; if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } -void -grr_board_view_set_board (grr_board_view_t *view, - rr_board_t *board) -{ - g_return_if_fail (view != NULL); - - view->board = board; - - grr_board_view_update (view); -} - -void -grr_board_view_set_client (grr_board_view_t *view, - rr_client_t *client) -{ - g_return_if_fail (view != NULL); - - view->client = client; -} - static void grr_board_view_realize (GtkWidget *widget) { @@ -503,6 +483,7 @@ grr_board_view_expose (GtkWidget *widget, GdkEventExpose *event) { grr_board_view_t *view; + rr_board_t *board; Display *dpy; Drawable drawable; XrState *xrs; @@ -519,6 +500,7 @@ grr_board_view_expose (GtkWidget *widget, return FALSE; view = GRR_BOARD_VIEW (widget); + board = view->board; /* Unabstract X from GTK+ */ gdk_window_get_internal_paint_info (widget->window, &real_drawable, &x_off, &y_off); @@ -530,7 +512,7 @@ grr_board_view_expose (GtkWidget *widget, XrSetTargetDrawable (xrs, dpy, drawable); XrTranslate (xrs, -x_off, -y_off); - rr_board_get_size (view->board, &view->board_width, &view->board_height); + rr_board_get_size (board, &view->board_width, &view->board_height); view->cell_width = widget->allocation.width / view->board_width; if (view->cell_width == 0) @@ -544,7 +526,7 @@ grr_board_view_expose (GtkWidget *widget, XrTranslate (xrs, view->board_pad_x, view->board_pad_y); - goal_target = rr_board_get_goal_target (view->board); + goal_target = rr_board_get_goal_target (board); /* Draw cell targets */ for (j=0; j < view->board_height; j++) { @@ -552,7 +534,7 @@ grr_board_view_expose (GtkWidget *widget, XrSave (xrs); XrTranslate (xrs, i * view->cell_width, j * view->cell_height); grr_cell_draw (xrs, - rr_board_get_cell (view->board, i, j), + rr_board_get_cell (board, i, j), goal_target, view->cell_width, view->cell_height); XrRestore (xrs); @@ -591,7 +573,7 @@ grr_board_view_expose (GtkWidget *widget, XrScale (xrs, view->cell_width / GRR_SVG_ASSUMED_WIDTH, view->cell_height / GRR_SVG_ASSUMED_HEIGHT); - grr_wall_draw (xrs, RR_CELL_GET_WALLS (rr_board_get_cell(view->board, i, j))); + grr_wall_draw (xrs, RR_CELL_GET_WALLS (rr_board_get_cell(board, i, j))); XrRestore (xrs); } } diff --git a/src/grr_board_view.h b/src/grr_board_view.h index d8ded6e..7c16f7a 100644 --- a/src/grr_board_view.h +++ b/src/grr_board_view.h @@ -50,7 +50,7 @@ struct grr_board_view GtkWidget widget; rr_board_t *board; - int owns_board; + int board_width, board_height; int board_pad_x, board_pad_y; @@ -76,16 +76,11 @@ struct grr_board_view_class GtkWidget* grr_board_view_new (rr_board_t *board); -GtkType -grr_board_view_get_type (void); - void -grr_board_view_set_board (grr_board_view_t *view, - rr_board_t *board); +grr_board_view_set_client (grr_board_view_t *view, rr_client_t *client); -void -grr_board_view_set_client (grr_board_view_t *view, - rr_client_t *client); +GtkType +grr_board_view_get_type (void); #ifdef __cplusplus } diff --git a/src/grrobot.c b/src/grrobot.c index 95f4363..d9bf048 100644 --- a/src/grrobot.c +++ b/src/grrobot.c @@ -55,7 +55,7 @@ grr_game_read_notices (grr_game_t *game); static GSource * grr_game_notices_source_new (grr_game_t *game); - + int main (int argc, char **argv) { @@ -190,6 +190,15 @@ grr_game_read_notices (grr_game_t *game) 0.0, FALSE, 0.0, 0.0); notice = rr_client_parse_notice (game->client, notice_s); + if (notice == NULL) { + int i; + fprintf (stderr, "Failed to parse notice: "); + for (i=0; notice_s[i]; i++) + fprintf (stderr, " %s", notice_s[i]); + fprintf (stderr, "\n"); + return; + } + switch (notice->type) { case RR_NOTICE_USER: case RR_NOTICE_QUIT: @@ -286,51 +295,54 @@ grr_game_start_gui (grr_game_t *game) G_CALLBACK (exit), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 0); - vpaned = gtk_vpaned_new (); - gtk_container_set_border_width (GTK_CONTAINER (vpaned), 5); - gtk_container_add (GTK_CONTAINER (window), vpaned); + vbox = gtk_vbox_new (FALSE, 1); + gtk_container_add (GTK_CONTAINER (window), vbox); { - board_frame = gtk_aspect_frame_new (NULL, 0.5, 0.5, 1.0, FALSE); - 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); + game->message_buffer = gtk_text_buffer_new (NULL); + game->message_view = gtk_text_view_new_with_buffer (game->message_buffer); + game->command_entry = gtk_entry_new (); + + vpaned = gtk_vpaned_new (); + gtk_container_set_border_width (GTK_CONTAINER (vpaned), 0); + gtk_box_pack_start (GTK_BOX (vbox), vpaned, + TRUE, TRUE, 0); + gtk_container_add (GTK_CONTAINER (vbox), vpaned); { - game->board_view = grr_board_view_new (game->board); - grr_board_view_set_client (GRR_BOARD_VIEW (game->board_view), - game->client); + board_frame = gtk_aspect_frame_new (NULL, 0.5, 0.5, 1.0, FALSE); + gtk_paned_pack1 (GTK_PANED (vpaned), board_frame, TRUE, TRUE); + { + gtk_container_add (GTK_CONTAINER (board_frame), game->board_view); + gtk_widget_show (game->board_view); + } + gtk_widget_show (board_frame); - gtk_container_add (GTK_CONTAINER (board_frame), game->board_view); - gtk_widget_show (game->board_view); - } - gtk_widget_show (board_frame); - - vbox = gtk_vbox_new (FALSE, 1); - gtk_paned_pack2 (GTK_PANED (vpaned), vbox, FALSE, TRUE); - { sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - gtk_container_add (GTK_CONTAINER (vbox), sw); + gtk_paned_pack2 (GTK_PANED (vpaned), sw, FALSE, TRUE); + { + message_view = game->message_view; + gtk_text_view_set_editable (GTK_TEXT_VIEW (message_view), FALSE); + gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (message_view), FALSE); + gtk_container_add (GTK_CONTAINER (sw), message_view); + gtk_widget_show (message_view); + } gtk_widget_show (sw); - - game->message_buffer = gtk_text_buffer_new (NULL); - game->message_view = gtk_text_view_new_with_buffer (game->message_buffer); - message_view = game->message_view; - gtk_text_view_set_editable (GTK_TEXT_VIEW (message_view), FALSE); - gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (message_view), FALSE); - gtk_container_add (GTK_CONTAINER (sw), message_view); - gtk_widget_show (message_view); - - game->command_entry = gtk_entry_new (); - command_entry = game->command_entry; - gtk_container_add (GTK_CONTAINER (vbox), command_entry); - gtk_widget_show (command_entry); - g_signal_connect (G_OBJECT (command_entry), "activate", - G_CALLBACK (grr_game_entry_callback), - (gpointer) game); } - gtk_widget_show (vbox); + gtk_widget_show (vpaned); + + command_entry = game->command_entry; + gtk_box_pack_end (GTK_BOX (vbox), command_entry, + FALSE, FALSE, 0); + gtk_widget_show (command_entry); + g_signal_connect (G_OBJECT (command_entry), "activate", + G_CALLBACK (grr_game_entry_callback), + (gpointer) game); } - gtk_widget_show (vpaned); + gtk_widget_show (vbox); gtk_widget_show (window);