tags 868382 + patch
thanks

Attached is a patch which fixes this bug.  You only have to replace
libgnome2-dev and libgnomeui-dev in Build-Depends with
libgoocanvas-2.0-dev.
Description: Port to GTK+ 3.
 Migrate from libpopt to GOption.
 Migrate frome GnomeCanvas to GooCanvas.
 Migrate from old-style ~/.gnome2 configuration files to GSettings.
Bug-Debian: https://bugs.debian.org/868382
Author: Yavor Doganov <ya...@gnu.org>
Forwarded: no
Last-Update: 2018-09-26
---

--- gbatnav-1.0.4cvs20051004.orig/configure.in
+++ gbatnav-1.0.4cvs20051004/configure.in
@@ -12,13 +12,14 @@
 AC_HEADER_STDC
 AC_ARG_PROGRAM
 
-PKG_CHECK_MODULES(GNOME,[libgnomeui-2.0])
+PKG_CHECK_MODULES(GNOME,[goocanvas-2.0])
 AC_SUBST(GNOME_CFLAGS)
 AC_SUBST(GNOME_LIBS)
 
 ALL_LINGUAS="es de pl ja ru fr sv"
 AM_GNU_GETTEXT
 
+GLIB_GSETTINGS
 
 dnl DATADIRNAME is generated by AM_GNU_GETTEXT; 
 dnl note this has to match the path installed by po/Makefile
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/g_interface.h
+++ gbatnav-1.0.4cvs20051004/gbnserver/g_interface.h
@@ -4,7 +4,6 @@
 #define __BN_G_INTERFACE_H__
 
 #include <stdarg.h>
-#include <gnome.h>
 #include "protocol.h"
 
 void init_screen();
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/gbnserver.c
+++ gbatnav-1.0.4cvs20051004/gbnserver/gbnserver.c
@@ -30,7 +30,9 @@
 
 /* Includes de la interface */
 #include <config.h>
-#include <gnome.h>
+#include <glib/gi18n.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
 
 #include "protocol.h"                  /* definicion del protocolo */
 #include "server.h"
@@ -58,21 +60,54 @@
 extern struct { char *nombre; } st_nombres[];
 
 /* This describes all the arguments we understand.  */
-static struct poptOption options[] =
+static GOptionEntry options[] =
 {
-       { "port", 'p', POPT_ARG_INT, &usuario.port, 0,  N_("PORT"), N_("Port 
number. Default is 1995")},
+       { "port", 'p', G_OPTION_FLAG_NONE, G_OPTION_ARG_INT, &usuario.port, 
N_("Port number. Default is 1995"), N_("PORT")},
 #ifdef WITH_GGZ
-       { "ggz", 0, POPT_ARG_NONE, &usuario.with_ggz, 0,  NULL, N_("Enables GGZ 
mode")},
+       { "ggz", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &usuario.with_ggz, 
N_("Enables GGZ mode"), NULL},
 #endif /* WITH_GGZ */
-       { NULL, '\0',  0, NULL  }
+       { NULL }
 };
 
-void init_args( void )
+
+/* Migrate old settings from ~/.gnome2/gbnserver.  */
+static void migrate_old_settings( GSettings *settings )
 {
-       usuario.port = 
gnome_config_get_int_with_default("/gbnserver/data/port=1995",NULL);
+       GKeyFile *kf;
+       gchar *file;
+
+       kf = g_key_file_new();
+       file = g_build_filename(g_get_home_dir(), ".gnome2",
+                               "gbnserver", NULL);
+       if(g_key_file_load_from_file(kf, file, G_KEY_FILE_NONE, NULL)) {
+               gchar **groups;
+               gsize len;
+
+               /* File exists but if the user never changed the
+                  settings it will contain only the Placement section
+                  (automatically created internal Bonobo stuff).  */
+               groups = g_key_file_get_groups(kf, &len);
+               if(len > 1) {
+                       gint i;
+
+                       i = g_key_file_get_integer(kf, "data", "port", NULL);
+                       g_settings_set_uint(settings, "port", i);
+                       fprintf(stdout,
+                               _("Sucessfully migrated old settings.\n"));
+                } else
+                       fprintf(stdout,
+                               _("Found empty old config file; deleted.\n"));
+
+               g_strfreev(groups);
+               g_unlink(file);
+       }
+       g_free(file);
+       g_key_file_free(kf);
+}
 
-       gnome_config_set_int("/gbnserver/data/port",usuario.port);
-       gnome_config_sync();
+void init_args( GSettings *settings )
+{
+       usuario.port = g_settings_get_uint(settings, "port");
 }
 /***************************************************************************
                funciones relacionadas con las tablas 
@@ -116,7 +151,7 @@
 void borrar_jugador( int num_jug )
 {
        if( ! usuario.with_ggz )
-               gdk_input_remove( usuario.tag[num_jug] );
+               g_source_remove( usuario.tag[num_jug] );
 #ifdef WITH_GGZ
        else
                batnavggz_del_fd(usuario.nro_fd[num_jug]);
@@ -325,31 +360,36 @@
        return BATNAV_STATUS_SUCCESS;
 }
 
-void ex_loop( gpointer data, gint que_sock, GdkInputCondition GDK_INPUT_READ)
+gboolean ex_loop( GIOChannel *src, GIOCondition cond, gpointer data )
 {
-       int i,j,k,client_len;
+       guint i;
+       int j,que_sock,client_len;
         char str[150];
         struct sockaddr client;
+        GIOChannel *channel;
 
        client_len = sizeof(client);
-       k = que_sock;
+       que_sock = g_io_channel_unix_get_fd(src);
        
        if( que_sock==usuario.sock ) { /* AF_INET */
                if( (que_sock=accept(usuario.sock, (struct sockaddr *) 
&client,&client_len)) < 0 ) {
                        perror("accept error");
-                       return;
+                       return FALSE;
                } 
        }
 
        if( (j=accept_new_player(que_sock)) < 0)
-               return;
+               return FALSE;
 
-       i = gdk_input_add( que_sock, GDK_INPUT_READ, play_batnav, NULL );
-       if(i<0) {
+       channel = g_io_channel_unix_new( que_sock );
+       i = g_io_add_watch( channel, G_IO_IN, play_batnav, NULL );
+       g_io_channel_unref( channel );
+       if(i == 0) {
                usuario.nro_fd[j]=-1;
                usuario.nro_tot[j]=DISCON;
                close(que_sock);
-               return;
+               g_io_channel_shutdown(channel, FALSE, NULL);
+               return FALSE;
        }
 
        usuario.tag[j]=i;
@@ -358,7 +398,7 @@
 
        say_in_clist( j, C_HOSTNAME, str);
        say_in_clist( j, C_STATUS, _(st_nombres[CONNEC].nombre) );
-       return;
+       return TRUE;
 }
 
 /**
@@ -366,11 +406,15 @@
  */
 void main_loop()
 {
+        GIOChannel *channel;
+
         usuario.sock = net_listen(usuario.server_name,usuario.port);
        
        init_screen();
 
-       gdk_input_add( usuario.sock, GDK_INPUT_READ, ex_loop, NULL );
+       channel=g_io_channel_unix_new( usuario.sock );
+       g_io_add_watch( channel, G_IO_IN, ex_loop, NULL );
+       g_io_channel_unref( channel );
 
        gtk_main();
 }
@@ -381,25 +425,33 @@
 int main(int argc, char *argv[]) 
 {
        int i ;
-       poptContext ctx=NULL;
+       GSettings *settings;
+       GOptionContext *ctx=NULL;
+       GError *error=NULL;
        
        dont_run_as_root();
 
        bindtextdomain (PACKAGE, GNOMELOCALEDIR);
        textdomain (PACKAGE);
 
-       init_args();
-
-       ctx = poptGetContext(NULL,argc,argv,options,0);
-       if(ctx) {
-               while( poptGetNextOpt(ctx) != -1);
-               poptFreeContext(ctx);
-       }
+       settings=g_settings_new("net.sf.batnav.gbnserver");
+       migrate_old_settings(settings);
+       init_args(settings);
+
+       ctx=g_option_context_new(_("- Batalla Naval Server"));
+       g_option_context_add_main_entries(ctx, options, PACKAGE);
+       g_option_context_add_group(ctx, gtk_get_option_group (TRUE));
 
        if( ! usuario.with_ggz)
-               gnome_init_with_popt_table("gbnserver", BNVERSION, argc, argv, 
options,0, NULL);
+               if( ! g_option_context_parse(ctx, &argc, &argv, &error) ) {
+                       fprintf(stderr, _("Option parsing failed: %s\n"),
+                               error->message);
+                       g_error_free(error);
+                       exit(EXIT_FAILURE);
+               }
 
        gethostname(usuario.server_name,50);
+       gtk_init(&argc, &argv);
    
        printf( "\n"
                BNVERSION"\n" 
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/play.c
+++ gbatnav-1.0.4cvs20051004/gbnserver/play.c
@@ -4,7 +4,9 @@
        Funcion que se encarga de poner las reglas al juego y todo eso
 ************************************************************************/
 #include <config.h>
-#include <gnome.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <stdio.h>
 #include <unistd.h>
 #include <errno.h>
 #include "protocol.h"  
@@ -520,10 +522,11 @@
 }
 
 
-void
-play_batnav( gpointer data, int fd, GdkInputCondition GDK_INPUT_READ)
+gboolean
+play_batnav( GIOChannel *src, GIOCondition cond, gpointer data )
 {
        int i,j;
+       gint fd;
        PARSER p;
        char str[PROT_MAX_LEN];
        DELIM igualador={ '=', ':', '=' };
@@ -534,16 +537,17 @@
 
        str[0]=0;
 
+       fd=g_io_channel_unix_get_fd( src );
        j=net_readline( fd, str, PROT_MAX_LEN );
 
        if( j<1 ) {
                token_exit(fd);
-               return;
+               return FALSE;
        }
        
        j=quejugador( fd );
        if(j<0 || j>=MAXPLAYER)
-               return;
+               return FALSE;
 
        strncpy(p.sig,str,sizeof(p.sig));
        
@@ -552,5 +556,5 @@
                if(p.status) 
                        lookup_funcion( fd,&p );
        } while(i);
-       return ;
+       return TRUE;
 }
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/play.h
+++ gbatnav-1.0.4cvs20051004/gbnserver/play.h
@@ -3,7 +3,7 @@
 # define __BN_PLAY_H__
 #include <gdk/gdk.h>
 
-void play_batnav( gpointer , gint , GdkInputCondition );
+gboolean play_batnav( GIOChannel *src , GIOCondition cond , gpointer data );
 gint quejugador( gint );
 void token_exit( gint );
 void token_start( gint );
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/server.h
+++ gbatnav-1.0.4cvs20051004/gbnserver/server.h
@@ -2,7 +2,6 @@
 #ifndef __BN_SERVER_H__
 #define __BN_SERVER_H__
 
-#include <gnome.h>
 #include "protocol.h"
 
 
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/version.h
+++ gbatnav-1.0.4cvs20051004/gbnserver/version.h
@@ -2,7 +2,6 @@
 #ifndef __VERSION_H__
 #define __VERSION_H__
 
-#include <gnome.h>
 #include <config.h>
 
 #ifdef INET6
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/Makefile.am
+++ gbatnav-1.0.4cvs20051004/gbnserver/Makefile.am
@@ -40,7 +40,11 @@
        $(INTLLIBS) \
        @GNOME_LIBS@
 
-EXTRA_DIST = README AUTHORS index.html gbnserver.desktop gbatnav-topic.dat 
gnome-gbatnavd.png index.html
+EXTRA_DIST = README AUTHORS index.html gbnserver.desktop gbatnav-topic.dat 
gnome-gbatnavd.png index.html $(gsettings_SCHEMAS)
+
+gsettings_SCHEMAS = net.sf.batnav.gbnserver.gschema.xml
+
+@GSETTINGS_RULES@
 
 appicon_DATA = gnome-gbatnavd.png
 
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/check_board.c
+++ gbatnav-1.0.4cvs20051004/gbnserver/check_board.c
@@ -14,7 +14,7 @@
 /* exported: algoritmo() */
 
 #include <stdlib.h>
-#include <gnome.h>
+#include <glib.h>
 #include <config.h>
 #include "check_board.h"
 #include "protocol.h"
--- gbatnav-1.0.4cvs20051004.orig/gbnserver/g_interface.c
+++ gbatnav-1.0.4cvs20051004/gbnserver/g_interface.c
@@ -4,7 +4,8 @@
  *                             gnome interface                               *
  *****************************************************************************/
 #include <config.h>
-#include <gnome.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
 #include <stdarg.h>
 
 #include "server.h"
@@ -19,14 +20,31 @@
 static GtkWidget *vscrollbar[MAXPLAYER];
 
 static GtkWidget *clist=NULL;
+static GtkListStore *store=NULL;
 
+enum {
+  NUMBER,
+  NAME,
+  HOSTNAME,
+  VERSION_COL,
+  STATUS,
+  TOKEN,
+  N_COLUMNS
+};
 
 void say_in_clist( gint x, gint y, const gchar *str)
 {
+       GtkTreePath *path;
+       GtkTreeIter iter;
+       gchar *tmp;
+
        if (clist==NULL) return;
-       gtk_clist_freeze (GTK_CLIST(clist));
-       gtk_clist_set_text( GTK_CLIST(clist),x, y,str);
-       gtk_clist_thaw (GTK_CLIST(clist));
+       tmp = g_strdup_printf ("%d", x);
+       path = gtk_tree_path_new_from_string (tmp);
+       gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path);
+       gtk_tree_path_free (path);
+       g_free (tmp);
+       gtk_list_store_set (store, &iter, y, str, -1);
 }
        
 static void on_exit_activate(GtkWidget *widget, gpointer data)
@@ -37,7 +55,7 @@
 
 static void g_launch_robot(void)
 {
-       gnome_execute_shell(NULL,"gbnrobot");
+       g_spawn_command_line_async("gbnrobot",NULL);
 }
 
 void g_start_game(void)
@@ -46,7 +64,7 @@
        token_start( -1 );
 }
 
-static void about(GtkWidget *widget, gpointer data)
+static void about(GtkMenuItem *item, GtkWidget *parent)
 {
    GtkWidget *about;
    GdkPixbuf *gnome_gbatnav=NULL;
@@ -56,43 +74,18 @@
    };
    
    gnome_gbatnav = gdk_pixbuf_new_from_file("/usr/share/pixmaps/" 
"gnome-gbatnav.png",NULL);
-   about = gnome_about_new (_("Batalla Naval server"), VERSION,
-                           "(C) 1998-2001 Ricardo C. Quesada",
-                           _("A multiplayer, multirobot, networked battleship 
game"),
-                           (const char**) authors,
-                           NULL, NULL,
-                           gnome_gbatnav);
-   gtk_widget_show (about);
-   if (gnome_gbatnav !=NULL) {
-     g_object_unref(gnome_gbatnav);
-     gnome_gbatnav=NULL;
-   }
-}
-
-GnomeUIInfo gamemenu[] = 
-{
-       { GNOME_APP_UI_ITEM, N_("_Launch a robot in server"), NULL, 
g_launch_robot, NULL, NULL, 
-               GNOME_APP_PIXMAP_DATA, robot_xpm, 0, 0, NULL }, 
-       { GNOME_APP_UI_ITEM, N_("_Start the game"), NULL, g_start_game, NULL, 
NULL, 
-               GNOME_APP_PIXMAP_DATA, NULL , 0, 0, NULL }, 
-       GNOMEUIINFO_MENU_EXIT_ITEM(on_exit_activate,NULL),
-       GNOMEUIINFO_END
-};
-
-GnomeUIInfo helpmenu[] = 
-{
-       GNOMEUIINFO_HELP("gbatnav"),
-       GNOMEUIINFO_MENU_ABOUT_ITEM(about,NULL),
-       GNOMEUIINFO_END
-};
-
-GnomeUIInfo mainmenu[] = 
-{
-       GNOMEUIINFO_MENU_GAME_TREE(gamemenu),
-       GNOMEUIINFO_MENU_HELP_TREE(helpmenu),
-       GNOMEUIINFO_END
-};
 
+   gtk_show_about_dialog (GTK_WINDOW (parent),
+                          "program_name", _("Batalla Naval server"),
+                          "version", VERSION,
+                          "copyright", "(C) 1998-2001 Ricardo C. Quesada",
+                          "comments",
+                          _("A multiplayer, multirobot, networked "
+                            "battleship game"),
+                          "authors", authors,
+                          "logo", gnome_gbatnav, NULL);
+   g_object_unref(gnome_gbatnav);
+}
 
 /*****************************************************************************
  *                                    INIT SCREEN                            *
@@ -101,59 +94,166 @@
 {
        GtkWidget *window;
        GtkWidget *clist_box;
+       GtkWidget *menubar;
+       GtkWidget *menu;
+       GtkWidget *item;
        char clist_text[CLIST_COLUMNS][50];
        char *clist_texts[CLIST_COLUMNS];
        GtkWidget *boton;
-       static char *titles[] =
-       {
-               N_("Number"), N_("Name"), N_("hostname"), N_("Client version"), 
N_("Status"), N_("Last Token")
-       };
+       GtkWidget *box;
+       GtkWidget *hbox;
+       GtkWidget *icon;
+       GtkWidget *label;
+       GtkAccelGroup *accel_group;
+       GtkCellRenderer *renderer;
+       GtkTreeViewColumn *column;
+       GtkTreeIter iter;
+       GdkPixbuf *robot;
        gint i ;
 
-#ifdef ENABLE_NLS
-# define ELEMENTS(x) (sizeof(x) / sizeof(x[0])) 
-       {
-               int i;
-               for (i = 0; i < ELEMENTS(mainmenu); i++)
-                       mainmenu[i].label = gettext(mainmenu[i].label);
-               for (i = 0; i < ELEMENTS(gamemenu); i++)
-                       gamemenu[i].label = gettext(gamemenu[i].label);
-               for (i = 0; i < ELEMENTS(helpmenu); i++)
-                       helpmenu[i].label = gettext(helpmenu[i].label);
-       }
-#endif /* ENABLE_NLS */
-   
-       window = gnome_app_new ("gbnserver", _("Gnome Batalla Naval server") );
-       gnome_app_create_menus(GNOME_APP(window), mainmenu);
-       gtk_menu_item_right_justify(GTK_MENU_ITEM(mainmenu[1].widget));
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+       gtk_window_set_title (GTK_WINDOW (window),
+                             _("Gnome Batalla Naval server"));
+       accel_group = gtk_accel_group_new ();
+       gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
+
+       menubar = gtk_menu_bar_new ();
+       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+       gtk_container_add (GTK_CONTAINER (window), box);
+       gtk_box_pack_start (GTK_BOX (box), menubar, FALSE, FALSE, 0);
+
+       menu = gtk_menu_new ();
+       gtk_menu_set_accel_group (GTK_MENU (menu), accel_group);
+       item = gtk_menu_item_new_with_mnemonic (_("_Game"));
+       gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
+
+       /* Emulate GtkImageMenuItem.  This was the author's intention
+          but it doesn't work in the original code.  */
+       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+       robot = gdk_pixbuf_new_from_xpm_data (robot_xpm);
+       icon = gtk_image_new_from_pixbuf (robot);
+       g_object_unref (robot);
+       label = gtk_label_new_with_mnemonic (_("_Launch a robot in server"));
+       item = gtk_menu_item_new ();
+       gtk_container_add (GTK_CONTAINER (hbox), icon);
+       gtk_container_add (GTK_CONTAINER (hbox), label);
+       gtk_container_add (GTK_CONTAINER (item), hbox);
+       g_signal_connect (item, "activate", G_CALLBACK (g_launch_robot), NULL);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+       item = gtk_menu_item_new_with_mnemonic (_("_Start the game"));
+       g_signal_connect (item, "activate", G_CALLBACK (g_start_game), NULL);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+       item = gtk_menu_item_new_with_mnemonic (_("_Quit"));
+       gtk_widget_add_accelerator (item, "activate", accel_group, GDK_KEY_Q,
+                                   GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+       g_signal_connect (item, "activate",
+                         G_CALLBACK (on_exit_activate), NULL);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+       menu = gtk_menu_new ();
+       gtk_menu_set_accel_group (GTK_MENU (menu), accel_group);
+       item = gtk_menu_item_new_with_mnemonic (_("_Help"));
+       gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
+
+       item = gtk_menu_item_new_with_mnemonic (_("_Contents"));
+       gtk_widget_add_accelerator (item, "activate", accel_group, GDK_KEY_F1,
+                                   0, GTK_ACCEL_VISIBLE);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+       item = gtk_menu_item_new_with_mnemonic (_("_About"));
+       g_signal_connect (item, "activate", G_CALLBACK (about), window);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
        gtk_widget_realize (window);
    
-       gtk_signal_connect ( GTK_OBJECT( window), "destroy",
-               GTK_SIGNAL_FUNC( on_exit_activate ),
-               GTK_OBJECT(window) );
-       gtk_signal_connect ( GTK_OBJECT( window), "delete_event",
-               GTK_SIGNAL_FUNC( on_exit_activate ),
-               GTK_OBJECT(window) );
+       g_signal_connect ( G_OBJECT( window), "destroy",
+               G_CALLBACK( on_exit_activate ),
+               G_OBJECT(window) );
+       g_signal_connect ( G_OBJECT( window), "delete_event",
+               G_CALLBACK( on_exit_activate ),
+               G_OBJECT(window) );
 
        
-       clist_box = gtk_vbox_new (FALSE, 0);
-       gnome_app_set_contents(GNOME_APP(window), clist_box);
+       clist_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+       gtk_box_pack_start (GTK_BOX (box), clist_box, FALSE, FALSE, 0);
        
 
-       clist = gtk_clist_new_with_titles (CLIST_COLUMNS, titles);
+       store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING,
+                                   G_TYPE_STRING, G_TYPE_STRING,
+                                   G_TYPE_STRING, G_TYPE_STRING);
+       clist = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
        gtk_widget_show (clist);
        
