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>