Index: happiness.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/happiness.c,v retrieving revision 1.1 diff -u -r1.1 happiness.c --- happiness.c 2001/10/26 08:07:11 1.1 +++ happiness.c 2001/11/02 15:08:21 @@ -15,6 +15,7 @@ #endif #include +#include #include "city.h" #include "fcintl.h" @@ -383,43 +384,38 @@ char buf[512], *bptr = buf; int nleft = sizeof(buf); struct city *pcity = pdialog->pcity; + int wonders[] = { B_HANGING, B_MICHELANGELO, B_BACH, B_SHAKESPEARE, B_CURE, -1 }; + int wonder; + int firsttime = 1; my_snprintf(bptr, nleft, _("Wonders: ")); bptr = end_of_strn(bptr, &nleft); - if (city_affected_by_wonder(pcity, B_HANGING)) { - faces++; - my_snprintf(bptr, nleft, get_improvement_name(B_HANGING)); - bptr = end_of_strn(bptr, &nleft); - my_snprintf(bptr, nleft, _(". ")); - bptr = end_of_strn(bptr, &nleft); - } - if (city_affected_by_wonder(pcity, B_BACH)) { - faces++; - my_snprintf(bptr, nleft, get_improvement_name(B_BACH)); - bptr = end_of_strn(bptr, &nleft); - my_snprintf(bptr, nleft, _(". ")); - bptr = end_of_strn(bptr, &nleft); - } - /* hack for eliminating gtk_set_line_wrap() -mck */ - if (faces > 1) { - /* sizeof("Wonders: ") */ - my_snprintf(bptr, nleft, _("\n ")); - bptr = end_of_strn(bptr, &nleft); - } - if (city_affected_by_wonder(pcity, B_SHAKESPEARE)) { - faces++; - my_snprintf(bptr, nleft, get_improvement_name(B_SHAKESPEARE)); - bptr = end_of_strn(bptr, &nleft); - my_snprintf(bptr, nleft, _(". ")); - bptr = end_of_strn(bptr, &nleft); - } - if (city_affected_by_wonder(pcity, B_CURE)) { - faces++; - my_snprintf(bptr, nleft, get_improvement_name(B_CURE)); - bptr = end_of_strn(bptr, &nleft); - my_snprintf(bptr, nleft, _(". ")); - bptr = end_of_strn(bptr, &nleft); + for (wonder = 0; wonders[wonder] > 0; wonder++) { + if (city_affected_by_wonder(pcity, wonders[wonder])) { + faces++; + my_snprintf(bptr, nleft, get_improvement_name(wonders[wonder])); + bptr = end_of_strn(bptr, &nleft); + my_snprintf(bptr, nleft, _(". ")); + bptr = end_of_strn(bptr, &nleft); + /* hack for eliminating gtk_set_line_wrap() -mck */ + if (firsttime && faces > 1) { + /* sizeof("Wonders: ") */ + /* This hack is a bitch, as the GTK interface uses a proportional font + * which will clearly not line out nicely with spaces. + * Nevertheless, supposing it works as designed, it should use the + * translated string, so here it is. The trailing spaces are obviously + * empirical and only reflect the original coding. + * TODO: change this to a method which does not suffer from font + * characteristics. + * -pjk + */ + int length = strlen(_("Wonders: ")); + my_snprintf(bptr, nleft, "\n%*.*s ", length, length, ""); + bptr = end_of_strn(bptr, &nleft); + firsttime = 0; + } + } } if (faces == 0) {