-
-       gtk_clist_set_row_height (GTK_CLIST (clist), 18);
-       gtk_widget_set_usize (clist, -1, 300);
-
+       gtk_widget_set_size_request (clist, -1, 300);
        
        gtk_box_pack_start( GTK_BOX( clist_box ), clist, TRUE, TRUE, 0);
-       gtk_clist_set_selection_mode (GTK_CLIST (clist), 
GTK_SELECTION_EXTENDED);
+
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set (renderer, "xalign", 0.5, NULL);
+       column = gtk_tree_view_column_new_with_attributes (_("Number"),
+                                                          renderer,
+                                                          "text", NUMBER,
+                                                          NULL);
+       gtk_tree_view_column_set_alignment (column, 0.5);
+       gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (clist), column);
+
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set (renderer, "xalign", 0.5, NULL);
+       column = gtk_tree_view_column_new_with_attributes (_("Name"),
+                                                          renderer,
+                                                          "text", NAME,
+                                                          NULL);
+       gtk_tree_view_column_set_alignment (column, 0.5);
+       gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (clist), column);
+
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set (renderer, "xalign", 0.5, NULL);
+       column = gtk_tree_view_column_new_with_attributes (_("hostname"),
+                                                          renderer,
+                                                          "text", HOSTNAME,
+                                                          NULL);
+       gtk_tree_view_column_set_alignment (column, 0.5);
+       gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (clist), column);
+
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set (renderer, "xalign", 0.5, NULL);
+       column = gtk_tree_view_column_new_with_attributes (_("Client version"),
+                                                          renderer,
+                                                          "text", VERSION_COL,
+                                                          NULL);
+       gtk_tree_view_column_set_alignment (column, 0.5);
+       gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (clist), column);
+
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set (renderer, "xalign", 0.5, NULL);
+       column = gtk_tree_view_column_new_with_attributes (_("Status"),
+                                                          renderer,
+                                                          "text", STATUS,
+                                                          NULL);
+       gtk_tree_view_column_set_alignment (column, 0.5);
+       gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (clist), column);
+
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set (renderer, "xalign", 0.5, NULL);
+       column = gtk_tree_view_column_new_with_attributes (_("Last Token"),
+                                                          renderer,
+                                                          "text", TOKEN,
+                                                          NULL);
+       gtk_tree_view_column_set_alignment (column, 0.5);
+       gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (clist), column);
+
       
        for (i = 0; i < CLIST_COLUMNS; i++) {
-               gtk_clist_set_column_justification (GTK_CLIST (clist), i, 
GTK_JUSTIFY_CENTER);
-               gtk_clist_set_column_auto_resize (GTK_CLIST (clist), i, TRUE);
 
                clist_texts[i] = clist_text[i];
                switch(i) {
@@ -167,12 +267,22 @@
 
        for (i = 0; i < MAXPLAYER; i++) {
                sprintf(clist_texts[0],"%d",i);
-               gtk_clist_append (GTK_CLIST (clist), clist_texts);
+               gtk_list_store_append (store, &iter);
+               gtk_list_store_set (store, &iter,
+                                   NUMBER, clist_texts[0],
+                                   NAME, clist_texts[1],
+                                   HOSTNAME, clist_texts[2],
+                                   VERSION_COL, clist_texts[3],
+                                   STATUS, clist_texts[4],
+                                   TOKEN, clist_texts[5], -1);
+
        }
 
+/* This button does nothing.  */
+#if 0
        /*boton = gnome_stock_button(GNOME_STOCK_BUTTON_OK);*/
-       boton = GTK_WIDGET(gtk_button_new_from_stock(GTK_STOCK_OK));
+       boton = GTK_WIDGET(gtk_button_new_with_mnemonic(_("_OK")));
        gtk_box_pack_start( GTK_BOX( clist_box), boton, TRUE, TRUE, 0);
-
+#endif
        gtk_widget_show_all (window);
 }
--- gbatnav-1.0.4cvs20051004.orig/po/POTFILES.in
+++ gbatnav-1.0.4cvs20051004/po/POTFILES.in
@@ -4,6 +4,7 @@
 common/parser.c
 gbnrobot/robot_proceso.c
 gbnrobot/robot_random_board.c
+gbnrobot/net.sf.batnav.gbnrobot.gschema.xml
 gbnclient/g_connect.c
 gbnclient/g_interface.c
 gbnclient/gbnclient.c
@@ -12,7 +13,9 @@
 gbnclient/random_board.c
 gbnclient/sendmsg.c
 gbnclient/support.c
+gbnclient/net.sf.batnav.gbnclient.gschema.xml
 gbnserver/check_board.c
 gbnserver/g_interface.c
 gbnserver/gbnserver.c
 gbnserver/play.c
+gbnserver/net.sf.batnav.gbnserver.gschema.xml
--- /dev/null
+++ gbatnav-1.0.4cvs20051004/gbnserver/net.sf.batnav.gbnserver.gschema.xml
@@ -0,0 +1,8 @@
+<schemalist gettext-domain="gbatnav">
+  <schema id="net.sf.batnav.gbnserver" path="/net/sf/batnav/gbnserver/">
+    <key name="port" type="u">
+      <default>1995</default>
+      <summary>The server port.</summary>
+    </key>
+  </schema>
+</schemalist>
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/robot.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/robot.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * robot_xpm[] = {
+static const char * robot_xpm[] = {
 "21 19 9 1",
 "      c None",
 ".     c #F91616",
--- gbatnav-1.0.4cvs20051004.orig/gbnrobot/robot_ai.c
+++ gbatnav-1.0.4cvs20051004/gbnrobot/robot_ai.c
@@ -1,6 +1,6 @@
 /*     $Id: robot_ai.c,v 1.2 2001/04/04 15:37:28 riq Exp $     */
 
-#include <gnome.h>
+#include <glib.h>
 #include "robot_cliente.h"
 #include "protocol.h"
 #include "robot_ai.h"
--- gbatnav-1.0.4cvs20051004.orig/gbnrobot/robot_cliente.h
+++ gbatnav-1.0.4cvs20051004/gbnrobot/robot_cliente.h
@@ -7,7 +7,7 @@
 #ifndef __BN_ROBOT_CLIENTE__
 #define __BN_ROBOT_CLIENTE__
 
-#include <gnome.h>
+#include <gtk/gtk.h>
 #include "protocol.h"
 
 #define ROBOTVER "Robot Client v0.2.3" 
@@ -51,6 +51,5 @@
 gchar* pix;
 
 GtkWidget *pbar;
-GtkAdjustment *adj;
 
 #endif
--- gbatnav-1.0.4cvs20051004.orig/gbnrobot/robot_proceso.c
+++ gbatnav-1.0.4cvs20051004/gbnrobot/robot_proceso.c
@@ -18,7 +18,8 @@
 #include <signal.h>
 
 #include <config.h>
-#include <gnome.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
 
 #include "robot_cliente.h"
 #include "robot_random_board.h"
@@ -33,19 +34,19 @@
 /* This describes all the arguments we understand.  */
 
 static char *server_name=NULL;
-static const struct poptOption options[] =
+static const GOptionEntry options[] =
 {
-       { "server", 's', POPT_ARG_STRING, &server_name, 0,
+       { "server", 's', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, &server_name,
                N_("Server name. Default is localhost"),"SERVER"},
-       { "port", 'p', POPT_ARG_INT, &cliente.port, 0,
+       { "port", 'p', G_OPTION_FLAG_NONE, G_OPTION_ARG_INT, &cliente.port,
                N_("Port number. Default is 1995"),"PORT"},
 #ifdef WITH_GGZ
-       { "ggz", 0, POPT_ARG_NONE, &cliente.with_ggz, 0,
+       { "ggz", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &cliente.with_ggz,
                N_("Enable GGZ mode"),NULL },
 #endif /* WITH_GGZ */
-       { "nogui", 0, POPT_ARG_NONE, &cliente.with_nogui, 0,
+       { "nogui", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, 
&cliente.with_nogui,
                N_("Disable the GUI"),NULL },
-       { NULL, '\0',  0, NULL }
+       { NULL }
 };
 
 /* nombre y skill del robot */
@@ -193,8 +194,11 @@
        if( bnwrite(cliente.sock,BN_SEND"=%s",buf) < 0)
                return BATNAV_STATUS_ERROR;
 
-       if(!cliente.with_nogui)
-               gtk_progress_set_value (GTK_PROGRESS (pbar), 20);
+       if(!cliente.with_nogui) {
+               gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pbar),
+                                          "[20/20] 100%");
+               gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pbar), 1.0);
+       }
 
        return BATNAV_STATUS_SUCCESS;
 }
@@ -206,7 +210,6 @@
 static void robot_fire(char *str)
 {
        gfloat new_val;
-       GtkAdjustment *adj;
        int i,j,x,y,z;
        PARSER p;
        DELIM igualador={ '=','=','=' };
@@ -234,13 +237,17 @@
        }
        if(z==HUNDIDO) {
                if(!cliente.with_nogui) {
-                       adj = GTK_PROGRESS (pbar)->adjustment;
+                       gchar *s;
 
-                       new_val = adj->value - 1;
-                       if (new_val > adj->upper)
-                               new_val = adj->lower;
-
-                       gtk_progress_set_value (GTK_PROGRESS (pbar), new_val);
+                       new_val = gtk_progress_bar_get_fraction
+                               (GTK_PROGRESS_BAR (pbar)) - 0.05;
+                       s = g_strdup_printf ("[%d/20] %d%%",
+                                            (int) (new_val * 20),
+                                            (int) (new_val * 100));
+                       gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pbar), s);
+                       gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pbar),
+                                                      new_val);
+                       g_free (s);
                }
        }
 }
@@ -287,8 +294,12 @@
 }
 static void robot_board_ok( void )
 {
-       if(!cliente.with_nogui)
+       if(!cliente.with_nogui) {
                gtk_label_set_text(GTK_LABEL(status_label), _("Ready"));
+               gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pbar),
+                                          "[20/20] 100%");
+               gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pbar), 1.0);
+       }
 }
 static void robot_start( char *str)
 {
@@ -477,8 +488,9 @@
        return FALSE;
 }
 
-static int robot_proceso( gpointer data, int sock, GdkInputCondition 
GDK_INPUT_READ )
+static gboolean robot_proceso( GIOChannel *src, GIOCondition cond, gpointer 
data )
 {
+       gint sock;
        int i,j;
        PARSER p;
        DELIM igualador={ '=', ':', '=' };
@@ -490,11 +502,15 @@
        p.separador = &separador;
        str[0]=0;
 
+       if( !src )
+               sock=GPOINTER_TO_INT( data );
+       else
+               sock=g_io_channel_unix_get_fd( src );
 /*     printf("ROBOT: Entrando a robot_proceso %i\n",sock); */
        j=net_readline( sock, str,PROT_MAX_LEN );
        if( j<1 ) {
                robot_killmyself();
-               return -1;
+               return FALSE;
        }
        
        strncpy(p.sig,str,sizeof(p.sig));
@@ -508,11 +524,13 @@
                }
        } while(i);
 /*     printf("Saliendo de robot_proceso %i\n",sock); */
-       return 0;
+       return TRUE;
 }
 
 static int robot_init( void )
 {
+       GIOChannel *channel;
+
 #ifdef WITH_GGZ
        if( cliente.with_ggz ) {
                cliente.with_nogui = 1;
@@ -526,8 +544,12 @@
                return -1;
        }
 
-       if(!cliente.with_nogui)
-               cliente.tag = gdk_input_add( cliente.sock, GDK_INPUT_READ, 
(GdkInputFunction) robot_proceso, (gpointer) NULL );
+       if(!cliente.with_nogui) {
+               channel = g_io_channel_unix_new( cliente.sock );
+               cliente.tag = g_io_add_watch( channel, G_IO_IN, robot_proceso,
+                                              NULL );
+               g_io_channel_unref( channel );
+       }
     
        return 0;
 }
@@ -542,10 +564,8 @@
 {
        char *filename = NULL;
 
-       filename = gnome_pixmap_file (name);
-       if( filename == NULL ) {
-               filename = g_strconcat( PIXMAPDIR,name,NULL );
-       }
+       filename = g_strconcat( PIXMAPDIR,name,NULL );
+
        return filename;
 }
 
@@ -557,36 +577,35 @@
 
 static void init_X( )
 {
-       window = gnome_app_new ("gbnrobot", _("Gnome Batalla Naval robot") );
-       gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+       gtk_window_set_title (GTK_WINDOW (window),
+                             _("Gnome Batalla Naval robot") );
+       gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
 
        gtk_widget_realize (window);
-       gtk_signal_connect ( GTK_OBJECT( window), "destroy",
-               GTK_SIGNAL_FUNC( on_exit_activate ),
-               GTK_OBJECT(window) );
-       gtk_signal_connect ( GTK_OBJECT( window), "delete_event",
-               GTK_SIGNAL_FUNC( on_exit_activate ),
-               GTK_OBJECT(window) );
+       g_signal_connect ( G_OBJECT( window), "destroy",
+               G_CALLBACK( on_exit_activate ),
+               G_OBJECT(window) );
+       g_signal_connect ( G_OBJECT( window), "delete_event",
+               G_CALLBACK( on_exit_activate ),
+               G_OBJECT(window) );
 
-       box = gtk_vbox_new( FALSE, 0);
-       gnome_app_set_contents(GNOME_APP(window), box );
+       box = gtk_box_new( GTK_ORIENTATION_VERTICAL, 0);
+       gtk_container_add(GTK_CONTAINER(window), box);
    
-       gtk_container_border_width ( GTK_CONTAINER(box), 0);
+       gtk_container_set_border_width ( GTK_CONTAINER(box), 0);
   
        pix = load_pixmap_file("gbnrobot.png");
        if( pix ) {
-               imagen = gnome_pixmap_new_from_file( pix );
+               imagen = gtk_image_new_from_file( pix );
                gtk_widget_show( imagen );
                g_free( pix );
                gtk_box_pack_start( GTK_BOX(box),imagen,TRUE,TRUE,0);
        }
 
-       adj = (GtkAdjustment *) gtk_adjustment_new (20, 1, 20, 0, 0, 0);
-
-       pbar = gtk_progress_bar_new_with_adjustment (adj);
+       pbar = gtk_progress_bar_new ();
        
-       gtk_progress_set_format_string (GTK_PROGRESS (pbar), "[%v/%u] %p%%");
-       gtk_progress_set_show_text (GTK_PROGRESS (pbar), TRUE );
+       gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (pbar), TRUE );
 
        gtk_box_pack_start (GTK_BOX (box), pbar, FALSE, FALSE, 5);
        
