diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/client/gui-gtk/menu.c expciv/client/gui-gtk/menu.c --- freeciv/client/gui-gtk/menu.c Fri Jun 29 13:53:10 2001 +++ expciv/client/gui-gtk/menu.c Fri Jun 29 17:06:59 2001 @@ -773,15 +773,19 @@ gettext-translates each "/" delimited component of menu path, puts them back together, and returns as a static string. Any component which is of form "" is _not_ translated. + + Path should include underscores like in the menu itself. *****************************************************************/ -static const char *translate_menu_path(const char *path) +static const char *translate_menu_path(const char *path, int remove_uline) { #ifndef ENABLE_NLS - return path; + static char res[100]; + strcpy(res, path); #else static struct astring in, out, tmp; /* these are never free'd */ char *tok, *s, *trn, *t; int len; + char *res; /* copy to in so can modify with strtok: */ astr_minsize(&in, strlen(path)+1); @@ -809,8 +813,20 @@ freelog(LOG_DEBUG, "t \"%s\", len %d, out \"%s\"", t, len, out.str); s = NULL; } - return out.str; + res = out.str; #endif + + if (remove_uline) { + char *from, *to; + from = to = res; + do { + if (*from != '_') { + *(to++) = *from; + } + } while (*(from++)); + } + + return res; } /**************************************************************** @@ -827,7 +843,7 @@ item_factory=gtk_item_factory_new(GTK_TYPE_MENU_BAR, "
", accel); for(i=0; i"); /* kluge to get around gtk's interpretation of "/" in menu item names */ - menus_rename("
/Orders/Go|Airlift to City", _("Go/Air_lift to City")); - menus_rename("
/Orders/Diplomat|Spy Actions", _("_Diplomat/Spy Actions")); + menus_rename("
/_Orders/Go|Airlift to City", _("Go/Air_lift to City")); + menus_rename("
/_Orders/Diplomat|Spy Actions", _("_Diplomat/Spy Actions")); } /**************************************************************** @@ -849,7 +865,7 @@ { GtkWidget *item; - path = translate_menu_path(path); + path = translate_menu_path(path, 1); if(!(item=gtk_item_factory_get_widget(item_factory, path))) { freelog(LOG_ERROR, @@ -869,7 +885,7 @@ { GtkWidget *item; - path = translate_menu_path(path); + path = translate_menu_path(path, 1); if (!(item = gtk_item_factory_get_widget(item_factory, path))) { freelog(LOG_ERROR, @@ -890,7 +906,7 @@ { GtkWidget *item; - path = translate_menu_path(path); + path = translate_menu_path(path, 1); if(!(item=gtk_item_factory_get_widget(item_factory, path))) { freelog(LOG_ERROR, "Can't show non-existent menu %s.", path); @@ -914,7 +930,7 @@ { GtkWidget *item; - path = translate_menu_path(path); + path = translate_menu_path(path, 1); if(!(item=gtk_item_factory_get_widget(item_factory, path))) { freelog(LOG_ERROR, "Can't rename non-existent menu %s.", path); @@ -930,62 +946,64 @@ /**************************************************************** -... +Note: the menu strings should contain underscores as in the +menu_items struct. The underscores will be removed elsewhere if +the string is used for a lookup via gtk_item_factory_get_widget() *****************************************************************/ void update_menus(void) { if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) { - menus_set_sensitive("
/Reports", FALSE); - menus_set_sensitive("
/Kingdom", FALSE); - menus_set_sensitive("
/View", FALSE); - menus_set_sensitive("
/Orders", FALSE); - - menus_set_sensitive("
/Game/Local Options", FALSE); - menus_set_sensitive("
/Game/Message Options", FALSE); - menus_set_sensitive("
/Game/Save Settings", FALSE); - menus_set_sensitive("
/Game/Server Opt initial", TRUE); - menus_set_sensitive("
/Game/Server Opt ongoing", TRUE); - menus_set_sensitive("
/Game/Export Log", TRUE); - menus_set_sensitive("
/Game/Clear Log", TRUE); - menus_set_sensitive("
/Game/Disconnect", TRUE); + menus_set_sensitive("
/_Reports", FALSE); + menus_set_sensitive("
/_Kingdom", FALSE); + menus_set_sensitive("
/_View", FALSE); + menus_set_sensitive("
/_Orders", FALSE); + + menus_set_sensitive("
/_Game/_Local Options", FALSE); + menus_set_sensitive("
/_Game/Messa_ge Options", FALSE); + menus_set_sensitive("
/_Game/_Save Settings", FALSE); + menus_set_sensitive("
/_Game/Server Opt _initial", TRUE); + menus_set_sensitive("
/_Game/Server Opt _ongoing", TRUE); + menus_set_sensitive("
/_Game/_Export Log", TRUE); + menus_set_sensitive("
/_Game/_Clear Log", TRUE); + menus_set_sensitive("
/_Game/_Disconnect", TRUE); } else { struct unit *punit; - menus_set_sensitive("
/Reports", TRUE); - menus_set_sensitive("
/Kingdom", TRUE); - menus_set_sensitive("
/View", TRUE); - menus_set_sensitive("
/Orders", TRUE); + menus_set_sensitive("
/_Reports", TRUE); + menus_set_sensitive("
/_Kingdom", TRUE); + menus_set_sensitive("
/_View", TRUE); + menus_set_sensitive("
/_Orders", TRUE); - menus_set_sensitive("
/Game/Local Options", TRUE); - menus_set_sensitive("
/Game/Message Options", TRUE); - menus_set_sensitive("
/Game/Save Settings", TRUE); - menus_set_sensitive("
/Game/Server Opt initial", TRUE); - menus_set_sensitive("
/Game/Server Opt ongoing", TRUE); - menus_set_sensitive("
/Game/Export Log", TRUE); - menus_set_sensitive("
/Game/Clear Log", TRUE); - menus_set_sensitive("
/Game/Disconnect", TRUE); + menus_set_sensitive("
/_Game/_Local Options", TRUE); + menus_set_sensitive("
/_Game/Messa_ge Options", TRUE); + menus_set_sensitive("
/_Game/_Save Settings", TRUE); + menus_set_sensitive("
/_Game/Server Opt _initial", TRUE); + menus_set_sensitive("
/_Game/Server Opt _ongoing", TRUE); + menus_set_sensitive("
/_Game/_Export Log", TRUE); + menus_set_sensitive("
/_Game/_Clear Log", TRUE); + menus_set_sensitive("
/_Game/_Disconnect", TRUE); - menus_set_sensitive("
/Reports/Spaceship", + menus_set_sensitive("
/_Reports/S_paceship", (game.player_ptr->spaceship.state!=SSHIP_NONE)); - menus_set_active("
/View/Map Grid", draw_map_grid); - menus_set_active("
/View/City Names", draw_city_names); - menus_set_active("
/View/City Productions", draw_city_productions); - menus_set_active("
/View/Terrain", draw_terrain); - menus_set_active("
/View/Coastline", draw_coastline); - menus_set_sensitive("
/View/Coastline", !draw_terrain); - menus_set_active("
/View/Improvements/Roads & Rails", draw_roads_rails); - menus_set_active("
/View/Improvements/Irrigation", draw_irrigation); - menus_set_active("
/View/Improvements/Mines", draw_mines); - menus_set_active("
/View/Improvements/Fortress & Airbase", draw_fortress_airbase); - menus_set_active("
/View/Specials", draw_specials); - menus_set_active("
/View/Pollution & Fallout", draw_pollution); - menus_set_active("
/View/Cities", draw_cities); - menus_set_active("
/View/Units", draw_units); - menus_set_active("
/View/Focus Unit", draw_focus_unit); - menus_set_sensitive("
/View/Focus Unit", !draw_units); - menus_set_active("
/View/Fog of War", draw_fog_of_war); + menus_set_active("
/_View/Map _Grid", draw_map_grid); + menus_set_active("
/_View/City _Names", draw_city_names); + menus_set_active("
/_View/City _Productions", draw_city_productions); + menus_set_active("
/_View/Terrain", draw_terrain); + menus_set_active("
/_View/Coastline", draw_coastline); + menus_set_sensitive("
/_View/Coastline", !draw_terrain); + menus_set_active("
/_View/Improvements/Roads & Rails", draw_roads_rails); + menus_set_active("
/_View/Improvements/Irrigation", draw_irrigation); + menus_set_active("
/_View/Improvements/Mines", draw_mines); + menus_set_active("
/_View/Improvements/Fortress & Airbase", draw_fortress_airbase); + menus_set_active("
/_View/Specials", draw_specials); + menus_set_active("
/_View/Pollution & Fallout", draw_pollution); + menus_set_active("
/_View/Cities", draw_cities); + menus_set_active("
/_View/Units", draw_units); + menus_set_active("
/_View/Focus Unit", draw_focus_unit); + menus_set_sensitive("
/_View/Focus Unit", !draw_units); + menus_set_active("
/_View/Fog of War", draw_fog_of_war); if((punit=get_unit_in_focus())) { char *irrfmt = _("Change to %s (_I)"); @@ -1002,70 +1020,70 @@ /* Enable the button for adding to a city in all cases, so we get an eventual error message from the server if we try. */ - menus_set_sensitive("
/Orders/Build City", + menus_set_sensitive("
/_Orders/_Build City", (can_unit_build_city(punit) || (unit_flag(punit->type, F_CITIES) && map_get_city(punit->x, punit->y)) || unit_can_help_build_wonder_here(punit))); - menus_set_sensitive("
/Orders/Build Road", + menus_set_sensitive("
/_Orders/Build _Road", (can_unit_do_activity(punit, ACTIVITY_ROAD) || can_unit_do_activity(punit, ACTIVITY_RAILROAD) || unit_can_est_traderoute_here(punit))); - menus_set_sensitive("
/Orders/Build Irrigation", + menus_set_sensitive("
/_Orders/Build _Irrigation", can_unit_do_activity(punit, ACTIVITY_IRRIGATE)); - menus_set_sensitive("
/Orders/Build Mine", + menus_set_sensitive("
/_Orders/Build _Mine", can_unit_do_activity(punit, ACTIVITY_MINE)); - menus_set_sensitive("
/Orders/Transform Terrain", + menus_set_sensitive("
/_Orders/Transf_orm Terrain", can_unit_do_activity(punit, ACTIVITY_TRANSFORM)); - menus_set_sensitive("
/Orders/Build Fortress", + menus_set_sensitive("
/_Orders/Build _Fortress", (can_unit_do_activity(punit, ACTIVITY_FORTRESS) || can_unit_do_activity(punit, ACTIVITY_FORTIFYING))); - menus_set_sensitive("
/Orders/Build Airbase", + menus_set_sensitive("
/_Orders/Build Airbas_e", can_unit_do_activity(punit, ACTIVITY_AIRBASE)); - menus_set_sensitive("
/Orders/Clean Pollution", + menus_set_sensitive("
/_Orders/Clean _Pollution", (can_unit_do_activity(punit, ACTIVITY_POLLUTION) || can_unit_paradrop(punit))); - menus_set_sensitive("
/Orders/Clean Nuclear Fallout", + menus_set_sensitive("
/_Orders/Clean _Nuclear Fallout", can_unit_do_activity(punit, ACTIVITY_FALLOUT)); - menus_set_sensitive("
/Orders/Sentry", + menus_set_sensitive("
/_Orders/_Sentry", can_unit_do_activity(punit, ACTIVITY_SENTRY)); - menus_set_sensitive("
/Orders/Pillage", + menus_set_sensitive("
/_Orders/Pillage", can_unit_do_activity(punit, ACTIVITY_PILLAGE)); - menus_set_sensitive("
/Orders/Make Homecity", + menus_set_sensitive("
/_Orders/Make _Homecity", can_unit_change_homecity(punit)); - menus_set_sensitive("
/Orders/Unload", + menus_set_sensitive("
/_Orders/_Unload", get_transporter_capacity(punit)>0); - menus_set_sensitive("
/Orders/Wake up others", + menus_set_sensitive("
/_Orders/Wake up o_thers", is_unit_activity_on_tile(ACTIVITY_SENTRY, punit->x, punit->y)); - menus_set_sensitive("
/Orders/Auto Settler", + menus_set_sensitive("
/_Orders/_Auto Settler", can_unit_do_auto(punit)); - menus_set_sensitive("
/Orders/Auto Explore", + menus_set_sensitive("
/_Orders/Auto E_xplore", can_unit_do_activity(punit, ACTIVITY_EXPLORE)); - menus_set_sensitive("
/Orders/Connect", + menus_set_sensitive("
/_Orders/_Connect", can_unit_do_connect(punit, ACTIVITY_IDLE)); - menus_set_sensitive("
/Orders/Patrol (Q)", + menus_set_sensitive("
/_Orders/Patrol (_Q)", can_unit_do_activity(punit, ACTIVITY_PATROL) && has_capability("activity_patrol", aconnection.capability)); - menus_set_sensitive("
/Orders/Diplomat|Spy Actions", + menus_set_sensitive("
/_Orders/Diplomat|Spy Actions", (is_diplomat_unit(punit) && diplomat_can_do_action(punit, DIPLOMAT_ANY_ACTION, punit->x, punit->y))); - menus_set_sensitive("
/Orders/Explode Nuclear", + menus_set_sensitive("
/_Orders/Explode Nuclear", unit_flag(punit->type, F_NUCLEAR)); if (unit_flag(punit->type, F_CARAVAN)) - menus_rename("
/Orders/Build City", _("Help _Build Wonder")); + menus_rename("
/_Orders/_Build City", _("Help _Build Wonder")); else if (unit_flag(punit->type, F_CITIES)) { if (map_get_city(punit->x, punit->y)) - menus_rename("
/Orders/Build City", _("Add to City (_B)")); + menus_rename("
/_Orders/_Build City", _("Add to City (_B)")); else - menus_rename("
/Orders/Build City", _("_Build City")); + menus_rename("
/_Orders/_Build City", _("_Build City")); } else - menus_rename("
/Orders/Build City", _("_Build City")); + menus_rename("
/_Orders/_Build City", _("_Build City")); if (unit_flag(punit->type, F_CARAVAN)) - menus_rename("
/Orders/Build Road", _("Make Trade _Route")); + menus_rename("
/_Orders/Build _Road", _("Make Trade _Route")); else if (unit_flag(punit->type, F_SETTLERS)) { if (map_get_tile(punit->x,punit->y)->special&S_ROAD) { roadtext = _("Build _Railroad"); @@ -1075,10 +1093,10 @@ roadtext = _("Build _Road"); road_activity=ACTIVITY_ROAD; } - menus_rename("
/Orders/Build Road", roadtext); + menus_rename("
/_Orders/Build _Road", roadtext); } else - menus_rename("
/Orders/Build Road", _("Build _Road")); + menus_rename("
/_Orders/Build _Road", _("Build _Road")); ttype = map_get_tile(punit->x, punit->y)->terrain; tinfo = get_tile_type(ttype); @@ -1103,28 +1121,28 @@ (get_tile_type(tinfo->transform_result))->terrain_name); } - menus_rename("
/Orders/Build Irrigation", irrtext); - menus_rename("
/Orders/Build Mine", mintext); - menus_rename("
/Orders/Transform Terrain", transtext); + menus_rename("
/_Orders/Build _Irrigation", irrtext); + menus_rename("
/_Orders/Build _Mine", mintext); + menus_rename("
/_Orders/Transf_orm Terrain", transtext); if (can_unit_do_activity(punit, ACTIVITY_FORTIFYING)) - menus_rename("
/Orders/Build Fortress", _("_Fortify")); + menus_rename("
/_Orders/Build _Fortress", _("_Fortify")); else - menus_rename("
/Orders/Build Fortress", _("Build _Fortress")); + menus_rename("
/_Orders/Build _Fortress", _("Build _Fortress")); if (unit_flag(punit->type, F_PARATROOPERS)) - menus_rename("
/Orders/Clean Pollution", _("_Paradrop")); + menus_rename("
/_Orders/Clean _Pollution", _("_Paradrop")); else - menus_rename("
/Orders/Clean Pollution", _("Clean _Pollution")); + menus_rename("
/_Orders/Clean _Pollution", _("Clean _Pollution")); if (!unit_flag(punit->type, F_SETTLERS)) - menus_rename("
/Orders/Auto Settler", _("_Auto Attack")); + menus_rename("
/_Orders/_Auto Settler", _("_Auto Attack")); else - menus_rename("
/Orders/Auto Settler", _("_Auto Settler")); + menus_rename("
/_Orders/_Auto Settler", _("_Auto Settler")); - menus_set_sensitive("
/Orders", TRUE); + menus_set_sensitive("
/_Orders", TRUE); } else - menus_set_sensitive("
/Orders", FALSE); + menus_set_sensitive("
/_Orders", FALSE); } }