DELTA 77 39494 2861
SVN  º.¿‚Cš …8 €F G €j I‘ €\ G €< I‘ €ƒ G § I‘ €v G ¦ I‘ €W G ° I‘ €q G ½ I‘ € G ‰ I‘ €µ  G ‰ I‘ €ƒ* G ‰ I‘ €? G ‰ I‘ · G ‰ I‘ €„" G ‰ I‘ €g G ‰ I‘ €’L G ‰ I‘ €H G €G I‘ €‚$ G € I‘ €Q G ˆ I‘ €` G ˆ I‘ € G ˆ I‘ €ƒo G €, I‘ €‚u G €g I‘ €7 G €G I‘ €‰z G €, I‘ € G €\ I‘ €? G €V I‘ €4 G €3 I‘ €* G €[ I‘ €p G º I‘ ·
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifdef WIN32_NATIVE
#include <windows.h>	/* LoadLibrary() */
#endif

#ifdef SDL
#include "SDL.h"
#endif

#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#include "capstr.h"
#include "dataio.h"
#include "diptreaty.h"
#include "fciconv.h"
#include "fcintl.h"
#include "game.h"
#include "idex.h"
#include "log.h"
#include "map.h"
#include "mem.h"
#include "netintf.h"
#include "packets.h"
#include "rand.h"
#include "support.h"
#include "timing.h"
#include "version.h"

#include "agents.h"
#include "attribute.h"
#include "audio.h"
#include "chatline_g.h"
#include "citydlg_g.h"
#include "cityrepdata.h"
#include "climisc.h"
#include "clinet.h"
#include "cma_core.h"		/* kludge */
#include "connectdlg_common.h"  /* client_kill_server() */
#include "connectdlg_g.h"
#include "control.h" 
#include "dialogs_g.h"
#include "diplodlg_g.h"
#include "ggzclient.h"
#include "gui_main_g.h"
#include "helpdata.h"		/* boot_help_texts() */
#include "mapctrl_g.h"
#include "mapview_g.h"
#include "menu_g.h"
#include "messagewin_g.h"
#include "options.h"
#include "packhand.h"
#include "pages_g.h"
#include "plrdlg_g.h"
#include "repodlgs_g.h"
#include "tilespec.h"
#include "themes_common.h"

#include "civclient.h"

char *logfile = NULL;
char *scriptfile = NULL;
static char tileset_name[512] = "\0";
char sound_plugin_name[512] = "\0";
char sound_set_name[512] = "\0";
char server_host[512] = "\0";
char user_name[512] = "\0";
char password[MAX_LEN_PASSWORD] = "\0";
char metaserver[512] = "\0";
int  server_port = -1;
bool auto_connect = FALSE; /* TRUE = skip "Connect to Freeciv Server" dialog */
bool in_ggz = FALSE;

struct civclient client;

static enum client_states civclient_state = C_S_INITIAL;

/* TRUE if an end turn request is blocked by busy agents */
bool waiting_for_end_turn = FALSE;

/* 
 * TRUE for the time between sending PACKET_TURN_DONE and receiving
 * PACKET_NEW_YEAR. 
 */
bool turn_done_sent = FALSE;

/*
 * TRUE between receiving PACKET_END_TURN and PACKET_BEGIN_TURN
 */
static bool server_busy = FALSE;

****
  Convert a text string from the internal to the data encoding, when it
  is written to the network.
*/
static char *put_conv(const char *src, size_t *length)
{
  char *out = internal_to_data_string_malloc(src);

  if (out) {
    *length = strlen(out);
    return out;
  } else {
    *length = 0;
    return NULL;
  }
}

****
  Convert a text string from the data to the internal encoding when it is
  first read from the network.  Returns FALSE if the destination isn't
  large enough or the source was bad.
*/
static bool get_conv(char *dst, size_t ndst,
		     const char *src, size_t nsrc)
{
  char *out = data_to_internal_string_malloc(src);
  bool ret = TRUE;
  size_t len;

  if (!out) {
    dst[0] = '\0';
    return FALSE;
  }

  len = strlen(out);
  if (ndst > 0 && len >= ndst) {
    ret = FALSE;
    len = ndst - 1;
  }

  memcpy(dst, out, len);
  dst[len] = '\0';
  free(out);

  return ret;
}

****
  Set up charsets for the client.
*/
static void charsets_init(void)
{
  dio_set_put_conv_callback(put_conv);
  dio_set_get_conv_callback(get_conv);
}

****
 This is called at program exit.
*/
static void at_exit(void)
{
  client_kill_server(TRUE);
  my_shutdown_network();
}

****
  Called only by set_client_state() below.
*/
static void client_game_init(void)
{
  game_init();
  attribute_init();
  agents_init();
  control_init();
}

****
  Called by set_client_state() and client_exit() below.
*/
static void client_game_free(void)
{
  control_done();
  free_help_texts();
  attribute_free();
  agents_free();
  game_free();
}

****
...
*/
int main(int argc, char *argv[])
{
  int i, loglevel;
  int ui_options = 0;
  bool ui_separator = FALSE;
  char *option=NULL;
  bool user_tileset = FALSE;

  /* Load win32 post-crash debugger */
#ifdef WIN32_NATIVE
# ifndef NDEBUG
  if (LoadLibrary("exchndl.dll") == NULL) {
#  ifdef DEBUG
    fprintf(stderr, "exchndl.dll could not be loaded, no crash debugger\n");
#  endif
  }
# endif
#endif

  i_am_client(); /* Tell to libcivcommon that we are client */

  init_nls();
  audio_init();
  init_character_encodings(gui_character_encoding, gui_use_transliteration);

  /* default argument values are set in options.c */
  loglevel=LOG_NORMAL;

  i = 1;

  while (i < argc) {
    if (ui_separator) {
      argv[1 + ui_options] = argv[i];
      ui_options++;
    } else if (is_option("--help", argv[i])) {
      fc_fprintf(stderr, _("Usage: %s [option ...]\n"
			   "Valid options are:\n"), argv[0]);
      fc_fprintf(stderr, _("  -a, --autoconnect\tSkip connect dialog\n"));
#ifdef DEBUG
      fc_fprintf(stderr, _("  -d, --debug NUM\tSet debug log level (0 to 4,"
			   " or 4:file1,min,max:...)\n"));
#else
      fc_fprintf(stderr,
		 _("  -d, --debug NUM\tSet debug log level (0 to 3)\n"));
#endif
      fc_fprintf(stderr,
		 _("  -h, --help\t\tPrint a summary of the options\n"));
      fc_fprintf(stderr, _("  -l, --log FILE\tUse FILE as logfile "
			   "(spawned server also uses this)\n"));
      fc_fprintf(stderr, _("  -m, --meta HOST\t"
			   "Connect to the metaserver at HOST\n"));
      fc_fprintf(stderr, _("  -n, --name NAME\tUse NAME as name\n"));
      fc_fprintf(stderr,
		 _("  -p, --port PORT\tConnect to server port PORT (usually with -a)\n"));
      fc_fprintf(stderr,
		 _("  -P, --Plugin PLUGIN\tUse PLUGIN for sound output %s\n"),
		 audio_get_all_plugin_names());
      fc_fprintf(stderr, _("  -r, --read FILE\tRead startup script FILE "
			   "(for spawned server only)\n"));
      fc_fprintf(stderr,
		 _("  -s, --server HOST\tConnect to the server at HOST (usually with -a)\n"));
      fc_fprintf(stderr,
		 _("  -S, --Sound FILE\tRead sound tags from FILE\n"));
      fc_fprintf(stderr, _("  -t, --tiles FILE\t"
			   "Use data file FILE.tilespec for tiles\n"));
      fc_fprintf(stderr, _("  -v, --version\t\tPrint the version number\n"));
      fc_fprintf(stderr, _("      --\t\t"
			   "Pass any following options to the UI.\n"
			   "\t\t\tTry \"%s -- --help\" for more.\n"), argv[0]);
      exit(EXIT_SUCCESS);
    } else if (is_option("--version",argv[i])) {
      fc_fprintf(stderr, "%s %s\n", freeciv_name_version(), client_string);
      exit(EXIT_SUCCESS);
    } else if ((option = get_option_malloc("--log", argv, &i, argc))) {
      logfile = option; /* never free()d */
    } else  if ((option = get_option_malloc("--read", argv, &i, argc))) {
      scriptfile = option; /* never free()d */
    } else if ((option = get_option_malloc("--name", argv, &i, argc))) {
      sz_strlcpy(user_name, option);
      free(option);
    } else if ((option = get_option_malloc("--meta", argv, &i, argc))) {
      sz_strlcpy(metaserver, option);
      free(option);
    } else if ((option = get_option_malloc("--Sound", argv, &i, argc))) {
      sz_strlcpy(sound_set_name, option);
      free(option);
    } else if ((option = get_option_malloc("--Plugin", argv, &i, argc))) {
      sz_strlcpy(sound_plugin_name, option);
      free(option);
    } else if ((option = get_option_malloc("--port",argv,&i,argc))) {
      if (sscanf(option, "%d", &server_port) != 1) {
	fc_fprintf(stderr,
		   _("Invalid port \"%s\" specified with --port option.\n"),
		   option);
	fc_fprintf(stderr, _("Try using --help.\n"));
        exit(EXIT_FAILURE);
      }
      free(option);
    } else if ((option = get_option_malloc("--server", argv, &i, argc))) {
      sz_strlcpy(server_host, option);
      free(option);
    } else if (is_option("--autoconnect", argv[i])) {
      auto_connect = TRUE;
    } else if ((option = get_option_malloc("--debug", argv, &i, argc))) {
      loglevel = log_parse_level_str(option);
      if (loglevel == -1) {
	fc_fprintf(stderr,
		   _("Invalid debug level \"%s\" specified with --debug "
		     "option.\n"), option);
	fc_fprintf(stderr, _("Try using --help.\n"));
        exit(EXIT_FAILURE);
      }
      free(option);
    } else if ((option = get_option_malloc("--tiles", argv, &i, argc))) {
      sz_strlcpy(tileset_name, option);
      free(option);
      user_tileset = TRUE;
    } else if (is_option("--", argv[i])) {
      ui_separator = TRUE;
    } else {
      fc_fprintf(stderr, _("Unrecognized option: \"%s\"\n"), argv[i]);
      exit(EXIT_FAILURE);
    }
    i++;
  } /* of while */

  /* Remove all options except those intended for the UI. */
  argv[1 + ui_options] = NULL;
  argc = 1 + ui_options;

  /* disallow running as root -- too dangerous */
  dont_run_as_root(argv[0], "freeciv_client");

  log_init(logfile, loglevel, NULL);

  /* after log_init: */

  (void)user_username(default_user_name, MAX_LEN_NAME);
  if (!is_valid_username(default_user_name)) {
    char buf[sizeof(default_user_name)];

    my_snprintf(buf, sizeof(buf), "_%s", default_user_name);
    if (is_valid_username(buf)) {
      sz_strlcpy(default_user_name, buf);
    } else {
      my_snprintf(default_user_name, sizeof(default_user_name),
		  "player%d", myrand(10000));
    }
  }

  /* initialization */

  game.all_connections = conn_list_new();
  game.est_connections = conn_list_new();

  ui_init();
  charsets_init();
  my_init_network();

  /* register exit handler */ 
  atexit(at_exit);

  chatline_common_init();
  message_options_init();
  init_player_dlg_common();
  init_themes();
  settable_options_init();

  load_general_options();

  if (tileset_name[0] == '\0') {
    sz_strlcpy(tileset_name, default_tileset_name);
  }
  if (sound_set_name[0] == '\0') 
    sz_strlcpy(sound_set_name, default_sound_set_name); 
  if (sound_plugin_name[0] == '\0')
    sz_strlcpy(sound_plugin_name, default_sound_plugin_name); 
  if (server_host[0] == '\0')
    sz_strlcpy(server_host, default_server_host); 
  if (user_name[0] == '\0')
    sz_strlcpy(user_name, default_user_name); 
  if (metaserver[0] == '\0')
    sz_strlcpy(metaserver, default_metaserver); 
  if (server_port == -1) server_port = default_server_port;

  /* This seed is not saved anywhere; randoms in the client should
     have cosmetic effects only (eg city name suggestions).  --dwp */
  mysrand(time(NULL));
  helpdata_init();
  boot_help_texts(NULL);

  tilespec_try_read(tileset_name, user_tileset);

  audio_real_init(sound_set_name, sound_plugin_name);
  audio_play_music("music_start", NULL);

  ggz_initialize();

  /* run gui-specific client */
  ui_main(argc, argv);

  /* termination */
  client_exit();
  
  /* not reached */
  return EXIT_SUCCESS;
}

****
...
*/
void client_exit(void)
{
  attribute_flush();
  client_remove_all_cli_conn();

  if (save_options_on_exit) {
    save_options();
  }
  
  tileset_free(tileset);
  
  ui_exit();
  
  chatline_common_done();
  message_options_free();
  client_game_free();

  helpdata_done(); /* client_exit() unlinks help text list */
  conn_list_free(game.all_connections);
  conn_list_free(game.est_connections);
  exit(EXIT_SUCCESS);
}


****
...
*/
void client_packet_input(void *packet, int type)
{
  if (!client_handle_packet(type, packet)) {
    freelog(LOG_ERROR, "Received unknown packet (type %d) from server!",
	    type);
  }
}

****
...
*/
void user_ended_turn(void)
{
  send_turn_done();
}

****
...
*/
void send_turn_done(void)
{
  freelog(LOG_DEBUG, "send_turn_done() turn_done_button_state=%d",
	  get_turn_done_button_state());

  if (!get_turn_done_button_state()) {
    /*
     * The turn done button is disabled but the user may have press
     * the return key.
     */

    if (agents_busy()) {
      waiting_for_end_turn = TRUE;
    }

    return;
  }

  waiting_for_end_turn = FALSE;
  turn_done_sent = TRUE;

  attribute_flush();

  dsend_packet_player_phase_done(&aconnection, game.info.turn);

  update_turn_done_button_state();
}

****
...
*/
void send_report_request(enum report_type type)
{
  dsend_packet_report_req(&aconnection, type);
}

****
...
*/
void set_client_state(enum client_states newstate)
{
  bool connect_error = (C_S_PREPARING == civclient_state)
      && (C_S_PREPARING == newstate);
  enum client_states oldstate = civclient_state;

  if (C_S_OVER == newstate) {
    /*
     * Extra kludge for end-game handling of the CMA.
     */
    if (client.playing) {
      city_list_iterate(client.playing->cities, pcity) {
	if (cma_is_city_under_agent(pcity, NULL)) {
	  cma_release_city(pcity);
	}
      } city_list_iterate_end;
    }
    popdown_all_city_dialogs();
    popdown_all_game_dialogs();
    set_unit_focus(NULL);
  }

  if (civclient_state != newstate) {

    /* If changing from pre-game state to _either_ select race
       or running state, then we have finished getting ruleset data.
    */
    if (C_S_PREPARING == civclient_state
	&& C_S_RUNNING == newstate) {
      audio_stop();		/* stop intro sound loop */
    }
      
    civclient_state = newstate;

    switch (civclient_state) {
    case C_S_RUNNING:
      init_city_report_game_data();
      load_ruleset_specific_options();
      create_event(NULL, E_GAME_START, _("Game started."));
      precalc_tech_data();
      if (client.playing) {
	player_research_update(client.playing);
      }
      role_unit_precalcs();
      boot_help_texts(client.playing);	/* reboot with player */
      can_slide = FALSE;
      update_unit_focus();
      can_slide = TRUE;
      set_client_page(PAGE_GAME);
      break;
    case C_S_PREPARING:
      popdown_all_city_dialogs();
      close_all_diplomacy_dialogs();
      popdown_all_game_dialogs();
      clear_notify_window();
      if (C_S_INITIAL != oldstate) {
	client_game_free();
      }
      client_game_init();
      set_unit_focus(NULL);
      if (!aconnection.established && !with_ggz) {
	set_client_page(in_ggz ? PAGE_GGZ : PAGE_MAIN);
      } else {
	set_client_page(PAGE_START);
      }
      break;
    default:
      break;
    };
    update_menus();
  }
  if (!aconnection.established && C_S_PREPARING == civclient_state) {
    gui_server_connect();
    if (auto_connect) {
      if (connect_error) {
	freelog(LOG_FATAL,
		_("There was an error while auto connecting; aborting."));
	exit(EXIT_FAILURE);
      } else {
	start_autoconnecting_to_server();
	auto_connect = FALSE;	/* don't try this again */
      }
    } 
  }
  update_turn_done_button_state();
  update_conn_list_dialog();
}


****
...
*/
enum client_states client_state(void)
{
  return civclient_state;
}

****
  Remove pconn from all connection lists in client, then free it.
*/
void client_remove_cli_conn(struct connection *pconn)
{
  if (pconn->player) {
    conn_list_unlink(pconn->player->connections, pconn);
  }
  conn_list_unlink(game.all_connections, pconn);
  conn_list_unlink(game.est_connections, pconn);
  assert(pconn != &aconnection);
  free(pconn);
}

****
  Remove (and free) all connections from all connection lists in client.
  Assumes game.all_connections is properly maintained with all connections.
*/
void client_remove_all_cli_conn(void)
{
  while (conn_list_size(game.all_connections) > 0) {
    struct connection *pconn = conn_list_get(game.all_connections, 0);
    client_remove_cli_conn(pconn);
  }
}

****
..
*/
void send_attribute_block_request()
{
  send_packet_player_attribute_block(&aconnection);
}

****
..
*/
void wait_till_request_got_processed(int request_id)
{
  input_from_server_till_request_got_processed(aconnection.sock,
					       request_id);
}

****
..
*/
bool client_is_observer(void)
{
  return aconnection.established && aconnection.observer;
}

/* Seconds_to_turndone is the number of seconds the server has told us
 * are left.  The timer tells exactly how much time has passed since the
 * server gave us that data. */
static double seconds_to_turndone = 0.0;
static struct timer *turndone_timer;

/* This value shows what value the timeout label is currently showing for
 * the seconds-to-turndone. */
static int seconds_shown_to_turndone;

****
  Reset the number of seconds to turndone from an "authentic" source.

  The seconds are taken as a double even though most callers will just
  know an integer value.
*/
void set_seconds_to_turndone(double seconds)
{
  if (game.info.timeout > 0) {
    seconds_to_turndone = seconds;
    turndone_timer = renew_timer_start(turndone_timer, TIMER_USER,
				       TIMER_ACTIVE);

    /* Maybe we should do an update_timeout_label here, but it doesn't
     * seem to be necessary. */
    seconds_shown_to_turndone = ceil(seconds) + 0.1;
  }
}

****
  Return the number of seconds until turn-done.  Don't call this unless
  game.info.timeout != 0.
*/
int get_seconds_to_turndone(void)
{
  if (game.info.timeout > 0) {
    return seconds_shown_to_turndone;
  } else {
    /* This shouldn't happen. */
    return FC_INFINITY;
  }
}

****
  This function should be called at least once per second.  It does various
  updates (idle animations and timeout updates).  It returns the number of
  seconds until it should be called again.
*/
double real_timer_callback(void)
{
  double time_until_next_call = 1.0;

  {
    double autoconnect_time = try_to_autoconnect();
    time_until_next_call = MIN(time_until_next_call, autoconnect_time);
  }

  if (C_S_RUNNING != client_state()) {
    return time_until_next_call;
  }

  {
    double blink_time = blink_turn_done_button();

    time_until_next_call = MIN(time_until_next_call, blink_time);
  }

  if (get_num_units_in_focus() > 0) {
    double blink_time = blink_active_unit();

    time_until_next_call = MIN(time_until_next_call, blink_time);
  }

  /* It is possible to have game.info.timeout > 0 but !turndone_timer, in the
   * first moments after the timeout is set. */
  if (game.info.timeout > 0 && turndone_timer) {
    double seconds = seconds_to_turndone - read_timer_seconds(turndone_timer);
    int iseconds = ceil(seconds) + 0.1; /* Turn should end right on 0. */

    if (iseconds < seconds_shown_to_turndone) {
      seconds_shown_to_turndone = iseconds;
      update_timeout_label();
    }

    time_until_next_call = MIN(time_until_next_call,
			       seconds - floor(seconds) + 0.001);
  }

  /* Make sure we wait at least 50 ms, otherwise we may not give any other
   * code time to run. */
  return MAX(time_until_next_call, 0.05);
}

****
  Returns TRUE if the client can issue orders (such as giving unit
  commands).  This function should be called each time before allowing the
  user to give an order.
*/
bool can_client_issue_orders(void)
{
  return (client.playing
	  && !client_is_observer()
	  && C_S_RUNNING == client_state());
}

****
  Returns TRUE iff the client can do diplomatic meetings with another 
  given player.
*/
bool can_meet_with_player(const struct player *pplayer)
{
  return (can_client_issue_orders()
	  /* && client.playing (above) */
	  && could_meet_with_player(client.playing, pplayer));
}

****
  Returns TRUE iff the client can get intelligence from another 
  given player.
*/
bool can_intel_with_player(const struct player *pplayer)
{
  return (client_is_observer()
	  || (client.playing
	      && could_intel_with_player(client.playing, pplayer)));
}

****
  Return TRUE if the client can change the view; i.e. if the mapview is
  active.  This function should be called each time before allowing the
  user to do mapview actions.
*/
bool can_client_change_view(void)
{
  return ((client.playing || client_is_observer())
	  && (C_S_RUNNING == client_state()
	      || C_S_OVER == client_state()));
}

****
  Sets if server is considered busy. Currently it is considered busy
  between turns.
*/
void set_server_busy(bool busy)
{
  if (busy != server_busy) {
    /* server_busy value will change */
    server_busy = busy;

    /* This may mean that we have to change from or to wait cursor */
    control_mouse_cursor(NULL);
  }
}

****
  Returns if server is considered busy at the moment
*/
bool is_server_busy(void)
{
  return server_busy;
}
ENDREP
DELTA 14209 0 356
SVN  È=È_%T †]  7†oˆ 5ˆŸ £f‰\Ÿ ….­RŽ •.³ivclientclient.playing;
  struct playerclient.playing;
  struct playerclient.playingENDREP
DELTA 3745 57771 104
SVN  f­O­O€­O/**********************************************************************
 Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
***********************************************************************/

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <windowsx.h>

#include "fcintl.h"
#include "game.h"
#include "map.h"
#include "packets.h"
#include "player.h"
#include "support.h"
#include "unit.h"
#include "unitlist.h"

#include "clinet.h"
#include "civclient.h"
#include "control.h"
#include "dialogs.h"
#include "goto.h"
#include "gui_main.h"
#include "gui_stuff.h"
#include "mapview.h"


#include "gotodlg.h"

#define ID_GOTO 100
#define ID_AIRLIFT 101
#define ID_LIST 102
#define ID_ALL 103

static HWND goto_dialog;
static HWND goto_list;

static struct tile *original_tile;

static void update_goto_dialog(HWND list);
static struct city *get_selected_city(void);
static int show_all_cities;

/****************************************************************

*****************************************************************/
static LONG CALLBACK goto_dialog_proc(HWND dlg,UINT message,
				      WPARAM wParam,LPARAM lParam)
{
  struct city *pdestcity;
  switch(message)
    {
    case WM_CREATE:
    case WM_GETMINMAXINFO:
    case WM_SIZE:
      break;
    case WM_DESTROY:
      goto_dialog=NULL;
      break;
    case WM_CLOSE:
      center_tile_mapcanvas(original_tile); 
      DestroyWindow(dlg);
      break;
    case WM_COMMAND:
      switch(LOWORD(wParam))
	{
	case ID_LIST:
	  if (NULL != (pdestcity=get_selected_city())) {
	    struct unit *punit = head_of_units_in_focus();
	    center_tile_mapcanvas(pdestcity->tile);
	    if(punit && unit_can_airlift_to(punit, pdestcity)) {
	      EnableWindow(GetDlgItem(dlg,ID_AIRLIFT),TRUE);
	    } else {
	      EnableWindow(GetDlgItem(dlg,ID_AIRLIFT),FALSE);
	    }
	    break;
	  }
	  break;
	case ID_ALL:
	  show_all_cities=show_all_cities?0:1;
	  update_goto_dialog(GetDlgItem(dlg,ID_LIST));
	  break;
	case ID_GOTO:
	  {
	    pdestcity=get_selected_city();
	    if (pdestcity) {
	      unit_list_iterate(get_units_in_focus(), punit) {
      		send_goto_tile(punit, pdestcity->tile);
      	} unit_list_iterate_end;
		    DestroyWindow(dlg);
	    }
	  }
	  break;
	case ID_AIRLIFT:
	  {
	    pdestcity=get_selected_city();
	    if (pdestcity) {
	      unit_list_iterate(get_units_in_focus(), punit) {
          request_unit_airlift(punit, pdestcity);
      	} unit_list_iterate_end;
        DestroyWindow(dlg);
	    }

	  }
	  break;
	case IDCANCEL:
	  center_tile_mapcanvas(original_tile);
	  DestroyWindow(dlg);
	  break;
	  
	}
      break;
    default:
      return DefWindowProc(dlg,message,wParam,lParam);
    }
  return 0;
}
/****************************************************************
...
*****************************************************************/
void
popup_goto_dialog(void)
{
  struct fcwin_box *hbox;
  struct fcwin_box *vbox;
  if (goto_dialog)
    return;
  if (!can_client_change_view()) {
    return;
  }
  if (get_num_units_in_focus()==0) {
    return;
  }

  original_tile = get_center_tile_mapcanvas();

  goto_dialog=fcwin_create_layouted_window(goto_dialog_proc,
					   _("Goto/Airlift Unit"),
					   WS_OVERLAPPEDWINDOW,
					   CW_USEDEFAULT,CW_USEDEFAULT,
					   root_window,NULL,
					   REAL_CHILD,
					   NULL);
  vbox=fcwin_vbox_new(goto_dialog,FALSE);
  hbox=fcwin_hbox_new(goto_dialog,TRUE);
  fcwin_box_add_static(vbox,_("Goto/Airlift Unit"),
		       0,SS_LEFT,FALSE,FALSE,5);
  goto_list=fcwin_box_add_list(vbox,10,ID_LIST,
			       WS_VSCROLL | LBS_STANDARD,TRUE,TRUE,5);
  fcwin_box_add_button(hbox,_("Goto"),ID_GOTO,0,TRUE,TRUE,15);

  fcwin_box_add_button(hbox,_("Airlift"),ID_AIRLIFT,0,TRUE,TRUE,15);
  EnableWindow(GetDlgItem(goto_dialog,ID_AIRLIFT),FALSE);
  fcwin_box_add_button(hbox,_("All Cities"),ID_ALL,
		       0,TRUE,TRUE,15);
  fcwin_box_add_button(hbox,_("Cancel"),IDCANCEL,0,TRUE,TRUE,15);
  fcwin_box_add_box(vbox,hbox,FALSE,FALSE,5);
  fcwin_set_box(goto_dialog,vbox);
  update_goto_dialog(goto_list);
  ShowWindow(goto_dialog,SW_SHOWNORMAL);
}

/**************************************************************************
...
**************************************************************************/
static void update_goto_dialog(HWND list)
{
  int    j;
  char   name[MAX_LEN_NAME+3];

  ListBox_ResetContent(list);
  Button_SetState(GetDlgItem(goto_dialog,ID_ALL),show_all_cities);

  players_iterate(pplayer) {
    if (!show_all_cities && pplayer != client.playing) {
      continue;
    }
    city_list_iterate(pplayer->cities, pcity) {
      sz_strlcpy(name, city_name(pcity));
      /* FIXME: should use unit_can_airlift_to(). */
      if (pcity->airlift) {
        sz_strlcat(name, "(A)");
      }
      j=ListBox_AddString(list,name);
      ListBox_SetItemData(list,j,pcity->id);
    } city_list_iterate_end;
  } players_iterate_end;
}

/**************************************************************************
...
**************************************************************************/
static struct city *get_selected_city(void)
{
  int selection;  
  if ((selection=ListBox_GetCurSel(goto_list))==LB_ERR)
    return 0;
  return game_find_city_by_number(ListBox_GetItemData(goto_list,selection));

}
ENDREP
DELTA 13027 199 6243
SVN  ƒõgƒí{ƒv±: ˆ6 €F ‚/ˆe ‰‹‰ ›x”5£ †{°L€…9 ‚O¼5€O ¿K½ .Á¨ †Â?¬ ‰0Èn® oÒ€‚L …Ó8€ DØ4ˆ _Ùy€H ƒÚr€e -Þ4 šá €‚; ÖýN€w ‡Ô3€‚ ÞiŽ ‚gßyŽ  âo Bƒé@ FŽ ’ S×0 ƒAå{ +éH« ë€! ƒuìn‰ …ðr€{ i÷l‰ ˆ~øU‰ Š'‚b€J ƒ?‚Œb A  b‚c« "‚ú@ „W‚ N™ ‹‚¥9€ „‚±s€ƒ_ *‚å~ j‚ºa Cƒé? FŽ  :‚¼Z $ƒé@ N‚¿@€s i‚Ý4 FŽ €T i‚Ý4 FŽ º iÙ| FŽ €T i‚Ý4 FŽ  _‚Éw€‚Y *‚å~ U‚Î6€r i‚Ý4 FŽ €K D‚Ý4€C i‚Ý4 FŽ ™ Ù` FŽ €( „U‚Ú# T‚Þz€K ƒz‚á ‚‚å€‚C ˆn‚ég „-‚òh€  ƒ•@ µU‚ùL ›eƒ¯,€^ ˆyƒÍ™ ŸUƒÖityrep.h"
#include "civclient.h"
#include "climap.h"
#include "climiscuniversalcity_owner(pcity) == client.playingtotal, item, targets_used;
  struct universal targets[MAX_NUM_PRODUCTION_TARGETS];
  struct item items[MAX_NUM_PRODUCTION_TARGETS];
  char buf[100];
  bool changed;

  /* Test if the list improvements of pcity has changed */
  changed = false;
  improvement_iterate(pimprove) {
    int index = improvement_index(pimprove);
    bool has_building = city_has_building(pdialog->pcity, pimprove);
    bool had_building =
      pdialog->last_improvlist_seen[index];

    if ((has_building && !had_building)
        || (!has_building && had_building)) {
      changed = true;
      pdialog->last_improvlist_seen[index] = has_building;
    }
  } improvement_iterate_end;

  if (!changed) {
    return;
  }universal target = items[item].item;

    assert(VUT_IMPROVEMENT == target.kindcity_improvement_upkeep(pdialog->pcity, target.value.buildingimprovement_index(target.value.building)city_owner(pdialog->pcity) != client.playing  int free_upkeep[O_COUNT];
  int free_unhappyfree_unhappy = get_city_bonus(pdialog->pcity, EFT_MAKE_CONTENT_MIL);

  output_type_iterate(o) {
    free_upkeep[o] = get_city_output_bonus(pdialog->pcity, get_output_type(o),
                                           EFT_UNIT_UPKEEP_FREE_PER_CITY);
  } output_type_iterate_end;

  if  (city_owner(pdialog->pcity) != client.playingint upkeep_cost[O_COUNT];
    int happy_cost = city_unit_unhappiness(punit, &free_unhappy);
        
    city_unit_upkeep(punit, upkeep_cost, free_upkeep);
                                   pdialog->supported_y, upkeep_cost, happy_coststruct city *pcity=pdialog->pcity;    
  const char *descr = city_production_name_translation(pcity);enum citizen_category citizens[MAX_CITY_SIZE];
  int i;
  RECT rc;
  struct city *pcity=pdialog->pcity;
  int num_citizens = get_city_citizen_types(pcity, FEELING_FINAL, citizens);
  HDC hdcsrc = CreateCompatibleDC(NULL);
  HBITMAP oldbit = SelectObject(hdcsrc,pdialog->citizen_bmp);

  for (i = 0; i < num_citizens

  improvement_iterate(pimprove) {
    pdialog->last_improvlist_seen[improvement_index(pimprove)] = 0;
  } improvementstatic void buy_callback(struct city_dialog *pdialog)
{
  char buf[512];
  struct city *pcity = pdialog->pcity;
  const char *name = city_production_name_translation(pcity);
  int value = city_production_buy_gold_cost(pcity);
 
  if (value <= client.playing->economic.goldclient.playingclient.playing/
static void sellimprovement_by_number(pdialog->id_selected)city_improvement_name_translation(pdialog->pcity, improvement_by_number(pdialog->id_selected)),
	      impr_sell_gold(improvement_by_number(pdialog->id_selected)universalVUT_UTYPE == target.kind) {
		popup_help_dialog_typed(utype_name_translation(target.value.utype),
					HELP_UNIT);
	      } else if (is_great_wonder(target.value.building)) {
		popup_help_dialog_typed(improvement_name_translation(target.value.building.buildinguniversalan_city_build_now(pdialog->pcity, items[item].item)) {
	  struct universal
  city_worklist_commit(pdialog->pcity, pwlcity_name(pdialog->pcity)game_find_city_by_number(pdialog->pcity->trade[i]))) {
        sz_strlcpy(cityname, city_name(pcity));
      } else {
        sz_strlcpy(citynamestatic void supported_units_activate_close_callback(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  destroy_message_dialog(w);

  if (NULL != punit) {
    struct city *pcity =
      player_find_city_by_id(client.playing, punit->homecity);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
        CityDlgClose(pdialog);
      } =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_disband(punit/
static void present_units_homecity_callback(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_change_homecity(punit/
static void present_units_cancel_callback(HWND w, void */              
static void present_units_activate_callback(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    set_unit_focus(punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  destroy_message_dialog(w);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
        CityDlgClose(pdialog);
      } =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_sentry(punit/
static void present_units_fortify_callback(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_fortify(punitstatic void unitupgrade_callback_yes(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_upgrade(punit/
static void unitupgrade/
static void upgrade_callback(HWND w, void * data)
{
  char buf[512];
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL == city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, pdialog->support_unit_ids[n]);

  if (NULL != punit
      && (pcity = game_find_city_by_number(punit->homecity))) {
    HWNDstatic void city_dlg_click_present(struct city_dialog *pdialog, int n)
{
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, pdialog->present_unit_ids[n]);

  if (NULL != punit
      && (pcity=tile_city(punit->tile))
      && (pdialog=get_city_dialog(pcity))) { /* ??? */
     HWND wd = 

     if (NULL == can_upgrade_unittype(client.playing,unit_type(punit))) {
       message_dialog_button_set_sensitive(wd,6, FALSE);
     }
   }city_name(pcity)void refresh_unit_city_dialogs(struct unit *punit)
{
  struct city_dialog *pdialog;
  struct city *pcity_pre = tile_city(punit->tile);
  struct city *pcity_sup =
    player_find_city_by_id(client.playing, punit->homecity);city_name(pdialog->pcity)ENDREP
DELTA 14134 6654 5010
SVN  ‚“'‚“6e“ 1 €c ˆ.Ž 5—H ™€C wš\ ƒv›^ ‹+Ÿ_Ž ‘j«€C N½P€5 pÀ`˜ Áq˜ qÃ˜ ƒ#Ä&˜ ~Çj˜ ‚kÉ	€‚ „.Î
© Òb€ …Wá€„ »$êlŽ ‚!¦Ž †7¨O€n …¯v€ FÁQ¬ „p¸€ Q½Ž „c¾_€g ŠXÄ+Ž ƒaÏŽ pÏ „Ór‡ „;Ø¡ ¢3Ül „ÿ*€T Ž‚…/* ensure our pointer is valid */
  client.playing = valid_player_by_number(game.info.player_idx);
client.playingcity_name(pcity)client.playing) {
    pcity = player_find_city_by_id(client.playingcity_name(pcity)city_name(pcity)client.playingfor_player(pclause->from),
		advance_name_for_player(client.playingfor_player(pclause->from),
		  city_name(pcity));
    } else {
      my_snprintf(buf, bufsiz,_("The %s give unknown city."),
                  nation_plural_for_player(pclause->fromfor_player(pclause->fromfor_player(pclause->fromfor_player(pclause->fromfor_player(pclause->fromfor_player(pclause->fromlient.playing && can_client_change_view()) {
    int index = 0;

    if (A_UNSET != get_player_research(client.playing)->researching) {
      index = (NUM_TILES_PROGRESS
	       * get_player_research(client.playing)->bulbs_researched)
	/ (total_bulbs_required(client.playinglient.playing && can_client_change_view()lient.playing && can_client_change_view()
      && government_count() > 0) {
    struct government *gov = government_of_player(client.playingclient.playing && (pcity = find_palace(client.playing))) {
    /* Else focus on the capital. */
    center_tile_mapcanvas(pcity->tile);
  } else if (client.playing && city_list_size(client.playing->cities) > 0) {
    /* Just focus on any city. */
    pcity = city_list_get(client.playing->cities, 0);
    assert(pcity != NULL);
    center_tile_mapcanvas(pcity->tile);
  } else if (client.playing && unit_list_size(client.playing->units) > 0) {
    /* Just focus on any unit. */
    punit = unit_list_get(client.playingclient.playingclient.playingclient.playing) {
    return 0;
  }

  memset(mapping, 0, sizeof(mapping));
  city_list_iterate(client.playingclient.playing) {
    return 0;
  }

  improvement_iterate(pimprove) {
    if (can_player_build_improvement_now(client.playing, pimproveif (can_player_build_unit_now(client.playingclient.playing) {
    return 0;
  }

  improvement_iterate(pimprove) {
    bool can_build = can_player_build_improvement_now(client.playingclient.playingclient.playing, punittype);
    bool can_eventually_build =
	can_player_build_unit_later(client.playingclient.playingclient.playingVERBOSEclient.playing || !client.playingcity_name(pcity)client.playing->economic.luxury;
  sci_end = lux_end + client.playing->economic.science;
  tax_end = 100;

  lux = client.playing->economic.luxury;
  sci = client.playing->economic.science;
  tax = client.playingENDREP
DELTA 14150 1529 179
SVN  •]•e …s ‹ Šl† „krfc_types.h"player *playing;ENDREP
DELTA 14258 4180 474
SVN  ­R­YD †]  k†o‹ ‡N¹ ˆK¥ivclient.h" (TECH_KNOWN == player_invention_state(client.playing, i)ENDREP
DELTA 10041 548 468
SVN  Ë	Ë(!} Š   ‚Š LŒ5· ŽCœ>“ ƒI«“ œ'®bivclient.h"
#include "climisc.h" (game.info.spacerace
     && pplayer == client.playinglayer_name(pplayer)layer_name(pplayer)ENDREP
DELTA 14108 0 5234
SVN  ÚÚUz…< ‡!  ]‡3€D }¥V© Q§pŽ Ž\©P© t¸R© œ¹l€X ÉdÖ8€B £~ `€X  ­~’ pº<¸ P­~” NŽ  ‚VÊ9µ kÒ5  NŽ œ 1º<‘ FÃ~ uÑ* ‡ZÒ5client.playing) {
      switch (pplayer_get_diplstate(client.playingplayer_by_number(plrno) != client.playingclient.playingplayer_by_number(g_value_get_int(&value))player_by_number(g_value_get_int(&value))/* TRANS: Nations report title */
  gui_dialog_set_title(players_dialog_shell, _("Nationclient.playing) {
    switch (pplayer_get_diplstate(client.playingplayer_by_number(plrno))) {
      popup_intel_dialog(player_by_number(plrno));
    }
  }void players_sship    popup_spaceship_dialog(player_by_number(plrno));
  }  AI toggle callback
                player_name(player_by_number(plrno)) AI skill level setting callbackstatic void players_ai_skill    char buf[512]name(player_by_number(plrno))ENDREP
DELTA 10385 174 225
SVN  ÍÌw6‚K †>  †aŒ †Y‡fŽ ²)ŽN‰ ‚)À}‰ ‚(Ã,‰ ‚ÅZ€
 ‚9Èn€| QÌ4#include "fcintlcivclient.h"client.playing_("Lock")_("Lock")_("Lock")
    my_snprintf(buf, sizeof(buf), _("%s max rate: %d%%"),
		government_name_for_player(client.playing),
		get_player_bonus(client.playingclient.playing->economic.tax, 0,
		      client.playing->economic.luxury, 0,
		      client.playing->economic.science, 0 );
ENDREP
DELTA 10411 46473 11413
SVN  ‚‡äIƒtä; †
 ¾ ‚	†]€Z A €& AŒ ‚ Z‰@© ?‹#„ ‚SŒe‘ ƒ1*€\ ŒV“O€ ‹| €‚ F°z€ƒV Q°0€D x²Q J³N ‚µ ·>€ƒz IºR€‚= 
¿€‹ „]Á€@ …HÆRš Ì‚ G ¬ JŒ €| E÷± JŒ € G÷ Vv AŒ €ƒ@ U“­ W”1€ H»@… AŒ ² H»@… AŒ €z J÷{… AŒ €‚ A  -Ý€ƒ áD€e ‚`ã2€ƒ, Sèt€ I»@˜ AŒ €ƒ A  ƒ~žg“ ‚;¢z‚ A ¯ AŒ € {ªc€< aÜ@­ AŒ €†j A €N AŒ €! R¨@€‡ ƒ¬› ‚Z¯n F²B ´¿ }¶@‚ „T¸=‹ AŒ €s l¾f€: UÃ8 ƒ*Ä€P ‚ZÈ› Ë* `Í#€C 5Ð)” ]Ñ[€ƒ ]Ú< Ü ‚‚… G €` JŒ €Qring.h>

#include "events.h"
#include "fcintl.h"
#include "iozdialogs_g.h"
#include "mapview_common.h"
#include "options.h"
#include "overview_common.h"
#include "plrdlg_common.h"
#include "repodlgs_common.h"
#include "servers.h"
#include "themes_common.h"
#include "tilespec.h"


 The "options" file handles actual "options", and also view options,
 message options, dialog/report settings, cma settings, server settings,
 and global worklists.
/
_URL;
char default_theme_name[512] = "\0"FALSgoto_into_unknownstatic void reqtree_show_icons_callback(struct client_option *option);

const char *client_option_class_names[COC_MAX] = {
  N_("Graphics"),
  N_("Overview"),
  N_("Sound"),
  N_("Interface"),
  N_("Network"),
  N_("Fontheme_name, N_("Theme"),
		 N_("By changing this option you change the active theme."),
		 COC_GRAPHICS,
		 get_themes_list, theme_reread_callbackDisabling this option will turn off combat animation "
		     "between units on the mapview."),
		  COC_GRAPHICS),
  GEN_BOOL_OPTION_CB(draw_full_citybar, N_("Draw the citybar"),
		     N_("Setting this option will display a 'citybar' "
			"containing useful information beneath each city. "
			"Disabling this option will display only the city's "
			"name and optionally, productio_CB(reqtree_show_icons,
                     N_("Show icons in the technology tree"),
                     N_("Setting this option will display icons "
		        "on the technology tree diagram. Turning "
		        "this option off makes the technology tree "
		        "more compact."),
		     COC_GRAPHICS, reqtree_show_icons_callback),
  GEN_BOOL_OPTION_CB(draw_unit_shields, N_("Draw shield graphics for units"),
		     N_("Setting this option will draw a shield icoDisable this option if you do not want to "
		     "press the Turn Dgoto_into_unknown, N_("Allow goto into the unknown"),
		  N_("Setting this option will make the game consider "
		     "moving into unknown tiles.  If not, then goto routes "
		     "will detour around or be blocked by unknown tiles."),
		  COC_INTERFACE),
  GEN_BOOL_OPTION(center_when_popup_city, N_("Center map when Popup city"),
		  N_("Setting this option makes the mapview center on a "
		     "city when its city dialog is popped up."),
		  COC_INTERFACE),
  GEN_BOOL_OPTION(concise_city_production,N_("End Turn when done moving"),
		  N_("Setting this option makes your turn end automatically "
		     "when all your units are done moving."),
		  COC_INTERFACE),
  GEN_BOOL_OPTION(ask_city_name, N_("Prompt for city names"),
		  N_("Disabling this option will make the names of newly "
		     "founded cities chosenSetting this option will pop up a newly-founded "
		     "city's city dialog automatically."),
		  COC_INTERFACE),

  GEN_BOOL_OPTION(overview.layers[OLAYER_BACKGROUND],
		  N_("Background layer"),
		  N_("The background layer of the overview shows just "
		     "ocean and land."), COC_OVERVIEW),
  GEN_BOOL_OPTION_CB(overview.layers[OLAYER_RELIEF],
		     N_("Terrain relief map layer"),
		     N_("The relief layer shows all terrains on the map."),
		     COC_OVERVIEW, overview_redraw_callback),
  GEN_BOOL_OPTION_CB(overview.layers[OLAYER_BORDERS],
		     N_("Borders layer"),
		     N_("The borders layer of the overview shows which tiles "
			"are owned by each player."),
		     COC_OVERVIEW, overview_redraw_callback),
  GEN_BOOL_OPTION_CB(overview.layers[OLAYER_UNITS],
		     N_("Units layer"),
		     N_("Enabling this will draw units on the overview."),
		     COC_OVERVIEW, overview_redraw_callback),
  GEN_BOOL_OPTION_CB(overview.layers[OLAYER_CITIES],
		     N_("Cities layer"),
		     N_("Enabling this will draw cities on the overview."),
		     COC_OVERVIEW, overview_redraw_callback),
  GEN_BOOL_OPTION_CB(overview.fog,
		     N_("Overview fog of war"),
		     N_("Enabling this will show fog of war on the "
		        "overview."),
		     COC_OVERVIEW, overview_redraw_callback)
};
#undef GEN_INT_OPTION
#undef GEN_BOOL_OPTION
#undef GEN_STR_OPTION

static client_option *fc_options = NULL;
static int num_options = 0bool player_dlg_show_dead_players = TRUE;
bool reqtree_show_icon(player_dlg_show_dead_play

****
  Return the first item of fc_options.
/
struct client_option *client_option_array_first(void)
{
  if (num_options > 0) {
    return fc_options;
  }
  return NULL;**********
  Return the last item of fc_options.
/
const struct client_option *client_option_array_last(void)
{
  if (num_options > 0) {
    return &fc_options[num_options - 1];
  }
  return NULL;/
void message_options_init(void)
{
  int none[] = {
    E_IMP_BUY, E_IMP_SOLD, E_UNIT_BUY,
    E_UNIT_LOST_ATT, E_UNIT_WIN_ATT, E_GAME_START,
    E_NATION_SELECTED, E_CITY_BUILD, E_NEXT_YEAR,
    E_CITY_PRODUCTION_CHANGED,
    E_CITY_MAY_SOON_GROW, E_WORKLIST, E_AI_DEBUG
  };
  int out_only[] = {
    E_CHAT_MSG, E_CHAT_ERROR, E_CONNECTION, E_LOG_ERROR, E_SETTING
  };
  int all[] = {
    E_LOG_FATAL, E_TUTORIAL
  };
  int i;

  for (i = 0; i < none); i++) {
    messages_where[none[i]] = 0MW_OUTPUT;
  }
  for (i = 0; i < ARRAY_SIZE(all); i++) {
    messages_where[all[i]] = MW_MESSAGES | MW_POPUP;
  }

  events_init(... 
/
void message_options_free(void)
{
  events_free(... 
/
static void message_options_load(struct section_file *file, const char *prefix)
{
  int i;

  for (i = 0; i < E_LAST; i++) {
    messages_where[i] =
      secfile_lookup_int_default(file, messages_where[i],
				 "%s.message_where_%02d", prefix, i);... 
/
static void message_options_save(struct section_file *file, const char *prefix)
{
  int i;

  for (i = 0; i < E_LAST; i++) {
    secfile_insert_int_comment(file, messages_where[i],
			       get_event_message_text(i),
			       "%s.message_where_%02d", prefix, i);
  }
}


)
{
  struct cm_parameter parameter;
  const char *name =
    secfile_lookup_str_default(file, "preset",
                               "cma.preset%d.name", i);

  output_type_iterate(o) {
    parameter.minimal_surplus[o] =
        secfile_lookup_int_default(file, 0, "cma.preset%d.minsurp%d", i, o);
    parameter.factor[o] =
        secfile_lookup_int_default(file, 0, "cma.preset%d.factor%d", i, o);
  parameter.happy_factor =
      secfile_lookup_int_default(file, 0, "cma.preset%d.happyfactor", iint i)
{
  const struct cm_parameter *const pparam = cmafec_preset_get_parameter(i);
  char *name = cmafec_preset_get_descr(i);

  secfile_insert_str(file, name, "cma.preset%d.name", i);

  output_type_iterate(o) {
    secfile_insert_int(file, pparam->minimal_surplus[o],
                       "cma.preset%d.minsurp%d", i, o);
    secfile_insert_int(file, pparam->factor[o],
                       "cma.preset%d.factor%d", i, o                      "cma.preset%d.reqhappy", i);
  secfile_insert_int(file, pparam->happy_factor,
                     "cma.preset%d.happyfactor", iInsert all cma presets.
/
static void save_cma_presets(struct section_file *file)
{
  int i;

  secfile_insert_int_comment(file, cmafec_preset_num(),
                             _("If you add a preset by hand,"
                               " also update \"number_of_presets\""),
                             "cma.number_of_presets");
  for (i = 0; i < cmafec_preset_num(); i++) {
    save_cma_preset(file, i);
  }
}


freelog(LOG_ERROR, 


 Load settable per connection/server options.
/
void load_settable_options(bool send_it)
{
  char buffer[MAX_LEN_MSG];
  struct section_file sf;
  char *name;
  char *desired_string;
  int i = 0
    return;

  for (; i < num_settable_options; i++) {
    struct options_settable *o = &settable_options[i];
    bool changed = FALSE;

    my_snprintf(buffer, sizeof(buffer), "/set %s ", o->name);

    switch (o->stype) {
    case SSET_BOOL:
      o->desired_val = secfile_lookup_bool_default(&sf, o->default_val,
                                                   "server.%s", o->name);
      changed = (o->desired_val != o->default_val
              && o->desired_val != o->val);
      if (changed) {
        sz_strlcat(buffer, o->desired_val ? "1" : "0");
      }
      break;
    case SSET_INT:
      o->desired_val = secfile_lookup_int_default(&sf, o->default_val,
                                                  "server.%s", o->name);
      changed = (o->desired_val != o->default_val
              && o->desired_val != o->val);
      if (changed) {
        cat_snprintf(buffer, sizeof(buffer), "%d", o->desired_val);
      }
      break;
    case SSET_STRING:
      desired_string = secfile_lookup_str_default(&sf, o->default_strval,
                                                  "server.%s", o->name);
      if (NULL != desired_string) {
        if (NULL != o->desired_strval) {
          free(o->desired_strval);
        }
        o->desired_strval = mystrdup(desired_string);
        changed = (0 != strcmp(desired_string, o->default_strval)
                && 0 != strcmp(desired_string, o->strval));
        if (changed) {
          sz_strlcat(buffer, desired_string);
        }
      }
      break;
    default:
      freelog(LOG_ERROR,
              "load_settable_options() bad type %d.",
              o->stype);
      break;
    };

    if (changed && send_it) {
      send_chat(buffer);
    }
  }
Save settable per connection/server options.
/
static void save_settable_options(struct section_file *sf)
{
  int i = 0;

  for (; i < num_settable_options; i++) {
    struct options_settable *o = &settable_options[i];

    switch (o->stype) {
    case SSET_BOOL:
      if (o->desired_val != o->default_val) {
        secfile_insert_bool(sf, o->desired_val, "server.%s", o->name);
      }
      break;
    case SSET_INT:
      if (o->desired_val != o->default_val) {
        secfile_insert_int(sf, o->desired_val, "server.%s",  o->name);
      }
      break;
    case SSET_STRING:
      if (NULL != o->desired_strval
       && 0 != strcmp(o->desired_strval, o->default_strval)) {
        secfile_insert_str(sf, o->desired_strval, "server.%s", o->name);
      }
      break;
    default:
      freelog(LOG_ERROR,
              "save_settable_options() bad type %d.",
              o->stype);
      break;
    };
  }
}



 Load from the rc file any options that are not ruleset specific.
 It is called after ui_init(), yet before ui_main().
 Unfortunately, this means that some clients cannot display.
 Instead, use freelog().
/
void load_general_options(void)
{
  struct section_file sf;
  int i, num;
  view_option *v;
  char *name;
  const char * const prefix = "client";

  assert(fc_fc_options = fc_calloc(num_options, sizeof(*fc_options));
  memcpy(fc_options, common_options, sizeof(common_options));
  memcpy(fc_options + ARRAY_SIZE(common_options), gui_options,
	 num_gui_options * sizeof(*fc_options));

  name = option_file_name();
  if (!name) {
    /* FIXME: need better messages */
    freelog(LOG_ERROR, _("Save failed, cannot find a filename."));
    return;
  }
  if (!section_file_load(&sf, name)) {
    /* try to create the rc file */
    section_file_init(&sf);
    secfile_insert_str(&sf, VERSION_STRING, "client.version");

    create_default_cma_presets();
    save_cma_presets(&sf);

    /* FIXME: need better messages */
    if (!section_file_save(&sf, name, 0, FZ_PLAIN)) {
      freelog(LOG_ERROR, _("Save failed, cannot write to file %s"), name);
    } else {
      freelog(LOG_NORMAL, _("Saved settings to file %s"), name);
    }
    section_file_free(&sf);
    return;client_options_iterate(o) {case COT_FONT client_options_iterate_end;

  message_options_load(&sf, prefix);
  
  /* Players dialog */  _S_RUNNING
/
void load_ruleset_specific_options(void)
{
  struct section_file sf;
  int i;
  char *name = option_file_name();
if (client.playing) {
    /* load global worklists */
    for (i = 0; i < MAX_NUM_WORKLISTS; i++) {
      worklist_load(&sf, &client.worklists[i],
		    "worklists.worklist%d", i);
    }0output_buffer[256];
  int i;
  view_option *v;
  char *name = option_file_name()client_options_iterate(o) {case COT_FONT client_options_iterate_end;

  for (v = view_options; v->name; v++) {
    secfile_insert_bool(&sf, *(v->p_value), "client.%s", v->name);
  }

  message_options_save(&sf, "client");

  for (i = 0/* Players dialog */server settings */
  save_cma_presets(&sf);
  save_settable_options(&sf);

  /* insert global worklists */
  if (client.playing) {
    for(i = 0; i < MAX_NUM_WORKLISTS; i++){
      if (client.worklists[i].is_valid) {
	worklist_save(&sf, &client.worklists[i], client.worklists[i].length,
		      "worklists.worklist%d", i);
      }
    }
  }

  /* save to disk */
  if (!section_file_save(&sf, name, 0, FZ_PLAIN
******
   Callback when the reqtree  show icons option is changed.
   The tree is recalculated.
**/
static void reqtree_show_icons_callback(struct client_option *option)
{
  /* This will close research dialog, when it's open again the techtree will
   * be recalculated */
  popdown_all_game_dialogs();
}
ENDREP
DELTA 14387 8109 743
SVN  À¿\	  …Y  º†ENDREP
DELTA 14171 3332 40
SVN  ‘]‘k3ƒ ¡q €@ ¢-€_ ¤  ¥ SÄ|‚ F¡  l§7€9 \ªgŽ æ«R = 0;

  for (; d < (client.playing->economic.luxury)/10; d++) {}

  for (; d < (client.playing->economic.science + client.playing->economic.luxury)/10; d++) {
  }

  for (; d < 10; d++) {

client.playing)),
		textyear( game.info.year ),
		client.playing->economic.gold,
		client.playing->economic.tax,
		client.playing->economic.luxury,
		client.playing->economic.science );client.playingENDREP
DELTA 14258 0 1128
SVN  ‚¢‚¢qR‚ ˆX  2ˆj‹ ±,ŠŽ †9»KŽ éÂ  Ž2«)  lâl ‰[»WŽ ƒ_ÅA¦ ‰[É6¸ “Ó6¥ —!æa§ £sþivclient.h"client.playingclient.playingclient.playing, pitem->text, impclient.playing, pitem->text, impclient.playingclient.playing, pitem->text, punittypeadvance(buf, sizeof(buf), client.playing, pitem->text, iclient.playing, pitem->text, pterrainclient.playing, pitem->text, pgovernmenENDREP
DELTA 14171 3868 15881
SVN  ƒIƒŸ=^† †T  Z†fŸ •–P€ …o¬€ º²± ÉKìh Y§7 Ù	·$¡ žW‚bŽ +‚¯HŽ  ,‚±€
 —‚Ñv€| ‘I‚ê¾ ¡1‚üclient.playing;
  struct player
                                   player_number(pclause->from),
                                   pclause->type,
                                  
                                   player_number(pclause->from),
                                   pclause->type,
                                  pPlayer0 == client.playing && DS_ALLIANCE != typename(city_list_ptrs[j]));
  
 (pclause->from != client.playingclient.playingclient.playing
  my_snprintf(cBuf, sizeof(cBuf),
              /* TRANS: "Polish incident !" FIXME!!! */
              _("%s incident !"),
             client.playing, pPlayer)->type;

  if (!can_meet_with_player(pPlayer)) {
    if (DS_WAR == type || pPlayer == client.playing
      shared = gives_shared_vision(client.playing, pPlayer);
ENDREP
DELTA 14209 8475 71
SVN  Ø×p- ¹ €j –lºµ G  ‚(ÑzŽ ƒ]Ô1 (pPlayer != client.playing
      && DS_NO_CONTACT == pplayer_get_diplstate(client.playing, pPlayer)->typeclient.playing)));
  popup_goto_airlift_dialog();
}

client.playingENDREP
DELTA 14209 8945 30701
SVN  …….‚9 úN €u ‚Gû<€v X”~” fü6 ÄC‚€M˜ Ê3‚Å=¢ ñ
„client.playing) {
    dsend_packet_player_ready(&aconnection, player_number(client.playing),
			      !client.playingclient.playing);
  } else if (game.info.is_new_game) {
    send_chat("/take -");
    popup_races_dialog(client.playingCalled when "observeplayer != client.playingset_player_count(packet->nplayers)ENDREP
DELTA 14209 8576 343
SVN  †  †  `ƒY ¬  Ž ¶¬Ž ¢6â4Ž »)„y‘ ã À8¦ x‚£Ž ‚¥Ž ŠI‚¦&½ Z‚±-¦ ÚN‚Â.€= ƒtƒž;Ž  7ƒ¢>Ž 
ƒÃŽ ‚ÏcƒÐ’client.playingclient.playingclient.playingclient.playing) {value <= client.playing->economic.goldclient.playingclient.playingvalue <= city_can_buy(pCity) && client.playing->economic.goldvalue <= client.playing->economic.goldstruct city **array;
    int i, dir, non_open_size;
    int size = city_list_size(client.playing->cities);
  
    assert(size >= 1);
    assert(city_owner(pCityDlg->pCity) == client.playingclient.playingclient.playingclient.playing999) {
        my_†  ¥4¥8p ¼:Ž ³"¼[Ž …QðŽ „õlŽ ‰>úŽ „ƒNŽ „9‡tŽ ƒsŒ<Ž ”v>client.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 12411 7708 4298
SVN  ë4í|6š? …s €o z†S ¦‡c€c ƒ0®6 ²+” ³O ^´yŸ µR€; v·0¤ ƒL¹@€B ‚
½` HÀ€ƒ! 'Ä&€Y ZË0• <Ä&€F SË0€‚+ 	Í/… ]Î8€U ‚Ðn€f DÓ€‚d [Ög€‚ |ÙZ€F ÛT€‚` ?à€n zâT† Dä`‡ ‚æe± 9é{"SDL.h"

/* utility */
#include "fcintl.h"

/* common */
#include "government.h"

/* client */
#include "civclin = 0, count = 0, col;
  struct city *pCapital;
  SDL_Rect area;
  struct player_research* research_skeleton(NULL, pStr
    area = pWindow->area;
    WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
    area.w = MAX(area.w, pBuf->size.w + adj_size(10)nation_of_player(p));
    pText1 = zthe %s Spaceship"), 
                nation_adjective_for_player(pnation_adjective_for_player(parea.w = MAX(area.w, pText1->w + adj_size(20));
    area.h += pText1->h + adj_size(20);
      
    /* ---------- */
    
    pCapital = find_palace(p);
    research = get_player_research(p);
    change_ptsize16(pStr, adj_font(10));
    pStr->style &= ~TTF_STYLE_BOLD;

    /* FIXME: these should use common gui code, and avoid duplication! */
    switch (research->researching) {
    case A_UNKNOWN:
    case A_UNSET:unknown"),
        ruler_title_translation(p),
        player_name(p),
        government_name_for_player(p),
        /* TRANS: "unknown" location */
        (!pCapital) ? _("(unknown)") : city_name(pCapital),
         break;
    default:ruler_title_translation(p),
        player_name(p),
        government_name_for_player(p),
        /* TRANS: "unknown" location */
        (!pCapital) ? _("(unknown)") : city_name(pCapital),
       ,
        advance_name_researching(p),
        research->bulbs_researched, total_bulbs_required(p));
      break;
    };
    
    copy_chars_to_string16(pStr, cBuf);
    pInfo = create_text_surf_from_str16(pStr);
    area.w = MAX(area.w, pLogo->w + adj_size(10) + pInfo->w + adj_size(20));
    area.area.advance_index_iterate(A_FIRST, i) {
      if (TECH_KNOWN == player_invention_state(p, i)
       && player_invention_is_ready(client.playing, i)
       && TECH_KNOWN != player_invention_state(client.playing, i)) {

                           advance_name_translation(advance_by_number(i)),
                            advance_index_iterate_end;
    
    pdialog->pdialog->pBeginWidgetList = pBuf;
    
    if (n > 0) {
      pdialog->pdialog->pEndActiveWidgetList = pLast->prev;
      pdialog->pdialog->pBeginActiveWidgetList = pdialog->pdialog->pBeginWidgetList;
      if(n > 2 * col) {
        pdialog->pdialog->pActiveWidgetList = pdialog->pdialog->pEndActiveWidgetListarea.h += (2 * pBuf->size.h + adj_size(10));
      } else {
        count = 0;
        if(n > col) {
          area.h += pBuf->size.h;
        }
        area.h += (adj_size(10) + pBuf->size.h);
      }
      
      area.w = MAX(area.w, col * pBuf->size.w + count
    resize_window(pWindow, NULL, NULL,
                  (pWindow->size.w - pWindow->area.w) + area.w,
                  (pWindow->size.h - pWindow->area.h) + area.h);
    
    area = pWindow->areapWindow->size.w) / 2),
      (pdialog->pos_y) ? (pdialog->pos_y) : ((Main.screen->h - pWindow->size.h) / 2));
    
    /* exit button */
    pBuf = pWindow->prev; 
    pBuf->size.x = area.x + area.w - pBuf->size.w - 1;
    pBuf->size.y = pWindow->size.y + adj_size(2);
    
    dst.x = area.x + (area.w - pText1->w) / 2;
    dst.y = area.y + adj_size(8area.x + (area.w - (pBuf->size.w + adj_size(10) + pInfo->w)) / 2;
    pBuf->size.x = dst.x;
    pBuf->size.y =area.xarea.x,area.x + area.w, dst.y,
          area.h - (dst.yENDREP
DELTA 14223 16329 2318
SVN  ‚œ‚œ# ã œ ‚Kã'½ ±^æ(‰ ˜¦ PÓ> cš%layer_name_by_number(int i)
layer_name_by_number, game.info.nplayers,
			 MAX_LEN_NAME-1,city_tilecity_tile_iterate_end;

  return FALSEENDREP
DELTA 14068 0 208
SVN  ‚“:‚“R‡v †: €O  Q‡Ž »q§dŽ uãdŽ áqåhš  È€‚S xËi€D „0Í&° †nÑ`€N |Ù`€‚@ ?ÝŽ ¥Mímovernment.h"
#include "improvement.h"
#include "tech.h"

#include "civclient.h"client.playingclient.playingclient.playingclient.playing);

    if (TECH_KNOWN == player_invention_state(client.playing, node->tech)) {
      return COLOR_REQTREE_KNOWN;
    }

    if (is_tech_a_req_for_goal(client.playing, node->tech,
                               research->tech_goal)
	|| node->tech == research->tech_goal) {
      if (TECH_REACHABLE == player_invention_state(client.playing, node->tech)TECH_REACHABLE == player_invention_state(client.playing, node->tech) *research = get_player_research(client.playing)if (!research) {
    /* Global observer case */
    return REQTREE_KNOWN_EDGE;client.playing, dest_node->tech,
                             research->tech_goal)
      || dest_node->tech == research->tech_goal) {
    return REQTREE_GOAL_EDGE;
  }

  if (TECH_KNOWN == player_invention_state(client.playing, node->tech)) {
    if (TECH_KNOWN == player_invention_state(client.playing, dest_node->tech)client.playingENDREP
DELTA 13038 1297272 759
SVN  ß$ßPxŠJ ‡1  †/‡Cž ‡'Ž€ I¬@ B”@€ J¬> y˜!ž B”@» ™K¹ ,š[€9 ~R€w ‚ŸN€[ T¤5€F ¥W€$ …u¨ £ d®2¿ ‚=°4Ž –[³ €~ sÊ£ ƒlÛ8player_by_number(player_index)struct player *pplayer = player_by_number(player_index);

  if (can_intel_with_player(pplayer)) {
    popup_intel_dialog(pplayer);
  } */
static void players_sship(int player_index)
{
  struct player *pplayer = player_by_number(player_index);

  popup_spaceship_dialog(pplayer
  FIXME: use plrdlg_common.c
*/
static void build_row(const char **row, int player_index  struct player *pplayer = player_by_number(player_index)player_name(pplayer));
    row[0] = namebuf;


    /* the nation */
    row[1] = nation_adjective_for_player(pplayer);
  }

  /* text for name, plus AI marker */
  aibuf[0] = (pplayer->pplayer == client.playing) {
    strcpy(dsbuf, "-");
  } else {
    pds = pplayer_get_diplstate(client.playing, pplayersz_strlcpy(statebuf, plrdlg_col_state(pplayer));

  /* text for idleness */
  if (pplayer->
		    "(idle %d turns)",
		    pplayer->nturns_idle - 1),
		pplayer->client.playing, pplayer);
  row[4] = dsbuf;
  row[5] = get_vision_status(client.playing, pplayer);
  row[6] = statebuf;
  row[7] = (char *) player_addr_hack(pplayer = player_by_number(player_index);
(client.playing,
                                player_by_numbclient.playing
  players_dialog=fcwin_create_layouted_window(players_proc,
					      /* TRANS: Nations report title */
					      _("Nation
    for (i = 0; i < player_count()ENDREP
DELTA 13133 146012 158
SVN  Â"Â+d ‡N   ‚#‡B™ RŠ˜ •Fš“ ’>¯divclient.h"
#include "climisc.h"ext.h"
#include "tilespecplayer == client.playinglayer_name(pplayer)ENDREP
DELTA 14377 761368 412
SVN  ‚´g‚´‰c ÌY Ž Ìhš vÌi Ï vÐº yÓ>€~ zÓ>€ zÓ>€d ×NŽ =ä{€ UçX€‚+ ¦ë^Ž ‘}€q ƒ”€F ‰—cŽ ‰¡Ž Dª5Ž ¯¬µ ’sÛ`Ž Æîbclient.playingclient.playing));
  } else
  pBuf = get_research_widget();

  if (!client.playing) {                                    "None", 0, 0);
  } else if (A_UNSET != get_player_research(client.playing)->researching) {	advance_name_researching(client.playing),
		get_player_research(client.playing)->bulbs_researched,
		total_bulbs_required(client.playing));
  } else {	advance_name_researching(client.playing),
		get_player_research(client.playing)->bulbs_researched,
client.playingclient.playing),
                population_to_text(civ_population(client.playing)),
                textyear(game.info.year),
                client.playingclient.playing),
                population_to_text(civ_population(client.playing)),
                textyear(game.info.year),
                client.playing->economic.gold,
                client.playing->economic.tax,
                client.playing->economic.luxury,
                client.playingclient.playingDS_CEASEFIRE == client.playing->diplstates[player_index(tile_owner(pTile))].type){
		  int turns = client.playing	client.playing->diplstates[player_index(tile_owner(pTile))].type],
		client.playingclient.playingclient.playing
          if (unit_owner(aunit) == client.playing) {client.playingENDREP
DELTA 13949 29793 883
SVN  ýü{  3 µ l jŽ M¥: V¢2µ l¤?Ž ×G¥:client.playing || city_owner(pcity) == client.playingclient.playingclient.playing || unit_owner(punit) == client.playingclient.playingENDREP
DELTA 14142 25027 431
SVN  …Âw…ÂW2…P Õ_ µ ŠwÖµ ŒháDŽ †<î;· ŠTõ0Ž ‰:€Ž ‰\Ž _™	€I ¤7©4€P Œ3Î>Ž ˜TÛ £ óxŽ ƒõ"Ž ´ù0£ ¨Q‚­e£ ŠƒÖZŽ ƒà|Ž ]ƒâŽ ‚\ƒó£ Žoƒö£ ‚s„…£ ™l„ˆ1Ž Œw„¢,Ž Ý „¯2Ž Št…ŒAŽ «3…—Dclient.playing && unit_owner(punit) != client.playingclient.playing && unit_owner(punit) != client.playingclient.playingclient.playing
      || !is_player_phase(client.playingclient.playingclient.playingclient.playingclient.playing
      && client.playing->is_alive
      && !client.playingclient.playing
	    || (client.playing == unit_owner(punit)
		&& !client.playingclient.playingunit_owner(punit) == client.playingclient.playingclient.playingunit_owner(punit) == client.playingunit_owner(punit) == client.playingclient.playingclient.playingclient.playingunit_owner(punit) == client.playingunit_owner(punit) == client.playingunit_owner(punit) != client.playingclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 14209 60574 82
SVN  ÃmÃkA ¾L €A G  „¿Vclient.playing) {
    popup_races_dialog(client.playing);
  }
}

ENDREP
DELTA 14338 1016366 1134
SVN  ƒÌXƒÏPŠ) Šj ˆ ŸŠZ˜ Aœ €{ 1ªz† ©I¬9— Aœ ­ ’%ÖbŠ 	õ{ »0ê"” 5¥O€M ƒm§<† ƒ}«7† ƒ"¯B† …q²r˜ Bœ € &º† ƒ;»<˜ Aœ €{ ¡SÀ¨ Á{â¬ Aœ €m ‚c‚¥€B ‚¨O€i T‚ªh€g ,‚­;† ƒJ‚®u† Š‚²M€H Šx‚½“ P‚Çv€B ‚s‚Ép™ ÿe‚Ìscivclien
  pplayer may be NULL.
/
static void insert_requirement(char *buf, size_t bufsz,
			      struct player *pplayer,
			      struct requirement *reqpplaye  pplayer may be NULL.
/
void boot_help_texts(struct player *pplayerpplayer, ipplayer may be NULL. struct player *pplayer,
			const char *user_text, struct impr_type *pimprovepplayepplayepplaye
  pplayer may be NULL.
**********/
static int techs_with_flag_string(char *buf, size_t bufsz,
				  struct player *pplayer,
				  enum tech_flag_id flagpplaye
  pplayer may be NULL.
/
char *helptext_unit(char *buf, size_t bufsz, struct player *pplayer,
		    const char *user_text, struct unit_type *utypebuf2, sizeof(buf2), pplayer, TF_FARMLANDadvance/technology.

  pplayer may be NULL.
/
void helptext_advance(char *buf, size_t bufsz, struct player *pplayer,
		      const char *user_text, int ipplayer, i) != TECH_KNOWN) {
    if (player_invention_state(pplayepplayer, i),
		   base_total_bulbs_required(pplayer, i));
    } else if (player_invention_is_ready(pplayepplayer, i),
		   num_unknown_techs_for_goal(pplayer, i) - 1,
		   total_bulbs_required_for_goal(pplayepplayepplayeplayer *pplayer,
		      const char *user_text, struct terrain *pterrainpplayer may be NULLplayer *pplayer,
			 const char *user_text, struct government *govbuf, bufsz, pplayer, preqENDREP
DELTA 14080 0 2363
SVN  ƒ—Eƒ—?1R ‡ Ž „‡Ž „w‹+Ž ²(1‡ Ç}Â_€i ‡/‚‹G¸ „‚“0client.playingclient.playingclient.playingInspectlient.playing && city_dialog_shell && !is_report_dialogs_frozen()) {
    city_list_iterate(client.playingclient.playing) {
      city_list_iterate(client.playingENDREP
DELTA 14268 1413 1281
SVN  Ÿv¦WDŽ{ ¡  !£€†P ƒV¥3€‚ xªL€g ¬+­' ¥Ùv ƒRÿ€` Mƒ€c ‰y… €t qgame_remove_unit()"
	    " at (%d,%d) unit %d, %s %s home (%d,%d) city %d, %s %s",
	    TILE_XY(punit->tile),
	    punit->id, 
	    nation_rule_name(nation_of_unit(punit)),
	    unit_rule_name(punit),
	    TILE_XY(pcity->tile),
	    punit->homecity,
	    nation_rule_name(nation_of_city(pcity)),
	    city_name(pcity));
  } else if (IDENTITY_NUMBER_ZERO == punit->homecity) {
    freelog(LOG_DEBUG, "game_remove_unit()"
	    " at (%d,%d) unit %d, %s %s home %d",
	    TILE_XY(punit->tile),
	    punit->id, 
	    nation_rule_name(nation_of_unit(punit)),
	    unit_rule_name(punit),
	    punit->homecity);
  } else {
    freelog(LOG_ERROR, "game_remove_unit()"
	    " at (%d,%d) unit %d, %s %s home %d invalid",
	    TILE_XY(punit->tile),
	    punit->id, 
	    nation_rule_name(nation_of_unit(punit)),
	    unit_rule_name(punit),
	    punit->homecitystruct tile *pcenter = city_tile(pcity);
  struct player *powner = city_owner(pcity);

  freelog(LOG_DEBUG, "game_remove_city()"
          " at (%d,%d) city %d, %s %s",
	  TILE_XY(pcenter),
	  pcity->id,
	  nation_rule_name(nation_of_player(powner)),
	  city_name(pcity/* always unlink before clearing data */
  city_list_unlink(powner->cities, pcity);

  city_tile_iterate(pcenter, ptile) {
    if (tile_worked(ptile) == pcity) {
      tile_set_worked(ptile, NULL);
    }
  } city_tile_iterate_end;
if (0 != unit_list_size(pplayer->units)) {
    freelog(LOG_ERROR, "game_remove_player() failed to remove %d %s units",
            unit_list_size(pplayer->units),
            nation_rule_name(nation_of_player(pplayer)));
  }if (0 != city_list_size(pplayer->cities)) {
    freelog(LOG_ERROR, "game_remove_player() failed to remove %d %s cities",
            city_list_size(pplayer->cities),
            nation_rule_name(nation_of_player(pplayer)));
  }/* has no effect in server, but adjusts in client */
  if(game.info.player_idx > plrno) {
    game.info.player_idx--ENDREP
DELTA 12859 11899 10894
SVN  ‚ÃB‚ÈD‚@Œ4  œ ˜  ˆ]¨(‡ 1±‰ ‚x²D `µ@Ž †_¶/§ †"½6˜ ŒÃgŒ †0ÏsŽ ‚tÖ2 ƒWÙT› Ý8£ „`ìm£ ‚"ñl€‚ „óBŠ •9÷B€e j‹{ˆ ˜CŒi– d¥:¥ …K§+ ‚8¬}€d †°€p o·9 ‚X¹(‚ ˆ'¼‰ ƒÄ4€u lÈ;® ÉR® …Ë
‰ ‚ÐŒ NÆ~° ‡Ó7› fÚhŒ &Á ŠQÜ{ ç{‡ ƒ4õ ˆøMŒ ‚‚€{ z‚ƒ!Œ ˆ*‚…, ‚'‚g¡ T‚…= … ‚‘¥ ˆA‚–O€e ’‚Ÿw› %‚²› p‚³R#define SELECT_UNIT_ALL    3Goto _LInspect _client.playing0 > client.playing->revolution_finishesgame_find_unit_by_number_translationclient.playingunit_name_translation(punitunit_owner(punit) == client.playingunit_owner(punit) == client.playingcase SELECT_UNIT_ALL:
    {
      unit_list_iterate(ptile->units, punit) {
        if (unit_owner(punit) == client.playing) {
          if (punit->activity == ACTIVITY_IDLE &&
              !punit->ai.control) {
            /* Give focus to it */
            add_unit_focus(punitselect_allselect_all_cmd =
    gtk_dialog_add_button(GTK_DIALOG(shell),
      _("Select _all"), SELECT_UNIT_ALLlect_allnation_number(pnation)nation_adjective_translation(pnation)Nation _Groupnation_group_count(); i++) {
    struct nation_group* group = (i == 0 ? NULL: nation_group_by_numberC_S_RUNNING == client_state()) {
    title = _("Edit Nation");
  } else if (pplayer && pplayer == client.playing_59TRUE, TRU(GTK_TABLE(table), label, 0, 1, 0, 2, 0, 0, 0, 0);
  gtk_table_attach(GTK_TABLE(table), combo, 1, 3, 0, 1, 0, 0, 0, 0(GTK_TABLE(table), cmd, 1, 2, 1, 2, 0, 0, 0, 0(GTK_TABLE(table), cmd, 2, 3, 1, 2, 0, 0, 0, 0AUTOMATICCity _Styles(GTK_TABLE(table), label, 0, 1, 2, 3, 0, 0, 0, 0city_style_name_translation_DescriptionC_S_RUNNING == client_state()nation_nation_by_numbernation_groupnation_by_numbernation_groupnation_by_numbernation_group_count(); i++) {
    city_style_of_nation(nation_by_numbernation_by_number(selected_nation), name)) {
    selected_sex = get_nation_leader_sex(nation_by_numberplayer_number(races_player)player_number(races_player)ENDREP
DELTA 14370 1106422 1148
SVN  ôvõn,ƒE ¦ €f ‚%§'€' ¡[ªIŽ Š8Ì3Ž ŒÖzŽ ‡:ãŽ Š"êT  /* FIXME: use output_type_iterate! */

  stats_before[0] = city_tile_output(NULL, ptile, FALSE, O_FOOD);
  stats_before[1] = city_tile_output(NULL, ptile, FALSE, O_SHIELD);
  stats_before[2] = city_tile_output(NULL, ptile, FALSEcity_tile_output(NULL, ptile, FALSE, O_FOOD);
  stats_after[1] = city_tile_output(NULL, ptile, FALSE, O_SHIELD);
  stats_after[2] = city_tile_output(NULL, ptile, FALSEclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 13038 756812 9722
SVN  ŠTŒKT…I ‡5  ‹‡G¿ ¼4“€ C×@† AŽ@ ‚@Ñr¶ Ôj M«@ ‚=Ö<¯ BÙn N×@€{ C×@† AŽ@ ‚$èj€ ìUclient.playing) {
    maxrate = get_player_bonus(client.playingclient.playing->economic.tax, 0,
		   client.playing->economic.luxury, 0,
		   client.playing->economic.science, 0);
  return shell;
}

... 
client.playing),
      get_player_bonus(client.playingprocessing(void)
{
  const char *dp;
  bool b;
}in, gint rid)
{
  switch (rid) {
  case GTK_RESPONSE_ACCEPT:
    option_command_processing();
    save_options();
    break;
  case GTK_RESPONSE_APPLY:
    option_command_processing();
    break;
  default:
    break;
  };
  gtk_widget_destroy(win);
}
... 
 GTK_RESPONSE_CANCEL,
	GTK_STOCK_APPLY, GTK_RESPONSE_APPLY,
	GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
	NULL);
  setup_dialog(option_dialog_shell, toplevelENDREP
DELTA 14230 31895 157
SVN  D‘U„L ‡~ – ‚Xˆ€„6 ‚3Žstruct player *pplayer struct player *pplayer,
			const char *user_text, struct impr_type *pimprove);
char *helptext_unit(char *buf, size_t bufsz, struct player *pplayer,
		    const char *user_text, struct unit_type *utype);
void helptext_advance(char *buf, size_t bufsz, struct player *pplayer,
		      const char *user_text, int i);
void helptext_terrain(char *buf, size_t bufsz, struct player *pplayer,
		      const char *user_text, struct terrain *pterrain);
void helptext_government(char *buf, size_t bufsz, struct player *pplayer,
			 const char *user_text, struct government *govENDREP
DELTA 14162 4676 3021
SVN  ææUK ‡Z  †‡yŽ ŽŽ …4Ž W”DŽ …$–*Ž ›]Ž +Ž ¶`ž<Ž Õ+Ž ŠaÖ=Ž ‚Zá-Ž ‚iäclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 14271 776 5303
SVN  »+ºn() †A  ¢`†S€e Rû Ûªl› Œ0†0› “Ž §”client.playing
	  || (pPlayer != client.playing
	   && player_has_embassy(client.playing, pPlayer))); (pPlayer != client.playing (pPlayer != client.playingclient.playingENDREP
DELTA 14387 7074 82
SVN  Ô6Óz	  ‘#  ÂW‘_ENDREP
DELTA 14416 57690 746
SVN  ›› ©C Ž ×©RŽ š$€sclient.playingclient.playingENDREP
DELTA 14209 66194 75
SVN  ¾B¾-
 —U ˜ ¦@˜player == client.playingENDREP
DELTA 14121 61986 87
SVN  çHçG ‹. Ž Ü‹=client.playingENDREP
DELTA 14209 66297 228
SVN  ÇÆzOI •M ¥ ,•sŽ ‚5—.Ž c’y• $¥=ˆ ]¦h ®=sŽ ®Ì?Ž ‡vúPŽ ‹s‚U¥ 7ŽnŽ ‚64Ž ´
’ycost <= client.playing->economic.goldclient.playingclient.playingbribe_response), NULLsabotageclient.playingclient.playingclient.playingcost <= client.playing->economic.goldclient.playingclient.playingENDREP
DELTA 14209 67702 251
SVN  ‚õO‚õN,‰ ‹ ‹ £l‹Ž ŠE¯ €[ ‚rº"€X ƒ½n€! “,Â» ƒUÕ}€
 UÚ_¯ „ød€X ƒ!ý]Ž €V zÂ4 ƒƒl¼ ~; SÖ{ ƒˆx€
 ¤{Ž º1²"Ž Š!ìbŽ u÷¹ ŠPùBŽ „p‚„!Ž ‚&‚‰ Ž „‚‹UŽ „j‚hŽ àn‚”aivclient.h"client.playingclient.playing) {
    struct player_research *research = get_player_research(client.playingclient.playing),
		  research->bulbs_researched,
		  total_bulbs_required(client.playingclient.playing,
					     research->tech_goal));
    }

    advance_index_iterate(A_FIRST, i) {
      if (TECH_KNOWN == player_invention_state(client.playing, i)TECH_REACHABLE == player_invention_state(client.playing, i)client.playing, i)
	  && TECH_KNOWN != player_invention_state(client.playing, i)
	  && (11 > num_unknown_techs_for_goal(client.playing, i) *research = get_player_research(client.playingclient.playing),
		  research->bulbs_researched,
		  total_bulbs_required(client.playingclient.playing (TECH_KNOWN == player_invention_state(client.playing, i)) {
	tech_list_names_ptrs[j]= (TECH_REACHABLE == player_invention_state(client.playing, iclient.playing, i)
	  && TECH_KNOWN != player_invention_state(client.playing, i)
	  && (11 > num_unknown_techs_for_goal(client.playing, i)client.playingclient.playingclient.playingclient.playing, punittype1, punittype2),
		client.playingclient.playingclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 12988 2390245 2310
SVN  ‚˜s‚˜y‚/ †'  ]†@ W‡/€m ˆHž ž5Š'‰ ¶V¨k‘ Žß[‘ †î‰ “aô:¬ ‚JˆO‰ „
‹(‰ …0A‘ L•‰ ]¨k ÙL¦C„ T‚? …f‚€fƒ ƒO‚†NŽ „@‚Š,ƒ Š‚Žn
#include "chatline.h"
#include "citydlg.h"
#include "cityrepdata.h"
#include "civclient.h"
#include "climisctext.h"

#include "cityrep.h"
universalan_city_build_nowan_city_build_nowuniversalcontinent(pcity->tile)
              == tileuniversaluniversalan_city_build_nowuniversal128]128client.playing128ENDREP
DELTA 14223 11959 3809
SVN  ‚‡g‚‡T †t  ­4‡Ž Ó´Iclient.playingENDREP
DELTA 11057 293 94
SVN  •U•y0 …f  …~…x€0 G  ˆ7client.playing) {
    if (client_is_observer()) {
      return TILE_KNOWN;
    } else {
      return TILE_UNKNOWN;
    }
  }
  return tile_get_known(ptile, client.playing);
}

ENDREP
DELTA 14171 44718 4095
SVN  çæUˆQ ˆ  §&ˆž EÑ  ƒW°¾ ³J„ ´Q n·{€‚ E» Ž ƒg»T€O ‰	À€‚, ˆ:Ëg€b „xÔZ€ 1Ã: Š]Û~€i
  FIXME: use plrdlg_common.c
state */
      sz_strlcpy(statebuf, plrdlg_col_state(pplayer))
			layer_name(pplayer));
      else
        my_snprintf(namebuf, sizeof(namebuf), "%-16s",player_name(pplayer));
      namebuf[16] = '\0';

      /* text for diplstate type and turns -- not applicable if this is me */
      if (!client.playing || pplayer == client.playingclient.playingclient.playing, pplayer),
	      dsbuf,
	      get_vision_status(client.playingclient.playing && pplayer->is_alive) {
      XtSetSensitive(players_war_command,
		     client.playing != pplayer
		     && !pplayers_at_war(client.playing, pplayer));
    }

    if (client.playing) {
      XtSetSensitive(players_vision_command,
		     gives_shared_vision(client.playing, pplayer));
    struct player *pplayer = player_by_number(player_index);

    if (can_meet_with_player(pplayer    struct player *pplayer = player_by_number(player_index);

    if (can_intel_with_player(pplayer)) {
      popup_intel_dialog(pplayer);
    }    struct player *pplayer = player_by_number(player_index);

    popup_spaceship_dialog(pplayer);
  }
}
ENDREP
DELTA 14209 70117 337
SVN  ƒ½ƒ¼|nƒU ™0 Ž G™?€  ’œ€a )¸8 †°-º 1¶H žC¸?Ž Ê"×Ž `‚¡B¥ ‚²HŽ ƒ!‚³^Ž ›Z‚·Ž |‚Òw¥ p‚áŽ ‚~‚âŽ ×u‚å%client.playing = player_find_unit_by_id(client.playing,
							  unit_select_ids[id]);
	      if (punit && unit_owner(punit) == client.playing = player_find_city_by_id(client.playing, punit->homecity);

      unit_select_ids[i]=punit->id;
 = player_find_city_by_id(client.playing, punit->homecity)client.playingclient.playingcost <= client.playing->economic.goldclient.playingclient.playingclient.playingcost <= client.playing->economic.goldclient.playingclient.playingENDREP
DELTA 14416 83893 5450
SVN  †  †  * ‰T ž ƒK‰d †’7IŒ		/* game.control.styles_countepeat) {
   †  ƒ¿1ƒ¿!q Í€q ñÎclient.playing || powner == client.playing)
		 && (!client.playing
		     || player_in_city_radius(client.playingENDREP
DELTA 12957 1396 18578
SVN  ‚†‚†q@ƒ[ Œr  ³I!€$ †1À| RË‚ Tº ¬jÈzŒ ’|õW€
 ðe‰P— ‡wúZ€k ‚B‚ƒKThis client has no special command line options\n\n"));

  /* TRANS: No full stop after the URL, could cause confusion. */
  fc_fprintf(stderr, _("Report bugs at %s_S_PREPARING);
  return (True..init(tilesetgame_find_unit_by_number(unit_ids[i]);
  if(punit) { /* should always be true at this point */
    if (unit_owner(punit) == client.playinghead_of_units_in_focus(client.playing && can_client_issue_orders()) {
    struct unit *punit;

    punit = head_of_units_in_focus(ENDREP
DELTA 13526 10965 1381
SVN  »)»C —l ˜ ˆ˜« šT UPlayer == client.playingThe %s Spaceship"),
				    nation_adjectivENDREP
DELTA 14416 92976 343
SVN  ··BA §r Ž Z¨Ž §,©jŽ ‰jÑ%Ž FÛŽ ‡|ÜsŽ ä~Ž ˆ
æ¬ ­îTŽ ƒ›}¥ —kŸ%client.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playing =
      can_upgrade_unittype(client.playingclient.playingclient.playing
	    && client.playingENDREP
DELTA 14377 1595114 599
SVN  ç2ç8
 Õ] ” ‘GÕkNULL, NULL, pimproveENDREP
DELTA 14280 0 785
SVN  „ß,„âTš+ Ü  ½ ˆÜ^¨ ©=å!€‚X ‚6‚€‚Z <‚ ‚—€‚^ #‚¿; 	‚›a€ƒ ‚ý? x‚ R€y >‚} t‚£o€z >‚}• _‚ k€z >‚}– `‚~€ >‚} ‚f‚­I€‚ ‹t‚²2· ¶E‚¾_€‚S …v‚÷M† Š‚ý?¿ Cƒˆ¿ §Qƒ˜€" ‚
ƒÁ
Ž ‚sƒÃ#€[ 2‚} ‚OƒÉ€l ’ZƒÌR
  if (!client.playing || city_owner(pcity) == client.playing = player_find_city_by_id(client.playing =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	city_dialog_update_present_units(pdialog, 0);
      }
    } =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	city_dialog_update_supported_units(pdialog, 0);
      }
    } =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  destroy_message_dialog(w);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	close_city_dialog(pdialog);
      } =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  destroy_message_dialog(w);

  if (NULL != punit) {
    struct city *pcity =
      player_find_city_by_id(client.playing, punit->homecity);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	close_city_dialog(pdialog);
      }
    }
 =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    request_unit_sentry(punit =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    request_unit_fortify(punitpresent_units_disband =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    request_unit_disband(punitpresent_units_homecity =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    request_unit_change_homecity(punitWidget wd;
  struct city_dialog *pdialog;
  struct city *pcity;
  XEvent *e = (XEvent*)call_data;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)client_data);
  
  if ((NULL != punit
       || (can_conn_edit(&aconnection) && !client.playingclient.playing
	|| (can_upgrade_unittype(client.playingWidget wd;
  XEvent *e = (XEvent*)call_data;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    struct city *pcity = game_find_city_by_number(punit->homecity);

    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if ( NULL != pdialog)    }
client.playing && (city_owner(pdialog->pcity) != client.playingclient.playing && (city_owner(pdialog->pcity) != client.playingvalue <= client.playing->economic.gold) {
    my_snprintf(buf, sizeof(buf),
		_("Buy %s for %d gold?\nTreasury contains %d gold."), 
		name, value, client.playingclient.playing =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  /* Is it right place for breaking? -ev */
  if (!can_client_issue_orders()) {
    return;
  }

  if (NULL != punit) {
    request_unit_upgrade(punitchar buf[512];
  struct unit *punit = player_find_unit_by_id(client.playing,
					      (size_t)client_data)ENDREP
DELTA 1186 94281 3536
SVN  Ë/Ð#|¢/ …8 €i ‚†€„c „‹|€@ ‚‘  L7€n A  <•!€‚ ™€U ‚R›	€„ ‡¡B€‚W ‚.«B€‡h l´$€c ‚]·;€ƒ ƒ.¼€ „TÁ.€* GÁ.† N3ª 9Á2€‚J
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string"mem.h"
#include "support.h"

#include "game.h"
#include "map.h"
#include "packets.h"
#include "player.h"
#include "unit.h"
#include "unitlist.h"

#include "civclient.h"
#include "clinet.h"
#include "control.h" /* get_unit_in_focus */
#include "goto.h"

#include "gui_main.h"
#include "gui_stuff.h"
#include "mapctrl.h"
#include "mapview.h"

#include "gotodlg.h"

static Widget goto_dialog_shell;
static Widget goto_form;
static Widget goto_label;
static Widget goto_viewport;
static Widget goto_list;
static Widget goto_center_command;
static Widget goto_airlift_command;
static Widget goto_all_toggle;
static void cleanup_goto_list(void);

static char *dummy_city_list[]={ 0
};

static int ncities_total = 0;
static char **city_name_ptrs = NULL;
static struct tile *original_tile;


  Boolean no_player_cities;

  if (!can_client_issue_orders() || get_num_units_in_focus() == 0) {
    return;
  }

  no_player_cities = !(city_list_size(client.playing->cities));

  original_tile = get_center_tile_mapcanvas();
  
  XtSetSensitive(main_form, FALSE);
  
  goto_dialog_shell =
    I_T(XtCreatePopupShell("gotodialog", transientShellWidgetClass,
			   toplevel, NULL, 0)
    I_L(XtVaCreateManagedWidget("gotolabel", labelWidgetClass, 
				goto_form, NULL)
    I_L(XtVaCreateManagedWidget("gotocentercommand", commandWidgetClass,
				goto_form, NULL));

  goto_airlift_command =
    I_L(XtVaCreateManagedWidget("gotoairliftcommand", commandWidgetClass,
				goto_form, NULL));

  goto_all_toggle =
    I_L(XtVaCreateManagedWidget("gotoalltoggle", toggleWidgetClass,
				goto_form,
				XtNstate, no_player_cities,
				XtNsensitive, !no_player_cities,
				NULL));

  goto_cancel_command =
    I_L(XtVaCreateManagedWidget("gotocancelcommand", commandWidgetClass,
				goto_form, NULL)atic struct city *get_selected_city(void)
{
  XawListReturnStruct *ret;
  int len;
  
  ret=XawListShowCurrent(goto_list);
  if(ret->list_index==XAW_LIST_NONE)
    return 0;

  len = strlen(ret->string);
  if(len>3 && strcmp(ret->string+len-3, "(A)")==0) {
    char name[MAX_LEN_NAME];
    mystrlcpy(name, ret->string, MIN(sizeof(name),len-2))j = 0;
  Boolean all_cities;

  if (!can_client_issue_orders()) {
    return;
  }

  XtVaGetValues(goto_all_toggle, XtNstate, &all_cities, NULL);

  cleanup_goto_list();

  if(all_cities) {
    ncities_total = 0;
    players_iterate(pplayer) {
      ncities_total += city_list_size(pplayer->cities);
    } players_iterate_end;
  } else {
    ncities_total = city_list_size(client.playing->cities);
  }

  city_name_ptrs=fc_malloc(ncities_total*sizeof(char*));
  
  players_iterate(pplayer) {
    if (!all_cities && pplayer != client.playing) {
      continue;
    }
    city_list_iterate(pplayer->cities, pcity) {
      char name[MAX_LEN_NAME+3];
      sz_strlcpy(name, city_name(pcity));
      /* FIXME: should use unit_can_airlift_to(). */
      if (pcity->airlift) {
	sz_strlcat(name, "(A)");
      }
      city_name_ptrs[j++]=mystrdup(name);
    } city_list_iterate_end;
  } players_iterate_end;

  if(ncities_total) {
    qsort(city_name_ptrs, ncities_total, sizeof(char *), compare_strings_ptrsstatic void popdown_goto_dialog(void)
{
  cleanup_goto_list();

  XtDestroyWidget(goto_dialog_shell (ret->list_index != XAW_LIST_NONE) {
    struct city *pdestcity;
    if ((pdestcity = get_selected_city())) {
      bool can_airlift = FALSE;
      unit_list_iterate(get_units_in_focus(), punit) {
        if (unit_can_airlift_to(punit, pdestcity)) {
	  can_airlift = TRUE;
	  break;
	}
      } unit_list_iterate_end;

      center_tile_mapcanvas(pdestcity->tile);
      if (can_airlift (pdestcity) {
    unit_list_iterate(get_units_in_focus(), punit) {
      request_unit_airlift(punit, pdestcity);
    } unit_list_iterate_end; = get_selected_city();
  if (pdestcity) {
    unit_list_iterate(get_units_in_focus(), punit) {
      send_goto_tile(punit, pdestcity->tile);
    } unit_list_iterate_end;cancel
{
  center_tile_mapcanvas(original_tile);static void cleanup_goto_list(void)
{
  int i;

  XawListChange(goto_list, dummy_city_list, 0, 0, FALSE);

  XtSetSensitive(goto_airlift_command, False);

  if(city_name_ptrs) {
    for(i=0; i<ncities_total; i++) {
      free(city_name_ptrs[i]);
    }
    free(city_name_ptrs);
  }
  ncities_total = 0;
  city_name_ptrs = NULL;
}
ENDREP
DELTA 13297 73048 81042
SVN  …º2…µx‹I ˆB Ž ‚°'ˆ4 ®‚¸fº Š^‚ç)Ž ²‚ò· 
‚÷1 —eƒ¥q€` ƒ¾, ‚nƒ¿: ÑƒÂ3· „“cµ „•€‚ \„˜1™ ?„™&— 	„šw€y ‚)„ž\“ †u„¡&€‚A U’|‚ »N„¯i€P ¤[„ë€e _‚‰w ¨…’citydlg_commontile_city(ptile)client.playing
			  || city_owner(pcity) == client.playingclient.playing!client.playing || city_owner(pcity) == client.playing)tile_city(ptile)) {
      int width = 0, height = 0;
      struct city *pcity = tile_city(ptile)city_name(pcity)city_name(pcity)closest_city;
  struct city *pcity = tile_worked(ptile)client.playing || city_owner(pcity) == client.playingtile_iterate_cxy(ptile, tile1, city_x, city_y) {
    pcity = tile_city(tile1);
    if (pcity
	&& (!client.playing || city_owner(pcity) == client.playing)
	&& C_TILE_EMPTY == city_map_status(pcity,
					   CITY_MAP_SIZE - 1 - city_x,
					   CITY_MAP_SIZE - 1 - city_y)city_map_status() above),tile_index(pcity->tile)tile_iterate_cxy_end;

  /* rule d */
  if (closest_city || !punit) {
    return closest_city;
  }

  city_tile_iterate(ptile, tile1) {
      unit_list_iterate(tile1->units, psettler) {
	if ((!client.playing || unit_owner(psettler) == client.playing} city_tile_iterate;

  universal_name_translation(&pcity->production, buffer, buffer_len);

  if (city_production_has_flag(pcity, IF_GOLD)) {
    return;
  }
  turns = city_production_turns_to_build(pcity, TRUE);

  if (999 < turns) {
    cat_snprintf(buffer, buffer_len, " -");
  } else {
    cat_snprintf(buffer, buffer_len, " %d", turns*/city_name(pcity));

  if (!client.playing || city_owner(pcity) == client.playingtile_index(ptile)].hilite = HILITE_NONE;
    map_deco[tile_index(ptile)].crosshair = 0;
  } whole_mapENDREP
DELTA 13221 0 16391
SVN  ‚‰‚‰	$1 …u  ½h† v‰@ NÄu” uÄ Ž vÚ@ ´LÔQclient.playing)client.playing);
  }orders->airbasENDREP
DELTA 14387 5863 270
SVN  ‚Ô-‚Õ~‚` ‡  ‡+‹ ©Vˆ<Ž ‚ ²!Ž ‚´0Ž ‰¶C¡ F‚Â? õWÀ-¢ R‚¥}… G  \Ð> ‡m¸Ž „AÀ¢ R‚¥}ƒ G  \Ð> Š ÆWŽ ƒ7Ðf¢ “CÔ/¸ ½Lè¨ „Y‚¥}  ©G‚ªfivclient.h"client.playingclient.playingclient.playingclient.playing, tech), HELP_TECH)client.playing, pitem->text, imp);}
  
client.playingclient.playing, pitem->text, imp);}

client.playingclient.playing, pitem->text, utypeadvance(buf, sizeof(buf), client.playing, pitem->text, iclient.playing, pitem->text, pterrain);
client.playing, pitem->text, govENDREP
DELTA 14225 0 421
SVN  ƒŸsƒŸmSˆZ ‡# ¤ u‡#€~ ‰$¦Ž Q¯KŽ ‚7±+Ž f³qŽ Ša´fŽ ˆ1¿V€F œÈOŽ Oê< „tå9Ž …ê<€l A  ‚9ð|˜ ‚ób¶ …Yö2Ž ‚Eü€S „[ÿ&Ž ‰„Ž ‚-%€ † iŽ s–xŽ «a˜zŽ ÍqÄj´ ‚ô@ <‚”*€I Œ{‚–1Ž ‚W‚£;¯ …h‚¦CŽ ‚‚¬:Ž …n‚®KŽ ƒX‚´H· ç‚¸X /* setting_class_is_changeable() */A_UNSET == get_player_research(client.playing)->tech_goal
      && A_UNSET == get_player_research(client.playing)->researchingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playing) {
    researching = get_player_research(client.playingclient.playingclient.playingclient.playing, a);
  b_str = advance_name_for_player(client.playing, b);

  return strcmp(a_str,b_str);
}

client.playing);

  if (TECH_KNOWN == player_invention_state(client.playing, iclient.playing (TECH_REACHABLE != player_invention_state(client.playing, i)) {
	continue;
      }client.playingclient.playingclient.playing, i)
        && TECH_KNOWN != player_invention_state(client.playing, i)
        && (11 > num_unknown_techs_for_goal(client.playing, i)client.playingclient.playingclient.playingNULL != can_upgrade_unittype(client.playing, utype))client.playing) {
    return NULL;
  }
  unit_list_iterate(client.playingclient.playingclient.playing, utype1, ut2),
	  client.playingclient.playingclient.playingclient.playingNULL != can_upgrade_unittype(client.playing, punittype)ENDREP
DELTA 13660 0 1848
SVN  ‚¯Z‚°  †R  ³L†J€X á.ºjŽ „g‚œ'Ž Ž=‚¡client */
#include "civclientclient.playing->cities, pCity) {
    
    pStr = create_str16_from_char(city_name(pCity)client.playingclient.playingENDREP
DELTA 14179 15598 8529
SVN  ‚­'‚­P<ƒ ‡C € ðˆŽ ‹Iø*€ ¥„xŽ •WªŽ „¿r© °Ä2€E Uø> ·Cõd/* utility */

#include "fcintl.h"
#include "mem.h"
#include "movement.h"
#include "support.h"

/* common */

#include "game.h"client.playingclient.playing) {
      menu_entry_sensitive(MENU_REPORT, MENU_REPORT_SPACESHIP,
			   (SSHIP_NONE != client.playing->spaceship.stateclient.playingclient.playing-1 == client.playing->revolution_finishesclient.playing) {
      popup_spaceship_dialog(client.playing);
    }ENDREP
DELTA 14140 1244 216
SVN  ÓnÓW6 ‡  ·P‡€I V¿8€m ’pÀ~client.playing->economic.luxury;
  int sci_end = lux_end + client.playingclient.playing->economic.luxury;
  int science = client.playing->economic.science;
  int tax = client.playingENDREP
DELTA 13926 5778 316
SVN  Þ	Þb †I ³ ‡y†wŸ ¶_ ŠDÅt FÐCmap.h"
#include "packets.h"

#include "civclient.h"client.playing ? client.playingtile_city(ptile)ENDREP
DELTA 14370 2647419 2012
SVN  †…3†…Tƒl Š ­ “"Šd¥ Š]ž+¥ Ùn©-€x ¥h‚„Ž ™‚©}€Z Š'‚Ã`¦ ƒO‚ì} š:‚Ñ|¹ ó‚ìsŽ ‘hƒà¨ ‚“ƒò'
      player_find_unit_by_id(client.playing, (unit_owner(pUnit) == client.playing (unit_owner(pUnit) == client.playingunit_owner(punit) == client.playing
         && ACTIVITY_IDLE == punit->activity
         && !punit->ai.control
        client.playingclient.playing, city_owner(pCity)))
      || is_non_attack_unit_tile(ptile, client.playing (unit_owner(pUnit) == client.playing)client.playing)
	 || (unit_owner(pUnit) == client.playingclient.playing0 <= client.playing->revolution_finishesENDREP
DELTA 11187 2330 1420
SVN  ×iÛ?ZŠ ‡E €? œˆ„ Y¥€ƒM …7ª8€‚ …W²+„ TØ?´ CŽ €Y G  `º{ ‚;¹/• €o»}€E ƒ$¼l² RØ? P»  –5Á2€Umem.h"
#include "rand.h"
#include "support.h"
#include "timing.h"

#include "government.h"		/* government_graphic() */
#include "map.h"
#include "player.h"
#include "unit.h"
#include "unitlis = 0client.playing) {
    return;
  }

  for (; d < (client.playing->economic.luxury) / 10; d++) {
    xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_LUXURY)->pixmap);
  }
 
  for (; d < (client.playing->economic.science + client.playing->economic.luxury) / 10; d++) {
    xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_SCIENCE)->pixmap);
  }
 
  for(; d < 10; d++) {
    xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_GOLD)->pixmap);
  }_list *punitlist)
{
  char buffer[512];

  my_snprintf(buffer, sizeof(buffer), "%s\n%s",
              get_unit_info_label_text1(punitlist),
              get_unit_info_label_text2(punitlist, 0));
  xaw_set_label(unit_info_label, buffer);

  if (unit_list_size(punitlist) > 0) {listThis function will change the current mouse cursor.
*******/
void update_mouse_cursor(enum cursor_type new_cursor_type)
{
  /* PORT ME */
}

enum citizen_category,
                                   int *upkeep_cost, int happy_cost,
                         upkeep_cost, happy_cost  reset_econ_label_pixmaps();
  update_info_label();
  reset_unit_below_pixmaps();
}
ENDREP
DELTA 11676 9843 9204
SVN  ‚¾Y‚Þ_‡8š_ G  …@H€„x „@Še€ 4ž}€ƒ- 2ž€ƒ1 +ž}€ƒ( Yž} ]›€‚T Rè= \}€ƒ3 ¢3€†9 Xž} E~³ ª*¤ `«g“ ¬p€‚o °N€D ~²W Y´@— a¶e k·s€B z¸[€ ‚l¹y£ r¼t¡ ƒ~¾€‚ 	Äz’ 3Æ€J :ÈU’ Ê% VËT€  nÍg« Ïg€†B bÖ+€ Rè= \}€ƒ- Zž 'Þ"€ƒ Rè= aâ€ƒ| Zž æw€ƒ Rè= S}€‚) 9žx€z Xž} †Sïf† eö<™ ]÷9¢ Mø3 ƒú6€s tÿ€l ‚c€V¯ `< ‚!„9¯ ‚i†z¯ ƒŠ¯ ƒ<° d“x ‚‘L° ‚u“x¯ —¼ ‚a˜² ƒ
›² ‚žG« 	 p€= G¢:€L r£gœ 1¥* A  …S§=€… Wž o².† b´ €c b³^¸ L´@ ‚
·\€ Mÿ5€@ r¼@€M º> ‚¿"€Q KÉ;€! aÃe± Äa€‚  tÇT€` É!… ‚Ê1€\ Î€‚- G¢:€ Ñk€‚s ‚_Ö@€„2 LÝy€Y Aà@ 1ßb¬ A  S}€/ 4ž}€ƒ- Rè= S}€ Xž} ‚:é€e ‚Sëy€„E ò#— _ô&€y c‚…?€ ‚F÷Z“ F‚´=€d ?ûI€x \‚´'€f p‚«* #‚@­ o‚­\ ‚ƒp­ ‚¯x€ t÷Z t‚ˆ9” \‚´'€e k‚«* I‚¶;€‚t G¢:€I ‚º€N k‚’g€J Aà@ /‚”X€†R Xž} ‚6‚š`€ G Œ %‚št¿ i‚ %¢ R‚¡/€‚n ‚¤U€‚i g‚¨x” ‚´'­ ‚‚«*­ ~‚­\­ ‚¯x€ ‚e‚± ” ‚´'­ k‚«* [‚¶;€‚` G¢:€Y ‚º€A h¥:€O#include "log.h"

/* common */
#include "game.h"
#include "unitlist.h"

/* client */
#include "civclient.h"
#include "clinet.h"
#include "control.h"

/* gui-sdl */
#include "colors.h"
#include "dialogs.h"
#include "graphics.h"
#include "gui_id.h"
#include "gui_tilespec.h"
#include "mapview.h"
#include "repodlgs.h"
#include "themespec.h"
#include "widget.h"

#include "dialogs_g.h"

struct diplomat_dialog {
  int diplomat_id;
  int diplomat_target_id;
  struct ADVANCED_DLG *pdialog;
};

struct small_diplomat_dialog {
  int diplomat_id;
  int diplomat_target_id;
  struct SMALL_DLG *pdialog;
};
 
extern bool is_unit_move_blockedwidget *pWindow)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    move_window_group(pDiplomat_Dlg->pdialog->pBeginWidgetList, pWindowembassy_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_EMBASSY, pDiplomat_Dlg->diplomat_id,
                                         pDiplomat_Dlg->diplomat_target_id, 0);
    }
  
    popdown_diplomat_dialog();  investigate_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_INVESTIGATE, pDiplomat_Dlg->diplomat_id,
                                         pDiplomat_Dlg->diplomat_target_id, 0);
    }
  
    popdown_diplomat_dialog(spy_poison_callback( struct widget *pWidget )
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(SPY_POISON, pDiplomat_Dlg->diplomat_id,
                                         pDiplomat_Dlg->diplomat_target_id, 0);
    }
  
    popdown_diplomat_dialog(widget *pWidget)
{
  if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
     && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
    request_diplomat_answer(DIPLOMAT_SABOTAGE, pDiplomat_Dlg->diplomat_id,
                                       pDiplomat_Dlg->diplomat_target_id, 0);
  }

  popdown_diplomat_dialog();
  sabotage_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_SABOTAGE, pDiplomat_Dlg->diplomat_id,
                                         pDiplomat_Dlg->diplomat_target_id, 0);
    }
    
    popdown_diplomat_dialog();
  }widget *pWindow)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    move_window_group(pDiplomat_Dlg->pdialog->pBeginWidgetList, pWindow);
  }
  return -1;
}

static int exit_spy_steal_dlg_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_diplomat_dialog();
  }
  return -1;  
}

static int spy_steal_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    int steal_advance = MAX_ID - pWidget->ID;
  
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_STEAL, pDiplomat_Dlg->diplomat_id,
                              pDiplomat_Dlg->diplomat_target_id, steal_advance);
    }
    
    popdown_diplomat_dialog(**********
  *********/
static int spy_steal_popup(struct widgetwidget *pBuf = NULL;
  struct widget;
  SDL_Rect area;
turn 1;
  }
  
  count = 0;
  advance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(client.playing, i)
     && TECH_KNOWN == player_invention_state(pVictim, i)
     && (TECH_UNKNOWN == player_invention_state(client.playing, i)
      || TECH_REACHABLE == player_invention_state(client.playing, i))) {
      count++;
    }
  } advance_index_iterate_end;quest_diplomat_action(DIPLOMAT_STEAL, id, target_id, advance_count()diplomat_target_id = pVcity->_skeleton(NULL, pStr, 0
  area = pWindow->area;
  area.w = MAX(area.w, adj_size(8));  
  WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
  pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
  area.(pWindow->size.w - pWindow->area.w)pWindow->size.h - pWindow->area.hadvance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(client.playing, i)
     && TECH_KNOWN == player_invention_state(pVictim, i)
     && (TECH_UNKNOWN == player_invention_state(client.playing, i)
      || TECH_REACHABLE == player_invention_state(client.playing, i))) {
      count++;

      copy_chars_to_string16(pStr, advance_name_translation(advance_by_number(i))RESTORE_BACKGROUND(col * max_row)) {
        set_wflag(pBuf, WF_HIDDEN);
      }
    }
  } advance_index_iterate_end;
  
  /* get spy tech */
  i = advance_number(unit_type(game_find_unit_by_number(id))->require_advance)RESTORE_BACKGROUNDadvance_count()Diplomat_Dlg->pdialog->pBeginWidgetList;
  pDiplomat_Dlg->pdialog->pEndActiveWidgetList = pDiplomat_Dlg->pdialog->pEndWidgetListDiplomat_Dlg->pdialog->pEndActiveWidgetListarea.w = MAX(area.w, (col * pBuf->size.w + adj_size(2) + i));
  area.h = count * pBuf->size.h + adj_size(2);

  /* alloca window theme and win background buffer */
  pSurf = theme_get_background(theme, BACKGROUND_SPYSTEALDLG);
  if (resize_window(pWindow, pSurf, NULL,
                    (pWindow->size.w - pWindow->area.w) + area.w,
                    (pWindow->size.h - pWindow->area.h) + area.h))
  {
    FREESURFACE(pSurf);
  }
  
  area = pWindow->area;
  
  widget_set_position(pWindow,
                      (Main.screen->w - pWindow->size.w) / 2,
                      (Main.screen->h - pWindow->size.h) / 2);
  
    /* exit button */
  pBuf = pWindow->prev;
  pBuf->size.x = area.x + area.w - pBuf->size.w - 1;
  pBuf->size.y = pWindow->size.y + adj_size(2);
  
  setup_vertical_widgets_position(col, area.x + 1,
		  area.yarea.x + area.w, area.y,
    	area.h, TRUE);
  }

  redraw_group(pDiplomat_Dlg->pdialog->pBeginWidgetList, pWindow, FALSE);
  widget_mark_dirty(pWindow);
  steal_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_STEAL, pDiplomat_Dlg->diplomat_id,
                                     pDiplomat_Dlg->diplomat_target_id, A_UNSET);
    }
    
    popdown_diplomat_dialog();  widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_answer(DIPLOMAT_INCITE,
			      pDiplomat_Dlg->diplomat_id,
			      pDiplomat_Dlg->diplomat_target_id, 0);
    }
    
    popdown_diplomat_dialog();
  }  widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    struct unit *punit;
    struct city *pcity;
    
    if( (punit=game_find_unit_by_number(pDiplomat_Dlg->diplomat_id))
        && (pcity=game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id))
        && !same_pos(punit->tile, pcity->tile)) {
      request_diplomat_action(DIPLOMAT_MOVE, pDiplomat_Dlg->diplomat_id,
                              pDiplomat_Dlg->diplomat_target_id, 0);
    }
    
    popdown_diplomat_dialog();  widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
  
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_unit_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_answer(DIPLOMAT_BRIBE,
			      pDiplomat_Dlg->diplomat_id,
			      pDiplomat_Dlg->diplomat_target_id, 0);
    }
    
    popdown_diplomat_dialog();
  }  spy_sabotage_unit_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    int diplomat_id = MAX_ID - pWidget->ID;
    int target_id = pWidget->data.unit->id;
    
    popdown_diplomat_dialog();
    request_diplomat_action(SPY_SABOTAGE_UNIT, diplomat_id, target_close_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_diplomat_dialog(widgetbool spy;
  SDL_Rect areacity(ptile);
  spy = unit_has_type_skeleton(NULL, pStr, 0);
    
  pWindow->action = diplomat_dlg_window_callback;
  set_wstate(pWindow, FC_WS_NORMALarea = pWindow->area;
  area.w = MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2));
  
  /* ---------- */
  if((pCity))
  {
    /* Spy/Diplomat acting against a city */

    pDiplomat_Dlg->diplomat_target_id = pCity->id;    area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w , pBuf->size.w);
      area.area.w = MAX(area.w , pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.
      pDiplomat_Dlg->diplomat_target_id = pTunit->id;
     area.w = MAX(area.w , pBuf->size.w);
        area.area.w = MAX(area.w , pBuf->size.w);
        area.area.w = MAX(area.w, pBuf->size.w);
  area.
  resize_window(pWindow, NULL, NULL, 
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area pWindow->size.w, pWindow->size.h,
                           pUnit->tile);
area.x,
  	area.y + 1, area.widget_flush(pWindow);
  
}


static int sabotage_impr_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    int sabotage_improvement = MAX_ID - pWidget->ID;
    int diplomat_target_id = pWidget->data.cont->id0;
    int diplomat_id = pWidget->data.cont->id1;
      
    popdown_advanced_terrain_dialog();
    
    if(sabotage_improvement == 1000)
    {
      sabotage_improvement = -1;
    }
    
    if(game_find_unit_by_number(diplomat_id)
      && game_find_city_by_number(diplomat_target_id)) { 
      request_diplomat_action(DIPLOMAT_SABOTAGE, diplomat_id,
                              diplomat_target_id, sabotage_improvement + 1);
    }widgethead_of_units_in_focus();
  SDL_String16 *pStr;
  SDL_Rect area, area2;
  int n, w = 0, h, imp_h = 0;
  
  if (pDiplomat_Dlg || !pUnit || !unit_has_type_flag(pUnit, F_SPY)) {
    return;
  }
  
  is_unit_move_blocked = TRUE;
  pUnit->id;
  pDiplomat_Dlg->diplomat_target_id = pCity->_skeleton(NULL, pStr, 0);
    
  pWindow->action = diplomat_dlg_window_callback;
  set_wstate(pWindow, FC_WS_NORMAL);
  
  add_to_gui_list(ID_TERRAIN_ADV
  area = pWindow->area;
  area.h = MAX(area.h, adj_size(2));
  WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
  pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
  area.w += pBuf->size.w + adj_size(10);
  pBuf->action = diplomat_closearea.w = MAX(area.w, pBuf->size.w);
  area.h += pBuf->size.h;

  /* separator */
add_to_gui_list(ID_SEPARATOR, pBuf);
  area.h += pBuf->next->size.h;
  /* ------------------ */
  n = 0;
  city_built_iterate(pCity, pImprove) {
    if (pImprovecity_improvement_name_translation(pCity, pImproverovement_number(pImprove), pBuf);
    
      area.w = MAX(area.w , pBuf->size.w);
      imp_h += pBuf->size.h;
      
      if (!pDiplomat_Dlg->pdialog->pEndActiveWidgetList)
      {
	pDiplomat_Dlg->pdialog->pEndActiveWidgetList = pBuf;
      }
    
      if (improvement_number(pImprove)city_built_iterate_end;

  pDiplomat_Dlg->pdialog->pBeginActiveWidgetList = pBuf;
  
  if (n > 0area.area.w = MAX(area.w, pBuf->size.w);
  area.h += pBuf->size.h;
  /* ----------- */
  
  pLast = pBuf;
  pDiplomat_Dlg->pdialog->pBeginWidgetList = pLast;
  pDiplomat_Dlg->pdialog->pActiveWidgetList = pDiplomat_Dlg->pdialoDiplomat_Dlg->pdialog,
		  1, 10, TRUE, TRUE);
    area.w += n;
  }
  /* ---------- */
  
  
  area.h += imp_h;

  resize_window(pWindow, NULL, NULL, 
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area pWindow->size.w, pWindow->size.h,
                           pUnit->tile);        
  
  w = area.w;
  
  if (pDiplomat_Dlg->pdialoarea.x + area.w - pBuf->size.w - 1;
  pBuf->size.y = pWindow->size.y + adj_size(2);
  
  /* Production sabotage */
  pBuf = pBuf->prev;
  
  pBuf->size.x = area.x;
  pBuf->size.y = area.y + 1;
  pBuf->size.w = w;
  h = pBuf->size.h;
  
  area2.x = adj_size(10);
  area2.h = adj_size(2);
  
  pBuf = pBuf->prev;
  while(pBuf)
  {
    
    if (pBuf == pDiplomat_Dlg->pdialo2.y = pBuf->size.h / 2 - 1;
      area2.w = pBuf->size.w - adj_size(20);
      
      SDL_FillRect(pBuf->theme , &area2, map_rgba(pBuf->theme->format, *get_game_colorRGB(COLOR_THEME_SABOTAGEDLG_SEPARATOR)));
    }
    
    if (pBuf == pLast) {
      break;
    }
    pBuf = pBuf->prev;  
  }
  
  if (pDiplomat_Dlg->pdialog->pScroll)
  {
    setup_vertical_scrollbar_area(pDiplomat_Dlg->pdialog->pScroll,
	area.x + area.w,
    	pDiplomat_Dlg->pdialog->pEndActiveWidgetList->size.y,
    	area.y - pDiplomat_Dlg->pdialog->pEndActiveWidgetList->size.y +
	    area.hDiplomat_Dlg->pdialog->pBeginWidgetList, pWindow, 0);

  widget_flush(pWindow);
  
}

/* small_diplomat_dialog *pIncite_Dlg = NULL;

incite_dlg_window_callback(struct widget *pWindow)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    move_window_group(pIncite_Dlg->pdialog->pBeginWidgetList, pWindowincite_yes_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pIncite_Dlg->diplomat_id)
       && game_find_city_by_number(pIncite_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_INCITE, pIncite_Dlg->diplomat_id,
                                         pIncite_Dlg->diplomat_target_id, 0);       
    }
    popdown_incite_dialog();
  }  exit_incite_dlg_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_incite_dialog(dialog->pBeginWidgetList,
				pIncite_Dlg->pdialog->pEndWidgetList);
    FC_FREE(pIncite_Dlg->pdialog, int cost)
{
  struct widget *pWindow = NULL, *pBuf = NULL;
  SDL_String16 *pStr;
  struct unit *pUnit;
  char cBuf[255]; 
  bool exit = FALSE;
  SDL_Rect area;
  
  if (pIncite_Dlg) {
    return;
  }
  
  /* ugly hack */
  pUnit = head_of_units_in_focus();
  
  if (!pUnit || !is_diplomat_unit(pUnit)) {
    return;
  }
  
  is_unit_move_blocked = TRUE;
  
  pIncite_Dlg = fc_calloc(1, sizeof(struct small_diplomat_dialog));
  pIncite_Dlg->diplomat_id = pUnit->id;
  pIncite_Dlg->diplomat_target_id = pCity->id;
  pIncite_Dlg->pdialog = fc_calloc(1, sizeof(struct SMALL_DLG));  
_skeleton(NULL, pStr, 0
  add_to_gui_list(ID_INCITE_DLG_WINDOW, pWindow);
  pIncite_Dlg->pdialog->pEndWidgetList = pWindow;
  
  area = pWindow->area;
  area.w  =MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2));
  
  if (INCITE_IMPOSSIBLE_COST == cost) {
      WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);  
    pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
    area.city_name(pCity));
      
    add_to_gui_list(ID_LABEL , pBuf);
    
    area.w = MAX(area.w , pBuf->size.w);
    area.area.w = MAX(area.w , pBuf->size.w);
    area.h += pBuf->size.h;
    
  } else if (cost <= client.playing->economic.gold) {
    my_snprintf(cBuf, sizeof(cBuf),
		_("Incite a revolt for %d gold?\nTreasury contains %d gold."), 
		cost, client.playing      
  
    add_to_gui_list(ID_LABEL , pBuf);
    
    area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.  WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
  pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
    area.cost, client.playing      
  
    add_to_gui_list(ID_LABEL, pBuf);
    
    area.w = MAX(area.w, pBuf->size.w);
    area. , pBuf);
    
    area.w = MAX(area.w, pBuf->size.w);
    area.h += pBuf->size.h;
  }
  pIncite_Dlg->pdialog->pBeginWidgetList = pBuf;
  
  /* setup window size and start position */

  resize_window(pWindow, NULL, NULL,
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area pWindow->size.w, pWindow->size.h,
                           pCity->tilearea.x + area.w - pBuf->size.w - 1;
    pBuf->size.y = pWindow->size.y + adj_size(2);
  }
  
  pBuf = pBuf->prev;
  setup_vertical_widgets_position(1,
	area.x,
  	area.y + 1, area.w, 0,
	pIncite_Dlg->pdialodialog->pBeginWidgetList, pWindow, 0);

  widget_flush(pWindow);
  
}

/* small_diplomat_dialog *pBribe_Dlg = NULL;

static int bribe_dlg_window_callback(struct widget *pWindow)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    move_window_group(pBribe_Dlg->pdialog->pBeginWidgetList, pWindow);
  }
  return -1;
}

static int diplomat_bribe_yes_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pBribe_Dlg->diplomat_id)
       && game_find_unit_by_number(pBribe_Dlg->diplomat_target_id)) {  
       request_diplomat_action(DIPLOMAT_BRIBE, pBribe_Dlg->diplomat_id,
                                          pBribe_Dlg->diplomat_target_id, 0);       
    }
    popdown_bribe_dialog();
  }  
  return -1;
}

static int exit_bribe_dlg_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_bribe_dialog(dialog->pBeginWidgetList,
				pBribe_Dlg->pdialog->pEndWidgetList);
    FC_FREE(pBribe_Dlg->pdialog);
    FC_FREE(pBribe_Dlg);
    flush_dirty();
  }
}

****
  Popupup_bribe_dialog(struct unit *pUnit, int cost)
{
  struct widgetbool exit = FALSE;
  SDL_Rect areahead_of_units_in_focus();
  
  if (!pDiplomatUnit || !is_diplomat_unit(pDiplomatUnit)) {
    return;
  }
  
  is_unit_move_blocked = TRUE;
  
  pBribe_Dlg = fc_calloc(1, sizeof(struct small_diplomat_dialog));
  pBribe_Dlg->diplomat_id = pDiplomatUnit->id;
  pBribe_Dlg->diplomat_target_id = pUnit->id;
  pBribe_Dlg->pdialog = fc_calloc(1, sizeof(struct SMALL_DLG));
_skeleton(NULL, pStr, 0);
    
  pWindow->action = bribe_dlg_window_callback;
  set_wstate(pWindow, FC_WS_NORMAL);

  add_to_gui_list(ID_BRIBE_DLG_WINDOW, pWindow);
  pBribe_Dlg->pdialog->pEndWidgetList = pWindow;
  
  area = pWindow->area;
  area.w = MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2));
  
  if (cost <= client.playing->economic.goldcost, client.playingarea.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.  WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
    area.cost, client.playingarea.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.h += pBuf->size.h;
  }
  pBribe_Dlg->pdialog->pBeginWidgetList = pBuf;
  
  /* setup window size and start position */

  resize_window(pWindow, NULL, NULL,
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area pWindow->size.w, pWindow->size.h,
                           pDiplomatUnit->tile);      area.x + area.w - pBuf->size.w - 1;
    pBuf->size.y = pWindow->size.y + adj_size(2);
  }
  
  pBuf = pBuf->prev;
  setup_vertical_widgets_position(1,
	area.x,
  	area.y + 1, area.w, 0,
	pBribeBribe_Dlg->pdialog->pBeginWidgetList, pWindow, 0);

  widget_flush(pWindow);
}
ENDREP
DELTA 14377 1600953 4521
SVN  ƒÛiƒÛ%] Œv  ‚ãM6¹ „C‚ñ>– °6‚öŽ µƒ¦]client.playing) {
    char *text;

    if (client.playingNULL != client.playingclient.playingENDREP
DELTA 14171 3463 309
SVN  Ñ-ÑxR†~ †^ ‹ ŠV†R’ C  Šk‘vœ C  ‚%A€w „ `€, C  6¦]€‚T pªqŽ ‚F«pœ C  >¯€ ’x±8‡ Œ}Ä0ivclient.h"_name(player);
}

client.playing, player);
}

client.playing || player == client.playing) {
    return "-";
  } else {
    pds = pplayer_get_diplstate(client.playingclient.playing || player == client.playing || !player->ai.control) {
    return "-";
  } else {
    return love_text(player->ai.love[player_index(client.playing)]);
  }
}

const struct player *player2)
{
  int love1, love2;

  if (!client.playing) {
    return player_number(player1) - player_number(player2);
  }

  if (player1 == client.playing || !player1->ai.control) {
    love1 = MAX_AI_LOVE + 999;
  } else {
    love1 = player1->ai.love[player_index(client.playing)];
  }

  if (player2 == client.playingclient.playingclient.playing, player);
}

const char *plrdlg_col_state(const struct player *plr)
{
  if (!plr->is_alive) {
    /* TRANS: Dead -- Rest In Peace -- Reqia In Pace */
    return _("R.I.P.plrdlg_ENDREP
DELTA 10581 6046 109
SVN  ŽŽQ
6 Œk ¶ 0Œhconst char *plrdlg_col_state(const struct player *plr)ENDREP
DELTA 14213 103 404
SVN  õdõ2‰Y ‡(  Ž‡:€6 W—» m™Ž ‚š€H uœtŽ Kx€X n£(Ž p¤%± O¡;Ž }£Ž ‚Z¤%€\ y¨_Ž ©gŽ «€0 Z­B€N ‹Y¯lŽ Ãw»TŽ …ÿZ¨ ‚…¿ ŠK‡VŽ ‚&’0Ž ƒm”e® ƒm™Ž Øgœ}TECH_KNOWN == player_invention_state(client.playing, tech_id)) {
      id = ListBox_AddString(GetDlgItem(science_dlg, ID_SCIENCE_LIST),
			     advance_name_for_player(client.playingA_UNSET == get_player_research(client.playing)->researchingclient.playingclient.playing)->bulbs_researched,
		total_bulbs_required(client.playingclient.playingTECH_REACHABLE != player_invention_state(client.playing, tech_id)) {
	continue;
      }
client.playingif (tech_id == get_player_research(client.playingclient.playingclient.playingclient.playing, tech_id)
        && TECH_KNOWN != player_invention_state(client.playing, tech_id)
        && (11 > num_unknown_techs_for_goal(client.playing, tech_id)
	    || tech_id == get_player_research(client.playingclient.playingclient.playingA_UNSET == get_player_research(client.playing)->tech_goal) {
    id = ComboBox_AddString(GetDlgItem(science_dlg, ID_SCIENCE_GOAL),
			    advance_name_for_player(client.playingclient.playing,
                            get_player_research(client.playingclient.playingclient.playing = can_upgrade_unittype(client.playing, client.playing, ut1, ut2),
			  client.playing->economic.gold);client.playingclient.playing    city_list_iterate(client.playing->cities, client.playingENDREP
DELTA 13297 168633 3641
SVN  èzêOƒ ‡  I‡*‹ éˆg  ‹Pñ~  ˆ@ý^“ Œ}†?½ NÑ= KÂ@ ’e•Ž ‚8§v€ ‰ª{¸ Ÿ1´0  •	Óqivclient.h"client.playing, pitem->text, impclient.playing, pitem->text, imp"Resources: (none)"client.playing, pitem->text, pterrain);
  set_help_text(buf);client.playing
                    utype_name_translation(utype->obsoleted_by));
    }

    helptext_unit(buf, sizeof(buf), client.playing, pitem->text, utypeadvance(buf, sizeof(buf), client.playing, pitem->text, iclient.playing, pitem->text, govENDREP
DELTA 14271 56 183
SVN  „ê„ê ‰X  ƒèI‰jŽ ÷SƒòBclient.playingENDREP
DELTA 12524 58 442
SVN  ÃvÃq4 ‹5 €4 ·Œnclient.playing)),
	      textyear(game.info.year), client.playing->economic.gold,
	      client.playing->economic.tax,
	      client.playing->economic.luxury,
	      client.playingENDREP
DELTA 14258 4682 3597
SVN  ò.ò+? Ø7 Ž ÂuØF£ Ã2›_Ž “ß client.playingunit_owner(punit) == client.playingclient.playingENDREP
DELTA 14101 175 3570
SVN  ƒ¦qƒ¨
d‡n †v  ™A†rˆ Ü #° „ü"½ ´1€ Á%µ/¼ ÷€ øSˆ „Tùf‚ Æ7þ< `‚Å" ƒ`‚Æ1 ‡|‚ÊJŽ ‰:‚ÒU€„> ÆM‚à$
#include "gameMAP_VIEWcase MENU_REPORT_MAP_VIEW:
    map_canvas_focus(client.playing) {
      popup_spaceship_dialog(client.playingView"),			"F1",
	reports_menu_callback,	MENU_REPORT_MAP_VIEWNations"),		"F3",
	reports_menu_callback,	MENU_REPORT_PLAYERS					},
  { "/" N_("Reports") "/" N_("_Cities"),		"F4",
	reports_menu_callback,	MENU_REPORT_CITIEResearch_SC_S_RUNNING <= client_state()C_S_RUNNING <= client_state()client.playing, disable these reports. */
    menus_set_sensitive("<main>/_Reports/_Cities",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Units",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Economy",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Research",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Demographics",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Spaceship",
			(NULL != client.playing
			 && SSHIP_NONE != client.playing->spaceship.stateENDREP
DELTA 11057 4171 226
SVN  ·|·a!( †  ‹:†*§ ;’€s ‹ = 
«TŽ ‹¬mclient.playing
      && !client.playingcity(messages[i].tile);

      messages[i].city_ok =
        (pcity && can_player_see_city_internals(client.playingclient.playingENDREP
DELTA 13617 0 2050
SVN  ‚Å0‚Å* ‡>  ×u‡PŽ ÓRßTŽ †,³5Ž ‹@‚¹pclient.playingclient.playingclient.playingENDREP
DELTA 14209 90907 8545
SVN  òQó;5 ‰!  #‰3ˆ ª_ŠG¡ 6µ5Ž õp¶z© ² H«? ƒ®k© ¯c²Ÿ Kâivclient!client.playing || client.playingclient.playingplayer_by_number(giver) == client.playingADVANCE, techplayer_by_number(giver) == client.playingclient.playing;
  struct playerENDREP
DELTA 13354 16921 6255
SVN  ±9²"3‚@ ‰H œ ƒn‰_’ –LZ€C Ô¥¼ š.ù› ,“?© ƒW£|€O ‰¨$lient */
#include "civclientLOG_FATAL, tag, ""
    theme_lookup_sprite_tag_alt(theme, LOG_FATAL, "theme.city", ""load_order_theme_surface(pBuf, OLoad_Icon, "theme.order_load  FREESURFACE(pTheme->OLoadSDL_DisplayFormatAlpha(pFuture_Tech_Icon)client.playing, tech_id))
  {
    switch (player_invention_state(client.playingENDREP
DELTA 14416 16595 27524
SVN  †  †    †   †  „£o„£I  ƒ»'  è"ƒ»MENDREP
DELTA 13038 800670 2285
SVN  ‹G‹-P‚p ‡/  
‡A‹ Æˆ?¡ Îvœ oÐ/œ WÑ=§ ‡Ò:¡ ƒ
Ùn® †YÝ'« tä4€B ‚.‚h“ ‚…7– G  ƒˆ*ivclient.h""Failed reading PNG file: \"%s\"""Failed creating PNG struct""Failed creating PNG struct""Failed while reading PNG file: \"%s\"""PNG file has no palette: \"%s\""nsparent array entry is out of palette: \"%s\"PNG info struct is NULL (non-fatal): \"%s\" = get_nation_flag_sprite(tileset, nation_of_player(client.playingutype_count()) */ {  }
  return(pm);
}


ENDREP
DELTA 14209 100837 669
SVN  †  †  ‚bŒb ‰E  Š5‰WŽ †G”Ž ’šq€C ‚­JŽ ‰D¯`¦ ƒ” ŠzºN¦ ¬mÅoŽ ÷òkŽ á\é}Ž …P‚ËhŽ „K‚ÑGŽ ŠZ‚Ö!€ •[‚âŽ ‚÷nŽ e‚÷n ¤Lƒ… Tƒ®s ”=ƒ«=Ž ‹ƒÀ	Ž …@ƒË6™ LƒÕ|š yƒÚ} .ƒÒoŽ ˆƒã,Ÿ Mƒô; @ƒì'Ž ‰2ƒívŽ ‚ƒ÷7Ž ÅvƒùMŽ …<„¿RŽ „Å» «e„Õo€o O…‚EŽ …„#Ž ˆ6……?Ž ˆM…ŽŽ q…–`Ž „O…—`Ž ƒ$…œ>Ž ˆr…Ÿq¹ r…©¼ ƒ*…ªMŽ „&…®Ž ƒ6…²;Ž ™`…¶ Ž q…Ïo€V …Ñ8€V œ…á%€= …þ{€E 0†P P„Çwclient.playingclient.playingclient.playing, ut1);
    value = unit_upgrade_price(client.playingclient.playingvalue <= client.playing->economic.goldvalue <= client.playing->economic.goldclient.playingclient.playingclient.playingclient.playingclient.playing
    if (tax != client.playing->economic.tax
     || science != client.playing->economic.science
     || luxury != client.playingclient.playingclient.playingclient.playing->economic.goldclient.playingclient.playingclient.playing->economic.(TTF_STYLE_BOLD|SF_CENTER)client.playingclient.playing->economic.luxuryclient.playingclient.playingclient.playingclient.playingclient.playingtech_id == get_player_research(client.playing)->researchingA_UNSET != get_player_research(client.playing)->researching) {
      cost = total_bulbs_required(client.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingA_UNSET != get_player_research(client.playing)->tech_goalclient.playing,
          get_player_research(client.playingclient.playingclient.playingclient.playingclient.playingclient.playing, i)
     || TECH_REACHABLE != player_invention_state(client.playing, i)client.playing, i)
     || TECH_REACHABLE != player_invention_state(client.playing, i)client.playing, i)
        && TECH_KNOWN != player_invention_state(client.playing, i)
	&& (11 > num_unknown_techs_for_goal(client.playing, i)
	    || i == get_player_research(client.playingclient.playing, i)
        && TECH_KNOWN != player_invention_state(client.playing, i)
	&& (11 > (num = num_unknown_techs_for_goal(client.playing, i))
	    || i == get_player_research(client.playing†  ¼{¼'n š>P€R ›bŽ ƒ7œwŽ œ> =client.playing, i)
     && TECH_KNOWN != player_invention_state(client.playing, i)client.playingclient.playingENDREP
DELTA 13494 0 42416
SVN  „š\„ m‚ešz ²D € q¤) eƒù6 ƒ§> „P¸H€ °8Š S±? ŽBÀ= g¿ Ð~€A žDÓ%  „"ñy‹ „z ƒ.í6‹ …Eðe £y€€ ŠJ¤)€} Žg° ¨i¿¼ ˆYè‹ ÊRðe€A †‚¼m€‚ S‚Å/ ‚‚È¸ Eñy ¢‚Ë|€‚e mœ8œ ¬6€) ®/™ Z { r°) *¢j€ l¤)€E jƒù1€ ƒûµ P±q€X /ƒþT€} ‚3¶= mÇb€Z NÉ2 PÉ‚ ‚ÊX '„‡7€‚ RÉ}€R „ŒQ€R $„ƒ „z ƒ.í6‹ ‚	ðe Ròq Jý7  uô4€[ x„™)Š;„š!WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pCloseButton->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));pIcon = ResizeSurfaceBox(get_building_surface(pImprove),
                               adj_size(36), adj_size(36), 1, TRUE, TRUE);
      dst.x = adj_size(5)Improvemenete any previous list entriesResizeSurfaceBox(pSurf, adj_size(64), adj_size(48), 1, TRUE, TRUEclient.playing, NULL, pImpr_type {
        adj_size(2)WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pCloseButton->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));pIcon = ResizeSurfaceBox(get_unittype_surface(ut),
                               adj_size(36), adj_size(36), 1, TRUE, TRUE);ete any previous list entriessizeof(buffer), client.playing, "", utype_by_number(type_id)adj_size(2)ResizeSurfaceBox(pSurf, adj_size(48), adj_size(48), 1, TRUE, TRUEpWidget = create_iconlabel_from_chars(
                  ResizeSurfaceBox(get_unittype_surface(un),
                                   adj_size(48), adj_size(48), 1, TRUE, TRUE),
                  pWindow->dst, utype_name_translation(pUnitType), adj_font(14),
    advance(buffer, sizeof(buffer), client.playing, "", techndow;
  struct TECHS_BUTTONS *pStore;
  
  struct widget *pCloseButton = NULL;
  struct widget *pAdvanceLabel = NULL;
  struct widget *pListToggleButton = NULL;
  
  struct widget *pDock;
  SDL_String16 *pTitle, *pStr;
  SDL_Surface *pSurf;
  int h, tech_count;
  bool created;
  int scrollbar_width = 0;
  SDL_Rect area;

  if(current_help_dlg != HELP_TECHcurrent_help_dlg = HELP_TECHTECHS_BUTTONS));

    pStore->show_tree = FALSE;
    pStore->show_full_tree = FALSE;

    /* create window */
    pTitle = create_str16_from_char(_("Help : Advances Treedata.ptr = (void *)pStoreWIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pCloseButton->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));    
    /* --- create scrollable advance list on the left side ---*/tech_count = 0;
    advance_index_iterate(A_FIRST, i) {
      struct advance *vap = valid_advance_by_number(i);;
      if (vap)AdvanceLabel = create_icon2(pSurf, pWindow->dst,
      set_wstate(pAdvanceLabel, FC_WS_NORMAL);
        pAdvanceLabel->action = change_tech_callback;
        add_to_gui_list(MAX_ID - i, pAdvanceLabel);

        if (++tech_count > 10) {
          set_wflag(pAdvanceLabelAdvanceLabel ? pAdvanceLabel : pCloseButton;
    pHelpDlg->pBeginActiveWidgetList = pHelpDlg->pBeginWidgetList;

    if (techAdvances"),
                                                           adj_font(10), 0);
  }ete any previous list entries */
    if (pDock != pHelpDlg->pBeginWidgetList) {
      del_group_of_widgets_from_gui_list(pHelpDlg->pBeginWidgetList, pDock->prev);
      pHelpDlg->pBeginWidgetList = pDock;
    }

    /* show/hide techs list */
    pListToggleButton = pDock;
    
  } else {
      set_wstate(pListToggleButton, FC_WS_DISABLED);
    }

    if (pStore->show_full_tree) {
      /* all entries are visible without scrolling */
      hide_group(pHelpDlg->pBeginActiveWidgetList,
 AdvanceLabel = pHelpDlg->pActiveWidgetList;
      while(pAdvanceLabel && count--) {
        pAdvanceLabel = pAdvanceLabel->prev;
      }
      pAdvanceLabel = pAdvanceLabel->next;
      show_group(pAdvanceLabel {
adj_size(2)pHelpDlg->pEndActiveWidgetList);if (pStore->show_tree) {
    pHelpDlg->pBeginWidgetList = create_tech_tree(tech, scrollbar_scrollbar_ENDREP
DELTA 14258 1381 598
SVN  €U€_^ ‡u €v ¸Rˆf¹ ‘eÁo¯ ¬UÔ overnment.h"
#include "packets.h"
#include "player.h"
#include "shared.h"
#include "support.h"

#include "civclient.h" (TECH_KNOWN == player_invention_state(client.playing, i)player_by_number(XTPOINTER_TO_INT(client_data))ENDREP
DELTA 14416 47070 6454
SVN  ‚Ñ@‚Ðd‚”< ‡Y ± „ ˆ
€O Œ{« J?Ž >žŽ ‡Ÿe« P§(Ž Ÿe ”Vª« „(¿€R zŸq ŒnÅ©  
Ò€p „Oô+ 1ù"Ž qúb€B xü	Ž ˆbý€M y†;Ž †5ˆC€Q =K€& ˆ"’7€ƒ} …žYŽ R£yŽ ¤Z€R ^¦(Ž §€F „ ©~€m m‚žw• @´{ ¨O±/Ž ÚŽ †Û:Ž ƒpáY€b næ,€\ Bèx€] p³} £hú± „t‚ž#Ž w‚£&€1 «n‚¥Rivclient.h"
#include "climap.h"
#include "climiscclient.playing) {
      before_penalty = get_player_output_bonus(client.playingclient.playing && owner == client.playing) client.playingclient.playingclient.playing || owner == client.playing) client.playingclient.playing || owner == client.playing) client.playing->diplstates;

      assert(NULL != owner && NULL != client.playing)client.playing || owner == client.playingint ours = 0, theirs = 0;

  if (!client.playing) {
    return 0;
  }

  /* Sum up science */
  players_iterate(pplayer) {
    enum diplstate_type ds = pplayer_get_diplstate(client.playing, pplayer)->type;

    if (pplayer == client.playingclient.playing
  if (A_UNSET == get_player_research(client.playing)->researchingclient.playingclient.playing);
  static struct astring str = ASTRING_INIT;

  if (!researchclient.playingclient.playing, goal);
  int bulbs = total_bulbs_required_for_goal(client.playingclient.playing);
  static struct astring str = ASTRING_INIT;

  if (!research) {
    return "-";
  }

  astr_clear(&str);

  if (is_tech_a_req_for_goal(client.playingclient.playing) {
    astr_add_line(&str, _("Population: %s"),
		  population_to_text(civ_population(client.playing)));
  }
  astr_add_line(&str, _("Year: %s (T%d)"),
		textyear(game.info.year), game.info.turn);

  if (client.playing) {
    astr_add_line(&str, _("Gold: %d (%+d)"),
		  client.playing->economic.gold,
		  player_get_expected_income(client.playing));
    astr_add_line(&str, _("Tax: %d Lux: %d Sci: %d"),
		  client.playing->economic.tax,
		  client.playing->economic.luxury,
		  client.playingclient.playingclient.playing
  if (client.playing) {
    astr_add_line(&str, _("Gold: %d"),
		  client.playingclient.playingclient.playing->economic.tax,
		  client.playing->economic.luxury,
		  client.playing->economic.science);
    astr_add_line(&str, _("Researching %s: %s"),
		  advance_name_researching(client.playingclient.playing) {
    astr_add_line(&str, _("Government: %s"),
		  government_name_for_player(client.playing)Return the title textclient.playingclient.playingclient.playing
  if (client.playing) {
    struct player_research *research = get_player_research(client.playingclient.playing),
		    research->bulbs_researched,
		    total_bulbs_required(client.playing
  if (client.playing) {
    astr_add_line(&str, government_name_for_player(client.playing));client.playing
      || pplayer == client.playingclient.playingclient.playing),
		  nation_plural_for_player(client.playing));

    astr_add_line(&str, "%s %s: %s",
		  ruler_title_translation(client.playing),
		  player_name(client.playingENDREP
DELTA 4670 9812 512
SVN  Ö}×O„y …8  Y…7 ‚
†$ kˆ@  Š>‰3± ‚^“m€e ‚P—3³ •8š€| G  9± €1 G  `±  „¶² Gº± št¼	ivclient.h"
#include "clinet.h"
if (!can_client_issue_orders()) {
    return;
  }    government_name_for_player(client.playing),
	      get_player_bonus(client.playing, EFT_MAX_RATES  if (!can_client_issue_orders()) {
    return;
  }client.playing->economic.tax, 0,
		   client.playing->economic.luxury, 0,
		   client.playing->economic.science, 0);
}





XtSetSensitive(main_form, TRUE);
  XtDestroyWidget(rates_dialog_shell);

  dsend_packet_player_rates(&aconnection, rates_tax_value, rates_lux_value,
			    rates_sci_value);
}

if (!can_client_issue_orders()) {
    return;
  }
 = get_player_bonus(client.playing, EFT_MAX_RATESENDREP
DELTA 14335 78 234
SVN  ‚´G‚´E!W Á Ž ¬Á(Ž …[íI­ ´óPŽ Œb‚§eclient.playingclient.playingSSHIP_NONE != client.playing->spaceship.stateclient.playingENDREP
DELTA 13297 204712 3579
SVN  ‚Õ‚Ôu+ ‰d  ‚³;‰v „x‚½Z€g ‡U‚Ã% C‚Ê˜ ‚Ã. ˆ)‚Ì]client.playing, pimprove);
    can_eventually_build = can_player_build_improvement_later(client.playingclient.playing, client.playing, punittypENDREP
DELTA 14377 2181489 287
SVN  ‚†G‚†3 ‹,  ´4‹>Ž †rÀŽ ¿EÇclient.playingclient.playingENDREP
DELTA 13297 228267 592
SVN  ‚‚d‚‚l)x ‰  t‰"‹ ï5Š
€A ;ú Ž ˆZûJŽ Ž„3 ð$’@ivclient.h"!client.playing || is_report_dialogs_frozen()) {
    return;
  }
client.playingclient.playingcity_name(pcity)ENDREP
DELTA 14209 123306 1835
SVN  ãMãfB‚: ‡  £5‡+Ž lªo³ ¬
² ­F€I ó½"© µ. GÕ  ‚`²1© £µ.Ÿ Š{ØRclient.playing create_diplomacy_dialog(client.playing,
				      player_by_number(initiated_from) == client.playing =
	  gtk_menu_item_new_with_label(advance_name_for_player(client.playingplayer_by_number(giver) == client.playingADVANCE, techplayer_by_number(giver) == client.playingclient.playing;
  struct playerENDREP
DELTA 14209 125714 10601
SVN  …Ö~…Ømƒ£x ¿w « O…‡s ›fÀfŽ „Ü[€ äáj‡ ¡)Å¾ Ü	çhµ |‚Ä(Ž ˆt‚Å3µ át‚Î^‰ …cƒ°R¾ ”3ƒ¶uŽ …<ƒË7¾ ‘0ƒÑ3Ž ‚ƒË7 „5ƒå	€A WƒêŽ ƒ)ƒëgŽ Žƒï€‚ Nƒÿ,€p ‚jƒÿ, ‚F„ƒ~› „¡„ H„‡}ƒ m„¡~ Z„–sŽ „0„§\€ƒ9 U„á= ‚	„¯i€ƒL U„á= T„¿?€C „º@€ ‚„º$€‚f ƒð=€ƒ ƒð=€ ‚„Å1€l %„º:€5 %„º:€ ‚„Í,€Q ‚„Ð €u %„º:€1 ›„ÕQ¦ Z„ñŽ „„ò~Ž {„ò~ †T„ø"€- z…€Ž e…( Š\…‚'š …	ˆ q…Ž"› º'…d€H v…ÊUŽ ‚J…ËZŽ 	…Î3Ž ‡3…ÏKstruct impr_type *pimprove, gpointer data);client.playingclient.playing || city_owner(pcity) == client.playing) {
    bool have_present_units = (unit_list_size(pcity->tile->units) > 0);
POINTERclient.playing && city_owner(pdialog->pcity) != client.playingclient.playing || city_owner(pcity) == client.playingclient.playingclient.playing || city_owner(pcity) != client.playing.buildingclient.playing && city_owner(pdialog->pcity) != client.playingclient.playingclient.playing && city_owner(pdialog->pcity) != client.playingclient.playingclient.playing) {
    city_number = city_list_size(client.playingclient.playingclient.playingGtkWidget *menu, *item;
  struct city_dialog *pdialog;
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL != punit
   && NULL != (pcity = game_find_city_by_number(punit->homecity))
   && NULL !=GtkWidget *menu, *item;
  struct city_dialog *pdialog;
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL != punit
   && NULL != (pcity = tile_city(punit->tile))
   && NULL !=present_unit_activate_close_Loaloaclient.playingcity_dialog *pdialog;
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL != punit
   && NULL != (pcity = tile_city(punit->tile))
   && NULL != (pdialog = get_city_dialog(pcity))
   && can_client_issue_orders()) {

    if (ev->button == 3) {
      set_unit_focus(punit);
    } else if (ev->button == 2) {
      set_unit_focus(punit);
      close_city_dialog(pdialog);
    }
  }city_dialog *pdialog;
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL != punit
   && NULL != (pcity = game_find_city_by_number(punit->homecity))
   && NULL != (pdialog = get_city_dialog(pcity))
   && can_client_issue_orders()) {

    if (ev->button == 3) {
      set_unit_focus(punit);
    } else if (ev->button == 2) {
      set_unit_focus(punit);
      close_city_dialog(pdialog);
    }
  }unit_center_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    center_tile_mapcanvas(punit->tileunit_activate_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    struct city *pcity =
      player_find_city_by_id(client.playing, punit->homecity);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	close_city_dialog(pdialog);
      }
    }present_unit_activate_close_callback(GtkWidget * w,
						 gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	close_city_dialog(pdialog);
      }
    }unit_load_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_unloadunit_sentry_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_sentryunit_fortify_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_change_homecityunit_upgrade_callback(GtkWidget *w, gpointer data)
{
  struct unit_list *punits;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL == value <= client.playing->economic.goldclient.playingclient.playingstruct impr_type *pimprove, gpointer data)
{
  GtkWidget *shl;
  struct city_dialog *pdialog = (struct city_dialog *) data;
  pdialog->sell_id = improvement_number(pimprove)client.playingstruct impr_type *pimprovepimprovepimprove, data);
  } else {client.playing) {
    return;
  }
  size = city_list_size(client.playingclient.playingclient.playingclient.playingENDREP
DELTA 5946 0 2276
SVN  í…t¡ …[ €$ !‡€K På@ Žˆ|€d —c€L T¸ €p E@€v :©>€† #­ D®<€‡e ¯/€l °@€ƒe T¸  w³² …4µ
€„ T¸  ‡¼z€y ¨@Ä\assert.h>

#include "dataio.h"
#include "fcintl.h"
#include "hash.h"
#include "log.h"
#include "mem.h"
#include "packets.h"

#include "civclient.h"
#include "clinetenum attribute_serial {
  A_SERIAL_FAIL,
  A_SERIAL_OK,
  A_SERIAL_OLD,
};
enum attribute_serial serialize_hash( struct hash_table *hash,
					void **pdata, int *pdata_length ATTRIBUTE_LOG_LEVEL,
          "attribute.c serialize_hash()"
          " serialized %u entries in %u bytes",
          (unsigned int) entries,
          (unsigned int) total_length);
  return A_SERIAL_OK This data was serialized (above), sent as an opaque data packet to the 
  server, stored in a savegame, retrieved from the savegame, sent as an 
  opaque data packet back to the client, and now is ready to be restored.
  Check everything!
********/
static enum attribute_serial unserialize_hash( struct hash_table *hash,
					void *data, size_t data_length freelog(LOG_VERBOSE,
            "attribute.c unserialize_hash() preamble,"
            " uint32 %u != 0",
            (unsigned int) dummy);
    return A_SERIAL_OLD;
  }
  dio_get_uint8(&din, &dummy);
  if (dummy != 2) {
    freelog(LOG_VERBOSE,
            "attribute.c unserialize_hash() preamble,"
            " uint8 %u != 2 version",
            (unsigned int) dummy);
    return A_SERIAL_OLD;
  }
  dio_get_uint32(&din, &entries);
  dio_get_uint32(&din, &dummy);
  if (dummy != data_length) {
    freelog(LOG_VERBOSE,
            "attribute.c unserialize_hash() preamble,"
            " uint32 %u != %u data_length",
            (unsigned int) dummy,
            (unsigned int) data_length);
    return A_SERIAL_FAIL;
  }

  freelog(ATTRIBUTE_LOG_LEVEL,
          "attribute.c unserialize_hash()"
          " uint32 %u entries, %u data_length",
          (unsigned int) entries,
         if (din.too_short) {
      freelog(LOG_VERBOSE,
              "attribute.c unserialize_hash()"
              " uint32 value_length dio_input_too_short");
      free(pkey);
      return A_SERIAL_FAIL;
    }
    if (value_length > dio_input_remaining(&din)) {
      freelog(LOG_VERBOSE,
              "attribute.c unserialize_hash()"
              " uint32 %u value_length > %u input_remaining",
              (unsigned int) value_length,
              (unsigned int) dio_input_remaining(&din));
      free(pkey);
      return A_SERIAL_FAIL;
    }
    if (value_length < 16 /* including itself */) {
      freelog(LOG_VERBOSE,
              "attribute.c unserialize_hash()"
              " uint32 %u value_length < 16",
              (unsigned int) value_length);
      free(pkey);
      return A_SERIAL_FAIL;
    }
    freelog(ATTRIBUTE_LOG_LEVEL,
            "attribute.c unserialize_hash()"
            " uint32 %u value_length",
            (unsigned int) value_length);

    /* next 12 bytes */if (din.too_short) {
      freelog(LOG_VERBOSE,
              "attribute.c unserialize_hash()"
              " uint32 key dio_input_too_short");
      free(pkey);
      return A_SERIAL_FAIL;
    }
    pvalue = fc_malloc(value_length + 4f (!hash_insert(hash, pkey, pvalue)) {
      /* There are some untraceable attribute bugs caused by the CMA that
       * can cause this to happen.  I think the only safe thing to do is
       * to delete all attributes.  Another symptom of the bug is the
       * value_length (above) is set to a random value, which can also
       * cause a bug. */
      free(pvalue);
      free(pkey);
      hash_delete_all_entries(hash);
      return A_SERIAL_FAIL;
    }
  }
  return A_SERIAL_OKclient.playing;

  if (!pplayer) {
    return;
  }client.playing;

  if (!pplayer) {
    return;
  }

  assert(attribute_hash != NULL);

  switch (unserialize_hash(attribute_hash,
                           pplayer->attribute_block.data,
                           pplayer->attribute_block.length)) {
  case A_SERIAL_FAIL:
    freelog(LOG_ERROR, _("There has been a CMA error.  "
                         "Your citizen governor settings may be broken."));
    break;
  case A_SERIAL_OLD:
    freelog(LOG_NORMAL, _("Old attributes detected and removed."));
    break;
  default:
    break;
  }key;
    void *old_value = hash_delete_entry_full(attribute_hash, pkey, &old_key);

    free(old_value);
    free(old_keyENDREP
DELTA 14209 125358 326
SVN  ¾½s
 µ/ ˜ ˆ,µ\player != client.playingENDREP
DELTA 14171 41619 2514
SVN  ‚ín‚î4r ëc ª ÆVìŽ ²h “w³yŽ „$ÇŽ á:Ì2‡ ‹k‚­l‡ ´‚¹Wcity_name(phomecity), city_name(pdestcity)client.playingcity_name(pcity)client.playingclient.playingnation_nation_ENDREP
DELTA 13133 97755 13180
SVN  ƒ„qƒ„Z‡ Ãg … ˆbÃm ŠÌZ€L …×>£ •LÜi„ ³ò;£ …Z¥{· w¯b ¥­‡  Ò‡ œ	â9€@ O¾? žUÿ>œ =‚žAŽ z‚ €| V‚¢€; ‚E‚¥€; ª6‚© „$‚ÓL …O‚Ø€E ¦e‚ÞDEBUGcity_name(pcity)TEST, "show_city_desc(%s) pcx=%d->%d (%d) pcy=%d->%d (%d)", city_name(pcity)city_owner(pcity) == client.playingTESTunit_owner(aunit) == client.playingcity(ptile)) {
    struct city *pcity=tile_city(ptile);VERBOSEVERBOSEVERBOSE, "action_callback() action '%s' requested", action);
  }C_S_RUNNING > client_state()client.playingclient.playing);
  } else if (strcmp(id, "population") == 0) {
      return population_to_text(civ_population(client.playingclient.playing)),
	      textyear(game.info.year),
	      client.playing->economic.gold,
	      client.playing->economic.tax,
	      client.playing->economic.luxury,
	      client.playingclient.playing)),
	      textyear(game.info.year),
	      client.playing->economic.gold,
	      client.playing->economic.tax,
	      client.playing->economic.luxury,
	      client.playingcity_production_buy_gold_cost(pcity) <= client.playing->economic.goldENDREP
DELTA 4313 165730 2800
SVN  ³	ßdfÏJ …8  Y…7§ z†p€s hˆ1€ƒ C €„ A „ I‹@¼ A „ I‹@º A „ D‹@€h A  w‹;€D A „ D‹@€B A „ D‹@€¥
 G € B‹@€›	
#include <gtk/gtk.h>

#include "fcintlivclient.h"
#include "clinet.h"
#include "gui_main.h"
#include "gui_stuff.h"
#include "mapview.h"
#include "optionsconst char *table_text[] = {
  N_("Ruler:"),
  N_("Government:"),
  N_("Capital:"),
  N_("Gold:"),
  NULL,
  N_("Tax:"),
  N_("Science:"),
  N_("Luxury:"),
  NULL,
  N_("Researching:")
};

enum table_label {
  LABEL_RULER,
  LABEL_GOVERNMENT,
  LABEL_CAPITAL,
  LABEL_GOLD,
  LABEL_SEP1,
  LABEL_TAX,
  LABEL_SCIENCE,
  LABEL_LUXURY,
  LABEL_SEP2,
  LABEL_RESEARCHING,
  LABEL_LAST
};
/
struct intel_dialog {
  struct player *pplayer;
  GtkWidget *shell;

  GtkTreeStore *diplstates;
  GtkListStore *techs;
  GtkWidget *table_labels[LABEL_LAST];
};

#define SPECLIST_TAG dialog
#define SPECLIST_TYPE struct intel_dialog
#include "speclist.h"

#define dialog_list_iterate(dialoglist, pdialog) \
    TYPED_LIST_ITERATE(struct intel_dialog, dialoglist, pdialog)
#define dialog_list_iterate_end  LIST_ITERATE_END

static struct dialog_list *dialog_list;
static struct intel_dialog *create_intel_dialog(struct player *p);


...intel_dialog_init()
{
  dialog_list = dialog_list_new();
}


...intel_dialog_done()
{
  dialog_list_free(dialog_list);
}


...static struct intel_dialog *get_intel_dialog(struct player *pplayer)
{
  dialog_list_iterate(dialog_list, pdialog) {
    if (pdialog->pplayer == pplayer) {
      return pdialog;
    }
  } dialog_list_iterate_end;

  return NULL;
}

struct intel_dialog *pdialog;

  if (!(pdialog = get_intel_dialog(p))) {
    pdialog = create_intel_dialog(p);
  }

  update_intel_dialog(p);

  gtk_window_present(GTK_WINDOW(pdialog->shell));
}


...static void intel_destroy_callback(GtkWidget *w, gpointer data)
{
  struct intel_dialog *pdialog = (struct intel_dialog *)data;

  dialog_list_unlink(dialog_list, pdialog);

  free(pdialog);
}


...static struct intel_dialog *create_intel_dialog(struct player *p)
{
  struct intel_dialog *pdialog;

  GtkWidget *shell, *notebook, *label, *sw, *view, *table, *alignment;
  GtkCellRenderer *rend;
  GtkTreeViewColumn *col;

  int i;
 
  pdialog = fc_malloc(sizeof(*pdialog));
  pdialog->pplayer = p;
 
  shell = gtk_dialog_new_with_buttons(NULL,
      NULL,
      0,
      GTK_STOCK_CLOSE,
      GTK_RESPONSE_CLOSE,
      NULL);
  pdialog->shell = shell;
  gtk_window_set_default_size(GTK_WINDOW(shell), 350, 350);
  setup_dialog(shell, toplevel);
  gtk_dialog_set_default_response(GTK_DIALOG(shell), GTK_RESPONSE_CLOSE);

  g_signal_connect(shell, "destroy",
                   G_CALLBACK(intel_destroy_callback), pdialog);
  g_signal_connect(shell, "response",
                   G_CALLBACK(gtk_widget_destroy), NULL);

  notebook = gtk_notebook_new();
  gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_BOTTOM);
  gtk_container_add(GTK_CONTAINER(GTK_DIALOG(shell)->vbox), notebook);
 
  /* overview tab. */
  table = gtk_table_new(ARRAY_SIZE(table_text), 2, FALSE);

  gtk_table_set_row_spacings(GTK_TABLE(table), 2);
  gtk_table_set_col_spacings(GTK_TABLE(table), 12);

  alignment = gtk_alignment_new(0.0, 0.0, 0.0, 0.0);
  gtk_container_set_border_width(GTK_CONTAINER(alignment), 6);
  gtk_container_add(GTK_CONTAINER(alignment), table);

  label = gtk_label_new_with_mnemonic(_("_Overview"));
  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), alignment, label);

  for (i = 0; i < ARRAY_SIZE(table_text); i++) {
    if (table_text[i]) {
      label = gtk_label_new(_(table_text[i]));
      gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
      gtk_table_attach(GTK_TABLE(table), label,
	  0, 1, i, i+1, GTK_FILL, GTK_FILL|GTK_EXPAND, 0, 0);

      label = gtk_label_new(NULL);
      pdialog->table_labels[i] = label;
      gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
      gtk_table_attach(GTK_TABLE(table), label,
	  1, 2, i, i+1, GTK_FILL, GTK_FILL|GTK_EXPAND, 0, 0);
    } else {
      pdialog->table_labels[i] = NULL;
      gtk_table_set_row_spacing(GTK_TABLE(table), i, 12);
    }
  }

  /* diplomacy tab. */
  pdialog->diplstates = gtk_tree_store_new(1, G_TYPE_STRING);

  view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pdialog->diplstates));
  g_object_unref(pdialog->diplstates);
  gtk_container_set_border_width(GTK_CONTAINER(view), 6);
  gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);

  rend = gtk_cell_renderer_text_new();
  col = gtk_tree_view_column_new_with_attributes(NULL, rend,
    "text", 0, NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);

  gtk_tree_view_expand_all(GTK_TREE_VIEW(view));

  sw = gtk_scrolled_window_new(NULL,NULL);
  gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
				      GTK_SHADOW_ETCHED_IN);
  gtk_container_add(GTK_CONTAINER(sw), view);

  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
	GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

  alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
  gtk_container_set_border_width(GTK_CONTAINER(alignment), 6);
  gtk_container_add(GTK_CONTAINER(alignment), sw);

  label = gtk_label_new_with_mnemonic(_("_Diplomacy"));
  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), alignment, label);

  /* techs tab. */
  pdialog->techs = gtk_list_store_new(2, G_TYPE_BOOLEAN, G_TYPE_STRING);
  gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(pdialog->techs),
      1, GTK_SORT_ASCENDING);

  view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pdialog->techs));
  g_object_unref(pdialog->techs);
  gtk_container_set_border_width(GTK_CONTAINER(view), 6);
  gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);

  rend = gtk_cell_renderer_toggle_new();
  col = gtk_tree_view_column_new_with_attributes(NULL, rend,
    "active", 0, NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);

  rend = gtk_cell_renderer_text_new();
  col = gtk_tree_view_column_new_with_attributes(NULL, rend,
    "text", 1, NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);

  sw = gtk_scrolled_window_new(NULL,NULL);
  gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
				      GTK_SHADOW_ETCHED_IN);
  gtk_container_add(GTK_CONTAINER(sw), view);

  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
	GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

  alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
  gtk_container_set_border_width(GTK_CONTAINER(alignment), 6);
  gtk_container_add(GTK_CONTAINER(alignment), sw);

  label = gtk_label_new_with_mnemonic(_("_Techs"));
  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), alignment, label);

  gtk_widget_show_all(GTK_DIALOG(shell)->vbox);

  dialog_list_prepend(dialog_list, pdialog);

  return pdialog;
}

******
  Update the intelligence dialog for the given player.  This is called by
  the core client code when that player's information changes.***********/
void update_intel_dialog(struct player *p)
{
  struct intel_dialog *pdialog = get_intel_dialog(p);

  if (pdialog) {
    GtkTreeIter diplstates[DS_LAST];
    char buf[64];
    int i;

    /* window title. */
    my_snprintf(buf, sizeof(buf),
	_("Foreign Intelligence: %s Empire"),
	nation_adjective_for_player(p));
    gtk_window_set_title(GTK_WINDOW(pdialog->shell), buf);

    /* diplomacy tab. */
    gtk_tree_store_clear(pdialog->diplstates);

    for (i = 0; i < ARRAY_SIZE(diplstates); i++) {
      GtkTreeIter it;
      GValue v = { 0, };

      gtk_tree_store_append(pdialog->diplstates, &it, NULL);
      g_value_init(&v, G_TYPE_STRING);
      g_value_set_static_string(&v, diplstate_text(i));
      gtk_tree_store_set_value(pdialog->diplstates, &it, 0, &v);
      g_value_unset(&v);
      diplstates[i] = it;
    }

    players_iterate(other) {
      const struct player_diplstate *state;
      GtkTreeIter it;
      GValue v = { 0, };

      if (other == p || !other->is_alive) {
	continue;
      }
      state = pplayer_get_diplstate(p, other);
      gtk_tree_store_append(pdialog->diplstates, &it,
			    &diplstates[state->type]);
      g_value_init(&v, G_TYPE_STRING);
      g_value_set_static_string(&v, player_name(other));
      gtk_tree_store_set_value(pdialog->diplstates, &it, 0, &v);
      g_value_unset(&v);
    } players_iterate_end;

    /* techs tab. */
    gtk_list_store_clear(pdialog->techs);

    advance_index_iterate(A_FIRST, i) {
      if(player_invention_state(p, i)==TECH_KNOWN) {
	GtkTreeIter it;

	gtk_list_store_append(pdialog->techs, &it);

	gtk_list_store_set(pdialog->techs, &it,
			   0, (TECH_KNOWN != player_invention_state(client.playing, i)),
			   1, advance_name_for_player(p, i),
			   -1);
      }
    } advance_index_iterate_end;

    /* table labels. */
    for (i = 0; i < ARRAY_SIZE(pdialog->table_labels); i++) {
      if (pdialog->table_labels[i]) {
	struct city *pcity;

	switch (i) {
	  case LABEL_RULER:
	    my_snprintf(buf, sizeof(buf), "%s %s", 
		ruler_title_translation(p),
		player_name(p));
	    break;
	  case LABEL_GOVERNMENT:
	    sz_strlcpy(buf, government_name_for_player(p));
	    break;
	  case LABEL_CAPITAL:
	    pcity = find_palace(p);
	    /* TRANS: "unknown" location */
	    sz_strlcpy(buf, (!pcity) ? _("(unknown)") : city_name(pcity));
	    break;
	  case LABEL_GOLD:
	    my_snprintf(buf, sizeof(buf), "%d", p->economic.gold);
	    break;
	  case LABEL_TAX:
	    my_snprintf(buf, sizeof(buf), "%d%%", p->economic.tax);
	    break;
	  case LABEL_SCIENCE:
	    my_snprintf(buf, sizeof(buf), "%d%%", p->economic.science);
	    break;
	  case LABEL_LUXURY:
	    my_snprintf(buf, sizeof(buf), "%d%%", p->economic.luxury);
	    break;
	  case LABEL_RESEARCHING: {
	    struct player_research* research = get_player_research(p);
	    switch (research->researching) {
	    case A_UNKNOWN:
	      /* TRANS: "Unknown" advance/technology */
	      my_snprintf(buf, sizeof(buf), _("(Unknown)"));
	      break;
	    case A_UNSET:
	      /* TRANS: missing value */
	      my_snprintf(buf, sizeof(buf), _("(none)"));
	      break;
	    default:
	      my_snprintf(buf, sizeof(buf), "%s(%d/%d)",
		  advance_name_researching(p),
		  research->bulbs_researched, total_bulbs_required(p));
	      break;
	    };
	    break;
	  }
	  default:
	    buf[0] = '\0';
	    break;
	}

	if (buf[0] != '\0') {
	  gtk_label_set_text(GTK_LABEL(pdialog->table_labels[i]), buf);
	}
      }
    }
  }
}

ENDREP
DELTA 14399 38511 14835
SVN  ¬®f,‚" Ž › PÐ@ qŽq€\ G ½ PÐ@€K dÁ@ Â£ PÐ@ ØÔ), checking for city centeris_city_center(pcity, ptile)) {
    return pcity;
  }
  return NULL;
}

#ifndef tile_worked
******
  Return any city working the specified tile (or NULL)struct city *tile_worked(const struct tile *ptile)
{
  return ptile->workedhas known data about its own playerENDREP
DELTA 14271 268 477
SVN  ‚Í-‚Í+ í
 Ž ÚaíŽ …$‚È	client.playingclient.playingENDREP
DELTA 14105 12076 1014
SVN  Ñ?ÑXG‚; ˆW ‹ “ˆK€% ‚*
Ž ãŸCŽ ‹ ‚bŽ ]q ~Y¥ wž}Ž ‚W Ž o¢i  \°civclient.h"cost <= client.playing->economic.gold) {
    my_snprintf(buf, sizeof(buf),
		_("Bribe unit for %d gold?\n"
		  "Treasury contains %d gold."), 
		cost, client.playingclient.playingclient.playingclient.playingcity_name(pcity)cost <= client.playing->economic.goldclient.playingclient.playingcity_name(pcity)ENDREP
DELTA 14416 89375 3569
SVN  †šG†^‚(›7 Ãf Ž ŠÃuŽ .Î€@ ´OërŽ ‚ PŽ M¢nŽ ‚(²JŽ ‚µ€U ·Y½ ˆ7¹€F nër ŸÂv€ Œ+ã° ïzŽ ñ €‚} ’õ6§ œu‚‡b€‚+ Š‚¦qµ Ž{‚±+Ž „‚À5Ž ƒ&‚Äb€\ “‚Èg€[ žC‚ÜL€\ ƒ$‚ûf‘ Š_‚ÿ€k ‘ƒŠZ€T ˆ:ƒ@€} ‹#ƒ¦h€? ƒxƒ³MŽ ƒqƒ·TŽ Ô]ƒ»TŽ ‘3„@€3 v„£€x n„¤mœ ´]„¥oŽ ……Ú[€‚0 …áC¡ „j…âk€ƒ †x…èl€X ª	…ð>client.playingclient.playing            "handle_city_info() bad player number %d.",
        client.playingclient.playingclient.playingclient.playinglient.playing
      && !client.playing->ai.control
      && can_client_issue_orders()popup || can_player_see_city_internals(client.playing, pcity)            "handle_city_short_info() bad player number %d.",
        client.playing) {
    turn_gold_difference =
      client.playing->economic.gold - last_turn_gold_amount;
    last_turn_gold_amount = client.playingclient.playing && is_player_phase(client.playingclient.playing (client.playing->ai.control && !ai_manual_turn_done) {
      user_ended_turn();
    }

    player_set_unit_focus_status(client.playing);

    city_list_iterate(client.playing->cities, pcity) {
      pcity->client.colored = FALSE;
    } city_list_iterate_end;

    unit_list_iterate(client.playing->units, punit) {
      punit->client.colored = FALSE;
    } unit_list_iterate_end;
client.playing
      || !client.playing          && client.playing
          && !client.playing->ai.control
          && unit_owner(punit) == client.playing
          && punit->activity == ACTIVITY_SENTRY
          && packet_unit->activity == ACTIVITY_IDLE
          && !unit_is_in_focus(punit)
          && is_player_phase(client.playingclient.playing || unit_owner(punit) == client.playingclient.playingclient.playingclient.playing
	   && !client.playing->ai.control
	   && unit_owner(punit) == client.playingclient.playing
      && !client.playing->ai.control
      && is_player_phase(client.playing =
    government_by_number(game.info.government_when_anarchy_id);
  client.playing = valid_client.playing); lient.playing
      && can_client_issue_orders()
      && government != government_of_player(client.playingclient.playing
      && DS_ARMISTICE != pplayer->diplstates[player_index(client.playing)].type
      && DS_ARMISTICE == pinfo->diplstates[player_index(client.playing)].type) {
    unit_list_iterate(client.playing (pplayer == client.playing)  {
      my_snprintf(msg, sizeof(msg), _("AI Mode is now %s."),
                  client.playingpplayer == client.playing && can_client_change_view()) {
    if (poptechup || new_tech) {
      science_dialog_update();
    }
    if (poptechup) {
      if (client.playing && !client.playingclient.playingclient.playingclient.playingNULL != client.playing) {
    BV_CLR(ptile->tile_known, player_index(client.playing));
    vision_layer_iterate(v) {
      BV_CLR(ptile->tile_seen[v], player_index(client.playing)player_index(client.playing));
      vision_layer_iterate(v) {
	BV_SET(ptile->tile_seen[v], player_index(client.playing)player_index(client.playing)client.playing player_find_unit_by_id(client.playing, diplomat_id);

  if (NULL == pdiplomat) {
    freelog(LOG_ERROR,
	    "handle_unit_diplomat_answer() bad diplomat %d.",
	    diplomat_id);
    return;
  }

  switch (action_type) {
  case DIPLOMAT_BRIBE:
    if (punit) {
      if (client.playing && !client.playingclient.playing && !client.playingcity *pcity = game_find_city_by_number(city_id);
  struct unit *pdiplomat = player_find_unit_by_id(client.playing, diplomat_id);

  if (NULL == pdiplomat) {
    freelog(LOG_ERROR,
	    "handle_city_sabotage_list() bad diplomat %d.",
	    diplomat_id);
    return;
  }

  if (NULL == pcity) {
    freelog(LOG_ERROR,
	    "handle_city_sabotage_list() bad city %d.",
	    city_id);
    return;
  }

  if (client.playing) {
    return;
  }
  generic_handle_player_attribute_chunk(client.playingENDREP
DELTA 14171 52226 239
SVN  ÅkÅP] ‡V  s‡h€k ‚+˜K¿ R›7³ ¨->client.playing) {
    gtk_label_set_text(GTK_LABEL(label),
		       nation_plural_for_player(client.playingclient.playing) {
    int d = 0;

    for (; d < client.playingclient.playing->economic.science
		+ client.playingENDREP
DELTA 5500 240123 1561
SVN  –(ƒ°%ƒ§h …8  G  :† €G @…@ Dˆ?€ƒ§!Å‚ Bursig
    email                : RafaÅ‚ Bursig <bursig@poczta.fm>
 assert.h>
#include <stdlib.h>

#include "SDL.h"

/* utility */
#include "fcintl.h"

/* common */
#include "game.h"
#include "unit.h"

/* client */
#include "civclient.h"
#include "climisc.h"

/* gui-sdl */
#include "citydlg.h"
#include "colors.h"
#include "graphics.h"
#include "gui_iconv.h"
#include "gui_id.h"
#include "gui_main.h"
#include "gui_tilespec.h"
#include "helpdlg.h"
#include "mapview.h"
#include "sprite.h"
#include "themespec.h"
#include "widget.h"

#include "wldlg.h"

#define TARGETS_COL		4
#define TARGETS_ROW		4

struct EDITOR {
  struct widget *pBeginWidgetList;
  struct widget *pEndWidgetList;/* window */
    
  struct ADVANCED_DLG *pTargets;
  struct ADVANCED_DLG *pWork;
  struct ADVANCED_DLG *pGlobal;
    
  struct city *pCity;
  struct worklist *pOrginal_WorkList;
  struct worklist *pCopy_WorkList;
  
  /* shortcuts  */
  struct widget *pDock;
  struct widget *pWorkList_Counter;
  
  struct widget *pProduction_Name;
  struct widget *pProduction_Progres;
    
  int stock;
  struct universal currently_building;
  
} *pEditor = NULL;


static int worklist_editor_item_callback(struct widget *pWidget);
static SDL_Surface * get_progress_icon(int stock, int cost, int *progress);
static const char * get_production_name(struct city *pCity,
					struct universal prod, int *cost);
static void refresh_worklist_count_label(void);
static void refresh_production_label(int stock);

/* =========================================================== */

/* Worklist Editor Window Callback */
static int window_worklist_editor_callback(struct widget *pWidget)
{
  return -1;
}

/* Popdwon Worklist Editor */
static int popdown_worklist_editor_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_worklist_editor();
  }
  return -1;
}

/*
 * Commit changes to city/global worklist
 * In City Mode Remove Double entry of Imprv/Woder Targets from list.
 */
static int ok_worklist_editor_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    int i, j;
    struct city *pCity = pEditor->pCity;
    bool same_prod = TRUE;
    
    /* remove duplicate entry of impv./wonder target from worklist */
    for(i = 0; i < worklist_length(pEditor->pCopy_WorkList); i++) {
  
      if(VUT_IMPROVEMENT == pEditor->pCopy_WorkList->entries[i].kind) {
        for(j = i + 1; j < worklist_length(pEditor->pCopy_WorkList); j++) {
          if (VUT_IMPROVEMENT == pEditor->pCopy_WorkList->entries[j].kind
           && pEditor->pCopy_WorkList->entries[i].value.building ==
              pEditor->pCopy_WorkList->entries[j].value.building) {
            worklist_remove(pEditor->pCopy_WorkList, j);
          }
        }
      }
    }
    
    if(pCity) {
      /* remove duplicate entry of currently building impv./wonder from worklist */
      if(VUT_IMPROVEMENT == pEditor->currently_building.kind) {
        for(i = 0; i < worklist_length(pEditor->pCopy_WorkList); i++) {
          if (VUT_IMPROVEMENT == pEditor->pCopy_WorkList->entries[i].kind
           && pEditor->pCopy_WorkList->entries[i].value.building ==
              pEditor->currently_building.value.building) {
              worklist_remove(pEditor->pCopy_WorkList, i);
          }
        }
      }
      
      /* change production */
      if(!are_universals_equal(&pCity->production, &pEditor->currently_building)) {
        city_change_production(pCity, pEditor->currently_building);
        same_prod = FALSE;
      }
      
      /* commit new city worklist */
      city_set_worklist(pCity, pEditor->pCopy_WorkList);
    } else {
      /* commit global worklist */
      copy_worklist(pEditor->pOrginal_WorkList, pEditor->pCopy_WorkList);
      update_worklist_report_dialog();
    }  
    
    /* popdown dialog */
    popdown_worklist_editor();
  }
  
  return -1;
}

/*
 * Rename Global Worklist
 */
static int rename_worklist_editor_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if(pWidget->string16->text) {
      char *pText = convert_to_chars(pWidget->string16->text);
      my_snprintf(pEditor->pCopy_WorkList->name, MAX_LEN_NAME, "%s", pText);
      FC_FREE(pText);
    } else {
      /* empty input -> restore previous content */
      copy_chars_to_string16(pWidget->string16, pEditor->pCopy_WorkList->name);
      widget_redraw(pWidget);
      widget_mark_dirty(pWidget);
      flush_dirty();
    }
  }  
  return -1;
}

/* ====================================================================== */

/*
 * Add target to worklist.
 */
static void add_target_to_worklist(struct widget *pTarget)
{
  struct widget *pBuf = NULL, *pDock = NULL;
  SDL_String16 *pStr = NULL;
  int i;
  struct universal prod = cid_decode(MAX_ID - pTarget->ID);
  
  set_wstate(pTarget, FC_WS_SELLECTED);
  widget_redraw(pTarget);
  widget_flush(pTarget);
  
  /* Deny adding currently building Impr/Wonder Target */ 
  if (pEditor->pCity
      && VUT_IMPROVEMENT == prod.kind
      && are_universals_equal(&prod, &pEditor->currently_building)) {
    return;
  }
  
  if (worklist_length(pEditor->pCopy_WorkList) >= MAX_LEN_WORKLIST - 1) {
    return;   
    }
    
  for(i = 0; i < worklist_length(pEditor->pCopy_WorkList); i++) {
    if (VUT_IMPROVEMENT == prod.kind
     && are_universals_equal(&prod, &pEditor->pCopy_WorkList->entries[i])) {
    return;
    }
  }
    
  worklist_append(pEditor->pCopy_WorkList, prod);
  
  /* create widget entry */
  if(VUT_UTYPE == prod.kind) {
    pStr = create_str16_from_char(utype_name_translation(prod.value.utype), adj_font(10));
  } else {
    pStr = create_str16_from_char(city_improvement_name_translation(pEditor->pCity, prod.value.building),
                                                                adj_font(10));
  }
  
  pStr->style |= SF_CENTER;
  pBuf = create_iconlabel(NULL, pTarget->dst, pStr,
				(WF_RESTORE_BACKGROUND|WF_FREE_DATA));
    
  set_wstate(pBuf, FC_WS_NORMAL);
  pBuf->action = worklist_editor_item_callback;
        
  pBuf->data.ptr = fc_calloc(1, sizeof(int));
  *((int *)pBuf->data.ptr) = worklist_length(pEditor->pCopy_WorkList) - 1;
    
  pBuf->ID = MAX_ID - cid_encode(prod);
  
  if(pEditor->pWork->pBeginActiveWidgetList) {
    pDock = pEditor->pWork->pBeginActiveWidgetList;
  } else {
    pDock = pEditor->pDock;
  }
  
/* FIXME */  
#if 0
  if (worklist_length(pEditor->pCopy_WorkList) > pEditor->pWork->pScroll->active + 1) {

    setup_vertical_widgets_position(1,
      pEditor->pEndWidgetList->area.x + adj_size(2),
      get_widget_pointer_form_main_list(ID_WINDOW)->area.y + adj_size(152) +
	pEditor->pWork->pScroll->pUp_Left_Button->size.h + 1,
	adj_size(126), 0, pEditor->pWork->pBeginWidgetList,
		  pEditor->pWork->pEndWidgetList);
   
    setup_vertical_scrollbar_area(pEditor->pWork->pScroll,
	pEditor->pEndWidgetList->area.x + adj_size(2),
    	get_widget_pointer_form_main_list(ID_WINDOW)->area.y + adj_size(152),
    	adj_size(225), FALSE);
    
    show_scrollbar(pEditor->pWork->pScroll);    
  }
#endif
  
  add_widget_to_vertical_scroll_widget_list(pEditor->pWork, pBuf,
    pDock, FALSE,
    pEditor->pEndWidgetList->area.x + adj_size(2),
    pEditor->pEndWidgetList->area.y + adj_size(152));
  
  pBuf->size.w = adj_size(126);
  
  refresh_worklist_count_label();
  redraw_group(pEditor->pWork->pBeginWidgetList,
			  pEditor->pWork->pEndWidgetList, TRUE);
  flush_dirty();
}

/*
 * Find if two targets are the same class (unit, imprv. , wonder).
 * This is needed by calculation of change production shields penalty.
 * [similar to are_universals_equal()]
 */
static bool are_the_same_class(const struct universal one,
			       const struct universal two)
{
  if (one.kind != two.kind) {
    return FALSE;
  }
  if (VUT_UTYPE == one.kind) {
    return one.value.utype == two.value.utype;
  }
  if (VUT_IMPROVEMENT == one.kind) {
    if (is_wonder(one.value.building)) {
      return is_wonder(two.value.building);
    }
    return (one.value.building == two.value.building);
  }
  return FALSE;
}

/*
 * Change production in editor shell, callculate production shields penalty and
 * refresh production progress label
 */
static void change_production(struct universal prod)
{
    
  if(!are_the_same_class(pEditor->currently_building, prod)) {
    if(pEditor->stock != pEditor->pCity->shield_stock) {
      if(are_the_same_class(pEditor->pCity->production, prod)) {
	pEditor->stock = pEditor->pCity->shield_stock;
      }
    } else {
      pEditor->stock =
	  city_change_production_penalty(pEditor->pCity, prod);
    }	  	  
  }
      
  pEditor->currently_building = prod;
  refresh_production_label(pEditor->stock);

  return;
}

/*
 * Change production of city but only in Editor.
 * You must commit this changes by exit editor via OK button (commit function).
 *
 * This function don't remove double imprv./wonder target entry from worklist
 * and allow more entry of such target (In Production and worklist - this is
 * fixed by commit function).
 */
static void add_target_to_production(struct widget *pTarget)
{
  int dummy;
  struct universal prod;
  assert(pTarget != NULL);
  
  /* redraw Target Icon */
  set_wstate(pTarget, FC_WS_SELLECTED);
  widget_redraw(pTarget);
  widget_flush(pTarget);

  prod = cid_decode(MAX_ID - pTarget->ID);
  
  /* check if we change to the same target */
  if(are_universals_equal(&prod, &pEditor->currently_building)) {
    /* comit changes and exit - double click detection */
    ok_worklist_editor_callback(NULL);
    return;
  }
  
  change_production(prod);
  
  /* change Production Text Label in Worklist Widget list */
  copy_chars_to_string16(pEditor->pWork->pEndActiveWidgetList->string16,
  	get_production_name(pEditor->pCity, prod, &dummy));
  
  pEditor->pWork->pEndActiveWidgetList->ID = MAX_ID - cid_encode(prod);
    
  widget_redraw(pEditor->pWork->pEndActiveWidgetList);
  widget_mark_dirty(pEditor->pWork->pEndActiveWidgetList);
  
  flush_dirty();    
  
}

/* Get Help Info about target */
static void get_target_help_data(struct widget *pTarget)
{
  struct universal prod;

  assert(pTarget != NULL);
  
  /* redraw Target Icon */
  set_wstate(pTarget, FC_WS_SELLECTED);
  widget_redraw(pTarget);
  /*widget_flush(pTarget);*/
  
  prod = cid_decode(MAX_ID - pTarget->ID);

  if (VUT_UTYPE == prod.kind)
  {
    popup_unit_info(utype_number(prod.value.utype));
  } else {
    popup_impr_info(improvement_number(prod.value.building));
  }
  
}


/*
 * Targets callback
 * left mouse button -> In city mode change production to target.
			In global mode add target to worklist.
 * middle mouse button -> get target "help"
 * right mouse button -> add target to worklist.
 */
static int worklist_editor_targets_callback(struct widget *pWidget)
{
  switch(Main.event.button.button) {
    case SDL_BUTTON_LEFT:
      if(pEditor->pCity) {
        add_target_to_production(pWidget);
      } else {
	add_target_to_worklist(pWidget);
      }
      break;
    case SDL_BUTTON_MIDDLE:
      get_target_help_data(pWidget);
      break;
    case SDL_BUTTON_RIGHT:
      add_target_to_worklist(pWidget);
      break;
    default:
    	;/* do nothing */
    break;
  }
  return -1;
}

/* ====================================================================== */

/*
 * Remove element from worklist or
 * remove currently building imprv/unit and change production to first worklist
 * element (or Capitalizations if worklist is empty)
 */
static void remove_item_from_worklist(struct widget *pItem)
{
  /* only one item (production) is left */
  if (worklist_is_empty(pEditor->pCopy_WorkList))
    return;
        
  if(pItem->data.ptr) {
    /* correct "data" widget fiels */
    struct widget *pBuf = pItem;
    if(pBuf != pEditor->pWork->pBeginActiveWidgetList) {
      do{
	pBuf = pBuf->prev;
	*((int *)pBuf->data.ptr) = *((int *)pBuf->data.ptr) - 1;
      } while(pBuf != pEditor->pWork->pBeginActiveWidgetList);
    }
    
    /* remove element from worklist */
    worklist_remove(pEditor->pCopy_WorkList, *((int *)pItem->data.ptr));
    
    /* remove widget from widget list */
    del_widget_from_vertical_scroll_widget_list(pEditor->pWork, pItem);
  } else {
    /* change productions to first worklist element */
    struct widget *pBuf = pItem->prev;
    change_production(pEditor->pCopy_WorkList->entries[0]);
    worklist_advance(pEditor->pCopy_WorkList);
    del_widget_from_vertical_scroll_widget_list(pEditor->pWork, pItem);
    FC_FREE(pBuf->data.ptr);
    if(pBuf != pEditor->pWork->pBeginActiveWidgetList) {
      do{
        pBuf = pBuf->prev;
        *((int *)pBuf->data.ptr) = *((int *)pBuf->data.ptr) - 1;
      } while(pBuf != pEditor->pWork->pBeginActiveWidgetList);
    }
  }

/* FIXME: fix scrollbar code */
#if 0    
  /* worklist_length(pEditor->pCopy_WorkList): without production */
  if (worklist_length(pEditor->pCopy_WorkList) <= pEditor->pWork->pScroll->active + 1) {

    setup_vertical_widgets_position(1,
      pEditor->pEndWidgetList->area.x + adj_size(2),
      get_widget_pointer_form_main_list(ID_WINDOW)->area.y + adj_size(152),
	adj_size(126), 0, pEditor->pWork->pBeginWidgetList,
		  pEditor->pWork->pEndWidgetList);
#if 0   
    setup_vertical_scrollbar_area(pEditor->pWork->pScroll,
	pEditor->pEndWidgetList->area.x + adj_size(2),
    	get_widget_pointer_form_main_list(ID_WINDOW)->area.y + adj_size(152),
    	adj_size(225), FALSE);*/
#endif    
    hide_scrollbar(pEditor->pWork->pScroll);    
  }
#endif
    
  refresh_worklist_count_label();
  redraw_group(pEditor->pWork->pBeginWidgetList,
			  pEditor->pWork->pEndWidgetList, TRUE);
  flush_dirty();
}

/*
 * Swap worklist entries DOWN.
 * Fuction swap current element with next element of worklist.
 *
 * If pItem is last widget or there is only one widget on widgets list
 * fuction remove this widget from widget list and target from worklist
 *
 * In City mode, when pItem is first worklist element, function make
 * change production (currently building is moved to first element of worklist
 * and first element of worklist is build).
 */
static void swap_item_down_from_worklist(struct widget *pItem)
{
  Uint16 *pText, ID;
  bool changed = FALSE;
  struct universal tmp;
  
  if(pItem == pEditor->pWork->pBeginActiveWidgetList) {
    remove_item_from_worklist(pItem);
    return;
  }
  
  pText = pItem->string16->text;
  ID = pItem->ID;
  
  /* second item or higher was clicked */
  if(pItem->data.ptr) {
    /* worklist operations -> swap down */
    int row = *((int *)pItem->data.ptr);
       
    tmp = pEditor->pCopy_WorkList->entries[row];
    pEditor->pCopy_WorkList->entries[row] = pEditor->pCopy_WorkList->entries[row + 1];
    pEditor->pCopy_WorkList->entries[row + 1] = tmp;
      
    changed = TRUE;  
  } else {
    /* first item was clicked -> change production */
    change_production(pEditor->pCopy_WorkList->entries[0]);
    pEditor->pCopy_WorkList->entries[0] = cid_decode(MAX_ID - ID);
      changed = TRUE;
    }
  
  if(changed) {
    pItem->string16->text = pItem->prev->string16->text;
    pItem->ID = pItem->prev->ID;
  
    pItem->prev->string16->text = pText;
    pItem->prev->ID = ID;

    redraw_group(pEditor->pWork->pBeginWidgetList,
			  pEditor->pWork->pEndWidgetList, TRUE);
    flush_dirty();
  }
  
}

/*
 * Swap worklist entries UP.
 * Fuction swap current element with prev. element of worklist.
 *
 * If pItem is first widget on widgets list fuction remove this widget 
 * from widget list and target from worklist (global mode)
 * or from production (city mode)
 *
 * In City mode, when pItem is first worklist element, function make
 * change production (currently building is moved to first element of worklist
 * and first element of worklist is build).
 */
static void swap_item_up_from_worklist(struct widget *pItem)
{
  Uint16 *pText = pItem->string16->text;
  Uint16 ID = pItem->ID;
  bool changed = FALSE;
  struct universal tmp;  

  /* first item was clicked -> remove */
  if(pItem == pEditor->pWork->pEndActiveWidgetList) {
    remove_item_from_worklist(pItem);
    return;
  }

  /* third item or higher was clicked */  
  if(pItem->data.ptr && *((int *)pItem->data.ptr) > 0) {
    /* worklist operations -> swap up*/
    int row = *((int *)pItem->data.ptr);
    
    tmp = pEditor->pCopy_WorkList->entries[row];
    pEditor->pCopy_WorkList->entries[row] = pEditor->pCopy_WorkList->entries[row - 1];
    pEditor->pCopy_WorkList->entries[row - 1] = tmp;
      
    changed = TRUE;    
  } else {
    /* second item was clicked -> change production ... */
    tmp = pEditor->currently_building;
    change_production(pEditor->pCopy_WorkList->entries[0]);
    pEditor->pCopy_WorkList->entries[0] = tmp;    
      
    changed = TRUE;
  }

  if(changed) {
    pItem->string16->text = pItem->next->string16->text;
    pItem->ID = pItem->next->ID;
    
    pItem->next->string16->text = pText;
    pItem->next->ID = ID;
    
    redraw_group(pEditor->pWork->pBeginWidgetList,
			  pEditor->pWork->pEndWidgetList, TRUE);
    flush_dirty();
  }
}

/*
 * worklist callback
 * left mouse button -> swap entries up.
 * middle mouse button -> remove element from list
 * right mouse button -> swap entries down.
 */
static int worklist_editor_item_callback(struct widget *pWidget)
{
  switch(Main.event.button.button) {
    case SDL_BUTTON_LEFT:
      swap_item_up_from_worklist(pWidget);
      break;
    case SDL_BUTTON_MIDDLE:
      remove_item_from_worklist(pWidget);
      break;
    case SDL_BUTTON_RIGHT:
      swap_item_down_from_worklist(pWidget);
      break;
    default:
    	;/* do nothing */
    break;
  }
  return -1;
}
/* ======================================================= */

/*
 * Add global worklist to city worklist starting from last free entry.
 * Add only avilable targets in current game state.
 * If global worklist have more targets that city worklist have free
 * entries then we adding only first part of global worklist.
 */
static void add_global_worklist(struct widget *pWidget)
{
  if(!worklist_is_empty(&client.worklists[MAX_ID - pWidget->ID])) {
    int count, firstfree;
    struct widget *pBuf = pEditor->pWork->pEndActiveWidgetList;
    struct worklist *pWorkList = &client.worklists[MAX_ID - pWidget->ID];
      
    if(worklist_length(pEditor->pCopy_WorkList) >= MAX_LEN_WORKLIST - 1) {
      /* worklist is full */
      return;
    }
    
    firstfree = worklist_length(pEditor->pCopy_WorkList);
    /* copy global worklist to city worklist */
    for(count = 0 ; count < worklist_length(pWorkList); count++) {
      
      /* global worklist can have targets unavilable in current state of game
         then we must remove those targets from new city worklist */
      if(!can_city_build_later(pEditor->pCity, pWorkList->entries[count])) {
	continue;  
      }
      
      worklist_append(pEditor->pCopy_WorkList, pWorkList->entries[count]);
      
      /* create widget */      
      if(VUT_UTYPE == pWorkList->entries[count].kind) {
	pBuf = create_iconlabel(NULL, pWidget->dst,
		create_str16_from_char(
			utype_name_translation(pWorkList->entries[count].value.utype),
			adj_font(10)),
		(WF_RESTORE_BACKGROUND|WF_FREE_DATA));
	pBuf->ID = MAX_ID - cid_encode_unit(pWorkList->entries[count].value.utype);
      } else {
	pBuf = create_iconlabel(NULL, pWidget->dst,
		create_str16_from_char(
			city_improvement_name_translation(pEditor->pCity,
				pWorkList->entries[count].value.building),
			adj_font(10)),
		(WF_RESTORE_BACKGROUND|WF_FREE_DATA));
	pBuf->ID = MAX_ID - cid_encode_building(pWorkList->entries[count].value.building);
      }
      
      pBuf->string16->style |= SF_CENTER;
      set_wstate(pBuf, FC_WS_NORMAL);
      pBuf->action = worklist_editor_item_callback;
      pBuf->size.w = adj_size(126);  
      pBuf->data.ptr = fc_calloc(1, sizeof(int));
      *((int *)pBuf->data.ptr) = firstfree;
        
      add_widget_to_vertical_scroll_widget_list(pEditor->pWork,
        pBuf, pEditor->pWork->pBeginActiveWidgetList, FALSE,
        pEditor->pEndWidgetList->area.x + adj_size(2),
        pEditor->pEndWidgetList->area.y + adj_size(152));
      
      firstfree++;
      if(firstfree == MAX_LEN_WORKLIST - 1) {
	break;
      }
    }
    
    refresh_worklist_count_label();
    redraw_group(pEditor->pWork->pBeginWidgetList,
    			pEditor->pWork->pEndWidgetList, TRUE);
    
    flush_dirty();
  }
}

/*
 * Clear city worklist and copy here global worklist.
 * Copy only avilable targets in current game state.
 * If all targets are unavilable then leave city worklist untouched.
 */
static void set_global_worklist(struct widget *pWidget)
{
  if(!worklist_is_empty(&client.worklists[MAX_ID - pWidget->ID])) {
    int count, wl_count;
    struct universal target;
    struct widget *pBuf = pEditor->pWork->pEndActiveWidgetList;
    struct worklist wl ,
	      *pWorkList = &client.worklists[MAX_ID - pWidget->ID];
    
    /* clear tmp worklist */
    init_worklist(&wl);
    
    wl_count = 0;
    /* copy global worklist to city worklist */
    for(count = 0; count < worklist_length(pWorkList); count++) {
      
      /* global worklist can have targets unavilable in current state of game
         then we must remove those targets from new city worklist */
      if(!can_city_build_later(pEditor->pCity, pWorkList->entries[count])) {
	continue;  
      }
      
      wl.entries[wl_count] = pWorkList->entries[count];
      wl_count++;
    }
    /* --------------------------------- */
    
    if(!worklist_is_empty(&wl)) {
      /* free old widget list */
      if(pBuf != pEditor->pWork->pBeginActiveWidgetList) {
        pBuf = pBuf->prev;
        if(pBuf != pEditor->pWork->pBeginActiveWidgetList) {
          do {
            pBuf = pBuf->prev;
            del_widget_from_vertical_scroll_widget_list(pEditor->pWork, pBuf->next);
          } while(pBuf != pEditor->pWork->pBeginActiveWidgetList);
        }
        del_widget_from_vertical_scroll_widget_list(pEditor->pWork, pBuf);
      }  
      /* --------------------------------- */
      
      copy_worklist(pEditor->pCopy_WorkList, &wl);
    
      /* --------------------------------- */
      /* create new widget list */
      for(count = 0; count < MAX_LEN_WORKLIST; count++) {
        /* end of list */
        if(!worklist_peek_ith(pEditor->pCopy_WorkList, &target, count)) {
          break;
        }
    
        if(VUT_UTYPE == target.kind) {
	  pBuf = create_iconlabel(NULL, pWidget->dst,
	    create_str16_from_char(utype_name_translation(target.value.utype),
				   adj_font(10)),
				   (WF_RESTORE_BACKGROUND|WF_FREE_DATA));
	  pBuf->ID = MAX_ID - B_LAST - utype_number(target.value.utype);
        } else {
	  pBuf = create_iconlabel(NULL, pWidget->dst,
	    create_str16_from_char(city_improvement_name_translation(pEditor->pCity, target.value.building),
				   adj_font(10)),
				   (WF_RESTORE_BACKGROUND|WF_FREE_DATA));
	  pBuf->ID = MAX_ID - improvement_number(target.value.building);
        }
        pBuf->string16->style |= SF_CENTER;
        set_wstate(pBuf, FC_WS_NORMAL);
        pBuf->action = worklist_editor_item_callback;
        pBuf->size.w = adj_size(126);  
        pBuf->data.ptr = fc_calloc(1, sizeof(int));
        *((int *)pBuf->data.ptr) = count;
        
        add_widget_to_vertical_scroll_widget_list(pEditor->pWork,
          pBuf, pEditor->pWork->pBeginActiveWidgetList, FALSE,
          pEditor->pEndWidgetList->area.x + adj_size(2),
	  pEditor->pEndWidgetList->area.y + adj_size(152));
      }
    
      refresh_worklist_count_label();
      redraw_group(pEditor->pWork->pBeginWidgetList,
    			pEditor->pWork->pEndWidgetList, TRUE);
    
      flush_dirty();
    }
  }
}

/*
 * global worklist callback
 * left mouse button -> add global worklist to current city list
 * right mouse button -> clear city worklist and copy here global worklist.
 *
 * There are problems with impv./wonder tagets becouse those can't be doubled
 * on worklist and adding/seting can give you situation that global worklist
 * have imprv./wonder entry that exist on city worklist or in building state.
 * I don't make such check here and allow this "functionality" becouse doubled
 * impov./wonder entry are removed from city worklist during "commit" phase.
 */
static int global_worklist_callback(struct widget *pWidget)
{
  switch(Main.event.button.button) {
    case SDL_BUTTON_LEFT:
      add_global_worklist(pWidget);
      break;
    case SDL_BUTTON_MIDDLE:
      /* nothing */
      break;
    case SDL_BUTTON_RIGHT:
      set_global_worklist(pWidget);
      break;
    default:
    	;/* do nothing */
    break;
  }
  return -1;
}

/* ======================================================= */

/* return full unit/imprv. name and build cost in "cost" pointer */
static const char * get_production_name(struct city *pCity,
					struct universal prod, int *cost)
{
  assert(cost != NULL);
        
  *cost = universal_build_shield_cost(&prod);
  if(VUT_UTYPE == prod.kind) {
    return utype_name_translation(prod.value.utype);
  } else {
    return city_improvement_name_translation(pCity, prod.value.building);
  }
}

/*
 * return progress icon (bar) of current production state
 * stock - current shielsd stocks
 * cost - unit/imprv. cost
 * function return in "proggres" pointer (0 - 100 %) progress in numbers
*/
static SDL_Surface * get_progress_icon(int stock, int cost, int *progress)
{
  SDL_Surface *pIcon = NULL;
  int width;
  assert(progress != NULL);
  
  if(stock < cost) {
    width = ((float)stock / cost) * adj_size(116.0);
    *progress = ((float)stock / cost) * 100.0;
    if(!width && stock) {
      *progress = 1;
      width = 1;
    }
  } else {
    width = adj_size(116);
    *progress = 100;
  }
    
  pIcon = create_bcgnd_surf(pTheme->Edit, 0, adj_size(120), adj_size(30));
    
  if(width) {
    SDL_Rect dst = {2,1,0,0};
    SDL_Surface *pBuf = create_bcgnd_surf(pTheme->Button, 3, width, adj_size(28));
    alphablit(pBuf, NULL, pIcon, &dst);
    FREESURFACE(pBuf);
  }
    
  return pIcon;  
}

/*
 * update and redraw production name label in worklist editor
 * stock - pCity->shields_stock or current stock after chnge production lost.
 */
static void refresh_production_label(int stock)
{
  int cost, turns;
  char cBuf[64];
  SDL_Rect area;
  const char *name = get_production_name(pEditor->pCity,
    				pEditor->currently_building, &cost);

  if (VUT_IMPROVEMENT == pEditor->currently_building.kind
     && improvement_has_flag(pEditor->currently_building.value.building, IF_GOLD))
  {
     my_snprintf(cBuf, sizeof(cBuf),
      	_("%s\n%d gold per turn"), name, MAX(0, pEditor->pCity->surplus[O_SHIELD]));
  } else {
    if(stock < cost) {
      turns = city_turns_to_build(pEditor->pCity,
				  pEditor->currently_building, TRUE);
      if(turns == 999)
      {
        my_snprintf(cBuf, sizeof(cBuf), _("%s\nblocked!"), name);
      } else {
        my_snprintf(cBuf, sizeof(cBuf), _("%s\n%d %s"),
		    name, turns, PL_("turn", "turns", turns));
      }
    } else {
      my_snprintf(cBuf, sizeof(cBuf), _("%s\nfinished!"), name);
    }
  }
  copy_chars_to_string16(pEditor->pProduction_Name->string16, cBuf);

  widget_undraw(pEditor->pProduction_Name);
  remake_label_size(pEditor->pProduction_Name);
  
  pEditor->pProduction_Name->size.x = pEditor->pEndWidgetList->area.x +
    (adj_size(130) - pEditor->pProduction_Name->size.w)/2;
  
  area.x = pEditor->pEndWidgetList->area.x;
  area.y = pEditor->pProduction_Name->size.y;
  area.w = adj_size(130);
  area.h = pEditor->pProduction_Name->size.h;

  if (get_wflags(pEditor->pProduction_Name) & WF_RESTORE_BACKGROUND) {
    refresh_widget_background(pEditor->pProduction_Name);
  }
  
  widget_redraw(pEditor->pProduction_Name);
  sdl_dirty_rect(area);
  
  FREESURFACE(pEditor->pProduction_Progres->theme);
  pEditor->pProduction_Progres->theme =
		  get_progress_icon(stock, cost, &cost);
    
  my_snprintf(cBuf, sizeof(cBuf), "%d%%" , cost);
  copy_chars_to_string16(pEditor->pProduction_Progres->string16, cBuf);
  widget_redraw(pEditor->pProduction_Progres);
  widget_mark_dirty(pEditor->pProduction_Progres);
}


/* update and redraw worklist length counter in worklist editor */
static void refresh_worklist_count_label(void)
{
  char cBuf[64];
  SDL_Rect area;

  my_snprintf(cBuf, sizeof(cBuf), _("( %d entries )"),
  				worklist_length(pEditor->pCopy_WorkList));
  copy_chars_to_string16(pEditor->pWorkList_Counter->string16, cBuf);

  widget_undraw(pEditor->pWorkList_Counter);
  remake_label_size(pEditor->pWorkList_Counter);
  
  pEditor->pWorkList_Counter->size.x = pEditor->pEndWidgetList->area.x +
    (adj_size(130) - pEditor->pWorkList_Counter->size.w)/2;
  
  if (get_wflags(pEditor->pWorkList_Counter) & WF_RESTORE_BACKGROUND) {
    refresh_widget_background(pEditor->pWorkList_Counter);
  }
  
  widget_redraw(pEditor->pWorkList_Counter);

  area.x = pEditor->pEndWidgetList->area.x;
  area.y = pEditor->pWorkList_Counter->size.y;
  area.w = adj_size(130);
  area.h = pEditor->pWorkList_Counter->size.h;
  sdl_dirty_rect(area);
}


/* ====================================================================== */


/*
 * Global/City worklist editor.
 * if pCity == NULL then fucnction take pWorklist as global worklist.
 * pWorklist must be not NULL.
 */
void popup_worklist_editor(struct city *pCity, struct worklist *pWorkList)
{
  SDL_Color bg_color = {255,255,255,128};
  SDL_Color bg_color2 = {255,255,255,136};

  int count = 0, turns;
  int i, widget_w = 0, widget_h = 0;
  SDL_String16 *pStr = NULL;
  struct widget *pBuf = NULL, *pWindow, *pLast;
  SDL_Surface *pText = NULL, *pText_Name = NULL, *pZoom = NULL;
  SDL_Surface *pMain;
  SDL_Surface *pIcon;
  SDL_Rect dst;
  char cBuf[128];
  struct unit_type *pUnit = NULL;
  char *state = NULL;
  bool advanced_tech;
  bool can_build, can_eventually_build;
  SDL_Rect area;
  struct worklist *worklist;
  
  if(pEditor) {
    return;
  }
  
  assert(pWorkList != NULL);
  
  advanced_tech = (pCity == NULL);
  
  pEditor = fc_calloc(1, sizeof(struct EDITOR));
  
  pEditor->pCity = pCity;
  pEditor->pOrginal_WorkList = pWorkList;
  pEditor->pCopy_WorkList = fc_calloc(1, sizeof(struct worklist));
  copy_worklist(pEditor->pCopy_WorkList, pWorkList);
  
  if(pCity) {
    pEditor->currently_building = pCity->production;
    pEditor->stock = pCity->shield_stock;
  }
  
  /* --------------- */
  /* create Target Background Icon */
  pMain = create_surf_alpha(adj_size(116), adj_size(116), SDL_SWSURFACE);
  SDL_FillRect(pMain, NULL, map_rgba(pMain->format, bg_color));
  putframe(pMain, 0, 0, pMain->w - 1, pMain->h - 1,
    map_rgba(pMain->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
    
  /* ---------------- */
  /* Create Main Window */
  pWindow = create_window_skeleton(NULL, NULL, 0);
  pWindow->action = window_worklist_editor_callback;
  set_wstate(pWindow, FC_WS_NORMAL);
  
  add_to_gui_list(ID_WINDOW, pWindow);
  pEditor->pEndWidgetList = pWindow;

  area = pWindow->area;
  
  /* ---------------- */
  if(pCity) {
    my_snprintf(cBuf, sizeof(cBuf), _("Worklist of\n%s"), city_name(pCity));
  } else {
    my_snprintf(cBuf, sizeof(cBuf), "%s", pWorkList->name);
  }
    
  pStr = create_str16_from_char(cBuf, adj_font(12));
  pStr->style |= (TTF_STYLE_BOLD|SF_CENTER);
  
  pBuf = create_iconlabel(NULL, pWindow->dst, pStr, WF_RESTORE_BACKGROUND);
  
  add_to_gui_list(ID_LABEL, pBuf);
  /* --------------------------- */
  
  my_snprintf(cBuf, sizeof(cBuf), _("( %d entries )"), worklist_length(pWorkList));
  pStr = create_str16_from_char(cBuf, adj_font(10));
  pStr->bgcol = (SDL_Color) {0, 0, 0, 0};
  pBuf = create_iconlabel(NULL, pWindow->dst, pStr, WF_RESTORE_BACKGROUND);
  pEditor->pWorkList_Counter = pBuf;
  add_to_gui_list(ID_LABEL, pBuf);
  /* --------------------------- */
  
  /* create production proggres label or rename worklist edit */
  if(pCity) {
    /* count == cost */
    /* turns == progress */
    const char *name = city_production_name_translation(pCity);
    count = city_production_build_shield_cost(pCity);
    
    if (city_production_has_flag(pCity, IF_GOLD))
    {
      my_snprintf(cBuf, sizeof(cBuf),
      	_("%s\n%d gold per turn"), name, MAX(0, pCity->surplus[O_SHIELD]));
    } else {
      if(pCity->shield_stock < count) {
        turns = city_production_turns_to_build(pCity, TRUE);
        if(turns == 999)
        {
          my_snprintf(cBuf, sizeof(cBuf), _("%s\nblocked!"), name);
        } else {
          my_snprintf(cBuf, sizeof(cBuf), _("%s\n%d %s"),
		    name, turns, PL_("turn", "turns", turns));
        }
      } else {
        my_snprintf(cBuf, sizeof(cBuf), _("%s\nfinished!"), name);
      }
    }
    pStr = create_str16_from_char(cBuf, adj_font(10));
    pStr->style |= SF_CENTER;
    pBuf = create_iconlabel(NULL, pWindow->dst, pStr, WF_RESTORE_BACKGROUND);
    
    pEditor->pProduction_Name = pBuf;
    add_to_gui_list(ID_LABEL, pBuf);
    
    pIcon = get_progress_icon(pCity->shield_stock, count, &turns);
    
    my_snprintf(cBuf, sizeof(cBuf), "%d%%" , turns);
    pStr = create_str16_from_char(cBuf, adj_font(12));
    pStr->style |= (TTF_STYLE_BOLD|SF_CENTER);
    
    pBuf = create_iconlabel(pIcon, pWindow->dst, pStr,
    		(WF_RESTORE_BACKGROUND|WF_ICON_CENTER|WF_FREE_THEME));
    
    pIcon = NULL;
    turns = 0;
    pEditor->pProduction_Progres = pBuf;
    add_to_gui_list(ID_LABEL, pBuf);
  } else {
    pBuf = create_edit_from_chars(NULL, pWindow->dst,  pWorkList->name, adj_font(10),
                                    adj_size(120), WF_RESTORE_BACKGROUND);
    pBuf->action = rename_worklist_editor_callback;
    set_wstate(pBuf, FC_WS_NORMAL);
    
    add_to_gui_list(ID_EDIT, pBuf);
  }
  
  /* --------------------------- */
  /* Commit Widget */
  pBuf = create_themeicon(pTheme->OK_Icon, pWindow->dst, WF_RESTORE_BACKGROUND);
  
  pBuf->action = ok_worklist_editor_callback;
  set_wstate(pBuf, FC_WS_NORMAL);
  pBuf->key = SDLK_RETURN;
    
  add_to_gui_list(ID_BUTTON, pBuf);
  /* --------------------------- */
  /* Cancel Widget */
  pBuf = create_themeicon(pTheme->CANCEL_Icon, pWindow->dst,
				  WF_RESTORE_BACKGROUND);
  
  pBuf->action = popdown_worklist_editor_callback;
  set_wstate(pBuf, FC_WS_NORMAL);
  pBuf->key = SDLK_ESCAPE;
    
  add_to_gui_list(ID_BUTTON, pBuf);
  /* --------------------------- */
  /* work list */
  
  /*
     pWidget->data filed will contains postion of target in worklist all
     action on worklist (swap/romove/add) must correct this fields
     
     Production Widget Label in worklist Widget list
     will have this field NULL
  */
  
  pEditor->pWork = fc_calloc(1, sizeof(struct ADVANCED_DLG));

  
  pEditor->pWork->pScroll = fc_calloc(1, sizeof(struct ScrollBar));
  pEditor->pWork->pScroll->count = 0;
  pEditor->pWork->pScroll->active = MAX_LEN_WORKLIST;
  pEditor->pWork->pScroll->step = 1;

/* FIXME: this should replace the 4 lines above, but
 *        pEditor->pWork->pEndWidgetList is not set yet */
#if 0  
  create_vertical_scrollbar(pEditor->pWork, 1, MAX_LEN_WORKLIST, TRUE, TRUE);
#endif
  
  if(pCity) {
   /* Production Widget Label */ 
    pStr = create_str16_from_char(city_production_name_translation(pCity), adj_font(10));
    turns = city_production_build_shield_cost(pCity);
    pStr->style |= SF_CENTER;
    pBuf = create_iconlabel(NULL, pWindow->dst, pStr, WF_RESTORE_BACKGROUND);
    
    set_wstate(pBuf, FC_WS_NORMAL);
    pBuf->action = worklist_editor_item_callback;
        
    add_to_gui_list(MAX_ID - cid_encode(pCity->production), pBuf);
    
    pEditor->pWork->pEndWidgetList = pBuf;
    pEditor->pWork->pBeginWidgetList = pBuf;
    pEditor->pWork->pEndActiveWidgetList = pEditor->pWork->pEndWidgetList;
    pEditor->pWork->pBeginActiveWidgetList = pEditor->pWork->pBeginWidgetList;
    pEditor->pWork->pScroll->count++;
  }
  
  pLast = pBuf;
  pEditor->pDock = pBuf;
    
  /* create Widget Labels of worklist entries */

  count = 0;
  
  worklist = pWorkList;
    
  worklist_iterate(worklist, prod) {

    if(VUT_UTYPE == prod.kind) {
      pStr = create_str16_from_char(utype_name_translation(prod.value.utype),
                                    adj_font(10));
    } else {
      pStr = create_str16_from_char(city_improvement_name_translation(pCity,
                                                           prod.value.building),
                                    adj_font(10));
    }
    pStr->style |= SF_CENTER;
    pBuf = create_iconlabel(NULL, pWindow->dst, pStr,
				(WF_RESTORE_BACKGROUND|WF_FREE_DATA));
    
    set_wstate(pBuf, FC_WS_NORMAL);
    pBuf->action = worklist_editor_item_callback;
        
    pBuf->data.ptr = fc_calloc(1, sizeof(int));
    *((int *)pBuf->data.ptr) = count;
    
    add_to_gui_list(MAX_ID - cid_encode(prod), pBuf);
    
    count++;
    
    if(count > pEditor->pWork->pScroll->active - 1) {
      set_wflag(pBuf, WF_HIDDEN);
  }
  
  } worklist_iterate_end;
  
  if(count) {
    if(!pCity) {
      pEditor->pWork->pEndWidgetList = pLast->prev;
      pEditor->pWork->pEndActiveWidgetList = pEditor->pWork->pEndWidgetList;
    }
    pEditor->pWork->pBeginWidgetList = pBuf;
    pEditor->pWork->pBeginActiveWidgetList = pEditor->pWork->pBeginWidgetList;
  } else {
    if(!pCity) {
      pEditor->pWork->pEndWidgetList = pLast;
    }
    pEditor->pWork->pBeginWidgetList = pLast;
  }
  
/* FIXME */
#if 0  
  pEditor->pWork->pActiveWidgetList = pEditor->pWork->pEndActiveWidgetList;
  create_vertical_scrollbar(pEditor->pWork, 1,
                           pEditor->pWork->pScroll->active, FALSE, TRUE);
  pEditor->pWork->pScroll->pUp_Left_Button->size.w = adj_size(122);
  pEditor->pWork->pScroll->pDown_Right_Button->size.w = adj_size(122);
  
  /* count: without production */
  if(count <= pEditor->pWork->pScroll->active + 1) {
    if(count > 0) {
      struct widget *pTmp = pLast;
      do {
        pTmp = pTmp->prev;
        clear_wflag(pTmp, WF_HIDDEN);
      } while (pTmp != pBuf);
    }
    hide_scrollbar(pEditor->pWork->pScroll);
  }
#endif
  
  pEditor->pWork->pScroll->count += count;
  pLast = pEditor->pWork->pBeginWidgetList;
  
  /* --------------------------- */
  /* global worklists */
  if(pCity) {
    count = 0;
    for (i = 0; i < MAX_NUM_WORKLISTS; i++) {
      if (client.worklists[i].is_valid) {
        pBuf = create_iconlabel_from_chars(NULL, pWindow->dst, 
      		client.worklists[i].name, adj_font(10),
					      WF_RESTORE_BACKGROUND);
        set_wstate(pBuf, FC_WS_NORMAL);
        add_to_gui_list(MAX_ID - i, pBuf);
        pBuf->string16->style |= SF_CENTER;
        pBuf->action = global_worklist_callback;
        pBuf->string16->fgcol = bg_color;
	
        count++;
    
        if(count>4) {
	  set_wflag(pBuf, WF_HIDDEN);
        }
      }
    }
    if(count) {
      pEditor->pGlobal = fc_calloc(1, sizeof(struct ADVANCED_DLG));
      pEditor->pGlobal->pEndWidgetList = pLast->prev;
      pEditor->pGlobal->pEndActiveWidgetList = pEditor->pGlobal->pEndWidgetList;
      pEditor->pGlobal->pBeginWidgetList = pBuf;
      pEditor->pGlobal->pBeginActiveWidgetList = pEditor->pGlobal->pBeginWidgetList;
    
      if(count > 6) {
        pEditor->pGlobal->pActiveWidgetList = pEditor->pGlobal->pEndActiveWidgetList;

        create_vertical_scrollbar(pEditor->pGlobal, 1,
                             pEditor->pGlobal->pScroll->active, FALSE, TRUE);
	pEditor->pGlobal->pScroll->pUp_Left_Button->size.w = adj_size(122);
	pEditor->pGlobal->pScroll->pDown_Right_Button->size.w = adj_size(122);
      } else {
	struct widget *pTmp = pLast;
	do {
	  pTmp = pTmp->prev;
	  clear_wflag(pTmp, WF_HIDDEN);
	} while (pTmp != pBuf);	  
      }
    
      pLast = pEditor->pGlobal->pBeginWidgetList;
    }
  }
  /* ----------------------------- */
  count = 0;
  /* Targets units and imprv. to build */
  pStr = create_string16(NULL, 0, adj_font(10));
  pStr->style |= (SF_CENTER|TTF_STYLE_BOLD);
  pStr->bgcol = (SDL_Color) {0, 0, 0, 0};
    
  improvement_iterate(pImprove) {
    can_build = can_player_build_improvement_now(client.playing, pImprove);
    can_eventually_build =
	can_player_build_improvement_later(client.playing, pImprove);
    
    /* If there's a city, can the city build the improvement? */
    if (pCity) {
      can_build = can_build && can_city_build_improvement_now(pCity, pImprove);
      can_eventually_build = can_eventually_build &&
	  can_city_build_improvement_later(pCity, pImprove);
    }
    
    if ((advanced_tech && can_eventually_build) ||
	(!advanced_tech && can_build)) {

      pIcon = crop_rect_from_surface(pMain, NULL);
      
      my_snprintf(cBuf, sizeof(cBuf), "%s", improvement_name_translation(pImprove));
      copy_chars_to_string16(pStr, cBuf);
      pStr->style |= TTF_STYLE_BOLD;
      pText_Name = create_text_surf_smaller_that_w(pStr, pIcon->w - 4);
  
      if (is_wonder(pImprove)) {
        if (improvement_obsolete(client.playing, pImprove)) {
          state = _("Obsolete");
        } else {
          if ((is_great_wonder(pImprove) && game.info.great_wonders[improvement_index(pImprove)] != 0) || 
              (is_small_wonder(pImprove) && client.playing->small_wonders[improvement_index(pImprove)] != 0)) {
	    state = _("Built");
          } else {
	    state = _("Wonder");
          }
        }
      } else {
        state = NULL;
      }
  
      if(pCity) {
        if(!improvement_has_flag(pImprove, IF_GOLD)) {
          turns = city_turns_to_build(pCity, cid_production(cid_encode_building(pImprove)), TRUE);
            
          if (turns == FC_INFINITY) {
	    if(state) {
              my_snprintf(cBuf, sizeof(cBuf), _("(%s)\n%d/%d %s\n%s"),
			  state, pCity->shield_stock,
			  impr_build_shield_cost(pImprove),
			  PL_("shield", "shields",
			      impr_build_shield_cost(pImprove)),
			  _("never"));
	    } else {
	      my_snprintf(cBuf, sizeof(cBuf), _("%d/%d %s\n%s"),
			  pCity->shield_stock, impr_build_shield_cost(pImprove),
			  PL_("shield","shields",
			      impr_build_shield_cost(pImprove)), _("never"));
	    }	  
          } else {
            if (state) {
	      my_snprintf(cBuf, sizeof(cBuf), _("(%s)\n%d/%d %s\n%d %s"),
			  state, pCity->shield_stock,
			  impr_build_shield_cost(pImprove),
			  PL_("shield","shields",
			      impr_build_shield_cost(pImprove)),
			  turns, PL_("turn", "turns", turns));
            } else {
	      my_snprintf(cBuf, sizeof(cBuf), _("%d/%d %s\n%d %s"),
			  pCity->shield_stock, impr_build_shield_cost(pImprove),
			  PL_("shield","shields",
			      impr_build_shield_cost(pImprove)),
			  turns, PL_("turn", "turns", turns));
            }
          }
        } else {
          /* capitalization */
          my_snprintf(cBuf, sizeof(cBuf), _("%d gold per turn"),
		    MAX(0, pCity->surplus[O_SHIELD]));
        }
      } else {
        /* non city mode */
        if(!improvement_has_flag(pImprove, IF_GOLD)) {
          if(state) {
            my_snprintf(cBuf, sizeof(cBuf), _("(%s)\n%d %s"),
			state, impr_build_shield_cost(pImprove),
			PL_("shield","shields",
			    impr_build_shield_cost(pImprove)));
          } else {
	    my_snprintf(cBuf, sizeof(cBuf), _("%d %s"),
			impr_build_shield_cost(pImprove),
			PL_("shield","shields",
			    impr_build_shield_cost(pImprove)));
          }
        } else {
          my_snprintf(cBuf, sizeof(cBuf), _("shields into gold"));
        }
      }
  
      copy_chars_to_string16(pStr, cBuf);
      pStr->style &= ~TTF_STYLE_BOLD;
  
      pText = create_text_surf_from_str16(pStr);

      /*-----------------*/
      
      pZoom = get_building_surface(pImprove);
      pZoom = zoomSurface(pZoom, DEFAULT_ZOOM * ((float)54 / pZoom->w), DEFAULT_ZOOM * ((float)54 / pZoom->w), 1);
      dst.x = (pIcon->w - pZoom->w)/2;
      dst.y = (pIcon->h/2 - pZoom->h)/2;
      alphablit(pZoom, NULL, pIcon, &dst);
      dst.y += pZoom->h;
      FREESURFACE(pZoom);
  
      dst.x = (pIcon->w - pText_Name->w)/2;
      dst.y += ((pIcon->h - dst.y) - (pText_Name->h + pText->h))/2;
      alphablit(pText_Name, NULL, pIcon, &dst);

      dst.x = (pIcon->w - pText->w)/2;
      dst.y += pText_Name->h;
      alphablit(pText, NULL, pIcon, &dst);
  
      FREESURFACE(pText);
      FREESURFACE(pText_Name);
            
      pBuf = create_icon2(pIcon, pWindow->dst,
    				WF_RESTORE_BACKGROUND|WF_FREE_THEME);
      set_wstate(pBuf, FC_WS_NORMAL);
    
      widget_w = MAX(widget_w, pBuf->size.w);
      widget_h = MAX(widget_h, pBuf->size.h);
    
      pBuf->data.city = pCity;
      add_to_gui_list(MAX_ID - improvement_number(pImprove), pBuf);
      pBuf->action = worklist_editor_targets_callback;
      
      if(count > (TARGETS_ROW * TARGETS_COL - 1)) {
        set_wflag(pBuf, WF_HIDDEN);
      }
      count++;
    }
  } improvement_iterate_end;
  
  /* ------------------------------ */
  
  unit_type_iterate(un) {
    can_build = can_player_build_unit_now(client.playing, un);
    can_eventually_build =
	can_player_build_unit_later(client.playing, un);

    /* If there's a city, can the city build the unit? */
    if (pCity) {
      can_build = can_build && can_city_build_unit_now(pCity, un);
      can_eventually_build = can_eventually_build &&
	  		can_city_build_unit_later(pCity, un);
    }

    if ((advanced_tech && can_eventually_build) ||
	(!advanced_tech && can_build)) {
	  
      pUnit = un;
	
      pIcon = crop_rect_from_surface(pMain, NULL);
      
      my_snprintf(cBuf, sizeof(cBuf), "%s", utype_name_translation(un));
  
      copy_chars_to_string16(pStr, cBuf);
      pStr->style |= TTF_STYLE_BOLD;
      pText_Name = create_text_surf_smaller_that_w(pStr, pIcon->w - 4);
  
      if (pCity) {
        turns = city_turns_to_build(pCity, cid_production(cid_encode_unit(un)), TRUE);
        if (turns == FC_INFINITY) {
          my_snprintf(cBuf, sizeof(cBuf),
		    _("(%d/%d/%d)\n%d/%d %s\nnever"),
		    pUnit->attack_strength,
		    pUnit->defense_strength, pUnit->move_rate / SINGLE_MOVE,
		    pCity->shield_stock, utype_build_shield_cost(un),
	  	    PL_("shield","shields", utype_build_shield_cost(un)));
        } else {
          my_snprintf(cBuf, sizeof(cBuf),
		    _("(%d/%d/%d)\n%d/%d %s\n%d %s"),
		    pUnit->attack_strength,
		    pUnit->defense_strength, pUnit->move_rate / SINGLE_MOVE,
		    pCity->shield_stock, utype_build_shield_cost(un), 
	  	    PL_("shield","shields", utype_build_shield_cost(un)),
		    turns, PL_("turn", "turns", turns));
        }
      } else {
        my_snprintf(cBuf, sizeof(cBuf),
		    _("(%d/%d/%d)\n%d %s"),
		    pUnit->attack_strength,
		    pUnit->defense_strength, pUnit->move_rate / SINGLE_MOVE,
		    utype_build_shield_cost(un),
		    PL_("shield","shields", utype_build_shield_cost(un)));
      }

      copy_chars_to_string16(pStr, cBuf);
      pStr->style &= ~TTF_STYLE_BOLD;
  
      pText = create_text_surf_from_str16(pStr);
  
      pZoom = adj_surf(get_unittype_surface(un));
      dst.x = (pIcon->w - pZoom->w)/2;
      dst.y = (pIcon->h/2 - pZoom->h)/2;
      alphablit(pZoom, NULL, pIcon, &dst);
      FREESURFACE(pZoom);
  
      dst.x = (pIcon->w - pText_Name->w)/2;
      dst.y = pIcon->h/2 + (pIcon->h/2 - (pText_Name->h + pText->h))/2;
      alphablit(pText_Name, NULL, pIcon, &dst);

      dst.x = (pIcon->w - pText->w)/2;
      dst.y += pText_Name->h;
      alphablit(pText, NULL, pIcon, &dst);
  
      FREESURFACE(pText);
      FREESURFACE(pText_Name);
      
      pBuf = create_icon2(pIcon, pWindow->dst,
    				WF_RESTORE_BACKGROUND|WF_FREE_THEME);
      set_wstate(pBuf, FC_WS_NORMAL);
    
      widget_w = MAX(widget_w, pBuf->size.w);
      widget_h = MAX(widget_h, pBuf->size.h);
    
      pBuf->data.city = pCity;
      add_to_gui_list(MAX_ID - cid_encode_unit(un), pBuf);
      pBuf->action = worklist_editor_targets_callback;
      
      if(count > (TARGETS_ROW * TARGETS_COL - 1)) {
        set_wflag(pBuf, WF_HIDDEN);
      }
      count++;
      
    }
  } unit_type_iterate_end;
  
  pEditor->pTargets = fc_calloc(1, sizeof(struct ADVANCED_DLG));
  
  pEditor->pTargets->pEndWidgetList = pLast->prev;
  pEditor->pTargets->pBeginWidgetList = pBuf;
  pEditor->pTargets->pEndActiveWidgetList = pEditor->pTargets->pEndWidgetList;
  pEditor->pTargets->pBeginActiveWidgetList = pEditor->pTargets->pBeginWidgetList;
  pEditor->pTargets->pActiveWidgetList = pEditor->pTargets->pEndActiveWidgetList;
    
  /* --------------- */
  if(count > (TARGETS_ROW * TARGETS_COL - 1)) {
    count = create_vertical_scrollbar(pEditor->pTargets,
		    		TARGETS_COL, TARGETS_ROW, TRUE, TRUE);
  } else {
    count = 0;
  }
  /* --------------- */
    
  pEditor->pBeginWidgetList = pEditor->pTargets->pBeginWidgetList;
  
  /* Window */
  area.w = MAX(area.w, widget_w * TARGETS_COL + count + adj_size(130));
  area.h = MAX(area.h, widget_h * TARGETS_ROW);
  
  pIcon = theme_get_background(theme, BACKGROUND_WLDLG);
  if(resize_window(pWindow, pIcon, NULL,
                   (pWindow->size.w - pWindow->area.w) + area.w,
                   (pWindow->size.h - pWindow->area.h) + area.h)) {
    FREESURFACE(pIcon);
  }
  
  area = pWindow->area;
  
  /* Backgrounds */
  dst.x = area.x;
  dst.y = area.y;
  dst.w = adj_size(130);
  dst.h = adj_size(145);
  
  SDL_FillRect(pWindow->theme, &dst,
    map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_BACKGROUND)));
  putframe(pWindow->theme, dst.x, dst.y, dst.x + dst.w - 1, dst.y + dst.h - 1,
     map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
  putframe(pWindow->theme, dst.x + 2, dst.y + 2, dst.x + dst.w - 3, dst.y + dst.h - 3,
     map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
  
  dst.x = area.x;
  dst.y += dst.h + adj_size(2);
  dst.w = adj_size(130);
  dst.h = adj_size(228);
  SDL_FillRectAlpha(pWindow->theme, &dst, &bg_color2);
  putframe(pWindow->theme, dst.x, dst.y, dst.x + dst.w - 1, dst.y + dst.h - 1,
     map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
  
  if(pEditor->pGlobal) {
    dst.x = area.x;
    dst.y += dst.h + adj_size(2);
    dst.w = adj_size(130);
    dst.h = pWindow->size.h - dst.y - adj_size(4);

    SDL_FillRect(pWindow->theme, &dst,
      map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_BACKGROUND)));
    putframe(pWindow->theme, dst.x, dst.y, dst.x + dst.w - 1, dst.y + dst.h - 1,
      map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
    putframe(pWindow->theme, dst.x + adj_size(2), dst.y + adj_size(2),
      dst.x + dst.w - adj_size(3), dst.y + dst.h - adj_size(3),
      map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
  }

  widget_set_position(pWindow,
                      (Main.screen->w - pWindow->size.w) / 2,
                      (Main.screen->h - pWindow->size.h) / 2);
  
  /* name */
  pBuf = pWindow->prev;
  pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
  pBuf->size.y = area.y + adj_size(4);
  
  /* size of worklist (without production) */
  pBuf = pBuf->prev;
  pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
  pBuf->size.y = pBuf->next->size.y + pBuf->next->size.h;
  
  if(pCity) {
    /* current build and proggrse bar */
    pBuf = pBuf->prev;
    pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
    pBuf->size.y = pBuf->next->size.y + pBuf->next->size.h + adj_size(5);
    
    pBuf = pBuf->prev;
    pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
    pBuf->size.y = pBuf->next->size.y + pBuf->next->size.h;
  } else {
    /* rename worklist */
    pBuf = pBuf->prev;
    pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
    pBuf->size.y = area.y + 1 + (adj_size(145) - pBuf->size.h)/2;
  }
  
  /* ok button */
  pBuf = pBuf->prev;
  pBuf->size.x = area.x + (adj_size(65) - pBuf->size.w)/2;
  pBuf->size.y = area.y + adj_size(135) - pBuf->size.h;
  
  /* exit button */
  pBuf = pBuf->prev;
  pBuf->size.x = area.x + adj_size(65) + (adj_size(65) - pBuf->size.w)/2;
  pBuf->size.y = area.y + adj_size(135) - pBuf->size.h;
  
  /* worklist */
  /* pEditor->pWork->pScroll->count: including production */
  if(pCity || (worklist_length(pWorkList) > 0)) {
    /* FIXME */
    setup_vertical_widgets_position(1,
      area.x + adj_size(2), area.y + adj_size(152)/* +
	((pEditor->pWork->pScroll->count > pEditor->pWork->pScroll->active + 2) ?
	    pEditor->pWork->pScroll->pUp_Left_Button->size.h + 1 : 0)*/,
	adj_size(126), 0, pEditor->pWork->pBeginWidgetList,
		  pEditor->pWork->pEndWidgetList);

    setup_vertical_scrollbar_area(pEditor->pWork->pScroll,
	area.x + adj_size(2),
    	area.y + adj_size(152),
    	adj_size(225), FALSE);
  }
  
  /* global worklists */
  if(pEditor->pGlobal) {
    setup_vertical_widgets_position(1,
      area.x + adj_size(4),
      area.y + adj_size(384) +
	(pEditor->pGlobal->pScroll ?
	    pEditor->pGlobal->pScroll->pUp_Left_Button->size.h + 1 : 0),
		adj_size(122), 0, pEditor->pGlobal->pBeginWidgetList,
		  	pEditor->pGlobal->pEndWidgetList);
    
    if(pEditor->pGlobal->pScroll) {
      setup_vertical_scrollbar_area(pEditor->pGlobal->pScroll,
	area.x + adj_size(4),
    	area.y + adj_size(384),
    	adj_size(93), FALSE);
    }
    
  }
  
  /* Targets */  
  setup_vertical_widgets_position(TARGETS_COL,
	area.x + adj_size(130), area.y,
	  0, 0, pEditor->pTargets->pBeginWidgetList,
			  pEditor->pTargets->pEndWidgetList);
    
  if(pEditor->pTargets->pScroll) {
    setup_vertical_scrollbar_area(pEditor->pTargets->pScroll,
	area.x + area.w,
    	area.y + 1,
    	area.h - 1, TRUE);
    
  }
    
  /* ----------------------------------- */
  FREESTRING16(pStr);
  FREESURFACE(pMain);
  
  redraw_group(pEditor->pBeginWidgetList, pWindow, 0);
  widget_flush(pWindow);
}
  
void popdown_worklist_editor(void)
{
  if(pEditor) {
    popdown_window_group_dialog(pEditor->pBeginWidgetList,
                                            pEditor->pEndWidgetList);
    FC_FREE(pEditor->pTargets->pScroll);
    FC_FREE(pEditor->pTargets);
    
    FC_FREE(pEditor->pWork->pScroll);
    FC_FREE(pEditor->pWork);
    
    if(pEditor->pGlobal) {
      FC_FREE(pEditor->pGlobal->pScroll);
      FC_FREE(pEditor->pGlobal);
    }

    FC_FREE(pEditor->pCopy_WorkList);
        
    if(city_dialog_is_open(pEditor->pCity)) {
      enable_city_dlg_widgets();
    }
  
    FC_FREE(pEditor);
    
    flush_dirty();
  }
}
ENDREP
id: vl.5bk.r14417/211757
type: file
pred: vl.5bk.r14416/99686
count: 365
text: 14417 119583 40 172489 36ee52a3e5ca7b607a0acc81d4de2542
props: 11092 74 112 0 de3988801a325e2d7d51fcbc7209a255
cpath: /branches/S2_2/server/savegame.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 23
file 5q.5bk.r14375/3037
K 9
airgoto.c
V 22
file 160.0.r12750/6124
K 9
airgoto.h
V 22
file 161.0.r12750/6355
K 6
auth.c
V 27
file 39c.5bk.r14370/4379841
K 6
auth.h
V 23
file 39d.0.r13513/10535
K 11
barbarian.c
V 24
file lw.5bk.r14243/35666
K 11
barbarian.h
V 21
file lx.0.r13220/1454
K 10
cityhand.c
V 24
file 10.5bk.r14416/95356
K 10
cityhand.h
V 23
file 4f.0.r13297/423686
K 11
citytools.c
V 24
file 4g.5bk.r14416/97326
K 11
citytools.h
V 24
file 4h.5bk.r14416/97586
K 10
cityturn.c
V 24
file 4i.5bk.r14416/98368
K 10
cityturn.h
V 24
file 4j.5bk.r14395/28361
K 11
civserver.c
V 26
file 4k.5bk.r14377/2261979
K 11
civserver.h
V 21
file 4l.0.r2805/33121
K 10
commands.c
V 25
file 2ly.5bk.r14369/10576
K 10
commands.h
V 25
file 2lz.5bk.r14369/10836
K 13
connecthand.c
V 25
file 2dw.5bk.r14223/26087
K 13
connecthand.h
V 23
file 2dx.0.r11356/12433
K 9
console.c
V 24
file dd.5bk.r14391/15165
K 9
console.h
V 21
file de.0.r11697/6876
K 10
diplhand.c
V 24
file 4m.5bk.r14416/98892
K 10
diplhand.h
V 21
file 4n.0.r13421/6826
K 11
diplomats.c
V 24
file vz.5bk.r14243/36191
K 11
diplomats.h
V 24
file w0.5bk.r13745/13943
K 10
edithand.c
V 25
file 3bk.5bk.r14130/15679
K 10
gamehand.c
V 24
file 4o.5bk.r14387/18293
K 10
gamehand.h
V 23
file 4p.5bk.r14150/6990
K 9
generator
V 24
dir 2me.5bk.r14416/96541
K 11
ggzserver.c
V 23
file 39a.0.r12670/12494
K 11
ggzserver.h
V 23
file 39b.0.r12670/13043
K 10
gotohand.c
V 25
file 11.5bk.r14209/140236
K 10
gotohand.h
V 25
file 7r.5bk.r13949/118759
K 10
handchat.c
V 25
file 4q.5bk.r14209/140502
K 10
handchat.h
V 22
file dj.0.r7100/189089
K 9
maphand.c
V 24
file 13.5bk.r14416/98631
K 9
maphand.h
V 24
file 14.5bk.r14054/29096
K 6
meta.c
V 22
file 4s.5bk.r14413/399
K 6
meta.h
V 26
file 4t.5bk.r14377/2262509
K 9
plrhand.c
V 24
file 4u.5bk.r14416/99948
K 9
plrhand.h
V 24
file 4v.5bk.r14268/15176
K 8
report.c
V 24
file vi.5bk.r14387/18034
K 8
report.h
V 21
file vj.0.r10414/9434
K 9
ruleset.c
V 24
file 8w.5bk.r14391/16839
K 9
ruleset.h
V 23
file 8x.5bk.r14150/6476
K 13
sanitycheck.c
V 24
file wi.5bk.r14416/99420
K 13
sanitycheck.h
V 24
file wj.5bk.r14268/14660
K 10
savegame.c
V 25
file vl.5bk.r14417/211757
K 10
savegame.h
V 21
file vm.0.r10073/2584
K 7
score.c
V 25
file 2eg.5bk.r14416/96801
K 7
score.h
V 22
file 2eh.0.r11430/3487
K 9
scripting
V 24
dir 31x.5bk.r14391/16582
K 8
sernet.c
V 26
file 15.5bk.r14377/2262765
K 8
sernet.h
V 25
file 4y.5bk.r14121/186939
K 10
settings.c
V 23
file 2m0.5bk.r14413/143
K 10
settings.h
V 24
file 2m1.5bk.r14154/9422
K 10
settlers.c
V 24
file 7s.5bk.r14416/97846
K 10
settlers.h
V 24
file 7t.5bk.r14416/98109
K 11
spacerace.c
V 25
file 9a.5bk.r14209/143395
K 11
spacerace.h
V 21
file 9b.0.r11338/1129
K 10
srv_main.c
V 24
file vg.5bk.r14416/97062
K 10
srv_main.h
V 24
file vh.5bk.r14387/17773
K 11
stdinhand.c
V 24
file 4z.5bk.r14391/17102
K 11
stdinhand.h
V 21
file 50.0.r12637/7365
K 11
techtools.c
V 26
file 33n.5bk.r14209/145233
K 11
techtools.h
V 22
file 33o.0.r11130/1173
K 10
unithand.c
V 24
file 18.5bk.r14247/14074
K 10
unithand.h
V 24
file 19.5bk.r14247/14333
K 11
unittools.c
V 24
file 1a.5bk.r14416/99156
K 11
unittools.h
V 24
file 1b.5bk.r14247/13815
END
ENDREP
id: z.5bk.r14417/215200
type: dir
pred: z.5bk.r14416/103390
count: 3427
text: 14417 212019 3168 3168 7065a8fb544000d607bc0b42f7d606dc
props: 13932 1834 123 0 2b883b78ac685994a9940e39e0d24770
cpath: /branches/S2_2/server
copyroot: 13570 /branches/S2_2

id: 2ys.5bk.r14417/215452
type: file
pred: 2ys.5bk.r14416/105558
count: 34
text: 14417 152398 348 22374 913d27b00cca9b059cf199b5e5ad8eb8
props: 10854 444 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /branches/S2_2/common/tile.c
copyroot: 13570 /branches/S2_2

id: 2ll.5bk.r14417/215713
type: file
pred: 2ll.5bk.r14387/23803
count: 53
text: 14417 50845 20 8156 59a3a8ab19abac545bd0235c6da0263a
props: 10836 12026 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /branches/S2_2/common/fc_types.h
copyroot: 13570 /branches/S2_2

id: 45.5bk.r14417/215976
type: file
pred: 45.5bk.r14416/106075
count: 218
text: 14417 57761 185 36363 0b191afd0dc3066414faff5413776b53
props: 11057 32005 112 0 5a3876431ad0faf061b096a2484d7aad
cpath: /branches/S2_2/common/player.c
copyroot: 13570 /branches/S2_2

id: 3u.5bk.r14417/216239
type: file
pred: 3u.5bk.r14416/106336
count: 284
text: 14417 65362 1997 21335 94260b92c1f9e0e0d7cfcb6b99f0f3f4
props: 11041 20516 112 0 779057fa36f350a13e5c75663a7074d1
cpath: /branches/S2_2/common/game.c
copyroot: 13570 /branches/S2_2

id: 3v.5bk.r14417/216501
type: file
pred: 3v.5bk.r14387/24325
count: 221
text: 14417 71893 20 10746 6b4b04a6c79aeadeb4675e2ad2c603d2
props: 11057 32714 112 0 2cf57fb6d11b8ba51814c6d419f0189e
cpath: /branches/S2_2/common/game.h
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 25
file 5h.5bk.r13949/133855
K 6
aicore
V 25
dir 18t.5bk.r14416/105298
K 6
base.c
V 26
file 3jw.5bk.r13949/126871
K 6
base.h
V 23
file 3jx.0.r13193/15954
K 8
capstr.c
V 21
file dv.0.r12017/6110
K 8
capstr.h
V 21
file dw.0.r1356/11833
K 6
city.c
V 24
file q.5bk.r14416/103640
K 6
city.h
V 25
file 3q.5bk.r14416/103899
K 8
combat.c
V 24
file wp.5bk.r14204/23737
K 8
combat.h
V 21
file wq.0.r12783/4096
K 12
connection.c
V 26
file un.5bk.r14370/4395651
K 12
connection.h
V 21
file uo.0.r11775/7278
K 8
dataio.c
V 27
file 15r.5bk.r14370/4393984
K 8
dataio.h
V 23
file 15s.0.r10480/10050
K 11
diptreaty.c
V 25
file 3r.5bk.r14209/150237
K 11
diptreaty.h
V 20
file 3s.0.r9582/5141
K 9
effects.c
V 25
file 2eo.5bk.r14134/23282
K 9
effects.h
V 25
file 2ep.5bk.r13589/11595
K 8
events.c
V 25
file 33h.5bk.r14391/23146
K 8
events.h
V 24
file 3t.5bk.r14391/23404
K 10
fc_types.h
V 26
file 2ll.5bk.r14417/215713
K 6
game.c
V 25
file 3u.5bk.r14417/216239
K 6
game.h
V 25
file 3v.5bk.r14417/216501
K 19
generate_packets.py
V 27
file 2f4.5bk.r14370/4395382
K 12
government.c
V 22
file he.0.r13247/25540
K 12
government.h
V 22
file hf.0.r13136/24006
K 6
idex.c
V 25
file qo.5bk.r14209/153709
K 6
idex.h
V 21
file qp.0.r8119/15235
K 13
improvement.c
V 23
file vb.0.r13297/433063
K 13
improvement.h
V 23
file vc.0.r13297/433301
K 5
map.c
V 23
file r.5bk.r14054/35594
K 5
map.h
V 25
file 41.5bk.r13949/133329
K 10
movement.c
V 26
file 2xv.5bk.r13949/130360
K 10
movement.h
V 21
file 2xw.0.r12837/901
K 8
nation.c
V 24
file il.5bk.r14268/19620
K 8
nation.h
V 25
file im.5bk.r14209/153965
K 9
packets.c
V 26
file 43.5bk.r14370/4395918
K 11
packets.def
V 25
file 2f5.5bk.r14223/31862
K 9
packets.h
V 24
file 44.5bk.r14142/93896
K 8
player.c
V 25
file 45.5bk.r14417/215976
K 8
player.h
V 24
file 46.5bk.r14223/32389
K 14
requirements.c
V 25
file 2wq.5bk.r14258/13106
K 14
requirements.h
V 25
file 2wr.5bk.r13589/12119
K 11
spaceship.c
V 20
file 98.0.r9977/2632
K 11
spaceship.h
V 20
file 99.0.r9977/2979
K 12
specialist.c
V 23
file 33f.0.r13169/67171
K 12
specialist.h
V 23
file 33g.0.r13169/67406
K 6
team.c
V 25
file 33i.5bk.r14258/12852
K 6
team.h
V 23
file 33j.0.r13136/23073
K 6
tech.c
V 23
file t.5bk.r14258/12598
K 6
tech.h
V 22
file u.0.r13297/434239
K 9
terrain.c
V 25
file 2fp.5bk.r14054/34288
K 9
terrain.h
V 25
file qs.5bk.r13949/131412
K 6
tile.c
V 26
file 2ys.5bk.r14417/215452
K 6
tile.h
V 26
file 2yt.5bk.r14416/105817
K 6
unit.c
V 23
file v.5bk.r14387/22774
K 6
unit.h
V 24
file 48.5bk.r14387/23030
K 10
unitlist.c
V 24
file 39m.0.r13133/225391
K 10
unitlist.h
V 25
file 39n.5bk.r13907/18848
K 10
unittype.c
V 23
file v9.0.r13297/433764
K 10
unittype.h
V 23
file va.0.r13297/434002
K 9
version.c
V 26
file oe.5bk.r14377/2278985
K 9
version.h
V 21
file e7.0.r13518/7887
K 8
vision.c
V 25
file 4dm.5bk.r14393/20781
K 8
vision.h
V 25
file 4dn.5bk.r14404/10499
K 10
worklist.c
V 23
file o8.0.r13297/437651
K 10
worklist.h
V 23
file o9.0.r13297/438357
END
ENDREP
id: p.5bk.r14417/219736
type: dir
pred: p.5bk.r14416/109570
count: 2408
text: 14417 216760 2963 2963 2d29a085b7510dedcf4339aac869d2f9
props: 12883 2571 96 0 2763e13ff5d021346ae24ff6c9ced232
cpath: /branches/S2_2/common
copyroot: 13570 /branches/S2_2

id: 2m5.5bk.r14417/219987
type: file
pred: 2m5.5bk.r14377/2285041
count: 37
text: 14417 77751 41 13240 e94df5f85bfae40ad4c20badaf04e754
props: 10836 16751 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /branches/S2_2/manual/civmanual.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 24
file 2m4.5bk.r14375/6728
K 11
civmanual.c
V 26
file 2m5.5bk.r14417/219987
END
ENDREP
id: 2m2.5bk.r14417/220367
type: dir
pred: 2m2.5bk.r14377/2285424
count: 50
text: 14417 220254 100 100 d27b7dc1c73c8a4a6d38c9b574c8c2bc
props: 8143 8148 62 0 2b9cf7a0db52b94110accde14413565f
cpath: /branches/S2_2/manual
copyroot: 13570 /branches/S2_2

id: zj.5bk.r14417/220618
type: file
pred: zj.5bk.r14416/112378
count: 85
text: 14417 71940 58 19861 618f56dc3b243f8d5e05dbdba69510eb
props: 11025 295 111 0 995497afc7013c9f20b8d3ebef449f37
cpath: /branches/S2_2/client/agents/cma_core.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 24
file zg.5bk.r13603/20967
K 8
agents.c
V 26
file zh.5bk.r14370/4402481
K 8
agents.h
V 22
file zi.0.r8387/119237
K 10
cma_core.c
V 25
file zj.5bk.r14417/220618
K 10
cma_core.h
V 20
file zk.0.r8132/2370
K 9
cma_fec.c
V 25
file zl.5bk.r14142/102578
K 9
cma_fec.h
V 20
file zm.0.r8132/1669
K 5
sha.c
V 25
file 2fy.5bk.r14268/23077
K 5
sha.h
V 23
file 2fz.0.r9577/101433
END
ENDREP
id: zf.5bk.r14417/221290
type: dir
pred: zf.5bk.r14416/113052
count: 142
text: 14417 220886 391 391 af32a085c6ffc24e63f436063fee43e9
props: 11108 11608 65 0 c67827893bff2f279fa7f0439c4cba47
cpath: /branches/S2_2/client/agents
copyroot: 13570 /branches/S2_2

id: 2ym.5bk.r14417/221548
type: file
pred: 2ym.5bk.r14068/239
count: 27
text: 14417 57976 1110 35222 a89fa12ebaf1e66b22b10f21f3d1ba58
props: 11057 36702 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /branches/S2_2/client/reqtree.c
copyroot: 13570 /branches/S2_2

id: z4.5bk.r14417/221811
type: file
pred: z4.5bk.r14258/16572
count: 105
text: 14417 117255 100 31019 99fe023e4973f57fc5ecfe677be8c5da
props: 11067 4204 111 0 32cf26490c5995022c752556481ff094
cpath: /branches/S2_2/client/citydlg_common.c
copyroot: 13570 /branches/S2_2

id: 2yk.5bk.r14417/222081
type: file
pred: 2yk.5bk.r14142/104041
count: 22
text: 14417 62222 176 15995 8fb0720896b88ae461560156f08d62ce
props: 11057 37417 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /branches/S2_2/client/overview_common.c
copyroot: 13570 /branches/S2_2

id: gz.5bk.r14417/222354
type: file
pred: gz.5bk.r14142/104313
count: 227
text: 14417 62427 913 90455 28a7fd2f73c7483fedb9575d83a8bd1c
props: 11088 7720 112 0 89a05fc93c37a832d4b63085dac12c4b
cpath: /branches/S2_2/client/control.c
copyroot: 13570 /branches/S2_2

id: zy.5bk.r14417/222617
type: file
pred: zy.5bk.r14355/406
count: 162
text: 14417 131259 5014 93293 2c7ab3032cbf059815f92d5fc3aa82f2
props: 11072 618 112 0 0564c5503f2d15442a967c72794b21e8
cpath: /branches/S2_2/client/gui-gtk-2.0/citydlg.c
copyroot: 13570 /branches/S2_2

id: 10e.5bk.r14417/222890
type: file
pred: 10e.5bk.r14209/164858
count: 21
text: 14417 140686 45 7923 91a04ce8424ddddd5c83a2b2409c3b90
props: 10534 1625 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /branches/S2_2/client/gui-gtk-2.0/gotodlg.c
copyroot: 13570 /branches/S2_2

id: 10x.5bk.r14417/223165
type: file
pred: 10x.5bk.r14171/67726
count: 189
text: 14417 157146 264 25296 b745746d11a8c8209078deb166d4d0b3
props: 11084 1701 112 0 86d6a13b4b5d042ef40af0a2a7a26786
cpath: /branches/S2_2/client/gui-gtk-2.0/mapview.c
copyroot: 13570 /branches/S2_2

id: 118.5bk.r14417/223442
type: file
pred: 118.5bk.r14225/991
count: 119
text: 14417 88335 1340 53229 f7f8d51928b77bbf26c379687a1d42af
props: 11057 38502 111 0 89e24921275908e1dbda216a065c4859
cpath: /branches/S2_2/client/gui-gtk-2.0/repodlgs.c
copyroot: 13570 /branches/S2_2

id: 10k.5bk.r14417/223719
type: file
pred: 10k.5bk.r14377/2287146
count: 185
text: 14417 113704 137 60837 d7162d214aa579884fb4518df8888717
props: 11057 38870 112 0 ec3aa248409009be6c82cab2c7e95ef5
cpath: /branches/S2_2/client/gui-gtk-2.0/gui_main.c
copyroot: 13570 /branches/S2_2

id: 2pi.5bk.r14417/224000
type: file
pred: 2pi.5bk.r14223/38909
count: 66
text: 14417 52953 373 82060 612b70797bef3fd0e783bf01c4f3118e
props: 11100 16432 111 0 622f1432038f91cce287c1d90e4f7964
cpath: /branches/S2_2/client/gui-gtk-2.0/pages.c
copyroot: 13570 /branches/S2_2

id: 10z.5bk.r14417/224274
type: file
pred: 10z.5bk.r14165/9664
count: 108
text: 14417 117384 1120 54282 866fc188ec846d0f36b7a68c55406e13
props: 11057 39977 111 0 05d0c9433d86d9823b0e8b2536eb2299
cpath: /branches/S2_2/client/gui-gtk-2.0/menu.c
copyroot: 13570 /branches/S2_2

id: 100.5bk.r14417/224549
type: file
pred: 100.5bk.r14101/5376
count: 90
text: 14417 65063 273 52159 b134e94ab798de6d0c3564aad7f819fd
props: 11057 40343 111 0 9323cb943074f1605bbe84192873bd2e
cpath: /branches/S2_2/client/gui-gtk-2.0/cityrep.c
copyroot: 13570 /branches/S2_2

id: 108.5bk.r14417/224824
type: file
pred: 108.5bk.r14209/166515
count: 144
text: 14417 67388 1923 42052 1bbc7691b97394c831867cefd26918ba
props: 11088 8070 112 0 858133ad234580a5fc7c24a791c3b702
cpath: /branches/S2_2/client/gui-gtk-2.0/dialogs.c
copyroot: 13570 /branches/S2_2

id: 36n.5bk.r14417/225102
type: file
pred: 36n.5bk.r14209/166790
count: 15
text: 14417 72167 294 25466 34ed226f1645aae8fb003b676a960d1c
props: 11088 8800 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /branches/S2_2/client/gui-gtk-2.0/diplomat_dialog.c
copyroot: 13570 /branches/S2_2

id: 10a.5bk.r14417/225386
type: file
pred: 10a.5bk.r14209/167073
count: 45
text: 14417 130834 394 29158 d3349034c86159a67f6aeec34e87f3d1
props: 11093 473 111 0 7a0697bf766451f41e947e71ce1310bc
cpath: /branches/S2_2/client/gui-gtk-2.0/diplodlg.c
copyroot: 13570 /branches/S2_2

id: 10u.5bk.r14417/225663
type: file
pred: 10u.5bk.r14258/16841
count: 32
text: 14417 142068 10300 12260 fa4c8d1b5b3de9075007dd05e816a40f
props: 11054 96 111 0 0b146d6d431c2ad00452618c43381276
cpath: /branches/S2_2/client/gui-gtk-2.0/inteldlg.c
copyroot: 13570 /branches/S2_2

id: 10q.5bk.r14417/225940
type: file
pred: 10q.5bk.r14387/30084
count: 83
text: 14417 87815 492 43661 9a5f3e1300a68f89e5158a82c566c236
props: 10865 34829 111 0 a3a3251698e05efa35962766e5c7e5c1
cpath: /branches/S2_2/client/gui-gtk-2.0/helpdlg.c
copyroot: 13570 /branches/S2_2

id: 115.5bk.r14417/226216
type: file
pred: 115.5bk.r14209/167896
count: 84
text: 14417 36154 836 27989 72e0db16d03752862960ce8ebd6b7f38
props: 11057 41078 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /branches/S2_2/client/gui-gtk-2.0/plrdlg.c
copyroot: 13570 /branches/S2_2

id: 11c.5bk.r14417/226492
type: file
pred: 11c.5bk.r14209/168170
count: 22
text: 14417 60628 139 8491 6f72a202ec27acd36f7fcff5250d5a83
props: 10731 5970 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /branches/S2_2/client/gui-gtk-2.0/spaceshipdlg.c
copyroot: 13570 /branches/S2_2

id: 11e.5bk.r14417/226772
type: file
pred: 11e.5bk.r13617/2081
count: 61
text: 14417 118773 85 41627 fca24f0c1fb61ec1fdb59a3fe31c741f
props: 11057 41445 111 0 9c2dbf68c7baabdec873d497eccc2dc6
cpath: /branches/S2_2/client/gui-gtk-2.0/wldlg.c
copyroot: 13570 /branches/S2_2

id: 10d.5bk.r14417/227045
type: file
pred: 10d.5bk.r14225/1263
count: 34
text: 14417 69883 811 17995 07e3211f6b422c42fdfae5e731aaef5d
props: 11057 41811 111 0 b4233197920770c602c29330b7f7c623
cpath: /branches/S2_2/client/gui-gtk-2.0/gamedlgs.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 24
file zu.5bk.r13603/21879
K 8
canvas.c
V 23
file 2y6.0.r10518/13194
K 8
canvas.h
V 23
file 2y7.0.r10096/14437
K 16
caravan_dialog.c
V 26
file 376.5bk.r14209/165685
K 10
chatline.c
V 22
file zw.0.r9577/108991
K 10
chatline.h
V 22
file zx.0.r9577/109355
K 15
choice_dialog.c
V 23
file 377.0.r13481/22903
K 15
choice_dialog.h
V 23
file 378.0.r12670/99360
K 9
citydlg.c
V 25
file zy.5bk.r14417/222617
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 26
file 100.5bk.r14417/224549
K 9
cityrep.h
V 22
file 101.0.r9098/11480
K 8
cma_fe.c
V 22
file 102.0.r11771/9226
K 8
cma_fe.h
V 23
file 103.0.r10181/13675
K 8
colors.c
V 22
file 104.0.r10458/4290
K 8
colors.h
V 22
file 105.0.r10458/4652
K 12
connectdlg.c
V 22
file 106.0.r10804/2737
K 12
connectdlg.h
V 21
file 107.0.r7580/6878
K 9
dialogs.c
V 26
file 108.5bk.r14417/224824
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 26
file 10a.5bk.r14417/225386
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 26
file 36n.5bk.r14417/225102
K 9
editdlg.c
V 26
file 3bi.5bk.r14209/166239
K 9
editdlg.h
V 23
file 3bj.0.r12670/98777
K 9
finddlg.c
V 26
file 10c.5bk.r14209/167623
K 9
finddlg.h
V 22
file 2d0.0.r5989/22356
K 10
gamedlgs.c
V 26
file 10d.5bk.r14417/227045
K 9
gotodlg.c
V 26
file 10e.5bk.r14417/222890
K 9
gotodlg.h
V 23
file 10f.0.r4313/263426
K 10
graphics.c
V 23
file 10g.0.r11337/79662
K 10
graphics.h
V 23
file 10h.0.r11337/80150
K 12
gtkpixcomm.c
V 22
file 10i.0.r10800/1239
K 12
gtkpixcomm.h
V 22
file 10j.0.r10800/1606
K 10
gui_main.c
V 26
file 10k.5bk.r14417/223719
K 10
gui_main.h
V 24
file 10l.5bk.r14165/9129
K 11
gui_stuff.c
V 23
file 10m.5bk.r14213/537
K 11
gui_stuff.h
V 22
file 10n.0.r11771/8983
K 11
happiness.c
V 24
file 10o.5bk.r14284/4172
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 26
file 10q.5bk.r14417/225940
K 9
helpdlg.h
V 23
file 10r.0.r4313/267882
K 10
inputdlg.c
V 20
file 10s.0.r8860/225
K 10
inputdlg.h
V 21
file 10t.0.r7580/3991
K 10
inteldlg.c
V 26
file 10u.5bk.r14417/225663
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 9
mapctrl.c
V 25
file 10v.5bk.r14157/10819
K 9
mapctrl.h
V 25
file 10w.5bk.r14157/11089
K 9
mapview.c
V 26
file 10x.5bk.r14417/223165
K 9
mapview.h
V 23
file 10y.0.r12881/17128
K 6
menu.c
V 26
file 10z.5bk.r14417/224274
K 6
menu.h
V 22
file 110.0.r4315/16581
K 12
messagedlg.c
V 23
file 111.0.r11771/10924
K 12
messagedlg.h
V 22
file 2d2.0.r5989/22693
K 12
messagewin.c
V 24
file 112.5bk.r14101/4833
K 12
messagewin.h
V 23
file 113.0.r10108/19424
K 11
optiondlg.h
V 23
file 114.0.r4313/264106
K 7
pages.c
V 26
file 2pi.5bk.r14417/224000
K 7
pages.h
V 22
file 2pj.0.r11863/8922
K 8
plrdlg.c
V 26
file 115.5bk.r14417/226216
K 8
plrdlg.h
V 22
file 116.0.r10803/7069
K 10
ratesdlg.h
V 22
file 2d3.0.r5989/22018
K 4
rc2c
V 23
file 117.0.r4313/274431
K 10
repodlgs.c
V 26
file 118.5bk.r14417/223442
K 10
repodlgs.h
V 21
file 119.0.r9098/9312
K 11
resources.c
V 23
file 11a.0.r5390/112550
K 11
resources.h
V 23
file 11b.0.r4313/267539
K 14
spaceshipdlg.c
V 26
file 11c.5bk.r14417/226492
K 14
spaceshipdlg.h
V 23
file 11d.0.r9577/110090
K 8
sprite.c
V 27
file 2y8.5bk.r14377/2286871
K 8
sprite.h
V 23
file 2y9.0.r10141/29270
K 11
theme_dlg.c
V 25
file 47d.5bk.r13968/60105
K 8
themes.c
V 23
file 34x.0.r13227/13852
K 13
tileset_dlg.c
V 25
file 45i.5bk.r13968/60424
K 7
wldlg.c
V 26
file 11e.5bk.r14417/226772
K 7
wldlg.h
V 21
file 11f.0.r7682/2202
END
ENDREP
id: zs.5bk.r14417/230759
type: dir
pred: zs.5bk.r14387/33779
count: 1048
text: 14417 227321 3425 3425 b01e214a075cf45129ad8ed8c2befc59
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /branches/S2_2/client/gui-gtk-2.0
copyroot: 13570 /branches/S2_2

id: 2g3.5bk.r14417/231024
type: file
pred: 2g3.5bk.r14416/113311
count: 85
text: 14417 126458 2907 43108 93144f90a02e2122f4194f1fae03f991
props: 11057 45424 111 0 93646be3752db5a3cd8e77177837d494
cpath: /branches/S2_2/client/text.c
copyroot: 13570 /branches/S2_2

id: 11i.5bk.r14417/231288
type: file
pred: 11i.5bk.r14162/21791
count: 43
text: 14417 71372 241 13141 5bbc093616dfdcf1b92b017711be68c7
props: 11057 45776 111 0 9b377c828b4ca1827963af8e19878787
cpath: /branches/S2_2/client/repodlgs_common.c
copyroot: 13570 /branches/S2_2

id: 9w.5bk.r14417/231560
type: file
pred: 9w.5bk.r14280/998
count: 157
text: 14417 77823 3598 78100 9bb6337a37d2575508d06d732f7705ba
props: 10820 1319 112 0 e0e21d00fa120c81b59fd1c92d742949
cpath: /branches/S2_2/client/gui-xaw/citydlg.c
copyroot: 13570 /branches/S2_2

id: ab.5bk.r14417/231829
type: file
pred: ab.5bk.r14209/172670
count: 32
text: 14417 81446 4535 10275 9f10cac389623897f06b2c4f9d5cd6cf
props: 10536 6353 111 0 eaeaff8c6ba56cfe19b921c33649c016
cpath: /branches/S2_2/client/gui-xaw/gotodlg.c
copyroot: 13570 /branches/S2_2

id: nt.5bk.r14417/232100
type: file
pred: nt.0.r13221/16529
count: 33
text: 14417 87690 98 33929 1ffc365c6ccbdf64e5fc5023b2f7219e
props: 10957 5214 111 0 b4233197920770c602c29330b7f7c623
cpath: /branches/S2_2/client/gui-xaw/actions.c
copyroot: 13570 /branches/S2_2

id: al.5bk.r14417/232366
type: file
pred: al.5bk.r13912/46037
count: 216
text: 14417 91463 1408 28095 db32a7e9eddb47ff0c535f7ca938ac82
props: 11084 5307 112 0 a976793c1b86634c19e93e3af962ba38
cpath: /branches/S2_2/client/gui-xaw/mapview.c
copyroot: 13570 /branches/S2_2

id: ay.5bk.r14417/232637
type: file
pred: ay.5bk.r14209/172937
count: 95
text: 14417 72490 1351 47822 95f492806145ea8ccc6a97811c684158
props: 10957 5571 111 0 04c7a6fe9bf3a5db3539a62041388438
cpath: /branches/S2_2/client/gui-xaw/repodlgs.c
copyroot: 13570 /branches/S2_2

id: bm.5bk.r14417/232909
type: file
pred: bm.5bk.r14377/2291113
count: 136
text: 14417 76742 553 33649 c663fda4882dd22d09ad8e84e6440580
props: 10925 3549 112 0 177404f64081975a31585790400154e7
cpath: /branches/S2_2/client/gui-xaw/gui_main.c
copyroot: 13570 /branches/S2_2

id: 2qm.5bk.r14417/233182
type: file
pred: 2qm.5bk.r14209/173207
count: 11
text: 14417 63369 90 8683 9275384e0f95ca0438925ba4b337a67e
props: 10598 2663 110 0 fdfdab56f53d2388a66f6a5ce0985f95
cpath: /branches/S2_2/client/gui-xaw/pages.c
copyroot: 13570 /branches/S2_2

id: an.5bk.r14417/233450
type: file
pred: an.5bk.r14280/1262
count: 98
text: 14417 89917 486 38608 db8bada70e95c293c97e701c2ee702a5
props: 10882 2348 111 0 014f4f31d8fa52a1c17e04bfb7ac7579
cpath: /branches/S2_2/client/gui-xaw/menu.c
copyroot: 13570 /branches/S2_2

id: 9y.5bk.r14417/233715
type: file
pred: 9y.5bk.r14209/173474
count: 70
text: 14417 130630 174 33132 6ce7eb6a01dfa5a706010246c3b4c0fb
props: 10852 5556 111 0 ae073b1a8624f4e72ab3bef202bf2f05
cpath: /branches/S2_2/client/gui-xaw/cityrep.c
copyroot: 13570 /branches/S2_2

id: a6.5bk.r14417/233986
type: file
pred: a6.5bk.r14209/173742
count: 138
text: 14417 140761 179 46856 4563238a1385cdf07da1cefb36400cb0
props: 10957 6289 112 0 ac8a0c5808e41faff6290e5ee8a4284e
cpath: /branches/S2_2/client/gui-xaw/dialogs.c
copyroot: 13570 /branches/S2_2

id: 37p.5bk.r14417/234258
type: file
pred: 37p.5bk.r14209/174013
count: 14
text: 14417 152864 400 26840 c97f4e44fbedfb6e980bd860094d7ec7
props: 12670 103088 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_2/client/gui-xaw/diplomat_dialog.c
copyroot: 13570 /branches/S2_2

id: a8.5bk.r14417/234540
type: file
pred: a8.5bk.r14209/174293
count: 49
text: 14417 118884 254 31118 68eee1956c4c2518d1fe173bd379a0df
props: 10442 1972 111 0 8ba011ca1ef4e408ab91a853a48e15eb
cpath: /branches/S2_2/client/gui-xaw/diplodlg.c
copyroot: 13570 /branches/S2_2

id: ad.5bk.r14417/234812
type: file
pred: ad.5bk.r14377/2291388
count: 76
text: 14417 119654 462 17837 273b00d5e621311899fe828852f465ce
props: 10789 5855 111 0 3d8b904835b9008e2a0a4d4db6ee628d
cpath: /branches/S2_2/client/gui-xaw/graphics.c
copyroot: 13570 /branches/S2_2

id: ai.5bk.r14417/235085
type: file
pred: ai.5bk.r14258/21067
count: 39
text: 14417 126171 259 16479 3d8edffabd67aee6aedf19d7040c7dd2
props: 10696 129 111 0 23629f8214b2309975780a037517e920
cpath: /branches/S2_2/client/gui-xaw/inteldlg.c
copyroot: 13570 /branches/S2_2

id: ax.5bk.r14417/235355
type: file
pred: ax.0.r13046/134049
count: 24
text: 14417 129395 724 11157 722ac2631c025ce427b72a1a147032f7
props: 10442 2333 111 0 5515c59917848b493fbf45ffb42836b3
cpath: /branches/S2_2/client/gui-xaw/ratesdlg.c
copyroot: 13570 /branches/S2_2

id: af.5bk.r14417/235625
type: file
pred: af.5bk.r14258/21335
count: 85
text: 14417 51374 383 37233 2c11c9ef75d4f6163e757388ecd13a63
props: 10882 3426 111 0 10d822456e37f81dabb45dad0c15b842
cpath: /branches/S2_2/client/gui-xaw/helpdlg.c
copyroot: 13570 /branches/S2_2

id: aw.5bk.r14417/235894
type: file
pred: aw.5bk.r14209/175102
count: 50
text: 14417 74648 1202 13077 70209408c121bed3ac9f8fbd2de8dcab
props: 10442 2694 111 0 77af0ec85c332e0d4fd7e7ef86a518fd
cpath: /branches/S2_2/client/gui-xaw/plrdlg.c
copyroot: 13570 /branches/S2_2

id: b2.5bk.r14417/236164
type: file
pred: b2.5bk.r14209/175370
count: 28
text: 14417 35958 169 9640 9704c193b262f8fb60dbd902b4d22b92
props: 10442 3053 111 0 7c94b769c2c0998a2747d858cb1e860f
cpath: /branches/S2_2/client/gui-xaw/spaceshipdlg.c
copyroot: 13570 /branches/S2_2

id: o5.5bk.r14417/236438
type: file
pred: o5.0.r13297/460928
count: 35
text: 14417 130305 200 43637 fb63c9cd86872a2da58dd541a7cbd01f
props: 10820 2037 111 0 9b377c828b4ca1827963af8e19878787
cpath: /branches/S2_2/client/gui-xaw/wldlg.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 24
file bq.5bk.r13603/25779
K 9
actions.c
V 25
file nt.5bk.r14417/232100
K 9
actions.h
V 21
file nu.0.r1888/21779
K 4
ad2c
V 22
file 9q.0.r1186/243967
K 8
canvas.c
V 21
file 9r.0.r3959/87925
K 8
canvas.h
V 20
file 9s.0.r4034/9073
K 9
canvasp.h
V 20
file 9t.0.r4034/8365
K 10
chatline.c
V 20
file 9u.0.r9160/4848
K 10
chatline.h
V 21
file 9v.0.r2187/10435
K 9
citydlg.c
V 25
file 9w.5bk.r14417/231560
K 9
citydlg.h
V 20
file 9x.0.r2187/8309
K 9
cityrep.c
V 25
file 9y.5bk.r14417/233715
K 9
cityrep.h
V 20
file g1.0.r5489/4916
K 8
cma_fe.c
V 21
file 2ei.0.r13148/376
K 8
cma_fe.h
V 21
file 2ej.0.r6908/4433
K 8
colors.c
V 21
file a2.0.r10532/8601
K 8
colors.h
V 21
file a3.0.r10532/9312
K 12
connectdlg.c
V 21
file a4.0.r11187/6858
K 12
connectdlg.h
V 21
file a5.0.r2187/12228
K 9
dialogs.c
V 25
file a6.5bk.r14417/233986
K 9
dialogs.h
V 21
file a7.0.r10882/3191
K 10
diplodlg.c
V 25
file a8.5bk.r14417/234540
K 10
diplodlg.h
V 20
file a9.0.r2187/7955
K 17
diplomat_dialog.c
V 26
file 37p.5bk.r14417/234258
K 9
finddlg.c
V 25
file aa.5bk.r14209/174834
K 9
finddlg.h
V 22
file 2dk.0.r5989/31562
K 9
gotodlg.c
V 25
file ab.5bk.r14417/231829
K 9
gotodlg.h
V 21
file ac.0.r1888/21069
K 10
graphics.c
V 25
file ad.5bk.r14417/234812
K 10
graphics.h
V 21
file ae.0.r10789/6338
K 10
gui_main.c
V 25
file bm.5bk.r14417/232909
K 10
gui_main.h
V 22
file bn.0.r11408/10219
K 11
gui_stuff.c
V 22
file bo.0.r6129/126486
K 11
gui_stuff.h
V 21
file bp.0.r4964/56392
K 9
helpdlg.c
V 25
file af.5bk.r14417/235625
K 9
helpdlg.h
V 21
file g2.0.r1888/23188
K 10
inputdlg.c
V 20
file ag.0.r7586/1961
K 10
inputdlg.h
V 20
file ah.0.r7586/2315
K 10
inteldlg.c
V 25
file ai.5bk.r14417/235085
K 10
inteldlg.h
V 23
file 2dl.0.r10108/22972
K 9
mapctrl.c
V 21
file aj.0.r10532/8954
K 9
mapctrl.h
V 21
file ak.0.r10532/9667
K 9
mapview.c
V 25
file al.5bk.r14417/232366
K 9
mapview.h
V 24
file am.5bk.r13912/46304
K 6
menu.c
V 25
file an.5bk.r14417/233450
K 6
menu.h
V 21
file ao.0.r12091/4447
K 12
messagedlg.c
V 22
file ap.0.r10532/10389
K 12
messagedlg.h
V 22
file 2dm.0.r5989/31896
K 12
messagewin.c
V 21
file aq.0.r9098/15891
K 12
messagewin.h
V 20
file g3.0.r5489/3851
K 11
optiondlg.c
V 21
file ar.0.r11793/1242
K 11
optiondlg.h
V 21
file as.0.r1432/23133
K 7
pages.c
V 26
file 2qm.5bk.r14417/233182
K 7
pages.h
V 22
file 2qn.0.r10536/7909
K 9
pixcomm.c
V 21
file at.0.r3145/18494
K 9
pixcomm.h
V 20
file au.0.r4034/9777
K 10
pixcommp.h
V 20
file av.0.r4034/8719
K 8
plrdlg.c
V 25
file aw.5bk.r14417/235894
K 8
plrdlg.h
V 20
file g4.0.r5489/3140
K 10
ratesdlg.c
V 25
file ax.5bk.r14417/235355
K 10
ratesdlg.h
V 22
file 2dn.0.r5989/31227
K 10
repodlgs.c
V 25
file ay.5bk.r14417/232637
K 10
repodlgs.h
V 21
file az.0.r10957/6056
K 11
resources.c
V 20
file b0.0.r9310/2224
K 11
resources.h
V 21
file b1.0.r3145/14204
K 14
spaceshipdlg.c
V 25
file b2.5bk.r14417/236164
K 14
spaceshipdlg.h
V 21
file b3.0.r2187/11152
K 8
themes.c
V 23
file 350.0.r10945/14451
K 7
wldlg.c
V 25
file o5.5bk.r14417/236438
K 7
wldlg.h
V 22
file o6.0.r10181/18680
END
ENDREP
id: 9o.5bk.r14417/239752
type: dir
pred: 9o.5bk.r14377/2294694
count: 848
text: 14417 236705 3034 3034 db7c357d7fad9567da3bb7b287bd364d
props: 11108 12237 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /branches/S2_2/client/gui-xaw
copyroot: 13570 /branches/S2_2

id: xm.5bk.r14417/240014
type: file
pred: xm.5bk.r14209/178934
count: 120
text: 14417 26147 6847 63227 2d14d97847f461981dc20209fdc7116e
props: 10989 3245 112 0 e7136c353c3addf3d4cc60888f1c16d6
cpath: /branches/S2_2/client/gui-win32/citydlg.c
copyroot: 13570 /branches/S2_2

id: xz.5bk.r14417/240288
type: file
pred: xz.5bk.r14209/179205
count: 16
text: 14417 20266 5853 5839 26c90412d41835748fe7c11a544f77af
props: 10534 8699 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /branches/S2_2/client/gui-win32/gotodlg.c
copyroot: 13570 /branches/S2_2

id: ye.5bk.r14417/240560
type: file
pred: ye.5bk.r14171/78170
count: 167
text: 14417 50893 454 18667 a94950144356bad57a7391a542f2efe8
props: 11084 8847 112 0 64942f9576ccbd6a94350596bbb7a5cc
cpath: /branches/S2_2/client/gui-win32/mapview.c
copyroot: 13570 /branches/S2_2

id: yq.5bk.r14417/240832
type: file
pred: yq.5bk.r14213/4489
count: 71
text: 14417 114992 1411 31410 a438606bfd97c7cc6228a08ae03db555
props: 10883 3315 111 0 93646be3752db5a3cd8e77177837d494
cpath: /branches/S2_2/client/gui-win32/repodlgs.c
copyroot: 13570 /branches/S2_2

id: yg.5bk.r14417/241105
type: file
pred: yg.5bk.r14335/607
count: 63
text: 14417 130146 133 39493 c1ba6813f567c1b249abd3723baa24dd
props: 10989 3605 111 0 d69121ee529fb8cb3643d711ec0f2158
cpath: /branches/S2_2/client/gui-win32/menu.c
copyroot: 13570 /branches/S2_2

id: xo.5bk.r14417/241372
type: file
pred: xo.5bk.r13949/155150
count: 44
text: 14417 73870 438 35845 b78c67d92082ed4d4abd3da6c8eb693d
props: 10839 2574 111 0 2e2357461112b5dbc5fe4daab6abde1a
cpath: /branches/S2_2/client/gui-win32/cityrep.c
copyroot: 13570 /branches/S2_2

id: xu.5bk.r14417/241644
type: file
pred: xu.5bk.r14209/179744
count: 99
text: 14417 75880 593 56956 d509ac22f30e4a363185bda1b0c3ea91
props: 10989 3964 111 0 8264fa93116f43c430f41dcf0da62390
cpath: /branches/S2_2/client/gui-win32/dialogs.c
copyroot: 13570 /branches/S2_2

id: xw.5bk.r14417/241916
type: file
pred: xw.5bk.r14209/180015
count: 35
text: 14417 20107 134 25695 84360a6ee082d76e9454bc03bba9a956
props: 10411 156138 111 0 23629f8214b2309975780a037517e920
cpath: /branches/S2_2/client/gui-win32/diplodlg.c
copyroot: 13570 /branches/S2_2

id: yc.5bk.r14417/242191
type: file
pred: yc.5bk.r14140/7013
count: 47
text: 14417 90433 216 10711 c03c4f24bd71d456215fc36aa1f3c11d
props: 10387 23931 111 0 e9cbe3af5d5934f88ab895fd46902062
cpath: /branches/S2_2/client/gui-win32/mapctrl.c
copyroot: 13570 /branches/S2_2

id: yb.5bk.r14417/242462
type: file
pred: yb.5bk.r14258/24889
count: 23
text: 14417 35831 99 5849 e6e7fb379ac0d8df1ba0ced38cbd8432
props: 10736 12122 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /branches/S2_2/client/gui-win32/inteldlg.c
copyroot: 13570 /branches/S2_2

id: yp.5bk.r14417/242733
type: file
pred: yp.0.r13046/138739
count: 12
text: 14417 37016 397 9847 4715767928ab0f03d1ee245dcdfa4630
props: 10989 4324 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /branches/S2_2/client/gui-win32/ratesdlg.c
copyroot: 13570 /branches/S2_2

id: y7.5bk.r14417/243003
type: file
pred: y7.5bk.r14258/25160
count: 60
text: 14417 116430 494 29960 31f16e1053e8a0803a0b02baf5647918
props: 10989 4683 111 0 fd48e7132065a890e4a210dc3646defe
cpath: /branches/S2_2/client/gui-win32/helpdlg.c
copyroot: 13570 /branches/S2_2

id: yn.5bk.r14417/243275
type: file
pred: yn.5bk.r14179/36688
count: 28
text: 14417 59111 1486 12240 2da398f1cbc63a7e5bf124175caf889f
props: 10427 5013 111 0 0b146d6d431c2ad00452618c43381276
cpath: /branches/S2_2/client/gui-win32/plrdlg.c
copyroot: 13570 /branches/S2_2

id: yt.5bk.r14417/243546
type: file
pred: yt.5bk.r14209/180825
count: 19
text: 14417 72027 45 7981 af07a901c36ce4c2599341f42dbc91a4
props: 10427 5374 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /branches/S2_2/client/gui-win32/spaceshipdlg.c
copyroot: 13570 /branches/S2_2

id: xs.5bk.r14417/243821
type: file
pred: xs.5bk.r14223/42865
count: 49
text: 14417 74340 44 33748 2f50355def5ede1004a3578467f60a8f
props: 10884 2435 111 0 14533b38c2d22fb145a05b253c8fb2e8
cpath: /branches/S2_2/client/gui-win32/connectdlg.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 24
file nr.5bk.r13603/29295
K 8
canvas.c
V 21
file 2ya.0.r10482/217
K 8
canvas.h
V 22
file 2yb.0.r10131/2132
K 10
chatline.c
V 21
file xk.0.r7930/24198
K 10
chatline.h
V 20
file xl.0.r5785/7678
K 9
citydlg.c
V 25
file xm.5bk.r14417/240014
K 9
citydlg.h
V 19
file xn.0.r5671/865
K 9
cityrep.c
V 25
file xo.5bk.r14417/241372
K 9
cityrep.h
V 22
file xp.0.r3745/159022
K 8
cma_fe.c
V 21
file 2fu.0.r9591/3114
K 8
cma_fe.h
V 20
file 2fv.0.r7442/210
K 8
colors.c
V 21
file xq.0.r10461/1484
K 8
colors.h
V 21
file xr.0.r10461/1841
K 12
connectdlg.c
V 25
file xs.5bk.r14417/243821
K 12
connectdlg.h
V 20
file xt.0.r8331/7783
K 9
dialogs.c
V 25
file xu.5bk.r14417/241644
K 9
dialogs.h
V 21
file xv.0.r10883/4520
K 10
diplodlg.c
V 25
file xw.5bk.r14417/241916
K 10
diplodlg.h
V 22
file xx.0.r13481/26989
K 9
finddlg.c
V 25
file xy.5bk.r14209/180555
K 9
finddlg.h
V 22
file 2dg.0.r5989/39776
K 9
gotodlg.c
V 25
file xz.5bk.r14417/240288
K 9
gotodlg.h
V 20
file y0.0.r3786/3776
K 10
graphics.c
V 26
file y1.5bk.r14377/2295230
K 10
graphics.h
V 21
file y2.0.r10294/2998
K 10
gui_main.c
V 26
file y3.5bk.r14377/2294955
K 10
gui_main.h
V 20
file y4.0.r10222/314
K 11
gui_stuff.c
V 22
file y5.0.r13328/10611
K 11
gui_stuff.h
V 22
file y6.0.r13328/10851
K 11
happiness.c
V 23
file 137.5bk.r14335/341
K 11
happiness.h
V 23
file 138.0.r13481/26751
K 9
helpdlg.c
V 25
file y7.5bk.r14417/243003
K 9
helpdlg.h
V 22
file y8.0.r3745/150873
K 10
inputdlg.c
V 19
file y9.0.r8895/460
K 10
inputdlg.h
V 22
file ya.0.r3745/153242
K 10
inteldlg.c
V 25
file yb.5bk.r14417/242462
K 10
inteldlg.h
V 22
file 2dh.0.r5989/39102
K 9
mapctrl.c
V 25
file yc.5bk.r14417/242191
K 9
mapctrl.h
V 21
file yd.0.r6430/14685
K 9
mapview.c
V 25
file ye.5bk.r14417/240560
K 9
mapview.h
V 22
file yf.0.r13412/11359
K 6
menu.c
V 25
file yg.5bk.r14417/241105
K 6
menu.h
V 20
file yh.0.r5785/9458
K 12
messagedlg.c
V 22
file yi.0.r10488/20525
K 12
messagedlg.h
V 22
file 2di.0.r5989/40112
K 12
messagewin.c
V 21
file yj.0.r9098/24106
K 12
messagewin.h
V 22
file yk.0.r3745/155966
K 11
optiondlg.c
V 22
file yl.0.r13412/10878
K 11
optiondlg.h
V 21
file ym.0.r3959/96575
K 7
pages.c
V 23
file 2qk.0.r13412/11835
K 7
pages.h
V 22
file 2ql.0.r8639/12634
K 8
plrdlg.c
V 25
file yn.5bk.r14417/243275
K 8
plrdlg.h
V 20
file yo.0.r3847/6164
K 10
ratesdlg.c
V 25
file yp.5bk.r14417/242733
K 10
ratesdlg.h
V 22
file 2dj.0.r5989/39439
K 10
repodlgs.c
V 25
file yq.5bk.r14417/240832
K 10
repodlgs.h
V 22
file yr.0.r3745/151547
K 14
spaceshipdlg.c
V 25
file yt.5bk.r14417/243546
K 14
spaceshipdlg.h
V 20
file yu.0.r3778/5068
K 8
sprite.c
V 22
file 2yc.0.r10294/2273
K 8
sprite.h
V 23
file 2yd.0.r10141/44406
K 8
themes.c
V 23
file 34z.0.r10945/20562
K 7
wldlg.c
V 23
file yv.0.r13297/467606
K 7
wldlg.h
V 21
file yw.0.r12515/1620
END
ENDREP
id: np.5bk.r14417/246894
type: dir
pred: np.5bk.r14377/2298286
count: 628
text: 14417 244094 2787 2787 776a6b93123afa5d86d0aee61a4000e0
props: 11108 12557 68 0 fbaef5f6348d6ae4b0cc177104ca4ad2
cpath: /branches/S2_2/client/gui-win32
copyroot: 13570 /branches/S2_2

id: n.5bk.r14417/247158
type: file
pred: n.5bk.r14416/113572
count: 639
text: 14417 153294 3822 102110 865e98269f18a7026c5b489ab670977e
props: 11088 14698 112 0 2c9d3e41a2f20488aa9cdb8d740d094e
cpath: /branches/S2_2/client/packhand.c
copyroot: 13570 /branches/S2_2

id: 170.5bk.r14417/247424
type: file
pred: 170.5bk.r14209/184683
count: 123
text: 14417 53356 762 123546 b4e4f2d0b0acee46c3c7a4a6fc69379a
props: 10779 67589 111 0 515f6afa6448327e59cdac91d637f582
cpath: /branches/S2_2/client/gui-sdl/citydlg.c
copyroot: 13570 /branches/S2_2

id: 17f.5bk.r14417/247699
type: file
pred: 17f.5bk.r14209/184955
count: 43
text: 14417 52715 211 11248 111f4911eefa9e8332724bd9f4ad2e1e
props: 10534 12701 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /branches/S2_2/client/gui-sdl/gotodlg.c
copyroot: 13570 /branches/S2_2

id: 186.5bk.r14417/247972
type: file
pred: 186.5bk.r14377/2298819
count: 167
text: 14417 60797 1395 39452 a3736a89aea968fef2e4a9a779578346
props: 10779 67955 111 0 1566ee949d8102994e5ce1bbf3530de9
cpath: /branches/S2_2/client/gui-sdl/mapview.c
copyroot: 13570 /branches/S2_2

id: 191.5bk.r14417/248248
type: file
pred: 191.5bk.r14377/2299095
count: 52
text: 14417 119168 385 22818 54e581c087c0a7413b9061d810865ec4
props: 10141 49776 111 0 0b146d6d431c2ad00452618c43381276
cpath: /branches/S2_2/client/gui-sdl/gui_tilespec.c
copyroot: 13570 /branches/S2_2

id: 18i.5bk.r14417/248528
type: file
pred: 18i.5bk.r14209/185498
count: 107
text: 14417 120147 2145 110119 9cacf2162636e2d80541f8cf0d2ab287
props: 10779 68322 111 0 622f1432038f91cce287c1d90e4f7964
cpath: /branches/S2_2/client/gui-sdl/repodlgs.c
copyroot: 13570 /branches/S2_2

id: 17o.5bk.r14417/248806
type: file
pred: 17o.5bk.r14377/2299646
count: 123
text: 14417 130536 63 33587 d302aa139b08fe30a63b074158290622
props: 10411 162763 111 0 93121dcfd7714818c8d46f9c51a886fa
cpath: /branches/S2_2/client/gui-sdl/gui_main.c
copyroot: 13570 /branches/S2_2

id: 188.5bk.r14417/249083
type: file
pred: 188.5bk.r14271/9739
count: 63
text: 14417 152777 60 42667 08a8de58a846cda80beba7b7727f1676
props: 10805 77668 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /branches/S2_2/client/gui-sdl/menu.c
copyroot: 13570 /branches/S2_2

id: 172.5bk.r14417/249351
type: file
pred: 172.5bk.r14209/186591
count: 58
text: 14417 89700 191 38913 fc795588efa41e9d0cd2559a893775da
props: 10779 68689 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /branches/S2_2/client/gui-sdl/cityrep.c
copyroot: 13570 /branches/S2_2

id: 17a.5bk.r14417/249624
type: file
pred: 17a.5bk.r14370/4407563
count: 145
text: 14417 90841 590 98966 dcc2b9293bbbdcbae556bf1d28c1d565
props: 10805 78030 111 0 ae073b1a8624f4e72ab3bef202bf2f05
cpath: /branches/S2_2/client/gui-sdl/dialogs.c
copyroot: 13570 /branches/S2_2

id: 3bn.5bk.r14417/249899
type: file
pred: 3bn.5bk.r14209/187134
count: 32
text: 14417 92900 20775 44895 9fd22afbeabd02ec3e10dd1ddd900757
props: 12670 114091 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_2/client/gui-sdl/diplomat_dialog.c
copyroot: 13570 /branches/S2_2

id: 17c.5bk.r14417/250182
type: file
pred: 17c.5bk.r14209/187414
count: 50
text: 14417 51783 902 53181 ac7da3f1467c24df4a5ac3b1c61b7c76
props: 10411 163500 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /branches/S2_2/client/gui-sdl/diplodlg.c
copyroot: 13570 /branches/S2_2

id: 184.5bk.r14417/250457
type: file
pred: 184.5bk.r14271/10542
count: 95
text: 14417 116955 44 79106 353f43e452f876bb5efc784ae13fc89a
props: 9803 6307 111 0 4135f0dfb17a4d11b2424d95e27830f5
cpath: /branches/S2_2/client/gui-sdl/mapctrl.c
copyroot: 13570 /branches/S2_2

id: 183.5bk.r14417/250727
type: file
pred: 183.5bk.r14258/28733
count: 48
text: 14417 54146 3586 14076 e4bac442fec54841909f2bac080d61a2
props: 10411 163869 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /branches/S2_2/client/gui-sdl/inteldlg.c
copyroot: 13570 /branches/S2_2

id: 17z.5bk.r14417/251002
type: file
pred: 17z.5bk.r14230/42907
count: 60
text: 14417 122322 3822 69741 b01af272a0929a2b494c9b24087897ef
props: 10411 164601 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /branches/S2_2/client/gui-sdl/helpdlg.c
copyroot: 13570 /branches/S2_2

id: 18f.5bk.r14417/251277
type: file
pred: 18f.5bk.r14271/10808
count: 49
text: 14417 71642 223 23918 9b5f50770c697b420955ca331ac60160
props: 10411 164967 111 0 28e613ef70fc8e4efe7ed7b15f74e6e7
cpath: /branches/S2_2/client/gui-sdl/plrdlg.c
copyroot: 13570 /branches/S2_2

id: 16y.5bk.r14417/251549
type: file
pred: 16y.5bk.r14121/210311
count: 47
text: 14417 72100 39 29639 a12b26eb65a1e2e4085ae26105b20bd9
props: 9030 114052 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /branches/S2_2/client/gui-sdl/chatline.c
copyroot: 13570 /branches/S2_2

id: 18m.5bk.r14417/251822
type: file
pred: 18m.5bk.r14171/85256
count: 30
text: 14417 77325 94 7579 d7bf26ff406f45491b568b7440453221
props: 9803 7024 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /branches/S2_2/client/gui-sdl/spaceshipdlg.c
copyroot: 13570 /branches/S2_2

id: 18q.5bk.r14417/252095
type: file
pred: 18q.5bk.r14209/188231
count: 64
text: 14417 157439 54288 55333 68451db1a180dd5bd5be9defce889691
props: 10779 69053 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /branches/S2_2/client/gui-sdl/wldlg.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 24
file 16u.5bk.r13686/2072
K 14
SDL_rotozoom.c
V 24
file 3jy.0.r12670/115301
K 14
SDL_rotozoom.h
V 24
file 3jz.0.r12670/115888
K 9
SDL_ttf.c
V 24
file 2dz.5bk.r13597/7386
K 9
SDL_ttf.h
V 24
file 2e0.5bk.r13597/7647
K 11
alphablit.c
V 23
file 3be.0.r13354/59832
K 8
canvas.c
V 23
file 39i.0.r13354/56191
K 8
canvas.h
V 23
file 39j.0.r13354/56918
K 16
caravan_dialog.c
V 26
file 3bp.5bk.r14209/185774
K 10
chatline.c
V 26
file 16y.5bk.r14417/251549
K 10
chatline.h
V 25
file 16z.5bk.r13794/18245
K 9
citydlg.c
V 26
file 170.5bk.r14417/247424
K 9
citydlg.h
V 23
file 171.0.r13354/55222
K 9
cityrep.c
V 26
file 172.5bk.r14417/249351
K 9
cityrep.h
V 22
file 173.0.r12769/2941
K 8
cma_fe.c
V 25
file 174.5bk.r14271/10005
K 8
cma_fe.h
V 23
file 175.0.r11361/43495
K 8
colors.c
V 23
file 176.0.r13354/62500
K 8
colors.h
V 24
file 177.5bk.r14076/4693
K 12
connectdlg.c
V 24
file 178.5bk.r14076/5493
K 12
connectdlg.h
V 23
file 179.0.r12349/45319
K 9
dialogs.c
V 26
file 17a.5bk.r14417/249624
K 9
dialogs.h
V 23
file 17b.0.r13354/61529
K 10
diplodlg.c
V 26
file 17c.5bk.r14417/250182
K 10
diplodlg.h
V 22
file 17d.0.r11584/2869
K 17
diplomat_dialog.c
V 26
file 3bn.5bk.r14417/249899
K 9
finddlg.c
V 26
file 17e.5bk.r14209/187961
K 9
finddlg.h
V 20
file 2d8.0.r5991/702
K 9
gotodlg.c
V 26
file 17f.5bk.r14417/247699
K 9
gotodlg.h
V 22
file 17g.0.r6515/58208
K 10
graphics.c
V 27
file 17h.5bk.r14377/2300750
K 10
graphics.h
V 23
file 17i.0.r12611/13939
K 11
gui_iconv.c
V 22
file 17l.5bk.r14362/60
K 11
gui_iconv.h
V 23
file 17m.0.r13354/66657
K 8
gui_id.h
V 25
file 17n.5bk.r13856/57141
K 10
gui_main.c
V 26
file 17o.5bk.r14417/248806
K 10
gui_main.h
V 23
file 17p.0.r13354/59593
K 11
gui_mouse.c
V 23
file 3ca.0.r13354/59349
K 11
gui_mouse.h
V 24
file 3cb.0.r12670/112397
K 12
gui_string.c
V 24
file 17r.5bk.r13666/2840
K 12
gui_string.h
V 23
file 17s.0.r13481/30445
K 14
gui_tilespec.c
V 26
file 191.5bk.r14417/248248
K 14
gui_tilespec.h
V 25
file 192.5bk.r13912/53929
K 11
happiness.c
V 23
file 17x.0.r11361/41144
K 11
happiness.h
V 23
file 17y.0.r11361/41867
K 9
helpdlg.c
V 26
file 17z.5bk.r14417/251002
K 9
helpdlg.h
V 23
file 180.0.r11361/47416
K 10
inputdlg.c
V 23
file 181.0.r11361/47897
K 10
inputdlg.h
V 23
file 182.0.r5500/260641
K 10
inteldlg.c
V 26
file 183.5bk.r14417/250727
K 10
inteldlg.h
V 22
file 2d9.0.r11409/2687
K 9
mapctrl.c
V 26
file 184.5bk.r14417/250457
K 9
mapctrl.h
V 23
file 185.0.r13354/63700
K 9
mapview.c
V 26
file 186.5bk.r14417/247972
K 9
mapview.h
V 23
file 187.0.r13354/56676
K 6
menu.c
V 26
file 188.5bk.r14417/249083
K 6
menu.h
V 25
file 189.5bk.r13856/57405
K 12
messagedlg.c
V 23
file 18a.0.r11361/49350
K 12
messagedlg.h
V 22
file 2da.0.r5989/48394
K 12
messagewin.c
V 23
file 18b.0.r13354/60073
K 12
messagewin.h
V 23
file 18c.0.r6286/140236
K 5
mmx.h
V 23
file 2e1.0.r6286/134429
K 11
optiondlg.c
V 26
file 18d.5bk.r14121/208134
K 11
optiondlg.h
V 22
file 18e.0.r12381/2174
K 7
pages.c
V 27
file 2qg.5bk.r14377/2299926
K 7
pages.h
V 22
file 2qh.0.r8639/16416
K 8
plrdlg.c
V 26
file 18f.5bk.r14417/251277
K 8
plrdlg.h
V 22
file 18g.0.r6387/81301
K 10
ratesdlg.h
V 22
file 2db.0.r5989/47726
K 10
repodlgs.c
V 26
file 18i.5bk.r14417/248528
K 10
repodlgs.h
V 23
file 18j.0.r13354/58129
K 14
spaceshipdlg.c
V 26
file 18m.5bk.r14417/251822
K 14
spaceshipdlg.h
V 23
file 18n.0.r5500/263363
K 8
sprite.c
V 23
file 39k.0.r13354/55462
K 8
sprite.h
V 24
file 39l.0.r12670/108062
K 18
themebackgrounds.c
V 25
file 3ff.5bk.r13794/17164
K 18
themebackgrounds.h
V 25
file 3fg.5bk.r13794/17440
K 13
themecolors.c
V 24
file 392.0.r12670/113849
K 13
themecolors.h
V 24
file 393.0.r12670/114433
K 8
themes.c
V 27
file 38p.5bk.r14377/2299375
K 11
themespec.c
V 27
file 390.5bk.r14377/2300196
K 11
themespec.h
V 27
file 391.5bk.r14377/2300476
K 11
unistring.c
V 23
file 18o.0.r13354/57401
K 11
unistring.h
V 23
file 18p.0.r13481/30205
K 8
widget.c
V 24
file 3fu.5bk.r13965/8478
K 8
widget.h
V 24
file 3fv.0.r12670/110372
K 15
widget_button.c
V 24
file 3fh.5bk.r14076/3619
K 15
widget_button.h
V 24
file 3g7.0.r12670/113556
K 17
widget_checkbox.c
V 24
file 3fi.5bk.r14076/6064
K 17
widget_checkbox.h
V 24
file 3g8.0.r12670/106620
K 13
widget_core.c
V 23
file 3fj.0.r13354/61769
K 13
widget_edit.c
V 23
file 3fk.0.r13354/64909
K 13
widget_edit.h
V 24
file 3g9.0.r12670/115595
K 13
widget_icon.c
V 23
file 3fl.0.r13354/59104
K 13
widget_icon.h
V 24
file 3ga.0.r12670/112107
K 14
widget_label.c
V 24
file 3fm.5bk.r13597/6851
K 14
widget_label.h
V 24
file 3gb.0.r12670/110079
K 10
widget_p.h
V 24
file 3fn.0.r12670/107197
K 18
widget_scrollbar.c
V 24
file 3fo.5bv.r14076/5760
K 18
widget_scrollbar.h
V 24
file 3gc.0.r12670/116811
K 15
widget_window.c
V 23
file 3fp.0.r13354/55944
K 15
widget_window.h
V 23
file 3gd.0.r12699/32533
K 7
wldlg.c
V 26
file 18q.5bk.r14417/252095
K 7
wldlg.h
V 23
file 18r.0.r11361/49592
END
ENDREP
id: 16t.5bk.r14417/257227
type: dir
pred: 16t.5bk.r14377/2305878
count: 504
text: 14417 252369 4845 4845 c56459b11712044bbbd1b8a707209ffd
props: 11108 12869 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /branches/S2_2/client/gui-sdl
copyroot: 13570 /branches/S2_2

id: 14u.5bk.r14417/257491
type: file
pred: 14u.5bk.r14209/193602
count: 30
text: 14417 113873 988 10488 c24ff2475de2f4b48d4121fa2ae272c3
props: 11094 491 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /branches/S2_2/client/plrdlg_common.c
copyroot: 13570 /branches/S2_2

id: 14v.5bk.r14417/257761
type: file
pred: 14v.0.r10581/10242
count: 11
text: 14417 114889 75 1873 28da7438b7989206c22287a83defd740
props: 10581 10118 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /branches/S2_2/client/plrdlg_common.h
copyroot: 13570 /branches/S2_2

id: 14s.5bk.r14417/258028
type: file
pred: 14s.5bk.r13949/166223
count: 26
text: 14417 118532 213 7137 f3e857f6577b53bfad24293d81bc8b2c
props: 11057 47206 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /branches/S2_2/client/messagewin_common.c
copyroot: 13570 /branches/S2_2

id: 2kz.5bk.r14417/258303
type: file
pred: 2kz.5bk.r14370/4413484
count: 40
text: 14417 140970 1067 49754 21d538ee3b3b819e4ff1e1050962daea
props: 10452 1016 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /branches/S2_2/client/gui-ftwl/mapview.c
copyroot: 13570 /branches/S2_2

id: 2mr.5bk.r14417/258579
type: file
pred: 2mr.5bk.r14416/113836
count: 30
text: 14417 69342 509 15086 716018214718c6fdd986d98271556ce3
props: 10805 82177 111 0 8e6f231ffe21dad0a34f68090b1c0b69
cpath: /branches/S2_2/client/gui-ftwl/gui_text.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 25
file 2k4.5bk.r13603/37904
K 8
canvas.c
V 22
file 2ye.0.r12291/8284
K 8
canvas.h
V 23
file 2yf.0.r10109/10676
K 6
chat.c
V 27
file 2k5.5bk.r14370/4414036
K 6
chat.h
V 22
file 2k6.0.r7939/79684
K 10
chatline.c
V 22
file 2k7.0.r11941/6451
K 10
chatline.h
V 22
file 2k8.0.r7939/74301
K 9
citydlg.c
V 27
file 2k9.5bk.r14370/4412944
K 9
citydlg.h
V 22
file 2ka.0.r7939/67918
K 9
cityrep.c
V 22
file 2kb.0.r7939/78333
K 9
cityrep.h
V 22
file 2kc.0.r7939/80015
K 8
colors.c
V 22
file 2kd.0.r11941/5347
K 8
colors.h
V 22
file 2ke.0.r11941/5582
K 12
connectdlg.c
V 22
file 2kf.0.r11941/7635
K 12
connectdlg.h
V 22
file 2kg.0.r7939/80350
K 9
dialogs.c
V 26
file 2kh.5bk.r14209/194677
K 9
dialogs.h
V 22
file 2ki.0.r7939/80688
K 10
diplodlg.c
V 22
file 2kj.0.r7939/64892
K 10
diplodlg.h
V 22
file 2kk.0.r7939/67247
K 9
finddlg.c
V 22
file 2kl.0.r7939/69930
K 9
finddlg.h
V 22
file 2km.0.r7939/70941
K 9
gotodlg.c
V 26
file 2kn.5bk.r14121/215661
K 9
gotodlg.h
V 22
file 2ko.0.r7939/67583
K 10
graphics.c
V 23
file 2kp.0.r10141/54754
K 10
graphics.h
V 22
file 2kq.0.r7939/68252
K 10
gui_main.c
V 27
file 2kr.5bk.r14370/4413760
K 10
gui_main.h
V 22
file 2ks.0.r11943/1292
K 10
gui_text.c
V 26
file 2mr.5bk.r14417/258579
K 10
gui_text.h
V 22
file 2ms.0.r11941/8598
K 9
helpdlg.c
V 22
file 2kt.0.r7939/71611
K 9
helpdlg.h
V 22
file 2ku.0.r7939/72285
K 10
inteldlg.c
V 22
file 2kv.0.r7939/66910
K 10
inteldlg.h
V 22
file 2kw.0.r7939/69594
K 9
mapctrl.c
V 27
file 2kx.5bk.r14370/4413216
K 9
mapctrl.h
V 22
file 2ky.0.r7939/69259
K 9
mapview.c
V 26
file 2kz.5bk.r14417/258303
K 9
mapview.h
V 21
file 2l0.0.r11943/817
K 6
menu.c
V 22
file 2l1.0.r7939/75312
K 6
menu.h
V 22
file 2l2.0.r7939/76324
K 12
messagedlg.c
V 22
file 2l3.0.r7939/76990
K 12
messagedlg.h
V 22
file 2l4.0.r7939/79008
K 12
messagewin.c
V 23
file 2l5.0.r9577/142349
K 12
messagewin.h
V 22
file 2l6.0.r7939/75986
K 7
pages.c
V 22
file 2qc.0.r11943/1528
K 7
pages.h
V 22
file 2qd.0.r8639/25123
K 8
plrdlg.c
V 23
file 2l7.0.r9577/141628
K 8
plrdlg.h
V 22
file 2l8.0.r7939/73967
K 10
ratesdlg.c
V 22
file 2l9.0.r7939/68588
K 10
ratesdlg.h
V 22
file 2la.0.r7939/70605
K 10
repodlgs.c
V 22
file 2lb.0.r7939/71947
K 10
repodlgs.h
V 22
file 2lc.0.r7939/72955
K 14
spaceshipdlg.c
V 22
file 2ld.0.r7939/75645
K 14
spaceshipdlg.h
V 22
file 2le.0.r7939/77329
K 8
sprite.c
V 23
file 2yg.0.r11958/37010
K 8
sprite.h
V 23
file 2yh.0.r10141/56198
K 8
themes.c
V 24
file 3cc.0.r12670/122700
K 7
wldlg.c
V 22
file 2lf.0.r7939/76656
K 7
wldlg.h
V 22
file 2lg.0.r7939/77669
END
ENDREP
id: 2k2.5bk.r14417/261395
type: dir
pred: 2k2.5bk.r14416/116654
count: 95
text: 14417 258854 2528 2528 e175a36071c9131e2d608148ed17095e
props: 11108 13191 78 0 667fe0aa2722f6798d567486294a1d2e
cpath: /branches/S2_2/client/gui-ftwl
copyroot: 13570 /branches/S2_2

id: h1.5bk.r14417/261658
type: file
pred: h1.5bk.r14338/3043344
count: 173
text: 14417 63487 1544 59265 238ecb73b8ad49e33ab81a77703606a3
props: 10865 39466 112 0 7c92b74246787b3b87930d3304880700
cpath: /branches/S2_2/client/helpdata.c
copyroot: 13570 /branches/S2_2

id: i3.5bk.r14417/261925
type: file
pred: i3.5bk.r14230/48542
count: 19
text: 14417 70725 618 2261 f9f499b1fa66a4d8189e90dc69b34e01
props: 10865 39822 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /branches/S2_2/client/helpdata.h
copyroot: 13570 /branches/S2_2

id: xh.5bk.r14417/262187
type: file
pred: xh.0.r13068/20176
count: 24
text: 14417 136305 4356 17046 c10d2202f942ee73a7bd609deb65b896
props: 11057 47571 111 0 1912998302effd94f7d1c131050552ad
cpath: /branches/S2_2/client/attribute.c
copyroot: 13570 /branches/S2_2

id: 197.5bk.r14417/262451
type: file
pred: 197.0.r11057/48047
count: 11
text: 14417 74414 208 2809 395803983a66a9399b38a6bbf2f63c80
props: 11057 47923 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /branches/S2_2/client/climap.c
copyroot: 13570 /branches/S2_2

id: hl.5bk.r14417/262711
type: file
pred: hl.5bk.r14416/116918
count: 393
text: 14417 76502 210 159649 dfe398271bc9f5e9dae37cb1655ebd4d
props: 11096 3792 112 0 71c6b453a620995957914f193a952f13
cpath: /branches/S2_2/client/tilespec.c
copyroot: 13570 /branches/S2_2

id: 15m.5bk.r14417/262976
type: file
pred: 15m.5bk.r14416/117183
count: 85
text: 14417 77449 273 23429 7ea0554306531f1169282f974f66ddf1
props: 11057 48634 111 0 e77f29e20031f26b4b1e16b63c7aa55c
cpath: /branches/S2_2/client/mapctrl_common.c
copyroot: 13570 /branches/S2_2

id: nb.5bk.r14417/263248
type: file
pred: nb.0.r12524/749
count: 57
text: 14417 117025 204 8689 a8ef1b0374f3dab321df68a75eba86d2
props: 10411 182447 111 0 515f6afa6448327e59cdac91d637f582
cpath: /branches/S2_2/client/gui-stub/mapview.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 24
file mj.5bk.r13603/40941
K 8
canvas.c
V 22
file 2y0.0.r11749/2105
K 8
canvas.h
V 23
file 2y1.0.r10095/12720
K 10
chatline.c
V 21
file ml.0.r7930/39139
K 10
chatline.h
V 21
file mm.0.r5491/41569
K 9
citydlg.c
V 25
file mn.5bk.r13949/170892
K 9
citydlg.h
V 21
file mo.0.r5491/35843
K 9
cityrep.c
V 22
file mp.0.r10144/11456
K 9
cityrep.h
V 21
file mq.0.r5491/46587
K 8
colors.c
V 22
file mr.0.r10458/11165
K 8
colors.h
V 22
file ms.0.r10458/11524
K 12
connectdlg.c
V 21
file mt.0.r11749/2576
K 12
connectdlg.h
V 21
file mu.0.r5491/46943
K 9
dialogs.c
V 24
file mv.5bk.r13745/46009
K 9
dialogs.h
V 20
file mw.0.r8956/1107
K 10
diplodlg.c
V 21
file mx.0.r10144/8226
K 10
diplodlg.h
V 21
file my.0.r5491/35128
K 9
finddlg.c
V 21
file mz.0.r5491/37629
K 9
finddlg.h
V 22
file 2dc.0.r5989/44093
K 9
gotodlg.c
V 25
file n0.5bk.r14121/219530
K 9
gotodlg.h
V 21
file n1.0.r5491/35486
K 10
graphics.c
V 22
file n2.0.r10141/65831
K 10
graphics.h
V 21
file n3.0.r5491/36199
K 10
gui_main.c
V 22
file n4.0.r11434/22292
K 10
gui_main.h
V 21
file n5.0.r5491/41925
K 9
helpdlg.c
V 21
file n6.0.r10144/9660
K 9
helpdlg.h
V 21
file n7.0.r5491/39423
K 10
inteldlg.c
V 21
file n8.0.r7847/24779
K 10
inteldlg.h
V 22
file 2dd.0.r5989/43421
K 9
mapctrl.c
V 21
file n9.0.r7018/49625
K 9
mapctrl.h
V 21
file na.0.r5491/37272
K 9
mapview.c
V 25
file nb.5bk.r14417/263248
K 9
mapview.h
V 21
file nc.0.r5491/38349
K 6
menu.c
V 22
file nd.0.r10144/11100
K 6
menu.h
V 21
file ne.0.r5491/43723
K 12
messagedlg.c
V 21
file nf.0.r5491/44434
K 12
messagedlg.h
V 22
file 2de.0.r5989/44428
K 12
messagewin.c
V 21
file ng.0.r9098/29017
K 12
messagewin.h
V 21
file nh.0.r5491/43363
K 7
pages.c
V 22
file 2qi.0.r11749/2340
K 7
pages.h
V 22
file 2qj.0.r8639/28697
K 8
plrdlg.c
V 21
file ni.0.r9098/28662
K 8
plrdlg.h
V 21
file nj.0.r5491/41213
K 10
ratesdlg.c
V 21
file nk.0.r5491/36557
K 10
ratesdlg.h
V 22
file 2df.0.r5989/43757
K 10
repodlgs.c
V 22
file nl.0.r10144/10019
K 10
repodlgs.h
V 21
file nm.0.r5491/40138
K 14
spaceshipdlg.c
V 21
file nn.0.r5491/42999
K 14
spaceshipdlg.h
V 21
file no.0.r5491/44796
K 8
sprite.c
V 22
file 2y2.0.r11749/1632
K 8
sprite.h
V 23
file 2y3.0.r10095/12384
K 8
themes.c
V 23
file 34y.0.r10945/24922
K 7
wldlg.c
V 21
file qj.0.r5491/44077
K 7
wldlg.h
V 21
file qk.0.r5491/45158
END
ENDREP
id: mh.5bk.r14417/265829
type: dir
pred: mh.5bk.r14121/222104
count: 137
text: 14417 263516 2300 2300 5c176c456c8ae87ece476d7322e71df3
props: 11108 13796 68 0 fbaef5f6348d6ae4b0cc177104ca4ad2
cpath: /branches/S2_2/client/gui-stub
copyroot: 13570 /branches/S2_2

id: z2.5bk.r14417/266091
type: file
pred: z2.5bk.r14416/117455
count: 264
text: 14417 86010 1649 88824 cce360417ba8360bd6045ef17d9d9c3b
props: 11084 12552 112 0 73ff9df0f3aabd6f615c7264c2fe22c7
cpath: /branches/S2_2/client/mapview_common.c
copyroot: 13570 /branches/S2_2

id: 2f.5bk.r14417/266363
type: file
pred: 2f.5bk.r14370/4418183
count: 256
text: 14417 0 20080 24470 ad416eed327d9dabed4075565d0e4f79
props: 11057 49359 112 0 8c6f7f683a6ec7c52de63742b923ac5a
cpath: /branches/S2_2/client/civclient.c
copyroot: 13570 /branches/S2_2

id: d5.5bk.r14417/266628
type: file
pred: d5.5bk.r14370/4418444
count: 188
text: 14417 33022 2698 35254 40f0b1bce5b141a1462c5d6ea7aac1fe
props: 11057 49717 112 0 a13a5521476fb3b00a5e0433e6f85ac7
cpath: /branches/S2_2/client/climisc.c
copyroot: 13570 /branches/S2_2

id: hz.5bk.r14417/266894
type: file
pred: hz.5bk.r14150/12191
count: 45
text: 14417 35749 54 2789 430f6221a8e47b72fa6a0c8826ce0595
props: 10540 16234 111 0 2e2357461112b5dbc5fe4daab6abde1a
cpath: /branches/S2_2/client/civclient.h
copyroot: 13570 /branches/S2_2

id: 3bg.5bk.r14417/267156
type: file
pred: 3bg.5bk.r13949/174256
count: 14
text: 14417 90677 136 12045 828c0483fadad22dd0f7f2c1559e7c47
props: 12670 125674 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_2/client/editor.c
copyroot: 13570 /branches/S2_2

id: dc.5bk.r14417/267420
type: file
pred: dc.5bk.r14391/26876
count: 160
text: 14417 37440 13374 29257 57b98a47ef59fe02c34c6410208fbbff
props: 10965 83 112 0 b4bb2e29c9087472d2e44c6eab39b6d6
cpath: /branches/S2_2/client/options.c
copyroot: 13570 /branches/S2_2

PLAIN
K 11
Makefile.am
V 24
file 5f.5bk.r13603/43762
K 6
agents
V 24
dir zf.5bk.r14417/221290
K 11
attribute.c
V 25
file xh.5bk.r14417/262187
K 11
attribute.h
V 19
file xi.0.r4715/844
K 7
audio.c
V 27
file 139.5bk.r14370/4417393
K 7
audio.h
V 22
file 13a.0.r10416/6162
K 12
audio_none.c
V 23
file 13d.0.r6129/145164
K 12
audio_none.h
V 22
file 13e.0.r4452/27228
K 11
audio_sdl.c
V 27
file 13f.5bk.r14377/2306692
K 11
audio_sdl.h
V 22
file 13g.0.r4452/26570
K 17
chatline_common.c
V 27
file 14q.5bk.r14377/2306420
K 17
chatline_common.h
V 27
file 14r.5bk.r14377/2306955
K 16
citydlg_common.c
V 25
file z4.5bk.r14417/221811
K 16
citydlg_common.h
V 24
file z5.5bk.r13912/41313
K 13
cityrepdata.c
V 25
file mb.5bk.r14209/164318
K 13
cityrepdata.h
V 21
file mc.0.r9153/21475
K 11
civclient.c
V 25
file 2f.5bk.r14417/266363
K 11
civclient.h
V 25
file hz.5bk.r14417/266894
K 8
climap.c
V 26
file 197.5bk.r14417/262451
K 8
climap.h
V 25
file 198.5bk.r13917/12934
K 9
climisc.c
V 25
file d5.5bk.r14417/266628
K 9
climisc.h
V 23
file i0.0.r13297/489637
K 8
clinet.c
V 26
file hc.5bk.r14377/2307761
K 8
clinet.h
V 22
file i1.0.r12484/13649
K 15
colors_common.c
V 25
file 33a.5bk.r13897/17383
K 15
colors_common.h
V 25
file 33b.5bk.r13897/17646
K 19
connectdlg_common.c
V 27
file 2fw.5bk.r14377/2306144
K 19
connectdlg_common.h
V 26
file 2fx.5bk.r14209/198288
K 9
control.c
V 25
file gz.5bk.r14417/222354
K 9
control.h
V 23
file i2.5bk.r14140/6757
K 8
editor.c
V 26
file 3bg.5bk.r14417/267156
K 8
editor.h
V 23
file 3bh.0.r12771/15162
K 11
ggzclient.c
V 24
file 394.0.r12670/122138
K 11
ggzclient.h
V 24
file 395.0.r12670/122419
K 6
goto.c
V 24
file vu.5bk.r14140/10307
K 6
goto.h
V 24
file vv.5bk.r13900/41957
K 8
gui-ftwl
V 25
dir 2k2.5bk.r14417/261395
K 11
gui-gtk-2.0
V 24
dir zs.5bk.r14417/230759
K 7
gui-sdl
V 25
dir 16t.5bk.r14417/257227
K 8
gui-stub
V 24
dir mh.5bk.r14417/265829
K 9
gui-win32
V 24
dir np.5bk.r14417/246894
K 7
gui-xaw
V 24
dir 9o.5bk.r14417/239752
K 10
helpdata.c
V 25
file h1.5bk.r14417/261658
K 10
helpdata.h
V 25
file i3.5bk.r14417/261925
K 7
include
V 23
dir b8.5bk.r13745/33874
K 16
mapctrl_common.c
V 26
file 15m.5bk.r14417/262976
K 16
mapctrl_common.h
V 23
file 15n.0.r11378/41712
K 16
mapview_common.c
V 25
file z2.5bk.r14417/266091
K 16
mapview_common.h
V 24
file z3.5bk.r13907/25848
K 19
messagewin_common.c
V 26
file 14s.5bk.r14417/258028
K 19
messagewin_common.h
V 24
file 14t.0.r13297/482271
K 9
options.c
V 25
file dc.5bk.r14417/267420
K 9
options.h
V 24
file i4.5bk.r14162/17600
K 17
overview_common.c
V 26
file 2yk.5bk.r14417/222081
K 17
overview_common.h
V 21
file 2yl.0.r10927/997
K 10
packhand.c
V 24
file n.5bk.r14417/247158
K 10
packhand.h
V 23
file i5.0.r13297/471299
K 15
plrdlg_common.c
V 26
file 14u.5bk.r14417/257491
K 15
plrdlg_common.h
V 26
file 14v.5bk.r14417/257761
K 17
repodlgs_common.c
V 26
file 11i.5bk.r14417/231288
K 17
repodlgs_common.h
V 25
file 11j.5bk.r14162/22062
K 9
reqtree.c
V 26
file 2ym.5bk.r14417/221548
K 9
reqtree.h
V 23
file 2yn.0.r13481/22674
K 9
servers.c
V 23
file 33x.0.r13356/43957
K 9
servers.h
V 27
file 33y.5bk.r14377/2285674
K 6
text.c
V 26
file 2g3.5bk.r14417/231024
K 6
text.h
V 24
file 2g4.5bk.r14284/8380
K 15
themes_common.c
V 23
file 352.0.r13227/35243
K 15
themes_common.h
V 23
file 353.0.r13227/35479
K 10
tilespec.c
V 25
file hl.5bk.r14417/262711
K 10
tilespec.h
V 26
file i6.5bk.r14377/2307496
END
ENDREP
id: d.5bk.r14417/271070
type: dir
pred: d.5bk.r14416/121098
count: 4277
text: 14417 267682 3375 3375 19b9924cef57e7295542bceb404a3d11
props: 12883 2898 109 0 732f4656541fb514e4368d9517bdf317
cpath: /branches/S2_2/client
copyroot: 13570 /branches/S2_2

PLAIN
K 9
ABOUT-NLS
V 22
file fu.0.r13215/85704
K 7
AUTHORS
V 19
file 5u.0.r12982/94
K 7
COPYING
V 19
file 1h.0.r9643/400
K 9
ChangeLog
V 23
file 6l.5bk.r13891/2383
K 7
INSTALL
V 20
file 6.0.r13294/2509
K 11
Makefile.am
V 23
file 59.5bk.r13778/6077
K 4
NEWS
V 22
file 6m.5bk.r13824/202
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 23
dir 8.5bk.r14416/112131
K 10
autogen.sh
V 22
file 12o.0.r12319/1997
K 9
bootstrap
V 23
dir 2p5.5bk.r13974/1517
K 6
client
V 23
dir d.5bk.r14417/271070
K 6
common
V 23
dir p.5bk.r14417/219736
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 27
file 149.5bk.r14377/2260532
K 4
data
V 22
dir w.5bk.r14391/22896
K 6
debian
V 20
dir 5w.0.r13441/7348
K 12
dependencies
V 23
dir 2yu.5bk.r14327/3595
K 11
diff_ignore
V 19
file qq.0.r13200/42
K 3
doc
V 22
dir k7.5bk.r14331/9818
K 4
intl
V 21
dir f4.0.r11105/23499
K 2
m4
V 23
dir 12p.5bk.r14088/1843
K 6
manual
V 25
dir 2m2.5bk.r14417/220367
K 2
po
V 23
dir fs.5bk.r14408/37987
K 7
scripts
V 24
dir 2yo.5bk.r14021/10393
K 6
server
V 23
dir z.5bk.r14417/215200
K 10
stamp-h.in
V 19
file 80.0.r1125/241
K 5
tests
V 21
dir 2g9.0.r13445/1146
K 7
utility
V 22
dir 1c.5bk.r14406/3801
K 10
version.in
V 25
file 2lo.5bk.r14223/23638
K 3
vms
V 21
dir u9.0.r11105/70719
K 5
win32
V 24
dir 2eu.5bk.r13732/30345
END
ENDREP
id: 3.5bk.r14417/272625
type: dir
pred: 3.5bk.r14416/122653
count: 11536
text: 14417 271322 1290 1290 71f92d5b63d95f5eda337a1ac2f6dcdc
props: 11109 0 255 0 8cbc80e0da9c47b05b8ffee17ea9b0f1
cpath: /branches/S2_2
copyroot: 13570 /branches/S2_2

PLAIN
K 6
GTK1_6
V 19
dir 3.1d.r290/94037
K 13
R1_14_1_beta2
V 20
dir 3.eb.r6913/88463
K 5
S1_14
V 20
dir 3.21.r12986/3356
K 4
S2_0
V 21
dir 3.10x.r14410/5514
K 4
S2_1
V 21
dir 3.59e.r14414/5442
K 4
S2_2
V 23
dir 3.5bk.r14417/272625
K 11
freeciv-web
V 22
dir 3.5bl.r13594/14918
K 10
freecivdev
V 12
dir 3.1.r3/0
K 18
resizeable_pixmaps
V 17
dir 3.2.r83/70157
END
ENDREP
id: 1.0.r14417/273238
type: dir
pred: 1.0.r14416/123264
count: 2831
text: 14417 272868 357 357 7c968bc2ae261cfa3307b69390879374
cpath: /branches
copyroot: 0 /

PLAIN
K 8
branches
V 21
dir 1.0.r14417/273238
K 4
tags
V 19
dir 2.0.r14292/2908
K 5
trunk
V 20
dir 3.0.r14415/93489
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r14417/273561
type: dir
pred: 0.0.r14416/123585
count: 14417
text: 14417 273398 150 150 655b93444db951e0edc23141c2350286
cpath: /
copyroot: 0 /

2ym.5bk.t14416-1 modify true false /branches/S2_2/client/reqtree.c

2ys.5bk.t14416-1 modify true false /branches/S2_2/common/tile.c

188.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/menu.c

n.5bk.t14416-1 modify true false /branches/S2_2/client/packhand.c

15m.5bk.t14416-1 modify true false /branches/S2_2/client/mapctrl_common.c

14s.5bk.t14416-1 modify true false /branches/S2_2/client/messagewin_common.c

186.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/mapview.c

11e.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/wldlg.c

2yk.5bk.t14416-1 modify true false /branches/S2_2/client/overview_common.c

z2.5bk.t14416-1 modify true false /branches/S2_2/client/mapview_common.c

gz.5bk.t14416-1 modify true false /branches/S2_2/client/control.c

100.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/cityrep.c

3bg.5bk.t14416-1 modify true false /branches/S2_2/client/editor.c

108.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/dialogs.c

11i.5bk.t14416-1 modify true false /branches/S2_2/client/repodlgs_common.c

b2.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/spaceshipdlg.c

zj.5bk.t14416-1 modify true false /branches/S2_2/client/agents/cma_core.c

o5.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/wldlg.c

2ll.5bk.t14416-1 modify true false /branches/S2_2/common/fc_types.h

36n.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/diplomat_dialog.c

17c.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/diplodlg.c

yq.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/repodlgs.c

xh.5bk.t14416-1 modify true false /branches/S2_2/client/attribute.c

183.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/inteldlg.c

z4.5bk.t14416-1 modify true false /branches/S2_2/client/citydlg_common.c

yn.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/plrdlg.c

11c.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/spaceshipdlg.c

18q.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/wldlg.c

ab.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/gotodlg.c

9w.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/citydlg.c

2f.5bk.t14416-1 modify true false /branches/S2_2/client/civclient.c

nt.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/actions.c

h1.5bk.t14416-1 modify true false /branches/S2_2/client/helpdata.c

172.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/cityrep.c

10q.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/helpdlg.c

xm.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/citydlg.c

xz.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/gotodlg.c

3u.5bk.t14416-1 modify true false /branches/S2_2/common/game.c

hz.5bk.t14416-1 modify true false /branches/S2_2/client/civclient.h

17a.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/dialogs.c

i3.5bk.t14416-1 modify true false /branches/S2_2/client/helpdata.h

10d.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/gamedlgs.c

3v.5bk.t14416-1 modify true false /branches/S2_2/common/game.h

yg.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/menu.c

al.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/mapview.c

16y.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/chatline.c

ye.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/mapview.c

3bn.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/diplomat_dialog.c

ay.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/repodlgs.c

2pi.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/pages.c

xs.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/connectdlg.c

184.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/mapctrl.c

hl.5bk.t14416-1 modify true false /branches/S2_2/client/tilespec.c

bm.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/gui_main.c

18m.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/spaceshipdlg.c

2qm.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/pages.c

xw.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/diplodlg.c

118.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/repodlgs.c

17z.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/helpdlg.c

an.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/menu.c

yb.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/inteldlg.c

2mr.5bk.t14416-1 modify true false /branches/S2_2/client/gui-ftwl/gui_text.c

115.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/plrdlg.c

yp.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/ratesdlg.c

10k.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/gui_main.c

9y.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/cityrep.c

xo.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/cityrep.c

zy.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/citydlg.c

10e.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/gotodlg.c

a6.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/dialogs.c

xu.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/dialogs.c

45.5bk.t14416-1 modify true false /branches/S2_2/common/player.c

nb.5bk.t14416-1 modify true false /branches/S2_2/client/gui-stub/mapview.c

10z.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/menu.c

37p.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/diplomat_dialog.c

10x.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/mapview.c

2m5.5bk.t14416-1 modify true false /branches/S2_2/manual/civmanual.c

a8.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/diplodlg.c

191.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/gui_tilespec.c

vl.5bk.t14416-1 modify true false /branches/S2_2/server/savegame.c

ad.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/graphics.c

d5.5bk.t14416-1 modify true false /branches/S2_2/client/climisc.c

18i.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/repodlgs.c

ai.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/inteldlg.c

2g3.5bk.t14416-1 modify true false /branches/S2_2/client/text.c

yc.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/mapctrl.c

ax.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/ratesdlg.c

18f.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/plrdlg.c

yt.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/spaceshipdlg.c

dc.5bk.t14416-1 modify true false /branches/S2_2/client/options.c

14u.5bk.t14416-1 modify true false /branches/S2_2/client/plrdlg_common.c

17o.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/gui_main.c

af.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/helpdlg.c

14v.5bk.t14416-1 modify true false /branches/S2_2/client/plrdlg_common.h

10a.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/diplodlg.c

17f.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/gotodlg.c

170.5bk.t14416-1 modify true false /branches/S2_2/client/gui-sdl/citydlg.c

y7.5bk.t14416-1 modify true false /branches/S2_2/client/gui-win32/helpdlg.c

aw.5bk.t14416-1 modify true false /branches/S2_2/client/gui-xaw/plrdlg.c

197.5bk.t14416-1 modify true false /branches/S2_2/client/climap.c

2kz.5bk.t14416-1 modify true false /branches/S2_2/client/gui-ftwl/mapview.c

10u.5bk.t14416-1 modify true false /branches/S2_2/client/gui-gtk-2.0/inteldlg.c


273561 273714
