From: Jordi Albornoz Date: Sun, 5 Jan 2003 01:25:51 +0000 (+0000) Subject: New patch from Dani Carbonell. Fix creation of multiple about dialogs. Convert theme... X-Git-Url: https://hydra-www.ietfng.org/gitweb/?a=commitdiff_plain;h=a7f069bdb4e2bc911d2ebef489f0e864573a7b11;p=gtetrinet New patch from Dani Carbonell. Fix creation of multiple about dialogs. Convert theme info and winlist items to UTF-8. Fix bug when connecting as spectator. Port some gtk_signal_connect's. --- diff --git a/ChangeLog b/ChangeLog index c4d8128..3a92300 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2003-01-05 Jordi Mallach + + * TODO: add missing item. + + * New patch from Dani Carbonell: + + * src/commands.c (about_command): only create dialog if it doesn't + exist. If it does, raise it. + + * src/dialogs.c (connectingdialog_destroy): remove timeouttag only if + it isn't 0. + + * src/misc.c (leftlabel_set): convert theme info to UTF-8 before + displaying. + * src/winlist.c (winlist_additem): convert winlist items to UTF-8. + + * src/partyline.c (partyline_page_new): port gtk_signal_connect to + g_signal_connect. + 2003-01-05 Jordi Mallach * AUTHORS: add Dani Carbonell. diff --git a/TODO b/TODO index 67dcf87..343d140 100644 --- a/TODO +++ b/TODO @@ -7,4 +7,5 @@ GTetrinet's TODO list + keybindings + multiple about windows (raise already open window) + playfields messages cleared when games start + + problem when typing composed letters (รก) in fields messages. - Make gtetrinet resizeable (at least the fields messages bit). diff --git a/src/commands.c b/src/commands.c index 91a215b..fb3ea04 100644 --- a/src/commands.c +++ b/src/commands.c @@ -34,6 +34,8 @@ #include "commands.h" #include "dialogs.h" +extern GtkWidget *about; + GnomeUIInfo gamemenu[] = { GNOMEUIINFO_ITEM(N_("_Connect to server..."), NULL, connect_command, NULL), GNOMEUIINFO_ITEM(N_("_Disconnect from server"), NULL, disconnect_command, NULL), @@ -219,40 +221,47 @@ void commands_checkstate () void about_command (GtkWidget *widget, gpointer data) { - GtkWidget *about, *hbox; + GtkWidget *hbox; GdkPixbuf *logo; - const char *authors[] = {N_("Ka-shu Wong "), - N_("James Antill "), - N_("Jordi Mallach "), - N_("Dani Carbonell "), - NULL}; - const char *documenters[] = {N_("Jordi Mallach "), - NULL}; - /* Translators: translate as your names & emails */ - const char *translators = _("translator_credits"); - - logo = gdk_pixbuf_new_from_file (PIXMAPSDIR "/gtetrinet.png", NULL); + if (!GTK_IS_WINDOW (about)) + { + const char *authors[] = {N_("Ka-shu Wong "), + N_("James Antill "), + N_("Jordi Mallach "), + N_("Dani Carbonell "), + NULL}; + const char *documenters[] = {N_("Jordi Mallach "), + NULL}; + /* Translators: translate as your names & emails */ + const char *translators = _("translator_credits"); + + logo = gdk_pixbuf_new_from_file (PIXMAPSDIR "/gtetrinet.png", NULL); - about = gnome_about_new (APPNAME, APPVERSION, - _("(C) 1999, 2000, 2001, 2002 Ka-shu Wong"), - _("A Tetrinet client for GNOME.\n"), - authors, - documenters, - strcmp (translators, "translator_credits") != 0 ? - translators : NULL, - logo); - - if (logo != NULL) - g_object_unref (logo); - - hbox = gtk_hbox_new (TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), - gnome_href_new ("http://gtetrinet.sourceforge.net/", _("GTetrinet Home Page")), - FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (about)->vbox), - hbox, TRUE, FALSE, 0); - gtk_widget_show_all (hbox); - - gtk_widget_show (about); + about = gnome_about_new (APPNAME, APPVERSION, + _("(C) 1999, 2000, 2001, 2002 Ka-shu Wong"), + _("A Tetrinet client for GNOME.\n"), + authors, + documenters, + strcmp (translators, "translator_credits") != 0 ? + translators : NULL, + logo); + + if (logo != NULL) + g_object_unref (logo); + + hbox = gtk_hbox_new (TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox), + gnome_href_new ("http://gtetrinet.sourceforge.net/", _("GTetrinet Home Page")), + FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (about)->vbox), + hbox, TRUE, FALSE, 0); + gtk_widget_show_all (hbox); + + gtk_widget_show (about); + } + else + { + gtk_window_present (GTK_WINDOW (about)); + } } diff --git a/src/dialogs.c b/src/dialogs.c index 7ec4670..ad16b16 100644 --- a/src/dialogs.c +++ b/src/dialogs.c @@ -96,7 +96,7 @@ void connectingdialog_new (void) void connectingdialog_destroy (void) { - gtk_timeout_remove (timeouttag); + if (timeouttag != 0) gtk_timeout_remove (timeouttag); timeouttag = 0; if (connectingdialog == 0) return; gtk_widget_destroy (connectingdialog); @@ -728,7 +728,7 @@ void prefdialog_new (void) theme_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (themelist)); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (themelist), FALSE); gtk_widget_set_usize (themelist, 160, 0); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (themelist), -1, _("Theme"), renderer, + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (themelist), -1, "theme", renderer, "text", 0, NULL); gtk_widget_show (themelist); diff --git a/src/gtetrinet.h b/src/gtetrinet.h index 05d5d45..1b4fe27 100644 --- a/src/gtetrinet.h +++ b/src/gtetrinet.h @@ -7,6 +7,8 @@ extern int gamemode; +GtkWidget *about; + extern void destroymain (GtkWidget *widget, gpointer data); extern gint keypress (GtkWidget *widget, GdkEventKey *key); extern gint keyrelease (GtkWidget *widget, GdkEventKey *key); diff --git a/src/misc.c b/src/misc.c index 600a154..f41d55e 100644 --- a/src/misc.c +++ b/src/misc.c @@ -41,7 +41,11 @@ GtkWidget *leftlabel_new (char *str) void leftlabel_set (GtkWidget *align, char *str) { - gtk_label_set (GTK_LABEL(GTK_BIN(align)->child), str); + gchar *aux; + + aux = g_locale_to_utf8 (str, -1, NULL, NULL, NULL); + gtk_label_set (GTK_LABEL(GTK_BIN(align)->child), aux); + g_free (aux); } /* returns a random number in the range 0 to n-1 -- diff --git a/src/partyline.c b/src/partyline.c index ce640cf..1733c62 100644 --- a/src/partyline.c +++ b/src/partyline.c @@ -74,10 +74,10 @@ GtkWidget *partyline_page_new (void) gtk_box_pack_start (GTK_BOX(leftbox), textboxscroll, TRUE, TRUE, 0); /* entry box */ entrybox = gtk_entry_new_with_max_length (200); - gtk_signal_connect (GTK_OBJECT(entrybox), "activate", - GTK_SIGNAL_FUNC(textentry), NULL); - gtk_signal_connect (GTK_OBJECT(entrybox), "key_press_event", - GTK_SIGNAL_FUNC(entrykey), NULL); + g_signal_connect (G_OBJECT(entrybox), "activate", + GTK_SIGNAL_FUNC(textentry), NULL); + g_signal_connect (G_OBJECT(entrybox), "key_press_event", + GTK_SIGNAL_FUNC(entrykey), NULL); gtk_widget_show (entrybox); gtk_box_pack_start (GTK_BOX(leftbox), entrybox, FALSE, FALSE, 0); gtk_widget_show (leftbox); diff --git a/src/tetrinet.c b/src/tetrinet.c index 5b792ee..9dee5e8 100644 --- a/src/tetrinet.c +++ b/src/tetrinet.c @@ -649,8 +649,9 @@ void tetrinet_inmessage (enum inmsg_type msgtype, char *data) token = strtok (data, " "); if (token == NULL) break; g_snprintf (buf, sizeof(buf), - _("%c*** You have joined %c%s"), - TETRI_TB_C_DARK_BLUE, TETRI_TB_BOLD, token); + _("%c*** You have joined %c%s%c%c"), + TETRI_TB_C_DARK_BLUE, TETRI_TB_BOLD, token, + TETRI_TB_RESET, TETRI_TB_C_DARK_BLUE); partyline_text (buf); while ((token = strtok (NULL, " ")) != NULL) speclist_add (token); playerlistupdate (); diff --git a/src/winlist.c b/src/winlist.c index aa8dd04..7a491c4 100644 --- a/src/winlist.c +++ b/src/winlist.c @@ -70,17 +70,19 @@ void winlist_additem (int team, char *name, int score) GtkListStore *winlist_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (winlist))); GtkTreeIter iter; char buf[16], *item[3]; + gchar *name_utf8; if (team) item[0] = "T"; else item[0] = ""; item[1] = nocolor (name); + name_utf8 = g_locale_to_utf8 (item[1], -1, NULL, NULL, NULL); g_snprintf (buf, sizeof(buf), "%d", score); item[2] = buf; gtk_list_store_append (winlist_model, &iter); gtk_list_store_set (winlist_model, &iter, 0, item[0], - 1, item[1], + 1, name_utf8, 2, item[2], -1); }