@@ -621,7 +640,7 @@
                        return;
                }
                if( FD_ISSET(cliente.sock,&read_fd))
-                       robot_proceso(NULL,cliente.sock,0);
+                       robot_proceso(NULL,0,GINT_TO_POINTER(cliente.sock));
        }
 }
 
@@ -631,7 +650,8 @@
 int main (int argc, char *argv[])
 {
        int i;
-       poptContext ctx=NULL;
+       GOptionContext *ctx=NULL;
+       GError *error=NULL;
 
        dont_run_as_root();
 
@@ -642,14 +662,18 @@
        strncpy(cliente.server,"127.0.0.1",sizeof(cliente.server)-1);
        cliente.with_nogui=0;
 
-       ctx = poptGetContext(NULL,argc,argv,options,0);
-       if(ctx) {
-               while( poptGetNextOpt(ctx) != -1);
-               poptFreeContext(ctx);
-       }
+       ctx=g_option_context_new(_("- Batalla Naval Robot"));
+       g_option_context_add_main_entries(ctx, options, PACKAGE);
+       g_option_context_add_group(ctx, gtk_get_option_group (TRUE));
 
        if( !cliente.with_nogui ) {
-               gnome_init_with_popt_table("gbnrobot", ROBOTVER, argc, argv, 
options, 0, NULL);
+               if( !g_option_context_parse(ctx, &argc, &argv, &error) ) {
+                       fprintf(stderr, _("Option parsing failed: %s\n"),
+                               error->message);
+                       g_error_free(error);
+                       exit(EXIT_FAILURE);
+               }
+               gtk_init(&argc, &argv);
                init_X();
        }
 
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/cliente.h
+++ gbatnav-1.0.4cvs20051004/gbnclient/cliente.h
@@ -56,6 +56,8 @@
        int view_grid;                  /* show/hide the map grid */
 } usuario;
 
+GSettings *settings;
+
 /* Variables - GTK */
 /* contenedores */
 GtkWidget *window;
@@ -86,33 +88,32 @@
 
 
 /* Pixmaps */
-GdkPixmap *barco1 ;
-GdkPixmap *barco1_t ;
-GdkPixmap *barco1_h ;
-GdkPixmap *barco2h ;
-GdkPixmap *barco2h_t ;
-GdkPixmap *barco2h_h ;
-GdkPixmap *barco2v ;
-GdkPixmap *barco2v_t ;
-GdkPixmap *barco2v_h ;
-GdkPixmap *barco3h ;
-GdkPixmap *barco3h_t ;
-GdkPixmap *barco3h_h ;
-GdkPixmap *barco3v ;
-GdkPixmap *barco3v_t ;
-GdkPixmap *barco3v_h ;
-GdkPixmap *barco4h ;
-GdkPixmap *barco4h_t ;
-GdkPixmap *barco4h_h ;
-GdkPixmap *barco4v ;
-GdkPixmap *barco4v_t ;
-GdkPixmap *barco4v_h ;
-
-GdkPixmap *fondo ;
-GdkPixmap *agua ;
-GdkPixmap *about_pix ;
-GdkPixmap *icono ;
-GdkBitmap *mask ;
+GdkPixbuf *barco1 ;
+GdkPixbuf *barco1_t ;
+GdkPixbuf *barco1_h ;
+GdkPixbuf *barco2h ;
+GdkPixbuf *barco2h_t ;
+GdkPixbuf *barco2h_h ;
+GdkPixbuf *barco2v ;
+GdkPixbuf *barco2v_t ;
+GdkPixbuf *barco2v_h ;
+GdkPixbuf *barco3h ;
+GdkPixbuf *barco3h_t ;
+GdkPixbuf *barco3h_h ;
+GdkPixbuf *barco3v ;
+GdkPixbuf *barco3v_t ;
+GdkPixbuf *barco3v_h ;
+GdkPixbuf *barco4h ;
+GdkPixbuf *barco4h_t ;
+GdkPixbuf *barco4h_h ;
+GdkPixbuf *barco4v ;
+GdkPixbuf *barco4v_t ;
+GdkPixbuf *barco4v_h ;
+
+GdkPixbuf *fondo ;
+GdkPixbuf *agua ;
+GdkPixbuf *about_pix ;
+GdkPixbuf *icono ;
 
 GtkWidget *hbox_status;
 GtkWidget *statusbar_left;
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/gbnclient.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/gbnclient.c
@@ -24,7 +24,9 @@
 #include <string.h>
 
 #include <config.h>
-#include <gnome.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <glib/gstdio.h>
 
 #include "protocol.h"
 #include "cliente.h"
@@ -42,35 +44,97 @@
 
 static char *server_tmp;
 static char *nombre_tmp;
-static struct poptOption options[] =
+static GOptionEntry options[] =
 {
-       { "port", 'p', POPT_ARG_INT, &usuario.port, 0, N_("Port number. Default 
is 1995"),NULL},
-       { "server", 's', POPT_ARG_STRING, &server_tmp, 0, N_("Server name. 
Default is localhost"),"SERVER" },
-       { "player", 'n', POPT_ARG_STRING, &nombre_tmp, 0, N_("Player name. 
Default is your login name"),"PLAYERNAME"},
+       { "port", 'p', G_OPTION_FLAG_NONE, G_OPTION_ARG_INT, &usuario.port, 
N_("Port number. Default is 1995"),NULL},
+       { "server", 's', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, &server_tmp, 
N_("Server name. Default is localhost"),"SERVER" },
+       { "player", 'n', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, &nombre_tmp, 
N_("Player name. Default is your login name"),"PLAYERNAME"},
 #ifdef WITH_GGZ
-       { "ggz", 0, POPT_ARG_NONE, &usuario.with_ggz, 0, N_("Enable GGZ 
mode"),NULL },
+       { "ggz", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &usuario.with_ggz, 
N_("Enable GGZ mode"),NULL },
 #endif /* WITH_GGZ */
-       { NULL, '\0',  0, NULL }
+       { NULL }
 };
 
+/* Migrate old settings from ~/.gnome2/gbnclient.  */
+static gchar* migrate_old_settings( void )
+{
+        GKeyFile *kf;
+        gchar *file;
+        gchar *msg = NULL;
+
+        kf = g_key_file_new();
+        file = g_build_filename(g_get_home_dir(), ".gnome2",
+                                "gbnclient", NULL);
+        if(g_key_file_load_from_file(kf, file, G_KEY_FILE_NONE, NULL)) {
+                gchar **groups;
+                gsize len;
+
+                /* File exists but if the user never changed the
+                   settings it will contain only the Placement section
+                   (automatically created internal Bonobo stuff).  */
+                groups = g_key_file_get_groups(kf, &len);
+                if(len > 1) {
+                        gchar *s;
+                        gint i;
+
+                        /* Apply all changes at once.  */
+                        g_settings_delay(settings);
+                        i = g_key_file_get_integer(kf, "data", "port", NULL);
+                        g_settings_set_uint(settings, "port", i);
+                        s = g_key_file_get_string(kf, "data", "servername",
+                                                  NULL);
+                        g_settings_set_string(settings, "servername", s);
+                        g_free(s);
+                        s = g_key_file_get_string(kf, "data", "playername",
+                                                  NULL);
+                        g_settings_set_string(settings, "playername", s);
+                        g_free(s);
+                        i = g_key_file_get_integer(kf, "data", "random", NULL);
+                        g_settings_set_uint(settings, "random", i);
+                        g_settings_apply(settings);
+                        msg = g_strdup("Sucessfully migrated old settings.");
+                } else
+                        msg = g_strdup("Found empty old config file; 
deleted.");
+
+                g_strfreev(groups);
+                g_unlink(file);
+        }
+        g_free(file);
+        g_key_file_free(kf);
+
+        return msg;
+}
 
 /* Funcion que carga las variables */
 /* Function that loads the variables */
-static void init_args()
+static gchar* init_args()
 {
        gchar temporal[1024];
-       
snprintf(temporal,sizeof(temporal)-1,"/gbnclient/data/playername=%s",getenv("LOGNAME"));
-       
strncpy(usuario.nombre,gnome_config_get_string_with_default(temporal,NULL),MAXNAMELEN);
+       gchar *s, *msg = NULL;
+       settings = g_settings_new("net.sf.batnav.gbnclient");
+       msg = migrate_old_settings();
+       snprintf(temporal,sizeof(temporal)-1,"%s",getenv("LOGNAME"));
+       s = g_settings_get_string(settings, "playername");
+       if(strlen(s))
+               strncpy(usuario.nombre,s,MAXNAMELEN);
+       else
+               strncpy(usuario.nombre,temporal,MAXNAMELEN);
 
-       strncpy( 
usuario.server,gnome_config_get_string_with_default("/gbnclient/data/servername=localhost",NULL),MAXSERVERNAME);
+       g_free(s);
+       s = g_settings_get_string(settings, "servername");
+       strncpy( usuario.server,s,MAXSERVERNAME);
+       g_free(s);
        
-       usuario.port = 
gnome_config_get_int_with_default("/gbnclient/data/port=1995",NULL);
-       usuario.random = 
gnome_config_get_int_with_default("/gbnclient/data/random=1995",NULL);
+       usuario.port = g_settings_get_uint(settings, "port");
+       usuario.random = g_settings_get_uint(settings, "random");
        
-       gnome_config_set_int   ("/gbnclient/data/port",  usuario.port);
-       gnome_config_set_string("/gbnclient/data/servername",usuario.server);
-       gnome_config_set_string("/gbnclient/data/playername",usuario.nombre);
-       gnome_config_sync();
+       g_settings_delay(settings);
+       g_settings_set_uint(settings, "port", usuario.port);
+       g_settings_set_string(settings, "servername", usuario.server);
+       g_settings_set_string(settings, "playername", usuario.nombre);
+       g_settings_apply(settings);
+
+       return msg;
 }
 
 /* Funcion que saca a un usuario */
@@ -151,17 +215,23 @@
  ****************************************************************************/
 
 /* Left map (My Board)*/
-int expose_event( GtkWidget *widget, GdkEventExpose *event )
+int expose_event( GtkWidget *widget, cairo_t *cr )
 {
        gint i,j;
    
+       if (usuario.play==PLAY || usuario.play==TURN) {
+               char buf[100];
+               iwtable( buf );
+               fillboard( cr, inteliclient( (char*)buf ), 0 );
+               return FALSE;
+       }
+
        for(i=0;i<10;i++) {
                for(j=0;j<10;j++)
-                       pmicell( i,j, usuario.mitabla[i][j] );
+                       pmicell( cr, i,j, usuario.mitabla[i][j] );
        }
-   
 
-       draw_grid_left();
+       draw_grid_left(cr);
        return FALSE;
 }
 
@@ -170,6 +240,10 @@
 /* Signal PRESS_BUTTON on left map (My Board) */
 int button_press_event (GtkWidget *widget, GdkEventButton *event)
 {
+       cairo_t *cr;
+       cairo_region_t *region;
+       GdkWindow *win;
+       GdkDrawingContext *ctxt;
        gint x,y;
    
        x=event->x / ANCHO; /* Wide */
@@ -184,60 +258,60 @@
                textfill(0,_("You can't modify your board while playing"));
                return TRUE;
        }
+       win = gtk_widget_get_window(widget);
+       region = gdk_window_get_clip_region(win);
+       ctxt = gdk_window_begin_draw_frame(win, region);
+       cr = gdk_drawing_context_get_cairo_context(ctxt);
        if ( event->button == 1 ) { /* Boton izquierdo */
                /* Left button */
-               gdk_draw_pixmap( widget->window,
-                       widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
-                       barco1,
-                       0,0,
-                       x*ANCHO+1,y*LARGO+1,
-                       ANCHO-1,LARGO-1);
+               gdk_cairo_set_source_pixbuf(cr, barco1, x*ANCHO+1, y*LARGO+1);
+               cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO-1, LARGO-1);
+               cairo_fill(cr);
                /* set boat at user.mytable[x][y] */
                usuario.mitabla[x][y]=BARCO;
        } else if ( event->button == 3 ) { /* Boton derecho */
                /* Right button */
-               gdk_draw_pixmap( widget->window,
-                       widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
-                       fondo,
-                       x*ANCHO+1,y*LARGO+1,
-                       x*ANCHO+1,y*LARGO+1,
-                       ANCHO-1,LARGO-1);                                 
+               gdk_cairo_set_source_pixbuf(cr, fondo, x*ANCHO+1, y*LARGO+1);
+               cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO-1, LARGO-1);
+               cairo_fill(cr);
                /* clear boat at user.mytable[x][y] */
                usuario.mitabla[x][y]=NOBARCO;
        }               
+       gdk_window_end_draw_frame(win, ctxt);
+       gtk_widget_queue_draw_region(widget, region);
+       cairo_region_destroy(region);
        return TRUE;
 }
 
 /* (Left? Right?) About */
-int expose_event_about (GtkWidget *widget, GdkEventExpose *event)
+int expose_event_about (GtkWidget *widget, cairo_t *cr)
 {
-       gdk_draw_pixmap( widget->window,
-               widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
-               about_pix,
-               0,0,
-               0,0,
-               200,200
-       );
+       gdk_cairo_set_source_pixbuf(cr, about_pix, 0, 0);
+       cairo_rectangle(cr, 0, 0, 200, 200);
+       cairo_fill(cr);
        return FALSE;
 }
 
 /* Right, page switch */
-int page_switch( GtkWidget *widget, GtkNotebookPage *page, gint page_num )
+void page_switch( GtkWidget *widget, GtkWidget *page, gint page_num )
 {
        if( usuario.play>=PLAY ) {
                usuario.usrfrom = usuario.pages[ page_num ];
                bnwrite(usuario.sock,BN_READ"=%i",usuario.usrfrom);
        }
-       return TRUE;
 }
 
 /* Right panel */
-int expose_event_right( GtkWidget *widget, GdkEventExpose *event )
+int expose_event_right( GtkWidget *widget, cairo_t *cr )
 {
        /* Fill the right (enemy) board */
-       fillboard( inteliclient(usuario.tempclit),1);
-
-       draw_grid_right();
+       if(usuario.play==PLAY || usuario.play==TURN) {
+               char *buf = NULL;
+               buf = g_object_get_data(G_OBJECT(widget), "buffer");
+               if (buf)
+                       fillboard( cr, inteliclient(buf), 1 );
+       }
+       fillboard( cr, inteliclient(usuario.tempclit),1);
        
        return FALSE;
 }
@@ -328,42 +402,44 @@
                usuario.tempclit[i]=table[i];
 }
 
-void showboard( GdkPixmap *pixmap )
-{
-       int i;
-   
-       i = gtk_notebook_current_page( GTK_NOTEBOOK( notebook_right ) );
-       i = usuario.pages[ i ]; 
-   
-       gdk_draw_pixmap( drawing_right[i]->window,
-               
drawing_right[i]->style->fg_gc[GTK_WIDGET_STATE(drawing_right[i])],
-               pixmap,
-               0,0,
-               0,0,
-               200,200
-       );
-}
-
-
 /* funcion que rellena los tableros
  * function that fills up boards
  * IN: char * - relleno / stuffed
  * IN: int - 0 - left board
  *         - 1 - right board
  */
-void fillboard( char *filltable, int a )
+void fillboard( cairo_t *cr, char *filltable, int a )
 {
+       cairo_region_t *region = NULL;
+       GtkWidget *widget;
+       GdkWindow *win;
+       GdkDrawingContext *ctxt;
        gint i,j;
        gint k;
+
+       if(!cr) {
+               if(a==1) {
+                       i = gtk_notebook_get_current_page(GTK_NOTEBOOK
+                                                         (notebook_right));
+                       i = usuario.pages[i];
+                       widget = drawing_right[i];
+               } else
+                       widget = drawing_left;
+
+               win = gtk_widget_get_window(widget);
+               region = gdk_window_get_clip_region(win);
+               ctxt = gdk_window_begin_draw_frame(win, region);
+               cr = gdk_drawing_context_get_cairo_context(ctxt);
+       }
    
        i=0;j=0;
    
        for(k=0;k<100;k++) {
                if(a==0) /* izquierda / left*/
-                       pmicell( i,j, filltable[k]);
+                       pmicell( cr, i,j, filltable[k]);
                else    /* a==1 (derecha / right) */
                {
-                       ptucell( i,j, filltable[k]);
+                       ptucell( cr, i,j, filltable[k]);
                }
        
                i++;
@@ -374,9 +450,14 @@
        }
 
        if( a==0 )
-               draw_grid_left();
+               draw_grid_left(cr);
        else
-               draw_grid_right();
+               draw_grid_right(cr);
+
+       if(region) {
+               gdk_window_end_draw_frame(win, ctxt);
+               cairo_region_destroy(region);
+       }
 }
 
 /* If the cell is in bounds, apply color to the cell
@@ -462,7 +543,7 @@
                temptable[100]=0;/* FIXME: Lo necesito? / I need it? */
                bnwrite(usuario.sock,BN_SEND"=%s",temptable);
                /* Fill the left (player) board */
-               fillboard(temptable,0);
+               fillboard(NULL,temptable,0);
                return( TRUE );
        } else
                return -1;
@@ -490,6 +571,7 @@
 
 int send_connect()
 {
+       GIOChannel *channel;
 
        if( usuario.with_ggz ) {
 #ifdef WITH_GGZ
@@ -507,7 +589,9 @@
 
                return -1;
        }
-       usuario.tag = gdk_input_add( usuario.sock, GDK_INPUT_READ, 
(GdkInputFunction) proceso, (gpointer) NULL );
+       channel = g_io_channel_unix_new( usuario.sock );
+       usuario.tag = g_io_add_watch( channel, G_IO_IN, proceso, NULL );
+       g_io_channel_unref( channel );
     
        usuario.play=CONNEC;
 
@@ -533,7 +617,7 @@
                usuario.pages[i]=i;
        }
        usuario.play=DISCON;
-       gdk_input_remove( usuario.tag );
+       g_source_remove( usuario.tag );
 
 #if WITH_GGZ
        if( usuario.with_ggz )
@@ -547,7 +631,7 @@
        
        /* gtk v1.2 no me actualiza este evento. forzarlo */
        /* it does not update east event to me to force it */
-       expose_event( drawing_left, NULL );
+       gtk_widget_queue_draw( drawing_left );
 
        update_sensi();
        return 0;
@@ -580,53 +664,15 @@
        usuario.hide=FALSE;
 }
 
-/* A little helper function.  */
-static char *
-nstr (int n)
-{
-       char buf[20];
-       sprintf (buf, "%d", n);
-       return strdup (buf);
-}
-
-static int
-save_state (GnomeClient        *client,
-           gint                phase,
-           GnomeRestartStyle   save_style,
-           gint                shutdown,
-           GnomeInteractStyle  interact_style,
-           gint                fast,
-           gpointer            client_data)
-{
-       char *argv[20];
-       int i = 0, j;
-       gint xpos, ypos;
-
-       gdk_window_get_origin (window->window, &xpos, &ypos);
-
-       argv[i++] = (char *) client_data;
-       argv[i++] = "-x";
-       argv[i++] = nstr (xpos);
-       argv[i++] = "-y";
-       argv[i++] = nstr (ypos);
-
-       gnome_client_set_restart_command (client, i, argv);
-       /* i.e. clone_command = restart_command - '--sm-client-id' */
-       gnome_client_set_clone_command (client, 0, NULL);
-
-       for (j = 2; j < i; j += 2)
-               free (argv[j]);
-
-       return TRUE;
-}
-
 /****************************************************************************
  *                           MAIN * MAIN * MAIN
  ****************************************************************************/
 
 int main (int argc, char *argv[])
 {
-       GnomeClient *client;
+       GOptionContext *ctx;
+       GError *error = NULL;
+       gchar *msg = NULL;
        int r;
 
        dont_run_as_root();
@@ -636,9 +682,20 @@
   
        usuario.with_ggz=0;
 
-       init_args();
+       msg = init_args();
        
-       gnome_init_with_popt_table("gbnclient", BNVERSION, argc, argv, options, 
0, NULL);
+       ctx=g_option_context_new(_("- Batalla Naval Client"));
+       g_option_context_add_main_entries(ctx, options, PACKAGE);
+       g_option_context_add_group(ctx, gtk_get_option_group (TRUE));
+
+       if( ! g_option_context_parse(ctx, &argc, &argv, &error) ) {
+               fprintf(stderr, _("Option parsing failed: %s\n"),
+                       error->message);
+               g_error_free(error);
+               exit(EXIT_FAILURE);
+       }
+
+       gtk_init(&argc, &argv);
 
        if(server_tmp) {
                strncpy(usuario.server,server_tmp,sizeof(usuario.server)-1);
@@ -649,14 +706,14 @@
                usuario.nombre[sizeof(usuario.nombre)-1]=0;
        }
        
-       client = gnome_master_client ();
-       
-       gtk_signal_connect (GTK_OBJECT (client), "save_yourself",
-               GTK_SIGNAL_FUNC (save_state), argv[0]);
-
        init_datos();
        init_X();
 
+       if( msg ) {
+               textfill(0, msg);
+               g_free(msg);
+       }
+
        update_sensi();
        if( usuario.with_ggz ) {
                if( send_connect() < 0 ) {
@@ -675,49 +732,40 @@
        return 0;
 }
 
-void draw_grid_right()
+void draw_grid_right(cairo_t *cr)
 {
        int i;
-       GtkWidget *widget;
-       i = gtk_notebook_current_page( GTK_NOTEBOOK( notebook_right ) );
-       i = usuario.pages[ i ]; 
-       widget = drawing_right[ i ];
 
-       if( ! widget )
-               return;
-
-       /* draw the grid */
        if( usuario.view_grid ) {
+               cairo_set_source_rgb(cr, 0, 0, 0);
+               cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE);
+               cairo_set_line_width(cr, 1.0);
                for(i=0;i<10;i++) {
-                       gdk_draw_line (widget->window,
-                               widget->style->black_gc,
-                               0,LARGO*i,
-                               ANCHO*10,LARGO*i);
-                       gdk_draw_line (widget->window,
-                               widget->style->black_gc,
-                               ANCHO*i,0,
-                               ANCHO*i,LARGO*10);
+                       cairo_move_to(cr, 0, LARGO*i + 0.5);
+                       cairo_line_to(cr, ANCHO*10, LARGO*i + 0.5);
+                       cairo_move_to(cr, ANCHO*i, 0.5);
+                       cairo_line_to(cr, ANCHO*i, LARGO*10 + 0.5);
                }
+               cairo_stroke(cr);
        }
 }
 
        /* draw the grid */
-void draw_grid_left()
+void draw_grid_left(cairo_t *cr)
 {
        int i;
-       GtkWidget *widget = drawing_left;
 
        if( usuario.view_grid ) {
+               cairo_set_source_rgb(cr, 0, 0, 0);
+               cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE);
+               cairo_set_line_width(cr, 1.0);
                for(i=0;i<10;i++) {
-                       gdk_draw_line (widget->window,
-                               widget->style->black_gc,
-                               0,LARGO*i,
-                               ANCHO*10,LARGO*i);
-                       gdk_draw_line (widget->window,
-                               widget->style->black_gc,
-                               ANCHO*i,0,
-                               ANCHO*i,LARGO*10);
+                       cairo_move_to(cr, 0, LARGO*i + 0.5);
+                       cairo_line_to(cr, ANCHO*10, LARGO*i + 0.5);
+                       cairo_move_to(cr, ANCHO*i, 0.5);
+                       cairo_line_to(cr, ANCHO*i, LARGO*10 + 0.5);
                }
+               cairo_stroke(cr);
        }
 }
    
--- gbatnav-1.0.4cvs20051004.orig/gbnrobot/robot_random_board.c
+++ gbatnav-1.0.4cvs20051004/gbnrobot/robot_random_board.c
@@ -6,7 +6,7 @@
 
 #include <stdlib.h>
 #include <config.h>
-#include <gnome.h>
+#include <glib.h>
 
 #include "robot_cliente.h"
 #include "robot_random_board.h"
@@ -14,13 +14,15 @@
 
 void generar( void )
 {
+       GSettings *settings;
        gint x,y,d,t,i,j;
 
-       cliente.random = 
gnome_config_get_int_with_default("/gbnrobot/data/random=1995",NULL);
+       settings = g_settings_new("net.sf.batnav.gbnrobot");
+       cliente.random = g_settings_get_uint(settings, "random");
        srandom( cliente.random );
        cliente.random = random();              
-       gnome_config_set_int("/gbnrobot/data/random",  cliente.random);
-       gnome_config_sync();
+       g_settings_set_uint(settings, "random", cliente.random);
+       g_object_unref(settings);
 
        for(i=0;i<10;i++) { /* clean tabla */
                for(j=0;j<10;j++)
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/proceso.h
+++ gbatnav-1.0.4cvs20051004/gbnclient/proceso.h
@@ -8,10 +8,10 @@
 #ifndef __BN_PROCESO__
 #define __BN_PROCESO__
 
-#include <gnome.h>
+#include <glib.h>
 
 void aux_disconnect();
 gint aux_connect();
-gint proceso( gpointer data, gint sock, GdkInputCondition GDK_INPUT_READ );
+gboolean proceso( GIOChannel *src, GIOCondition cond, gpointer data );
 
 # endif /*__BN_PROCESO__*/
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/gbnclient.h
+++ gbatnav-1.0.4cvs20051004/gbnclient/gbnclient.h
@@ -19,15 +19,15 @@
 
 gint buscar_usr( gint usr );
 
-gint expose_event( GtkWidget *widget, GdkEventExpose *event );
+gint expose_event( GtkWidget *widget, cairo_t *cr );
 
 gint button_press_event (GtkWidget *widget, GdkEventButton *event);
 
-gint expose_event_about (GtkWidget *widget, GdkEventExpose *event);
+gint expose_event_about (GtkWidget *widget, cairo_t *cr);
 
-gint page_switch( GtkWidget *widget, GtkNotebookPage *page, gint page_num );
+void page_switch( GtkWidget *widget, GtkWidget *page, gint page_num );
 
-gint expose_event_right( GtkWidget *widget, GdkEventExpose *event );
+gint expose_event_right( GtkWidget *widget, cairo_t *cr );
 
 gint button_press_event_right( GtkWidget *widget, GdkEventButton *event );
 
@@ -37,9 +37,7 @@
 
 void putintemp( char *table );
 
-void showboard( GdkPixmap *pixmap );
-
-void fillboard( char *filltable, int a );
+void fillboard( cairo_t *cr, char *filltable, int a );
 
 char* inteliclient( char *table);
 
@@ -55,9 +53,9 @@
 int init_cliente( void );
 
 
-void draw_grid_left();
+void draw_grid_left( cairo_t *cr );
 
-void draw_grid_right();
+void draw_grid_right( cairo_t *cr );
 
 void bn_help( void );
    
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/version.h
+++ gbatnav-1.0.4cvs20051004/gbnclient/version.h
@@ -3,7 +3,6 @@
 #ifndef __BATNAV_VERSION_H
 #define __BATNAV_VERSION_H
 
-#include <gnome.h>
 #include <config.h>
 
 #define BNVERSION      "Batalla Naval Client v"VERSION
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/g_interface.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/g_interface.c
@@ -6,7 +6,8 @@
 #include <string.h>
 
 #include <config.h>
-#include <gnome.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
 
 #include "protocol.h"
 #include "gbnclient.h"
@@ -66,7 +67,7 @@
 
        snprintf(buf,sizeof(buf)-1,BINDIR"/gbnrobot --port %d --server 
%s",usuario.port,usuario.server);
        buf[sizeof(buf)-1]=0;
-       gnome_execute_shell(NULL,buf);
+       g_spawn_command_line_async(buf,NULL);
 }
 void on_random_activate (GtkMenuItem *menuitem, gpointer user_data)
 {
@@ -90,272 +91,284 @@
        gtk_main_quit();
 }
 
-
-static void g_cerrar(GtkWidget *widget, int button,gpointer data)
-{
-       gnome_dialog_close(GNOME_DIALOG(widget));
-}
-
 gboolean g_box_lost()
 {
-       static GtkWidget *box = NULL;
+       GtkWidget *box;
 
-       if (box == NULL ) {
-               box = gnome_message_box_new (_("Game Over: You lost!"),
-                       GNOME_MESSAGE_BOX_INFO,
-                       GNOME_STOCK_BUTTON_OK,
-                       NULL);
-               if( box==NULL) return FALSE;
-
-               generic_window_set_parent( box, GTK_WINDOW(window) );
-               
-               gtk_signal_connect (GTK_OBJECT (box), "clicked",
-                       GTK_SIGNAL_FUNC (g_cerrar), NULL);
+       box = gtk_message_dialog_new ( GTK_WINDOW(window),
+                                      GTK_DIALOG_DESTROY_WITH_PARENT,
+                                      GTK_MESSAGE_INFO,
+                                      GTK_BUTTONS_OK,
+                                      "%s", _("Game Over: You lost!") );
 
-               gtk_window_set_modal( GTK_WINDOW(box),TRUE);
-               gnome_dialog_close_hides(GNOME_DIALOG(box), TRUE);
-       }
-       gtk_widget_show( box );
+       gtk_dialog_run( GTK_DIALOG(box) );
+       gtk_widget_destroy( box );
        return TRUE;
 }
 
 gboolean g_box_win()
 {
-       static GtkWidget *box = NULL;
-
-       if (box == NULL ) {
-               box = gnome_message_box_new (_("Game Over: You are the 
Winner!"),
-                       GNOME_MESSAGE_BOX_INFO,
-                       GNOME_STOCK_BUTTON_OK,
-                       NULL);
-
-               if( box==NULL) return FALSE;
-
-               generic_window_set_parent( box, GTK_WINDOW(window) );
+       GtkWidget *box;
 
-               gtk_signal_connect (GTK_OBJECT (box), "clicked",
-                       GTK_SIGNAL_FUNC (g_cerrar), NULL);
+       box = gtk_message_dialog_new ( GTK_WINDOW(window),
+                                      GTK_DIALOG_DESTROY_WITH_PARENT,
+                                      GTK_MESSAGE_INFO,
+                                      GTK_BUTTONS_OK,
+                                      "%s",
+                                      _("Game Over: You are the Winner!") );
 
-               gtk_window_set_modal( GTK_WINDOW(box),TRUE);
-               gnome_dialog_close_hides(GNOME_DIALOG(box), TRUE);
-       }
-       gtk_widget_show( box );
+       gtk_dialog_run( GTK_DIALOG(box) );
+       gtk_widget_destroy( box );
        return TRUE;
 }
 
 void about( GtkWidget *widget, gpointer data )
 {
-       GtkWidget *href, *hbox;
-       static GtkWidget *about = NULL;
-       static GdkPixbuf *gnome_gbatnav=NULL;
+       GdkPixbuf *gnome_gbatnav=NULL;
        static const char *authors[] = {
                "Ricardo C. Quesada (r...@core-sdi.com)",
                NULL
        };
 
-       if (!about) {
-               gnome_gbatnav = gdk_pixbuf_new_from_file("/usr/share/pixmaps/" 
"gnome-gbatnav.png",NULL);
-               about = gnome_about_new (_("Batalla Naval client"),
-                               VERSION,
-                               _("(C) 1998-2001 Ricardo C. Quesada"),
+       gnome_gbatnav = gdk_pixbuf_new_from_file("/usr/share/pixmaps/" 
"gnome-gbatnav.png",NULL);
+       gtk_show_about_dialog (GTK_WINDOW(window),
+                              "program-name", _("Batalla Naval client"),
+                              "version", VERSION,
+                              "copyright",
+                              _("(C) 1998-2001 Ricardo C. Quesada"),
+                              "comments",
                                _("A multiplayer networked battleship game."),
-                               (const char**) authors,
-                               NULL, NULL,
-                               gnome_gbatnav);
-
-               gtk_signal_connect (GTK_OBJECT (about), "destroy",
-                                   GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                                   &about);
-
-
-               hbox = gtk_hbox_new (TRUE, 0);
-               href = gnome_href_new ("http://batnav.sourceforge.net";, 
_("Batalla Naval Home Page"));
-               gtk_box_pack_start (GTK_BOX (hbox), href, FALSE, FALSE, 0);
-               gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (about)->vbox),
-                           hbox, TRUE, FALSE, 0);
-               gtk_widget_show_all (hbox);
-       }
-
-       gtk_widget_show_now (about);
-       raise_and_focus (about);
+                              "authors", authors,
+                              "website", "http://batnav.sourceforge.net";,
+                              "website-label", _("Batalla Naval Home Page"),
+                              "logo", gnome_gbatnav,
+                              NULL);
+       g_object_unref(gnome_gbatnav);
 }
 
-
-enum {
-       WID_G_CONNEC,
-       WID_G_DISCON,
-       WID_G_XXX0,
-       WID_G_ROBOT,
-};
-
-GnomeUIInfo gamemenu[] = 
-{
-       { GNOME_APP_UI_ITEM, N_("_Connect"), NULL, on_connect_activate, NULL, 
NULL,
-               GNOME_APP_PIXMAP_DATA, NULL, 0, 0, NULL },
-       { GNOME_APP_UI_ITEM, N_("_Disconnect"), NULL, on_disconnect_activate, 
NULL, NULL,
-               GNOME_APP_PIXMAP_DATA, NULL, 0, 0, NULL },
-       GNOMEUIINFO_SEPARATOR, 
-       { GNOME_APP_UI_ITEM, N_("_Launch a robot"), NULL, 
on_launchrobot_activate, NULL, NULL, 
-               GNOME_APP_PIXMAP_DATA, robot_xpm, 0, 0, NULL }, 
-       GNOMEUIINFO_SEPARATOR, 
-       GNOMEUIINFO_MENU_EXIT_ITEM(on_exit_activate,NULL),
-       GNOMEUIINFO_END
-};
-
-enum {
-       WID_A_RANDOM,
-       WID_A_SEND,
-       WID_A_START,
-       WID_A_STATUS,
-};
-
-GnomeUIInfo actionsmenu[] =
-{
-       { GNOME_APP_UI_ITEM, N_("_Generate random board"), NULL, 
on_random_activate, NULL, NULL,
-               GNOME_APP_PIXMAP_DATA, NULL, 0, 0, NULL },
-
-       { GNOME_APP_UI_ITEM, N_("_Send ships"), NULL, on_sendships_activate, 
NULL, NULL,
-               GNOME_APP_PIXMAP_DATA, NULL, 0, 0, NULL },
-
-       { GNOME_APP_UI_ITEM, N_("_Start"), NULL, on_start_activate, NULL, NULL,
-               GNOME_APP_PIXMAP_DATA, NULL, 0, 0, NULL },
-
-       { GNOME_APP_UI_ITEM, N_("Status"), NULL, on_status_activate, NULL, NULL,
-               GNOME_APP_PIXMAP_DATA, NULL, 0, 0, NULL },
-
-       GNOMEUIINFO_END
-};
-
-GnomeUIInfo viewmenu[] = {
-       { GNOME_APP_UI_TOGGLEITEM, N_("View lot of messages"), N_("View lot of 
messages"),
-       conf_view_messages, NULL, NULL,
-       GNOME_APP_PIXMAP_NONE, NULL,
-       0, 0, NULL },
-
-       { GNOME_APP_UI_TOGGLEITEM, N_("Hide grid"), N_("Hide the map grid"),
-       conf_view_grid, NULL, NULL,
-       GNOME_APP_PIXMAP_NONE, NULL,
-       0, 0, NULL },
-
-       GNOMEUIINFO_END
-};
-
-GnomeUIInfo helpmenu[] = 
-{
-       GNOMEUIINFO_HELP("gbatnav"),
-       GNOMEUIINFO_MENU_ABOUT_ITEM(about,NULL),
-       GNOMEUIINFO_END
-};
-
-GnomeUIInfo mainmenu[] = 
-{
-        GNOMEUIINFO_MENU_GAME_TREE(gamemenu),
-       { GNOME_APP_UI_SUBTREE_STOCK, N_("_Actions"), NULL, actionsmenu, NULL, 
NULL, \
-               (GnomeUIPixmapType) 0, NULL, 0, (GdkModifierType) 0, NULL },
-       GNOMEUIINFO_MENU_VIEW_TREE(viewmenu),
-        GNOMEUIINFO_MENU_HELP_TREE(helpmenu),
-       GNOMEUIINFO_END
-};
-
-enum {
-       WID_CONNEC,
-       WID_XXX0,
-       WID_RANDOM,
-       WID_SEND,
-       WID_XXX1,
-       WID_ROBOT,
-       WID_XXX2,
-       WID_START,
-};
-
-
-GnomeUIInfo main_toolbarinfo[] =
-{
-       {GNOME_APP_UI_ITEM, N_("Connect"), N_("Connect to server"),
-       on_connect_activate, NULL, NULL,
-       GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_PIXMAP_NEW, 0, 0, NULL},
-
-       GNOMEUIINFO_SEPARATOR,
-       
-       {GNOME_APP_UI_ITEM, N_("Random"), N_("Generate a random board"),
-       on_random_activate, NULL, NULL,
-       GNOME_APP_PIXMAP_DATA, random_xpm, 0, 0, NULL},
-
-       {GNOME_APP_UI_ITEM, N_("Send ships"), N_("Send ships to server"),
-       on_sendships_activate, NULL, NULL,
-       GNOME_APP_PIXMAP_DATA, ships_xpm, 0, 0, NULL},
-
-
-       GNOMEUIINFO_SEPARATOR,
-
-       {GNOME_APP_UI_ITEM, N_("Robot"), N_("Launch a robot"),
-       on_launchrobot_activate, NULL, NULL,
-       GNOME_APP_PIXMAP_DATA, robot_xpm, 0, 0, NULL},
-  
-       GNOMEUIINFO_SEPARATOR,
-
-       {GNOME_APP_UI_ITEM, N_("Start"), N_("Start the game"),
-       on_start_activate, NULL, NULL,
-       GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_PIXMAP_TIMER, 0, 0, NULL},
-       
-       {GNOME_APP_UI_ENDOFINFO}
-};
-
 /*****************************************************************************
  *                                   INIT X                                  *
  *****************************************************************************/
 void init_X( )
 {
-       GtkTooltips *tooltips;
        GtkWidget *inputline;
        GtkWidget *vbox_buttons;
+       GtkWidget *box;
+       GtkWidget *menubar;
+       GtkWidget *menu;
+       GtkWidget *item;
+       GtkWidget *toolbar;
+       GtkWidget *mbox;
+       GtkWidget *label;
+       GtkWidget *icon;
+       GtkWidget *image;
+       GtkToolItem *button;
+       GtkToolbarStyle style;
+       GdkPixbuf *pixbuf;
+       GtkAccelGroup *accel_group;
        GtkScrolledWindow *scrolledWindow=NULL;
         GtkTextIter text_iter;
 
-#ifdef ENABLE_NLS
-# define ELEMENTS(x) (sizeof(x) / sizeof(x[0])) 
-       {
-               int i;
-               for (i = 0; i < ELEMENTS(mainmenu); i++)
-                       mainmenu[i].label = gettext(mainmenu[i].label);
-               for (i = 0; i < ELEMENTS(gamemenu); i++)
-                       gamemenu[i].label = gettext(gamemenu[i].label);
-               for (i = 0; i < ELEMENTS(helpmenu); i++)
-                       helpmenu[i].label = gettext(helpmenu[i].label);
-       }
-#endif /* ENABLE_NLS */
-   
-       window = gnome_app_new ("gbnclient", _("Gnome Batalla Naval client") );
-       gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE);
-
-       gnome_app_create_menus(GNOME_APP(window), mainmenu);
-       gnome_app_create_toolbar(GNOME_APP(window), main_toolbarinfo);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_window_set_title(GTK_WINDOW(window),
+                            _("Gnome Batalla Naval client"));
+       gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
+       accel_group = gtk_accel_group_new();
+       gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
+
+       menubar = gtk_menu_bar_new();
+       box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
+       gtk_container_add(GTK_CONTAINER(window), box);
+       gtk_box_pack_start(GTK_BOX(box), menubar, FALSE, FALSE, 0);
+
+       menu = gtk_menu_new();
+       gtk_menu_set_accel_group(GTK_MENU(menu), accel_group);
+       item = gtk_menu_item_new_with_mnemonic(_("_Game"));
+       gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menubar), item);
+
+       item = gtk_menu_item_new_with_mnemonic(_("_Connect"));
+       g_object_set_data(G_OBJECT(window), "connec", item);
+       g_signal_connect(item, "activate",
+                        G_CALLBACK(on_connect_activate), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_menu_item_new_with_mnemonic(_("_Disconnect"));
+       g_object_set_data(G_OBJECT(window), "discon", item);
+       g_signal_connect(item, "activate",
+                        G_CALLBACK(on_disconnect_activate), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_separator_menu_item_new();
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       /* Emulate GtkImageMenuItem.  */
+       mbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
+       pixbuf = gdk_pixbuf_new_from_xpm_data(robot_xpm);
+       icon = gtk_image_new_from_pixbuf(pixbuf);
+       g_object_unref(pixbuf);
+       label = gtk_label_new_with_mnemonic(_("_Launch a robot"));
+       item = gtk_menu_item_new();
+       gtk_container_add(GTK_CONTAINER(mbox), icon);
+       gtk_container_add(GTK_CONTAINER(mbox), label);
+       gtk_container_add(GTK_CONTAINER(item), mbox);
+       g_object_set_data(G_OBJECT(window), "robot", item);
+       g_signal_connect(item, "activate",
+                        G_CALLBACK(on_launchrobot_activate), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_separator_menu_item_new();
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_menu_item_new_with_mnemonic(_("_Quit"));
+       gtk_widget_add_accelerator(item, "activate", accel_group, GDK_KEY_Q,
+                                  GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+       g_signal_connect(item, "activate", G_CALLBACK(on_exit_activate), NULL);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+       menu = gtk_menu_new();
+       item = gtk_menu_item_new_with_mnemonic(_("_Actions"));
+       gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menubar), item);
+
+       item = gtk_menu_item_new_with_mnemonic(_("_Generate random board"));
+       g_object_set_data(G_OBJECT(window), "random", item);
+       g_signal_connect(item, "activate",
+                        G_CALLBACK(on_random_activate), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_menu_item_new_with_mnemonic(_("_Send ships"));
+       g_object_set_data(G_OBJECT(window), "send", item);
+       g_signal_connect(item, "activate",
+                        G_CALLBACK(on_sendships_activate), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_menu_item_new_with_mnemonic(_("_Start"));
+       g_object_set_data(G_OBJECT(window), "start", item);
+       g_signal_connect(item, "activate",
+                        G_CALLBACK(on_start_activate), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_menu_item_new_with_label(_("Status"));
+       g_object_set_data(G_OBJECT(window), "status", item);
+       g_signal_connect(item, "activate",
+                        G_CALLBACK(on_status_activate), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       menu = gtk_menu_new();
+       item = gtk_menu_item_new_with_mnemonic(_("_View"));
+       gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menubar), item);
+
+       item = gtk_check_menu_item_new_with_label(_("View lot of messages"));
+       g_signal_connect(item, "toggled",
+                        G_CALLBACK(conf_view_messages), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_check_menu_item_new_with_label(_("Hide grid"));
+       gtk_widget_set_tooltip_text(item, _("Hide the map grid"));
+       g_signal_connect(item, "toggled", G_CALLBACK(conf_view_grid), NULL);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       menu = gtk_menu_new();
+       gtk_menu_set_accel_group(GTK_MENU(menu), accel_group);
+       item = gtk_menu_item_new_with_mnemonic(_("_Help"));
+       gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menubar), item);
+
+       item = gtk_menu_item_new_with_mnemonic(_("_Contents"));
+       gtk_widget_add_accelerator(item, "activate", accel_group, GDK_KEY_F1,
+                                  0, GTK_ACCEL_VISIBLE);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       item = gtk_menu_item_new_with_mnemonic(_("_About"));
+       g_signal_connect(item, "activate", G_CALLBACK(about), window);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+       toolbar = gtk_toolbar_new();
+       g_object_get(gtk_settings_get_default(), "gtk-toolbar-style",
+                    &style, NULL);
+       gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), style);
+       gtk_box_pack_start(GTK_BOX(box), toolbar, FALSE, FALSE, 0);
+
+       image = gtk_image_new_from_icon_name("document-new",
+                                            GTK_ICON_SIZE_LARGE_TOOLBAR);
+       button = gtk_tool_button_new(image, _("Connect"));
+       gtk_tool_item_set_tooltip_text(button, _("Connect to server"));
+       g_object_set_data(G_OBJECT(window), "t_connec", button);
+       g_signal_connect(button, "clicked",
+                        G_CALLBACK(on_connect_activate), NULL);
+       gtk_toolbar_insert(GTK_TOOLBAR(toolbar), button, -1);
+
+       button = gtk_separator_tool_item_new();
+       gtk_toolbar_insert(GTK_TOOLBAR(toolbar), button, -1);
+
+       pixbuf = gdk_pixbuf_new_from_xpm_data(random_xpm);
+       image = gtk_image_new_from_pixbuf(pixbuf);
+       g_object_unref(pixbuf);
+       button = gtk_tool_button_new(image, _("Random"));
+       gtk_tool_item_set_tooltip_text(button, _("Generate a random board"));
+       g_object_set_data(G_OBJECT(window), "t_random", button);
+       g_signal_connect(button, "clicked",
+                        G_CALLBACK(on_random_activate), NULL);
+       gtk_toolbar_insert(GTK_TOOLBAR(toolbar), button, -1);
+
+       pixbuf = gdk_pixbuf_new_from_xpm_data(ships_xpm);
+       image = gtk_image_new_from_pixbuf(pixbuf);
+       g_object_unref(pixbuf);
+       button = gtk_tool_button_new(image, _("Send ships"));
+       gtk_tool_item_set_tooltip_text(button, _("Send ships to server"));
+       g_object_set_data(G_OBJECT(window), "t_send", button);
+       g_signal_connect(button, "clicked",
+                        G_CALLBACK(on_sendships_activate), NULL);
+       gtk_toolbar_insert(GTK_TOOLBAR(toolbar), button, -1);
+
+       button = gtk_separator_tool_item_new();
+       gtk_toolbar_insert(GTK_TOOLBAR(toolbar), button, -1);
+
+       pixbuf = gdk_pixbuf_new_from_xpm_data(robot_xpm);
+       image = gtk_image_new_from_pixbuf(pixbuf);
+       g_object_unref(pixbuf);
+       button = gtk_tool_button_new(image, _("Robot"));
+       gtk_tool_item_set_tooltip_text(button, _("Launch a robot"));
+       g_object_set_data(G_OBJECT(window), "t_robot", button);
+       g_signal_connect(button, "clicked",
+                        G_CALLBACK(on_launchrobot_activate), NULL);
+       gtk_toolbar_insert(GTK_TOOLBAR(toolbar), button, -1);
+
+       button = gtk_separator_tool_item_new();
+       gtk_toolbar_insert(GTK_TOOLBAR(toolbar), button, -1);
+
+       image = gtk_image_new_from_icon_name("appointment-new",
+                                            GTK_ICON_SIZE_LARGE_TOOLBAR);
+       button = gtk_tool_button_new(image, _("Start"));
+       gtk_tool_item_set_tooltip_text(button, _("Start the game"));
+       g_object_set_data(G_OBJECT(window), "t_start", button);
+       g_signal_connect(button, "clicked",
+                        G_CALLBACK(on_start_activate), NULL);
+       gtk_toolbar_insert(GTK_TOOLBAR(toolbar), button, -1);
 
 /*     gtk_menu_item_right_justify(GTK_MENU_ITEM(mainmenu[3].widget)); */
        gtk_widget_realize (window);
    
-       gtk_signal_connect ( GTK_OBJECT( window), "destroy",
-               GTK_SIGNAL_FUNC( on_exit_activate ),
-               GTK_OBJECT(window) );
-       gtk_signal_connect ( GTK_OBJECT( window), "delete_event",
-               GTK_SIGNAL_FUNC( on_exit_activate ),
-               GTK_OBJECT(window) );
+       g_signal_connect ( G_OBJECT( window), "destroy",
+               G_CALLBACK( on_exit_activate ),
+               G_OBJECT(window) );
+       g_signal_connect ( G_OBJECT( window), "delete_event",
+               G_CALLBACK( on_exit_activate ),
+               G_OBJECT(window) );
   
-       tooltips=gtk_tooltips_new();
-       gtk_object_set_data (GTK_OBJECT (window), "tooltips", tooltips);
-
-
        /* Box que contiene a box_left, box_button, box_right  */
-       vbox = gtk_vbox_new ( FALSE, 0);
-       gnome_app_set_contents(GNOME_APP(window), vbox );
+       vbox = gtk_box_new ( GTK_ORIENTATION_VERTICAL, 0 );
+       gtk_box_pack_start(GTK_BOX(box), vbox, FALSE, FALSE, 0);
    
-       gtk_container_border_width ( GTK_CONTAINER(vbox), 0);
+       gtk_container_set_border_width ( GTK_CONTAINER(vbox), 0);
        gtk_widget_show ( vbox ); 
 
        /* box horizontal */
-       hbox = gtk_hbox_new ( FALSE, 0);
+       hbox = gtk_box_new ( GTK_ORIENTATION_HORIZONTAL, 0);
        gtk_container_add ( GTK_CONTAINER(vbox), hbox );
-       gtk_container_border_width ( GTK_CONTAINER(hbox), 0);
+       gtk_container_set_border_width ( GTK_CONTAINER(hbox), 0);
        gtk_widget_show( hbox );
    
        /******************** LEFT *******************/
@@ -366,22 +379,20 @@
    
        /* respecto al drawing_left */
        drawing_left = gtk_drawing_area_new();
-       gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_left),200,200);
+       gtk_widget_set_size_request(drawing_left,200,200);
        gtk_widget_show( drawing_left );
    
 
        /* seƱales de la drawing area */
-       gtk_signal_connect (GTK_OBJECT (drawing_left), "expose_event",
-               (GtkSignalFunc) expose_event, NULL);
-       gtk_signal_connect (GTK_OBJECT (drawing_left), "button_press_event",
-               (GtkSignalFunc) button_press_event, NULL);
-       gtk_widget_set_events (drawing_left, GDK_EXPOSURE_MASK
-               |GDK_BUTTON_PRESS_MASK);
-
+       g_signal_connect (G_OBJECT (drawing_left), "draw",
+               (GCallback) expose_event, NULL);
+       g_signal_connect (G_OBJECT (drawing_left), "button-press-event",
+               (GCallback) button_press_event, NULL);
+       gtk_widget_add_events (drawing_left, GDK_BUTTON_PRESS_MASK);
    
        /* respecto al drawing_about */
         scrolledWindow = 
GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL,NULL));
-       hbox_text_help = gtk_hbox_new ( FALSE, 0);
+       hbox_text_help = gtk_box_new ( GTK_ORIENTATION_HORIZONTAL, 0);
        gtk_widget_show( hbox_text_help );
    
        text_help = GTK_WIDGET(gtk_text_view_new());
@@ -396,26 +407,26 @@
    
        label_left = gtk_label_new(_("My board"));
        gtk_notebook_append_page ( 
GTK_NOTEBOOK(notebook_left),drawing_left,label_left);
-       label_left = gtk_label_new(_("Quick Help"));
+       label_left = gtk_label_new(_("Help"));
        gtk_notebook_append_page ( 
GTK_NOTEBOOK(notebook_left),hbox_text_help,label_left);
 
        bn_help();
       
        /* center */
 
-       vbox_buttons = gtk_vbox_new ( TRUE, 10);
+       vbox_buttons = gtk_box_new ( GTK_ORIENTATION_VERTICAL, 10);
        gtk_container_add ( GTK_CONTAINER (hbox), vbox_buttons );
-       gtk_container_border_width( GTK_CONTAINER(vbox_buttons),20);
+       gtk_container_set_border_width( GTK_CONTAINER(vbox_buttons),20);
        gtk_widget_show( vbox_buttons );
 
 
        /* right */
        notebook_right = gtk_notebook_new();
-       gtk_signal_connect ( GTK_OBJECT ( notebook_right ), "switch_page",
-               GTK_SIGNAL_FUNC ( page_switch ), NULL );
+       g_signal_connect ( G_OBJECT ( notebook_right ), "switch-page",
+               G_CALLBACK ( page_switch ), NULL );
        gtk_notebook_set_tab_pos( GTK_NOTEBOOK(notebook_right),GTK_POS_TOP );
-       gtk_box_pack_start( GTK_BOX(hbox),notebook_right,FALSE,TRUE,0);
-       gtk_container_border_width( GTK_CONTAINER( notebook_right), 0 );
+       gtk_box_pack_end( GTK_BOX(hbox),notebook_right,FALSE,TRUE,0);
+       gtk_container_set_border_width( GTK_CONTAINER( notebook_right), 0 );
        gtk_notebook_set_scrollable( GTK_NOTEBOOK(notebook_right) , TRUE );
        gtk_notebook_set_show_tabs( GTK_NOTEBOOK(notebook_right) , TRUE );
        gtk_notebook_popup_enable( GTK_NOTEBOOK(notebook_right) );
@@ -423,9 +434,9 @@
        gtk_widget_show (notebook_right);
 
        drawing_right_about = gtk_drawing_area_new();
-       gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_right_about),200,200);
-       gtk_signal_connect (GTK_OBJECT (drawing_right_about), "expose_event",
-               (GtkSignalFunc) expose_event_about, NULL );
+       gtk_widget_set_size_request(drawing_right_about,200,200);
+       g_signal_connect (G_OBJECT (drawing_right_about), "draw",
+               (GCallback) expose_event_about, NULL );
        gtk_widget_set_events (drawing_right_about, GDK_EXPOSURE_MASK );
        gtk_widget_show( drawing_right_about);
        label_right_about = gtk_label_new("Batalla Naval" );
@@ -434,13 +445,13 @@
    
 
        /* Ventana de texto de abajo */
-       separator = gtk_hseparator_new ();
+       separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
        gtk_box_pack_start ( GTK_BOX(vbox), separator, FALSE,TRUE, 0);
 
        gtk_widget_show(separator);
    
         scrolledWindow = 
GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL,NULL));
-       hbox_text = gtk_hbox_new ( FALSE, 0);
+       hbox_text = gtk_box_new ( GTK_ORIENTATION_HORIZONTAL, 0);
        gtk_container_add ( GTK_CONTAINER(vbox), hbox_text );
        gtk_widget_show( hbox_text );
    
@@ -451,7 +462,6 @@
        gtk_widget_show(GTK_WIDGET(scrolledWindow));
 
        vscrollbar = gtk_scrolled_window_get_vscrollbar(scrolledWindow);
-       gtk_range_set_update_policy( GTK_RANGE( vscrollbar ), 
GTK_UPDATE_CONTINUOUS );
        /*gtk_box_pack_start( GTK_BOX(hbox_text), vscrollbar, FALSE,TRUE,0);
        gtk_widget_show (vscrollbar);*/
    
@@ -466,14 +476,14 @@
        inputline = gtk_entry_new();
        gtk_box_pack_start( GTK_BOX( vbox ), inputline, FALSE, FALSE, 0 );
        gtk_widget_show(inputline);
-       gtk_signal_connect(GTK_OBJECT(inputline), "activate",
-               GTK_SIGNAL_FUNC(inputline_return), NULL);
+       g_signal_connect(G_OBJECT(inputline), "activate",
+               G_CALLBACK(inputline_return), NULL);
 
 
        /* StatusBar */
-       hbox_status = gtk_hbox_new ( FALSE, 0);
+       hbox_status = gtk_box_new ( GTK_ORIENTATION_HORIZONTAL, 0);
        gtk_container_add ( GTK_CONTAINER(vbox), hbox_status );
-       gtk_container_border_width ( GTK_CONTAINER(hbox_status), 0);
+       gtk_container_set_border_width ( GTK_CONTAINER(hbox_status), 0);
        gtk_widget_show ( hbox_status ); 
    
        statusbar_right = gtk_statusbar_new();
@@ -489,44 +499,44 @@
 
              
        /* Pixmaps */
-       barco1 =    gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco1_xpm );
-       barco1_t =  gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco1_t_xpm );
-       barco1_h =  gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco1_h_xpm );
-
-       barco2h =   gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco2h_xpm );
-       barco2h_t = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco2h_t_xpm );
-       barco2h_h = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco2h_h_xpm );
-
-       barco2v =   gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco2v_xpm );
-       barco2v_t = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco2v_t_xpm );
-       barco2v_h = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco2v_h_xpm );
-
-       barco3h =   gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco3h_xpm );
-       barco3h_t = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco3h_t_xpm );
-       barco3h_h = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco3h_h_xpm );
-
-       barco3v =   gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco3v_xpm );
-       barco3v_t = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco3v_t_xpm );
-       barco3v_h = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco3v_h_xpm );
-
-       barco4h =   gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco4h_xpm );
-       barco4h_t = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco4h_t_xpm );
-       barco4h_h = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco4h_h_xpm );
-
-       barco4v =   gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco4v_xpm );
-       barco4v_t = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco4v_t_xpm );
-       barco4v_h = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],barco4v_h_xpm );
-
-       fondo =     gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],fondo_xpm );
-       agua =      gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],agua_xpm );
-       about_pix = gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],about_xpm );
-       icono =     gdk_pixmap_create_from_xpm_d( window->window, &mask, 
&window->style->bg[GTK_STATE_NORMAL],icono_xpm );
+       barco1 =    gdk_pixbuf_new_from_xpm_data( barco1_xpm );
+       barco1_t =  gdk_pixbuf_new_from_xpm_data( barco1_t_xpm );
+       barco1_h =  gdk_pixbuf_new_from_xpm_data( barco1_h_xpm );
+
+       barco2h =   gdk_pixbuf_new_from_xpm_data( barco2h_xpm );
+       barco2h_t = gdk_pixbuf_new_from_xpm_data( barco2h_t_xpm );
+       barco2h_h = gdk_pixbuf_new_from_xpm_data( barco2h_h_xpm );
+
+       barco2v =   gdk_pixbuf_new_from_xpm_data( barco2v_xpm );
+       barco2v_t = gdk_pixbuf_new_from_xpm_data( barco2v_t_xpm );
+       barco2v_h = gdk_pixbuf_new_from_xpm_data( barco2v_h_xpm );
+
+       barco3h =   gdk_pixbuf_new_from_xpm_data( barco3h_xpm );
+       barco3h_t = gdk_pixbuf_new_from_xpm_data( barco3h_t_xpm );
+       barco3h_h = gdk_pixbuf_new_from_xpm_data( barco3h_h_xpm );
+
+       barco3v =   gdk_pixbuf_new_from_xpm_data( barco3v_xpm );
+       barco3v_t = gdk_pixbuf_new_from_xpm_data( barco3v_t_xpm );
+       barco3v_h = gdk_pixbuf_new_from_xpm_data( barco3v_h_xpm );
+
+       barco4h =   gdk_pixbuf_new_from_xpm_data( barco4h_xpm );
+       barco4h_t = gdk_pixbuf_new_from_xpm_data( barco4h_t_xpm );
+       barco4h_h = gdk_pixbuf_new_from_xpm_data( barco4h_h_xpm );
+
+       barco4v =   gdk_pixbuf_new_from_xpm_data( barco4v_xpm );
+       barco4v_t = gdk_pixbuf_new_from_xpm_data( barco4v_t_xpm );
+       barco4v_h = gdk_pixbuf_new_from_xpm_data( barco4v_h_xpm );
+
+       fondo =     gdk_pixbuf_new_from_xpm_data( fondo_xpm );
+       agua =      gdk_pixbuf_new_from_xpm_data( agua_xpm );
+       about_pix = gdk_pixbuf_new_from_xpm_data( about_xpm );
+       icono =     gdk_pixbuf_new_from_xpm_data( icono_xpm );
 
-       gdk_window_set_icon (window->window, NULL, icono , mask );
+       gtk_window_set_icon( GTK_WINDOW(window), icono );
 
    
        /* Principal */   
-       gtk_widget_show( window);
+       gtk_widget_show_all( window);
 }
 
 /**
@@ -534,66 +544,96 @@
  */
 void update_sensi()
 {
+       GObject *win = G_OBJECT (window);
+       GtkWidget *widget;
 
        /* connect & disconnect */
        if( usuario.play == DISCON ) {
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_CONNEC].widget, 
TRUE);
-               gtk_widget_set_sensitive (gamemenu[WID_G_CONNEC].widget, TRUE);
-               gtk_widget_set_sensitive (gamemenu[WID_G_DISCON].widget, FALSE);
+               widget = g_object_get_data (win, "t_connec");
+               gtk_widget_set_sensitive (widget, TRUE);
+               widget = g_object_get_data (win, "connec");
+               gtk_widget_set_sensitive (widget, TRUE);
+               widget = g_object_get_data(win, "discon");
+               gtk_widget_set_sensitive (widget, FALSE);
        } else {
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_CONNEC].widget, 
FALSE);
-               gtk_widget_set_sensitive (gamemenu[WID_G_CONNEC].widget, FALSE);
-               gtk_widget_set_sensitive (gamemenu[WID_G_DISCON].widget, TRUE);
+               widget = g_object_get_data (win, "t_connec");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data (win, "connec");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data(win, "discon");
+               gtk_widget_set_sensitive (widget, TRUE);
        }
 
        /* random y send*/
        if( usuario.play == CONNEC ) {
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_RANDOM].widget, 
TRUE);
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_SEND].widget, 
TRUE);
-               gtk_widget_set_sensitive (actionsmenu[WID_A_RANDOM].widget, 
TRUE);
-               gtk_widget_set_sensitive (actionsmenu[WID_A_SEND].widget, TRUE);
+               widget = g_object_get_data (win, "t_random");
+               gtk_widget_set_sensitive (widget, TRUE);
+               widget = g_object_get_data (win, "t_send");
+               gtk_widget_set_sensitive (widget, TRUE);
+               widget = g_object_get_data (win, "random");
+               gtk_widget_set_sensitive (widget, TRUE);
+               widget = g_object_get_data (win, "send");
+               gtk_widget_set_sensitive (widget, TRUE);
 
        } else {
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_RANDOM].widget, 
FALSE);
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_SEND].widget, 
FALSE);
-               gtk_widget_set_sensitive (actionsmenu[WID_A_RANDOM].widget, 
FALSE);
-               gtk_widget_set_sensitive (actionsmenu[WID_A_SEND].widget, 
FALSE);
+               widget = g_object_get_data (win, "t_random");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data (win, "t_send");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data (win, "random");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data (win, "send");
+               gtk_widget_set_sensitive (widget, FALSE);
        }
 
        /* robot */
        if( usuario.play == CONNEC || usuario.play == BOARD ) {
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_ROBOT].widget, 
TRUE);
-               gtk_widget_set_sensitive (gamemenu[WID_G_ROBOT].widget, TRUE);
+               widget = g_object_get_data (win, "t_robot");
+               gtk_widget_set_sensitive (widget, TRUE);
+               widget = g_object_get_data (win, "robot");
+               gtk_widget_set_sensitive (widget, TRUE);
        } else {
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_ROBOT].widget, 
FALSE);
-               gtk_widget_set_sensitive (gamemenu[WID_G_ROBOT].widget, FALSE);
+               widget = g_object_get_data (win, "t_robot");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data (win, "robot");
+               gtk_widget_set_sensitive (widget, FALSE);
        }
        
        /* start */
        if( usuario.play == BOARD ) {
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_START].widget, 
TRUE);
-               gtk_widget_set_sensitive (actionsmenu[WID_A_START].widget, 
TRUE);
+               widget = g_object_get_data (win, "t_start");
+               gtk_widget_set_sensitive (widget, TRUE);
+               widget = g_object_get_data (win, "start");
+               gtk_widget_set_sensitive (widget, TRUE);
        } else {
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_START].widget, 
FALSE);
-               gtk_widget_set_sensitive (actionsmenu[WID_A_START].widget, 
FALSE);
+               widget = g_object_get_data (win, "t_start");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data (win, "start");
+               gtk_widget_set_sensitive (widget, FALSE);
        }
 
        /* status */
        if( usuario.play == DISCON ) {
-               gtk_widget_set_sensitive (actionsmenu[WID_A_STATUS].widget, 
FALSE);
+               widget = g_object_get_data (win, "status");
+               gtk_widget_set_sensitive (widget, FALSE);
        } else {
-               gtk_widget_set_sensitive (actionsmenu[WID_A_STATUS].widget, 
TRUE);
+               widget = g_object_get_data (win, "status");
+               gtk_widget_set_sensitive (widget, TRUE);
        }
 
        /* ggz */
        if( usuario.with_ggz ) {
                /* connect */
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_CONNEC].widget, 
FALSE);
-               gtk_widget_set_sensitive (gamemenu[WID_G_CONNEC].widget, FALSE);
+               widget = g_object_get_data (win, "t_connec");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data (win, "connec");
+               gtk_widget_set_sensitive (widget, FALSE);
 
                /* robot */
-               gtk_widget_set_sensitive (main_toolbarinfo[WID_ROBOT].widget, 
FALSE);
-               gtk_widget_set_sensitive (gamemenu[WID_G_ROBOT].widget, FALSE);
+               widget = g_object_get_data (win, "t_robot");
+               gtk_widget_set_sensitive (widget, FALSE);
+               widget = g_object_get_data (win, "robot");
+               gtk_widget_set_sensitive (widget, FALSE);
        } 
 
        return;
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/random.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/random.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * random_xpm[] = {
+static const char * random_xpm[] = {
 "18 18 23 1",
 "      c None",
 ".     c #000000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/ships.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/ships.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * ships_xpm[] = {
+static const char * ships_xpm[] = {
 "22 22 31 1",
 "      c None",
 ".     c #F0FC05",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/about.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/about.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * about_xpm[] = {
+static const char * about_xpm[] = {
 "200 200 15 1",
 "      c None",
 ".     c #FFFFFF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/agua.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/agua.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * agua_xpm[] = {
+static const char * agua_xpm[] = {
 "20 20 4 1",
 "      c None",
 ".     c #0000FF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco1.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco1.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco1_xpm[] = {
+static const char * barco1_xpm[] = {
 "20 20 34 1",
 "      c None",
 ".     c #00FFFF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco1_h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco1_h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco1_h_xpm[] = {
+static const char * barco1_h_xpm[] = {
 "20 20 26 1",
 "      c None",
 ".     c #00FFFF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco1_t.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco1_t.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco1_t_xpm[] = {
+static const char * barco1_t_xpm[] = {
 "20 20 34 1",
 "      c None",
 ".     c #FF0000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco2h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco2h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco2h_xpm[] = {
+static const char * barco2h_xpm[] = {
 "40 20 17 1",
 "      c None",
 ".     c #000000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco2h_h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco2h_h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco2h_h_xpm[] = {
+static const char * barco2h_h_xpm[] = {
 "40 20 7 1",
 "      c None",
 ".     c #00FFFF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco2h_t.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco2h_t.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco2h_t_xpm[] = {
+static const char * barco2h_t_xpm[] = {
 "40 20 7 1",
 "      c None",
 ".     c #FF0000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco2v.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco2v.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco2v_xpm[] = {
+static const char * barco2v_xpm[] = {
 "20 40 17 1",
 "      c None",
 ".     c #000000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco2v_h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco2v_h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco2v_h_xpm[] = {
+static const char * barco2v_h_xpm[] = {
 "20 40 7 1",
 "      c None",
 ".     c #0000FF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco2v_t.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco2v_t.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco2v_t_xpm[] = {
+static const char * barco2v_t_xpm[] = {
 "20 40 7 1",
 "      c None",
 ".     c #0000FF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco3h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco3h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco3h_xpm[] = {
+static const char * barco3h_xpm[] = {
 "60 20 8 1",
 "      c None",
 ".     c #00FFFF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco3h_h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco3h_h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco3h_h_xpm[] = {
+static const char * barco3h_h_xpm[] = {
 "60 20 8 1",
 "      c None",
 ".     c #000000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco3h_t.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco3h_t.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco3h_t_xpm[] = {
+static const char * barco3h_t_xpm[] = {
 "60 20 8 1",
 "      c None",
 ".     c #FF0000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco3v.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco3v.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco3v_xpm[] = {
+static const char * barco3v_xpm[] = {
 "20 60 8 1",
 "      c None",
 ".     c #0000FF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco3v_h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco3v_h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco3v_h_xpm[] = {
+static const char * barco3v_h_xpm[] = {
 "20 60 8 1",
 "      c None",
 ".     c #000000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco3v_t.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco3v_t.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco3v_t_xpm[] = {
+static const char * barco3v_t_xpm[] = {
 "20 60 8 1",
 "      c None",
 ".     c #0000FF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco4h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco4h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco4h_xpm[] = {
+static const char * barco4h_xpm[] = {
 "80 20 17 1",
 "      c None",
 ".     c #000000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco4h_h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco4h_h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco4h_h_xpm[] = {
+static const char * barco4h_h_xpm[] = {
 "80 20 8 1",
 "      c None",
 ".     c #00FFFF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco4h_t.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco4h_t.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco4h_t_xpm[] = {
+static const char * barco4h_t_xpm[] = {
 "80 20 8 1",
 "      c None",
 ".     c #FF0000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco4v.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco4v.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco4v_xpm[] = {
+static const char * barco4v_xpm[] = {
 "20 80 17 1",
 "      c None",
 ".     c #000000",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco4v_h.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco4v_h.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco4v_h_xpm[] = {
+static const char * barco4v_h_xpm[] = {
 "20 80 8 1",
 "      c None",
 ".     c #0000FF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/barco4v_t.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/barco4v_t.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * barco4v_t_xpm[] = {
+static const char * barco4v_t_xpm[] = {
 "20 80 8 1",
 "      c None",
 ".     c #0000FF",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/fondo.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/fondo.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char *fondo_xpm[] = {
+static const char *fondo_xpm[] = {
 /* width height num_colors chars_per_pixel */
 "   200   200      196            2",
 /* colors */
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pixmaps/icono.xpm
+++ gbatnav-1.0.4cvs20051004/gbnclient/pixmaps/icono.xpm
@@ -1,5 +1,5 @@
 /* XPM */
-static char * icono_xpm[] = {
+static const char * icono_xpm[] = {
 "48 48 7 1",
 "      c None",
 ".     c #21BC2C",
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pantalla.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/pantalla.c
@@ -4,7 +4,7 @@
  * Funciones de manejo de pantalla y otras
  */
 
-#include <gnome.h>
+#include <gtk/gtk.h>
 
 #include "protocol.h"
 #include "gbnclient.h"
@@ -80,7 +80,7 @@
        *pos=a;
 }
 
-void barco_dibu( int x,                        /* x */ 
+void barco_dibu( cairo_t *cr, int x,           /* x */
                int y,                  /* y */ 
                int estado,             /* BARCO, TOCADO, HUNDIDO */ 
                int lugar,              /* 0=left,  1=der */
@@ -88,7 +88,7 @@
                )
 {
        gint size=0,pos=0,hor=0;
-       GdkPixmap *barcos_enteros[2][4];
+       GdkPixbuf *barcos_enteros[2][4];
        gint verti=0;
        gint horiz=1;
 
@@ -127,20 +127,20 @@
                                verti=1;
                                horiz=0;
                        }
-                       gdk_draw_pixmap( drawing_left->window,
-                               
drawing_left->style->fg_gc[GTK_WIDGET_STATE(drawing_left)],
-                               barcos_enteros[hor][size],
-                               horiz*pos*ANCHO,verti*pos*LARGO,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr,
+                                                   barcos_enteros[hor][size],
+                                                   x*ANCHO+1-horiz*pos*ANCHO,
+                                                   y*LARGO+1-verti*pos*LARGO);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1,
+                                       ANCHO, LARGO);
+                       cairo_fill(cr);
                }
                else { /* Pone solo un barco. No sabe como estan */
-                       gdk_draw_pixmap( drawing_left->window,
-                               
drawing_left->style->fg_gc[GTK_WIDGET_STATE(drawing_left)],
-                               barcos_enteros[0][0],
-                               0,0,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr,
+                                                   barcos_enteros[0][0],
+                                                   x*ANCHO+1, y*LARGO+1);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO, LARGO);
+                       cairo_fill(cr);
                }
        } else { /* lado derecho */
                if( usuario.play >= BOARD ) {
@@ -149,19 +149,18 @@
                                verti=1;
                                horiz=0;
                        }
-                       gdk_draw_pixmap( drawing_right[ii]->window,
-                               
drawing_right[ii]->style->fg_gc[GTK_WIDGET_STATE(drawing_right[ii])],
-                               barcos_enteros[hor][size],
-                               horiz*pos*ANCHO,verti*pos*LARGO,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr,
+                                                   barcos_enteros[hor][size],
+                                                   x*ANCHO+1-horiz*pos*ANCHO,
+                                                   y*LARGO+1-verti*pos*LARGO);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO, LARGO);
+                       cairo_fill(cr);
                } else { /* Pone solo un barco. No sabe como estan */
-                       gdk_draw_pixmap( drawing_right[ii]->window,
-                               
drawing_right[ii]->style->fg_gc[GTK_WIDGET_STATE(drawing_right[ii])],
-                               barcos_enteros[0][0],
-                               0,0,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr,
+                                                   barcos_enteros[0][0],
+                                                   x*ANCHO+1, y*LARGO+1);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO, LARGO);
+                       cairo_fill(cr);
                }
        }
 
@@ -197,45 +196,43 @@
                
gtk_text_buffer_get_end_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),&text_iter);
                gtk_text_view_get_line_yrange( GTK_TEXT_VIEW(text), 
&text_iter,&w,&h);
 
-               if( GTK_RANGE( vscrollbar )->adjustment->upper >= h ) {
-                       new_value = GTK_RANGE( vscrollbar )-> adjustment->upper 
- h;
-                       GTK_RANGE(vscrollbar)->adjustment->value = new_value;
-                       GTK_RANGE(vscrollbar)->timer = 0; /* FIXME para que 
sirver ? */
-                       gtk_signal_emit_by_name (GTK_OBJECT 
(GTK_RANGE(vscrollbar)->adjustment), "value_changed");
+               if( gtk_adjustment_get_upper(gtk_range_get_adjustment
+                                            (GTK_RANGE( vscrollbar ))) >= h ) {
+                       new_value = gtk_adjustment_get_upper
+                               (gtk_range_get_adjustment
+                                (GTK_RANGE( vscrollbar ))) - h;
+                       gtk_adjustment_set_value(gtk_range_get_adjustment
+                                                (GTK_RANGE(vscrollbar)),
+                                                new_value);
                }
        }
 }
 
 
 /* Pinta mi tabla con algun color o tipo de barco */
-void pmicell(int x,int y,int color)
+void pmicell(cairo_t *cr,int x,int y,int color)
 {
        if(x<10 && x>=0 && y>=0 && y<10) {
                switch( color ) {
                case NOBARCO:
-                       gdk_draw_pixmap( drawing_left->window,
-                               
drawing_left->style->fg_gc[GTK_WIDGET_STATE(drawing_left)],
-                               fondo,
-                               x*ANCHO+1,y*LARGO+1,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr, fondo, 0, 0);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO, LARGO);
+                       cairo_fill(cr);
                        break;
                case AGUA:
-                       gdk_draw_pixmap( drawing_left->window,
-                               
drawing_left->style->fg_gc[GTK_WIDGET_STATE(drawing_left)],
-                               agua,
-                               0,0,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr, agua,
+                                                   x*ANCHO+1, y*LARGO+1);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO, LARGO);
+                       cairo_fill(cr);
                        break;
                case BARCO:
-                       barco_dibu( x, y, BARCO, 0, 0 );
+                       barco_dibu( cr, x, y, BARCO, 0, 0 );
                        break;
                case TOCADO:
-                       barco_dibu( x, y, TOCADO, 0, 0);
+                       barco_dibu( cr, x, y, TOCADO, 0, 0);
                        break;
                case HUNDIDO:
-                       barco_dibu( x, y, HUNDIDO, 0, 0);
+                       barco_dibu( cr, x, y, HUNDIDO, 0, 0);
                        break;
                }
        }
@@ -243,44 +240,37 @@
 
 /* Pinta alguna celda del enemigo con algun color o barco */
 void 
-ptucell(int x,int y,int color)
+ptucell(cairo_t *cr, int x,int y,int color)
 {
        gint i;
    
-       i = gtk_notebook_current_page( GTK_NOTEBOOK( notebook_right ) );
+       i = gtk_notebook_get_current_page( GTK_NOTEBOOK( notebook_right ) );
        i = usuario.pages[ i ]; 
 
        if(x<10 && x>=0 && y>=0 && y<10) {
                switch( color ) {
                case NOBARCO:
-                       gdk_draw_pixmap( drawing_right[i]->window,
-                               
drawing_right[i]->style->fg_gc[GTK_WIDGET_STATE(drawing_right[i])],
-                               fondo,
-                               x*ANCHO+1,y*LARGO+1,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr, fondo, 0, 0);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO, LARGO);
+                       cairo_fill(cr);
                        break;
                case AGUA:
-                       gdk_draw_pixmap( drawing_right[i]->window,
-                               
drawing_right[i]->style->fg_gc[GTK_WIDGET_STATE(drawing_right[i])],
-                               agua,
-                               0,0,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr, agua,
+                                                   x*ANCHO+1, y*LARGO+1);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO, LARGO);
+                       cairo_fill(cr);
                        break;
                case BARCO:
-                       barco_dibu( x, y, BARCO, 1, i );
+                       barco_dibu( cr, x, y, BARCO, 1, i );
                        break;
                case TOCADO:
-                       gdk_draw_pixmap( drawing_right[i]->window,
-                               
drawing_right[i]->style->fg_gc[GTK_WIDGET_STATE(drawing_right[i])],
-                               barco1_t,
-                               0,0,
-                               x*ANCHO+1,y*LARGO+1,
-                               ANCHO,LARGO);
+                       gdk_cairo_set_source_pixbuf(cr, barco1_t,
+                                                   x*ANCHO+1, y*LARGO+1);
+                       cairo_rectangle(cr, x*ANCHO+1, y*LARGO+1, ANCHO, LARGO);
+                       cairo_fill(cr);
                        break;
                case HUNDIDO:
-                       barco_dibu( x, y, HUNDIDO, 1, i );
+                       barco_dibu( cr, x, y, HUNDIDO, 1, i );
                        break;
                }
        }
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/proceso.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/proceso.c
@@ -15,7 +15,8 @@
 #include <string.h>
 
 #include <config.h>
-#include <gnome.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
 
 #include "protocol.h"
 #include "parser.h"
@@ -48,12 +49,12 @@
                textfill(1,"Error: poner_proximo_jugador");
                return;
        }
-       gtk_notebook_set_page( GTK_NOTEBOOK( notebook_right ),i );
+       gtk_notebook_set_current_page( GTK_NOTEBOOK( notebook_right ),i );
        gtk_notebook_next_page( GTK_NOTEBOOK(notebook_right));
-       j = gtk_notebook_current_page( GTK_NOTEBOOK( notebook_right ));
+       j = gtk_notebook_get_current_page( GTK_NOTEBOOK( notebook_right ));
        if(j==i) {
                j=0;
-               gtk_notebook_set_page( GTK_NOTEBOOK( notebook_right ),j );
+               gtk_notebook_set_current_page( GTK_NOTEBOOK( notebook_right ),j 
);
        }
        usuario.usrfrom = usuario.pages[ j ];
 }
@@ -98,7 +99,8 @@
        
        if( (usuario.play>=BOARD) ){ /* bug fix */
                if(x==usuario.numjug) { /* esto quiere decir que se colgo el 
server */
-                       j = g_list_length( 
GTK_NOTEBOOK(notebook_right)->children);
+                       j = g_list_length( gtk_container_get_children
+                                          (GTK_CONTAINER(notebook_right)) );
                        for (x = 1; x < j; x++)
                                gtk_notebook_remove_page ( GTK_NOTEBOOK( 
notebook_right), 1);
                        for(j=0;j<MAXPLAYER;j++)
@@ -163,13 +165,14 @@
 
        usuario.play=CONNEC;                    /* Game Over */
        /* gtk v1.2 no me actualiza este evento. forzarlo */
-       expose_event( drawing_left, NULL );
+       gtk_widget_queue_draw( drawing_left );
 
        for(i=0;i<MAXPLAYER;i++)
                usuario.names[i][0]=0;          /* clear all names */
        textfill(0,_("Game Over"));
        
-       j = g_list_length( GTK_NOTEBOOK(notebook_right)->children);
+       j = g_list_length( gtk_container_get_children
+                          (GTK_CONTAINER(notebook_right)) );
        for (i = 1; i < j; i++)
                gtk_notebook_remove_page ( GTK_NOTEBOOK( notebook_right), 1);
 
@@ -235,7 +238,10 @@
        }
        /* FIXME: Hoy por hoy, no le doy bola al dueƱo del board */
        putintemp(buf);
-       fillboard(inteliclient(buf),1);
+       i = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook_right));
+       i = usuario.pages[i];
+       g_object_set_data(G_OBJECT(drawing_right[i]), "buffer", buf);
+       gtk_widget_queue_draw(drawing_right[i]);
 }
 static void token_fire(char *str)
 {
@@ -274,11 +280,8 @@
                return;
 
        usuario.mitabla[x][y]=z;
-       {
-               char buf[100];
-               iwtable( buf );
-               fillboard( inteliclient( (char*)buf ), 0 );
-       }
+       gtk_widget_queue_draw(drawing_left);
+
        bnwrite(usuario.sock,BN_READ"=%i",usuario.usrfrom);
 }
 static void token_turn(char *str)
@@ -371,13 +374,15 @@
                                label_right[l] = gtk_label_new( 
usuario.names[l] );
                                label_right2[l] = gtk_label_new( 
usuario.names[l] );                   
                                drawing_right[l] = gtk_drawing_area_new();
-                               
gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_right[l]),200,200);
-                               gtk_signal_connect (GTK_OBJECT 
(drawing_right[l]), "expose_event",
-                                       (GtkSignalFunc) expose_event_right, 
NULL);
-                               gtk_signal_connect (GTK_OBJECT 
(drawing_right[l]), "button_press_event",
-                                       (GtkSignalFunc) 
button_press_event_right, NULL);
-                               gtk_widget_set_events (drawing_right[l], 
GDK_EXPOSURE_MASK
-                                       |GDK_BUTTON_PRESS_MASK);
+                               gtk_widget_set_size_request(drawing_right[l],
+                                                           200, 200);
+                               g_signal_connect (drawing_right[l], "draw",
+                                       (GCallback) expose_event_right, NULL);
+                               g_signal_connect (drawing_right[l],
+                                                 "button-press-event",
+                                       (GCallback) button_press_event_right, 
NULL);
+                               gtk_widget_add_events (drawing_right[l],
+                                                      GDK_BUTTON_PRESS_MASK);
        
                                gtk_widget_show( label_right[l] );
                                gtk_widget_show( label_right2[l] );
@@ -406,7 +411,8 @@
        for(i=0;i<100;i++)      /* tempclit es un 'cache' */
                usuario.tempclit[i]=NOBARCO;
 
-       j = g_list_length( GTK_NOTEBOOK(notebook_right)->children);
+       j = g_list_length( gtk_container_get_children(GTK_CONTAINER
+                                                     (notebook_right)) );
        for (i = 0; i < j; i++)
                gtk_notebook_remove_page ( GTK_NOTEBOOK( notebook_right), 0);
        
@@ -434,7 +440,7 @@
        update_sensi();
 
        /* gtk v1.2 no me actualiza este evento. forzarlo */
-       expose_event( drawing_left, NULL );
+       gtk_widget_queue_draw( drawing_left );
 }
 
 static void token_message( char *str )
@@ -500,9 +506,10 @@
 }
 
 
-int
-proceso( gpointer data, int sock, GdkInputCondition GDK_INPUT_READ )
+gboolean
+proceso( GIOChannel *src, GIOCondition cond, gpointer data )
 {
+       gint sock;
        int i,j;
        PARSER p;
        DELIM igualador={ '=', ':', '=' };
@@ -514,10 +521,11 @@
        p.separador = &separador;
        str[0]=0;
 
+       sock=g_io_channel_unix_get_fd( src );
        j=net_readline( sock, str, PROT_MAX_LEN );
        if(j<1) {
                send_disconnect();                              
-               return -1;
+               return FALSE;
        }
        
        strncpy(p.sig,str,sizeof(p.sig) );
@@ -529,5 +537,5 @@
                                textfill(1,_("Token '%s' not found"),p.token);
                }
        } while(i);
-       return 0;
+       return TRUE;
 }
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/random_board.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/random_board.c
@@ -9,7 +9,8 @@
 
 #include <stdlib.h>
 #include <config.h>
-#include <gnome.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
 
 #include "protocol.h"
 #include "cliente.h"
@@ -31,11 +32,10 @@
                return ;
 
        } else {
-               usuario.random = 
gnome_config_get_int_with_default("/gbnclient/data/random=1995",NULL);
+               usuario.random = g_settings_get_uint(settings, "random");
                srandom( usuario.random );
                usuario.random = random();              
-               gnome_config_set_int   ("/gbnclient/data/random",  
usuario.random);
-               gnome_config_sync();
+               g_settings_set_uint(settings, "random", usuario.random);
 
                for(i=0;i<10;i++) {
                        /* clean tabla */
@@ -52,11 +52,7 @@
                        buscar_poscicion(x,y,d,t);
                }
 
-               for(i=0;i<10;i++) {
-                       for(j=0;j<10;j++)
-                               pmicell(i,j,usuario.mitabla[i][j]);
-               }
-               draw_grid_left();
+               gtk_widget_queue_draw(drawing_left);
        }
 }
 
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/configure.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/configure.c
@@ -1,6 +1,6 @@
 /*     $Id: configure.c,v 1.5 2002/04/19 04:12:18 riq Exp $    */
 
-#include <gnome.h> 
+#include <gtk/gtk.h>
 #include "cliente.h"
 #include "pantalla.h"
 #include "gbnclient.h"
@@ -19,19 +19,17 @@
 
        /* left */
        if( drawing_left ) {
-               gtk_widget_draw( drawing_left, NULL );
-               expose_event( drawing_left, NULL );
+               gtk_widget_queue_draw( drawing_left );
        }
 
        /* right */
-       i = gtk_notebook_current_page( GTK_NOTEBOOK( notebook_right ) );
+       i = gtk_notebook_get_current_page( GTK_NOTEBOOK( notebook_right ) );
        if( i >= 0 && i < MAXPLAYER ) {
                i = usuario.pages[ i ]; 
                widget = drawing_right[ i ];
 
                if( usuario.usrfrom >=0 && usuario.usrfrom < MAXPLAYER && 
drawing_right[i] ) {
-                       gtk_widget_draw( drawing_right[usuario.usrfrom], NULL );
-                       expose_event_right( drawing_right[usuario.usrfrom], 
NULL );
+                       gtk_widget_queue_draw(drawing_right[usuario.usrfrom]);
                }
        }
 }
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/sendmsg.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/sendmsg.c
@@ -1,5 +1,6 @@
 /*     $Id: sendmsg.c,v 1.3 2001/04/06 15:15:22 riq Exp $      */
-#include <gnome.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
 
 #include "cliente.h"
 #include "pantalla.h"
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/support.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/support.c
@@ -30,7 +30,7 @@
 
 #include <stdio.h>
 
-#include <gnome.h>
+#include <goocanvas.h>
 
 #include "support.h"
 #include "protocol.h"
@@ -55,119 +55,6 @@
 #define TEG_DIALOG_Y   200
 #define TEG_DIALOG_Y_NEW 45
 
-void generic_window_set_parent (GtkWidget * dialog, GtkWindow   * parent)
-{
-       gint x, y, w, h, dialog_x, dialog_y;
-
-       g_return_if_fail(dialog != NULL);
-       g_return_if_fail(parent != NULL);
-       g_return_if_fail(GTK_IS_WINDOW(parent));
-
-       gtk_window_set_transient_for (GTK_WINDOW(dialog), parent);
-
-
-
-       if ( ! GTK_WIDGET_VISIBLE(parent)) return; /* Can't get its
-                                                 size/pos */
-
-       /* Throw out other positioning */
-       gtk_window_set_position(GTK_WINDOW(dialog),GTK_WIN_POS_NONE);
-
-       gdk_window_get_origin (GTK_WIDGET(parent)->window, &x, &y);
-       gdk_window_get_size   (GTK_WIDGET(parent)->window, &w, &h);
-
-       /*
-        * The problem here is we don't know how big the dialog is.
-        * So "centered" isn't really true. We'll go with 
-        * "kind of more or less on top"
-        */
-
-       dialog_x = x + w/4;
-       dialog_y = y + h/4;
-
-       gtk_widget_set_uposition(GTK_WIDGET(dialog), dialog_x, dialog_y); 
-}
-
-/**
- * @fn void teg_dialog( char* title, char* bigtitle, char* data )
- * Crea un dialogo un poco mas vistoso, onda gnome_about
- * @param title Titulo de la ventana
- * @param bittitle Titulo del dialogo
- * @param data Informacion del dialogo
- */
-void teg_dialog( char* title, char* bigtitle, char* data )
-{
-       GtkWidget* dialog;
-       GtkWidget* canvas;
-       GnomeCanvasItem *item;
-
-       dialog = gnome_dialog_new(title, 
-                       GNOME_STOCK_BUTTON_OK,
-                       NULL );
-       gnome_dialog_set_parent( GNOME_DIALOG(dialog), GTK_WINDOW(window));
-       gnome_dialog_set_close( GNOME_DIALOG(dialog), TRUE );
-       
-
-       canvas = gnome_canvas_new();
-       gtk_widget_set_usize (canvas, TEG_DIALOG_X, TEG_DIALOG_Y );
-       gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas), 0, 0, 
TEG_DIALOG_X, TEG_DIALOG_Y );
-
-       item = gnome_canvas_item_new(
-               gnome_canvas_root(GNOME_CANVAS(canvas)),
-               gnome_canvas_rect_get_type (),
-               "x1", 0.0,
-               "y1", 0.0,
-               "x2", (double) TEG_DIALOG_X,
-               "y2", 45.0,
-               "fill_color","black",
-               "outline_color","black",
-               NULL);
-
-       item = gnome_canvas_item_new(
-               gnome_canvas_root(GNOME_CANVAS(canvas)),
-               gnome_canvas_rect_get_type (),
-               "x1", 0.0,
-               "y1", 45.0,
-               "x2", (double) TEG_DIALOG_X,
-               "y2", (double) TEG_DIALOG_Y,
-               "fill_color","light green",
-               "outline_color","light green",
-               NULL);
-
-       item = gnome_canvas_item_new(
-               gnome_canvas_root(GNOME_CANVAS(canvas)),
-               gnome_canvas_text_get_type(),
-               "text",bigtitle,
-               "x", (double) (TEG_DIALOG_X/2),
-               "y", (double) 10,
-               "x_offset", (double) -1,
-               "y_offset", (double) -1,
-               "font", HELVETICA_20_BFONT,
-               "fill_color", "white",
-               "anchor",GTK_ANCHOR_NORTH,
-               NULL);
-
-       item = gnome_canvas_item_new(
-               gnome_canvas_root(GNOME_CANVAS(canvas)),
-               gnome_canvas_text_get_type(),
-               "text",data,
-               "x", (double) 4,
-               "y", (double) 60,
-               "x_offset", (double) -1,
-               "y_offset", (double) -1,
-               "font", HELVETICA_12_FONT,
-               "fill_color", "black",
-               "anchor",GTK_ANCHOR_NW,
-               NULL);
-
-       gtk_box_pack_start_defaults( GTK_BOX(GNOME_DIALOG(dialog)->vbox), 
GTK_WIDGET(canvas));
-
-       gtk_widget_show (canvas);
-       gtk_widget_show_all(dialog);
-
-       return;
-}
-
 /**
  * @fn GtkWidget* teg_dialog_new( char* title, char* bigtitle )
  * Crea un gnome_dialog_new un poco diferente
@@ -176,63 +63,46 @@
 {
        GtkWidget* dialog;
        GtkWidget* canvas;
-       GnomeCanvasItem *item;
+       GooCanvasItem *item;
 
-       dialog = gnome_dialog_new(title, 
-                       NULL );
-       gnome_dialog_set_parent( GNOME_DIALOG(dialog), GTK_WINDOW(window));
-
-       canvas = gnome_canvas_new();
-       gtk_widget_set_usize (canvas, TEG_DIALOG_X, TEG_DIALOG_Y_NEW );
-       gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas), 0, 0, 
TEG_DIALOG_X, TEG_DIALOG_Y_NEW );
-
-       item = gnome_canvas_item_new(
-               gnome_canvas_root(GNOME_CANVAS(canvas)),
-               gnome_canvas_rect_get_type (),
-               "x1", 0.0,
-               "y1", 0.0,
-               "x2", (double) TEG_DIALOG_X,
-               "y2", 45.0,
-               "fill_color","black",
-               "outline_color","black",
-               NULL);
-
-       item = gnome_canvas_item_new(
-               gnome_canvas_root(GNOME_CANVAS(canvas)),
-               gnome_canvas_text_get_type(),
-               "text",bigtitle,
-               "x", (double) (TEG_DIALOG_X/2),
-               "y", (double) 10,
-               "x_offset", (double) -1,
-               "y_offset", (double) -1,
+       dialog = gtk_dialog_new();
+       gtk_window_set_title(GTK_WINDOW(dialog), title);
+       gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(window));
+
+       canvas = goo_canvas_new();
+       g_object_set (canvas, "anchor", GOO_CANVAS_ANCHOR_CENTER, NULL);
+       gtk_widget_set_size_request (canvas, TEG_DIALOG_X, TEG_DIALOG_Y_NEW);
+       goo_canvas_set_bounds (GOO_CANVAS (canvas), 0, 0,
+                              TEG_DIALOG_X, TEG_DIALOG_Y_NEW);
+
+       item = goo_canvas_get_root_item(GOO_CANVAS(canvas));
+       goo_canvas_rect_new(
+               item,
+               0.0,
+               0.0,
+               (double) TEG_DIALOG_X,
+               45.0,
+               "fill-color", "black",
+               "stroke-color", "black",
+               NULL);
+
+       goo_canvas_text_new(
+               item,
+               bigtitle,
+               (double) (TEG_DIALOG_X/2),
+               (double) 10,
+               -1,
+               GOO_CANVAS_ANCHOR_NORTH,
                "font", HELVETICA_20_BFONT,
-               "fill_color", "white",
-               "anchor",GTK_ANCHOR_NORTH,
+               "fill-color", "white",
                NULL);
 
 
-       gtk_box_pack_start_defaults( GTK_BOX(GNOME_DIALOG(dialog)->vbox), 
GTK_WIDGET(canvas));
+       gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area
+                                  (GTK_DIALOG(dialog))), GTK_WIDGET(canvas),
+                          FALSE, FALSE, 0);
 
        gtk_widget_show (canvas);
 
        return dialog;
 }
-
-/* close a window */
-void destroy_window( GtkWidget * widget, GtkWidget **window )
-{
-       if( *window != NULL) {
-               gtk_widget_destroy(*window);
-       }
-
-       *window=NULL;
-}
-
-
-/* Brings attention to a window by raising it and giving it focus */
-void raise_and_focus (GtkWidget *widget)
-{
-       g_assert (GTK_WIDGET_REALIZED (widget));
-       gdk_window_show (widget->window);
-       gtk_widget_grab_focus (widget);
-}
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/support.h
+++ gbatnav-1.0.4cvs20051004/gbnclient/support.h
@@ -23,11 +23,7 @@
 #ifndef __TEG_GUI_GNOME_SUPPORT_H
 #define __TEG_GUI_GNOME_SUPPORT_H
 
-void generic_window_set_parent (GtkWidget * dialog, GtkWindow   * parent);
 char * load_pixmap_file( char *name );
-void teg_dialog( char* title, char* bigtitle, char* data );
 GtkWidget* teg_dialog_new( char* title, char* bigtitle );
-void raise_and_focus (GtkWidget *widget);
-void destroy_window( GtkWidget * widget, GtkWidget **window );
 
 #endif /* __TEG_GUI_GNOME_SUPPORT_H */
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/g_connect.c
+++ gbatnav-1.0.4cvs20051004/gbnclient/g_connect.c
@@ -28,7 +28,8 @@
 #endif
 
 #include <assert.h>
-#include <gnome.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <fcntl.h>
@@ -116,14 +117,12 @@
 static BATNAV_STATUS conectar_real()
 {
        if( send_connect() == 0 ) {
-               if( conectar_window )
-                       destroy_window( conectar_window, &conectar_window );
                return BATNAV_STATUS_SUCCESS;
        }
        return BATNAV_STATUS_ERROR;
 }
 
-static gint conectar_button_con_cb(GtkWidget *area, GdkEventExpose *event, 
gpointer user_data)
+static gint conectar_button_con_cb(void)
 {
        
strncpy(usuario.nombre,gtk_entry_get_text(GTK_ENTRY(con_entry_name)),sizeof(usuario.nombre)-1);
        usuario.nombre[sizeof(usuario.nombre)-1]=0;
@@ -133,14 +132,15 @@
 
 
        /* if you checked "start local server" we'll copy "localhost" to 
g_juego.sername */
-       if( GTK_TOGGLE_BUTTON(button_launch)->active ) {
+       if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button_launch)) ) {
                launch_server( usuario.port );
        }
 
-       gnome_config_set_int   ("/gbnclient/data/port",  usuario.port);
-       gnome_config_set_string("/gbnclient/data/servername",usuario.server);
-       gnome_config_set_string("/gbnclient/data/playername",usuario.nombre);
-       gnome_config_sync();
+       g_settings_delay(settings);
+       g_settings_set_uint(settings, "port", usuario.port);
+       g_settings_set_string(settings, "servername", usuario.server);
+       g_settings_set_string(settings, "playername", usuario.nombre);
+       g_settings_apply(settings);
 
        conectar_real();
 
@@ -153,7 +153,7 @@
 static void
 prop_changed (GtkWidget *w, void *n)
 {
-       if( GTK_TOGGLE_BUTTON(button_launch)->active )
+       if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button_launch)) )
                gtk_entry_set_text( GTK_ENTRY( con_entry_server ), "localhost");
 }
 
@@ -167,84 +167,73 @@
        GtkWidget *table;
        GtkWidget *frame;
         GtkAdjustment *adj;
+        gint response;
 
        if( usuario.with_ggz ) {
                conectar_real();
                return;
        }
 
-       if( conectar_window != NULL ) {
-               gtk_widget_show_all(conectar_window);
-               raise_and_focus(conectar_window);
-               return ;
-       }
-
        conectar_window = teg_dialog_new(_("Connect to server"),_("Connect to 
server")); 
-       gnome_dialog_append_buttons(GNOME_DIALOG(conectar_window),
-               GNOME_STOCK_BUTTON_OK,
-               GNOME_STOCK_BUTTON_CANCEL,
+       gtk_dialog_add_buttons(GTK_DIALOG(conectar_window),
+                               _("_OK"), GTK_RESPONSE_ACCEPT,
+                               _("_Cancel"), GTK_RESPONSE_REJECT,
                NULL );
-       gnome_dialog_set_default(GNOME_DIALOG(conectar_window),0);
-
-       gnome_dialog_button_connect (GNOME_DIALOG(conectar_window),
-               1, GTK_SIGNAL_FUNC(destroy_window),&conectar_window);
-
-       gnome_dialog_button_connect (GNOME_DIALOG(conectar_window),
-               0, GTK_SIGNAL_FUNC(conectar_button_con_cb),conectar_window);
-
-       gtk_signal_connect( GTK_OBJECT(conectar_window),
-                       "delete_event", GTK_SIGNAL_FUNC(destroy_window),
-                       &conectar_window);
-
-       gtk_signal_connect( GTK_OBJECT(conectar_window),
-                       "destroy", GTK_SIGNAL_FUNC(destroy_window),
-                       &conectar_window);
+       gtk_dialog_set_default_response(GTK_DIALOG(conectar_window),
+                                       GTK_RESPONSE_ACCEPT);
 
        /* server options */
-       table = gtk_table_new (3, 2, TRUE);
-       gtk_container_border_width (GTK_CONTAINER (table), GNOME_PAD_SMALL);
-       gtk_table_set_row_spacings (GTK_TABLE (table), GNOME_PAD_SMALL);
-       gtk_table_set_col_spacings (GTK_TABLE (table), GNOME_PAD_SMALL);
+       table = gtk_grid_new ();
+       gtk_container_set_border_width (GTK_CONTAINER (table), 4);
+       gtk_grid_set_row_spacing (GTK_GRID (table), 4);
+       gtk_grid_set_column_spacing (GTK_GRID (table), 4);
 
        frame = gtk_frame_new (_("Server Options"));
-       gtk_container_border_width (GTK_CONTAINER (frame), 1);
-       gtk_container_add(GTK_CONTAINER(GNOME_DIALOG(conectar_window)->vbox), 
frame);
+       gtk_container_set_border_width (GTK_CONTAINER (frame), 1);
+       gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area
+                                       (GTK_DIALOG(conectar_window))), frame);
 
        /* server port */
        label = gtk_label_new(_("Server port:"));
-       gtk_table_attach_defaults( GTK_TABLE(table), label, 0, 1, 0, 1 );
+       gtk_grid_attach( GTK_GRID(table), label, 0, 0, 1, 1 );
        adj = (GtkAdjustment *) gtk_adjustment_new( usuario.port, 1.0, 65536.0, 
1.0, 5.0, 1.0 );
        con_spinner_port = gtk_spin_button_new( adj, 0.0, 0);
-       gtk_table_attach_defaults( GTK_TABLE(table), con_spinner_port, 1, 2, 0, 
1 );
+       gtk_grid_attach( GTK_GRID(table), con_spinner_port, 1, 0, 1, 1);
 
        /* server name */
        label = gtk_label_new(_("Server name:"));
-       gtk_table_attach_defaults( GTK_TABLE(table), label, 0, 1, 1, 2 );
+       gtk_grid_attach( GTK_GRID(table), label, 0, 1, 1, 1);
        con_entry_server = gtk_entry_new( );
        gtk_entry_set_text( GTK_ENTRY( con_entry_server ), usuario.server);
-       gtk_table_attach_defaults( GTK_TABLE(table), con_entry_server, 1, 2, 1, 
2 );
+       gtk_grid_attach( GTK_GRID(table), con_entry_server, 1, 1, 1, 1);
        
 
        /* player name */
        label = gtk_label_new(_("Name:"));
-       gtk_table_attach_defaults( GTK_TABLE(table), label, 0, 1, 2, 3 );
+       gtk_grid_attach( GTK_GRID(table), label, 0, 2, 1, 1);
        con_entry_name = gtk_entry_new( );
        gtk_entry_set_text( GTK_ENTRY( con_entry_name ), usuario.nombre);
-       gtk_table_attach_defaults( GTK_TABLE(table), con_entry_name, 1, 2, 2, 3 
);
+       gtk_grid_attach( GTK_GRID(table), con_entry_name, 1, 2, 1, 1);
 
 
        gtk_container_add(GTK_CONTAINER(frame), table);
 
        /* launch localhost server */
        button_launch = gtk_check_button_new_with_label(_("Start server 
locally"));
-       gtk_container_add(GTK_CONTAINER(GNOME_DIALOG(conectar_window)->vbox), 
button_launch);
-       gtk_signal_connect (GTK_OBJECT (button_launch), "toggled",
-               GTK_SIGNAL_FUNC (prop_changed), NULL);
+       gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area
+                                       (GTK_DIALOG(conectar_window))),
+                         button_launch);
+       g_signal_connect (G_OBJECT (button_launch), "toggled",
+               G_CALLBACK (prop_changed), NULL);
 
 
        /* fin */
 
        gtk_widget_show (GTK_WIDGET(table));
        gtk_widget_show_all(conectar_window);
-       raise_and_focus(conectar_window);
+       response = gtk_dialog_run(GTK_DIALOG(conectar_window));
+       if(response == GTK_RESPONSE_ACCEPT)
+               conectar_button_con_cb();
+
+       gtk_widget_destroy(conectar_window);
 }
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/Makefile.am
+++ gbatnav-1.0.4cvs20051004/gbnclient/Makefile.am
@@ -51,8 +51,13 @@
 
 EXTRA_DIST = README AUTHORS    \
        gbnclient.desktop       \
+       $(gsettings_SCHEMAS)    \
        gnome-gbatnav.png
 
+gsettings_SCHEMAS = net.sf.batnav.gbnclient.gschema.xml
+
+@GSETTINGS_RULES@
+
 appicon_DATA = gnome-gbatnav.png
 
 Games_DATA = gbnclient.desktop
--- /dev/null
+++ gbatnav-1.0.4cvs20051004/gbnclient/net.sf.batnav.gbnclient.gschema.xml
@@ -0,0 +1,24 @@
+<schemalist gettext-domain="gbatnav">
+  <schema id="net.sf.batnav.gbnclient" path="/net/sf/batnav/gbnclient/">
+    <key name="port" type="u">
+      <default>1995</default>
+      <summary>The server port.</summary>
+    </key>
+    <key name="servername" type="s">
+      <default>'localhost'</default>
+      <summary>The server hostname.</summary>
+    </key>
+    <key name="playername" type="s">
+      <default>''</default>
+      <summary>The player name.</summary>
+      <description>Determined on startup based on the value of the
+      LOGNAME environment variable.</description>
+    </key>
+    <key name="random" type="u">
+      <default>1995</default>
+      <summary>Random number for generating random boards.</summary>
+      <description>This key is updated programmatically every time a
+      new board is generated.</description>
+    </key>
+  </schema>
+</schemalist>
--- gbatnav-1.0.4cvs20051004.orig/gbnclient/pantalla.h
+++ gbatnav-1.0.4cvs20051004/gbnclient/pantalla.h
@@ -24,11 +24,11 @@
 
 /* Draw in my (left) screen */
 void 
-pmicell(int x,int y,int color);
+pmicell(cairo_t *cr,int x,int y,int color);
 
 /* Draw in enemy (right) screen */
 void 
-ptucell(int x,int y,int color);
+ptucell(cairo_t *cr,int x,int y,int color);
 
 void 
 foot_right( char* text );
--- gbatnav-1.0.4cvs20051004.orig/gbnrobot/Makefile.am
+++ gbatnav-1.0.4cvs20051004/gbnrobot/Makefile.am
@@ -33,6 +33,10 @@
 
 appicon_DATA = gbnrobot.png
 
-EXTRA_DIST = README AUTHORS $(appicon_DATA) gbnrobot.png
+EXTRA_DIST = README AUTHORS $(appicon_DATA) gbnrobot.png $(gsettings_SCHEMAS)
+
+gsettings_SCHEMAS = net.sf.batnav.gbnrobot.gschema.xml
+
+@GSETTINGS_RULES@
 
 install-data-local:
--- /dev/null
+++ gbatnav-1.0.4cvs20051004/gbnrobot/net.sf.batnav.gbnrobot.gschema.xml
@@ -0,0 +1,10 @@
+<schemalist gettext-domain="gbatnav">
+  <schema id="net.sf.batnav.gbnrobot" path="/net/sf/batnav/gbnrobot/">
+    <key name="random" type="u">
+      <default>1995</default>
+      <summary>Random number for generating random boards.</summary>
+      <description>This key is updated programmatically every time a
+      new board is generated.</description>
+    </key>
+  </schema>
+</schemalist>

Reply via email to