DELTA 18873 0 1218
SVN  Þ\ï%N ‡i “ ”.‡h€\ ‹dœL€‹v µ(¨ YÝ8€‚i MÞ#include "mapimg.h"options for map images */
extern char mapimg_format[64];
extern int mapimg_zoom;
extern bool mapimg_layer[MAPIMG_LAYER_COUNT];
extern char mapimg_filename[512];

/* gui-gtk-2.0 client specific options. */
#define FC_GTK2gtk-3.0 client specific options. */
#define FC_GTK3_DEFAULT_THEME_NAME "Freeciv"
extern char gui_gtk3_default_theme_name[512];
extern bool gui_gtk3_map_scrollbars;
extern bool gui_gtk3_dialogs_on_top;
extern bool gui_gtk3_show_task_icons;
extern bool gui_gtk3_enable_tabs;
extern bool gui_gtk3_better_fog;
extern bool gui_gtk3_show_chat_message_time;
extern bool gui_gtk3_new_messages_go_to_top;
extern bool gui_gtk3_show_message_window_buttons;
extern bool gui_gtk3_metaserver_tab_first;
extern bool gui_gtk3_allied_chat_only;
enum {
  /* Order must match strings in
   * options.c:gui_gtk3_message_chat_location_name() */
  GUI_GTK3_MSGCHAT_SPLIT,
  GUI_GTK3_MSGCHAT_SEPARATE,
  GUI_GTK3_MSGCHAT_MERGED
};
extern int gui_gtk3_message_chat_location; /* enum GUI_GTK2_MSGCHAT_* */
extern bool gui_gtk3_small_display_layout;
extern bool gui_gtk3_mouse_over_map_focus;
extern bool gui_gtk3_chatline_autocompletion;
extern int gui_gtk3_citydlg_xsize;
extern int gui_gtk3_citydlg_ysize;
extern char gui_gtk3_font_city_label[512];
extern char gui_gtk3_font_notify_label[512];
extern char gui_gtk3_font_spaceship_label[512];
extern char gui_gtk3_font_help_label[512];
extern char gui_gtk3_font_help_link[512];
extern char gui_gtk3_font_help_text[512];
extern char gui_gtk3_font_chatline[512];
extern char gui_gtk3_font_beta_label[512];
extern char gui_gtk3_font_small[512];
extern char gui_gtk3_font_comment_label[512];
extern char gui_gtk3_font_city_names[512];
extern char gui_gtk3_font_city_productions[512];
extern char gui_gtk3/* gui-gtk3: [xy]size of the city dialog */
#define GUI_GTK3_CITYDLG_DEFAULT_XSIZE  770
#define GUI_GTK3_CITYDLG_MIN_XSIZE      256
#define GUI_GTK3_CITYDLG_MAX_XSIZE      4096

#define GUI_GTK3_CITYDLG_DEFAULT_YSIZE  512
#define GUI_GTK3_CITYDLG_MIN_YSIZE      128
#define GUI_GTK3_CITYDLG_MAX_YSIZE      4096

#define GUI_DEFAULT_MAPIMG_FILENAME     "freeciv"ENDREP
DELTA 19385 12382 2598
SVN  ‚Œ‚XM…` ‡o  U‡x‘ Kö  Š± Kö  ‚‹z™ Kö  ‡6G‚ ‰'–œ Bö  O k« Bö  y¢£ Bö  ¤=— Bö ± -¦T— Bö ± ¨yª Bö  ‚iª[° Bö  N®	¥ Bö  9°ª Bö  †5²” Kö  ƒd¹¨ Kö  „½O  YÁ[€G –Aâs …,ù5 ‚þb€J Šn1client/gui-gtk-3  Draw widget now  Set widget postion relative to reference widget  Create new stock buttonel  Set itree to the beginning  Return whether itree end has been reached  Make itree to go forward one step  Store values to itree/
void itree_set(ITree *it, ...)
{
  va_list ap;
  Get values from itree/
void itree_get(ITree *it, ...)
{
  va_list ap;
  Append one item to the end of tree store  Return whether current itree item is selected   Add current itree item to selection  Remove current itree item from selection  Give focus to view  Generic close callback for all widgets3KEY_Escape
	|| ((ev->state & GDK_CONTROL_MASK) && ev->keyval == GDK_KEY333_enable_tabs && notebook != GTK_NOTEBOOK(top_notebook)
      && !gui_gtk3ENDREP
DELTA 19740 9476 38
SVN  †  †   ‚½  ƒâh‚½3†  î7î7  î7 ENDREP
DELTA 19740 132 75
SVN  †  †    ‚îo · ƒ—`‚ï&Ÿ }†‡%¾ ~†ˆ` –!†‰_3_citydlg_xsize,
                              gui_gtk33_citydlg_xsize = CLIP(GUI_GTK33_CITYDLG_MAX_XSIZE);
  gui_gtk3_citydlg_ysize = CLIP(GUI_GTK33†  ‰A‰A  ‰A ENDREP
DELTA 14427 181204 6586
SVN  ÇpìNQÐa …X €‚W F‡|€ƒ3 G ³ L½@€ƒ  E“?½ L½@€‚: K“9± L½@€ƒo E“?˜ b‘y€‹] [¸>œ a½@€…C E“?± a½@€„N Q—€N L½@€†H E“?¥ a½@€†5 E“? b‘y€„? o£2  q¤%€U  §+€‚ r¨(€Š\ E“?— b‘y€Z E“?€G KŽ}€G Z¸>„ m‘n€ Z¸>¯ L½@€G E“?• f‘u€sfc_config.h>
#endif

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

#include <gtk/gtk.h>

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

/* common */
#include "events.h"
#include "game.h"
#include "map.h"
#include "player.h"

/* client */
#include "options.h"

/* client/gui-gtk-3.0 */
#include "chatline.h"
#include "citydlg
#include "messagewin.h"


struct meswin_dialog {
  struct gui_dialog *shell;
  GtkTreeView *tree_view;
};

/* Those values must match meswin_dialog_store_new(). */
enum meswin_columns {
  MESWIN_COL_MESSAGE,

  /* Not visible. */
  MESWIN_COL_WEIGHT,
  MESWIN_COL_STYLE,
  MESWIN_COL_ID,

  MESWIN_COL_NUM
};

enum meswin_responses {
  MESWIN_RES_GOTO = 1,
  MESWIN_RES_POPUP_CITY
};

static struct meswin_dialog meswin = { NULL, };

******
  Create a tree model for the message window**/
static GtkListStore *meswin_dialog_store_new(void)
{
  return gtk_list_store_new(MESWIN_COL_NUM,
                            G_TYPE_STRING,      /* MESWIN_COL_MESSAGE */
                            G_TYPE_INT,         /* MESWIN_COL_WEIGHT */
                            G_TYPE_INT,         /* MESWIN_COL_STYLE */
                            G_TYPE_INT);        /* MESWIN_COL_ID */************
  Get the pango attributes for the visited state**/
static void meswin_dialog_visited_get_attr(bool visited, gint *weight,
                                           gint *style)
{
  if (NULL != weight) {
    *weight = (visited ? PANGO_WEIGHT_NORMAL : PANGO_WEIGHT_BOLD);
  }
  if (NULL != style) {
    *style = (visited ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL************
  Set the visited state of the store**/
static void meswin_dialog_set_visited(GtkTreeModel *model,
                                      GtkTreeIter *iter, bool visited)
{
  gint row, weight, style;

  gtk_tree_model_get(model, iter, MESWIN_COL_ID, &row, -1);
  meswin_dialog_visited_get_attr(visited, &weight, &style);
  gtk_list_store_set(GTK_LIST_STORE(model), iter,
                     MESWIN_COL_WEIGHT, weight,
                     MESWIN_COL_STYLE, style,
                     -1);
  meswin_set_visited_state(row, visited);************
  Refresh a**/
static void meswin_dialog_refresh(struct meswin_dialog *pdialog)
{
  GtkTreeSelection *selection;
  GtkTreeModel *model;
  GtkListStore *store;
  GtkTreeIter iter;
  const struct message *pmsg;
  gint weight, style;
  int selected, i, num;
  bool need_alert = FALSE;

  fc_assert_ret(NULL != pdialog);

  /* Save the selection. */
  selection = gtk_tree_view_get_selection(pdialog->tree_view);
  if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
    gtk_tree_model_get(model, &iter, MESWIN_COL_ID, &selected, -1);
  } else {
    selected = -1;
  }

  model = gtk_tree_view_get_model(pdialog->tree_view);
  store = GTK_LIST_STORE(model);
  num = meswin_get_num_messages();

  gtk_list_store_clear(store);
  for (i = 0; i < num; i++) {
    pmsg = meswin_get_message(i);

    if (gui_gtk3_new_messages_go_to_top) {
      gtk_list_store_prepend(store, &iter);
    } else {
      gtk_list_store_append(store, &iter);
    }

    meswin_dialog_visited_get_attr(pmsg->visited, &weight, &style);
    gtk_list_store_set(store, &iter,
                       MESWIN_COL_MESSAGE, pmsg->descr,
                       MESWIN_COL_WEIGHT, weight,
                       MESWIN_COL_STYLE, style,
                       MESWIN_COL_ID, i,
                       -1);
    if (i == selected) {
      /* Restore the selection. */
      gtk_tree_selection_select_iter(selection, &iter);
    }

    if (!pmsg->visited) {
      need_alert = TRUE;
    }
  }

  if (need_alert) {
    gui_dialog_alert(pdialog->  Selection changed callbackdialog_selection_callback(GtkTreeSelection *selection,
                                             gpointer data)
{
  struct meswin_dialog *pdialog = data;
  const struct message *pmsg;
  GtkTreeModel *model;
  GtkTreeIter iter;
  gint row;

  if (!gtk_tree_selection_get_selected(selection, &model, &iter)) {
    return;
  }

  gtk_tree_model_get(model, &iter, MESWIN_COL_ID, &row, -1);
  pmsg = meswin_get_message(row);

  gui_dialog_set_response_sensitive(pdialog->shell, MESWIN_RES_GOTO,
                                    NULL != pmsg && pmsg->location_ok);
  gui_dialog_set_response_sensitive(pdialog->shell, MESWIN_RES_POPUP_CITY,
                                    NULL != pmsg && pmsg->city_ok);**********
  A row has been activated by the userdialog_row_activated_callback(GtkTreeView *view,
                                                 GtkTreePath *path,
                                                 GtkTreeViewColumn *col,
                                                 gpointer data)
{
  GtkTreeModel *model = gtk_tree_view_get_model(view);
  GtkTreeIter iter;
  gint row;

  if (!gtk_tree_model_get_iter(model, &iter, path)) {
    return;
  }

  gtk_tree_model_get(model, &iter, MESWIN_COL_ID, &row, -1);

  if (NULL != meswin_get_message(row)) {
    meswin_double_click(row);
    meswin_dialog_set_visited(model, &iter************
  Mouse button press handler for the message window treeview. We only
  care about right clicks on a row; this action centers on the tile
  associated with the event at that row (if applicable)**/
static gboolean meswin_dialog_button_press_callback(GtkWidget *widget,
                                                    GdkEventButton *ev,
                                                    gpointer data)
{
  GtkTreePath *path = NULL;
  GtkTreeModel *model;
  GtkTreeIter iter;
  gint row;

  fc_assert_ret_val(GTK_IS_TREE_VIEW(widget), FALSE);

  if (GDK_BUTTON_PRESS  != ev->type || 3 != ev->button) {
    return FALSE;
  }

  if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), ev->x, ev->y,
                                     &path, NULL, NULL, NULL)) {
    return TRUE;
  }

  model = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
  if (gtk_tree_model_get_iter(model, &iter, path)) {
    gtk_tree_model_get(model, &iter, MESWIN_COL_ID, &row, -1);
    meswin_goto(row);
  }
  gtk_tree_path_free(path);

  return TRUE;**********
  Dialog response callbackdialog_response_callback(struct gui_dialog *pgui_dialog,
                                            int response, gpointer data)
{
  struct meswin_dialog *pdialog = data;
  GtkTreeSelection *selection;
  GtkTreeModel *model;
  GtkTreeIter iter;
  gint row;

  switch (response) {
  case MESWIN_RES_GOTO:
  case MESWIN_RES_POPUP_CITY:
    break;
  default:
    gui_dialog_destroy(pgui_dialog);
    return;
  }

  selection = gtk_tree_view_get_selection(pdialog->tree_view);
  if (!gtk_tree_selection_get_selected(selection, &model, &iter)) {
    return;
  }

  gtk_tree_model_get(model, &iter, MESWIN_COL_ID, &row, -1);

  switch (response) {
  case MESWIN_RES_GOTO:
    meswin_goto(row);
    break;
  case MESWIN_RES_POPUP_CITY:
    meswin_popup_city(row);
    break;
  }
  meswin_dialog_set_visited(model, &iter, TRUE);************
  Initilialize a**/
static void meswin_dialog_init(struct meswin_dialog *pdialog)
{
  GtkWidget *view, *sw, *cmd, *notebook;
  GtkBox *vbox;
  GtkListStore *store;
  GtkTreeSelection *selection;
  GtkCellRenderer *renderer;
  GtkTreeViewColumn *col;

  fc_assert_ret(NULL != pdialog);

  if (gui_gtk3_message_chat_location == GUI_GTK3_MSGCHAT_SPLIT) {
    notebook = right_notebook;
  } else {
    notebook = bottom_notebook;
  }

  gui_dialog_new(&pdialog->shell, GTK_NOTEBOOK(notebook), pdialog);
  gui_dialog_set_title(pdialog->shell, _("Messages"));
  vbox = GTK_BOX(pdialog->shell->vbox                                       GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
  gtk_box_pack_start(vbox, sw, TRUE, TRUE, 0);

  store = meswin_dialog_store_new();
  view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
  g_object_unref(  g_signal_connect(view, "row_activated",
                   G_CALLBACK(meswin_dialog_row_activated_callback), NULL);
  g_signal_connect(view, "button-press-event",
                   G_CALLBACK(meswin_dialog_button_press_callback), NULL);
  pdialog->tree_view = GTK_TREE_VIEW(view                                               "text", MESWIN_COL_MESSAGE,
                                                 "weight", MESWIN_COL_WEIGHT,
                                                 "style", MESWIN_COL_STYLE,
                                                 NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
  gtk_container_add(GTK_CONTAINER(sw), view);

  selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
  g_signal_connect(selection, "changed",
                   G_CALLBACK(meswin_dialog_selection_callback), pdialog);

  if (gui_gtk3_show_message_window_buttons) {
    cmd = gui_dialog_add_stockbutton(pdialog->shell, GTK_STOCK_JUMP_TO,
                                     _("Goto _Location"), MESWIN_RES_GOTO);
    gtk_widget_set_sensitive(cmd, FALSE);

    cmd = gui_dialog_add_stockbutton(pdialog->shell, GTK_STOCK_ZOOM_IN,
                                     _("Inspect _City"),
                                     MESWIN_RES_POPUP_CITY);
    gtk_widget_set_sensitive(cmd, FALSE);
  }

  gui_dialog_add_button(pdialog->shell, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
  gui_dialog_response_set_callback(pdialog->shell,
                                   meswin_dialog_response_callback);
  gui_dialog_set_default_size(pdialog->shell, 520, 300);

  meswin_dialog_refresh(pdialog);
  gui_dialog_show_all(pdialog->shell);************
  Closes a**/
static void meswin_dialog_free(struct meswin_dialog *pdialog)
{
  fc_assert_ret(NULL != pdialog);

  gui_dialog_destroy(pdialog->shell);
  fc_assert(NULL == pdialog->shell);

  memset(pdialog, 0, sizeof(*pdialog));************
  Popup the dialog inside the main-window, and optionally ***********/
void meswin_dialog_popup(bool raise)
{
  if (NULL == meswin.shell) {
    meswin_dialog_init(&meswin);
  }

  gui_dialog_present(meswin.shell);
  if (raise) {
    gui_dialog_raise(meswin.**
 **/
void meswin_dialog_popdown(void)
{
  if (NULL != meswin.shell) {
    meswin_dialog_free(&meswin);
    fc_assert(NULL == meswin.**
  Return TRUE iff the message window is open**/
bool meswin_dialog_is_open(void)
{
  return (NULL != meswin.shell);************
  Update**/
void real_meswin_dialog_update(void)
{
  if (NULL != meswin.shell) {
    meswin_dialog_refresh(&meswin);
  }
}
ENDREP
DELTA 19712 16602 2290
SVN  †  †    †   †  „å0„æCg „‘i €g Ós„‘=GTK3:
    default_theme_name = gui_gtk3_default_theme_name;
    default_theme_name_sz = sizeof(gui_gtk3ENDREP
DELTA 19742 64 4040
SVN  …¾3…¾3D ÎQ €C ƒíPÏ N…¼e3_better_fog ^ gtk_toggle_action_get_active(action)) {
    gui_gtk33ENDREP
DELTA 19740 688 745
SVN  áDáD8  3  ŠW 4 ‚_«¶ ³#®!333_better_fog = FALSE;
    }
  }

  if (fog && gui_gtk3ENDREP
DELTA 19740 9762 1748
SVN  ‚Öd‚Öd â<  <â= „dãz îè_333ENDREP
DELTA 19259 324261 3744
SVN  ·e·gd › €d ›i›|2_DEFAULT_THEME_NAME);
    if (theme_loaded) {
      sz_strlcpy(gui_gtk2_default_theme_name, FC_GTK2ENDREP
DELTA 19259 324261 3744
SVN  ·e·gf ‡I  ’3‡J ™~€d ›i›|333_DEFAULT_THEME_NAME);
    if (theme_loaded) {
      sz_strlcpy(gui_gtk3_default_theme_name, FC_GTK3ENDREP
DELTA 19154 25641 19343
SVN  †  †  [ŒE …X ƒ ž0…X ‹¤€‹> ƒáu®s '„i „’€l e„“r… —F„”W‚ „¬ y„­: n„¯3„ ;„­oŠ Ø{„¯3 ‰†ˆ/fc_2gtk-3.0 client specific options. */
char gui_gtk3_default_theme_name[512] = FC_GTK3_DEFAULT_THEME_NAME;
bool gui_gtk3_map_scrollbars = FALSE;
bool gui_gtk3_dialogs_on_top = TRUE;
bool gui_gtk3_show_task_icons = TRUE;
bool gui_gtk3_enable_tabs = TRUE;
bool gui_gtk3_better_fog = TRUE;
bool gui_gtk3_show_chat_message_time = FALSE;
bool gui_gtk3_new_messages_go_to_top = FALSE;
bool gui_gtk3_show_message_window_buttons = TRUE;
bool gui_gtk3_metaserver_tab_first = FALSE;
bool gui_gtk3_allied_chat_only = FALSE;
int gui_gtk3_message_chat_location = GUI_GTK2_MSGCHAT_MERGED;
bool gui_gtk3_small_display_layout = TRUE;
bool gui_gtk3_mouse_over_map_focus = FALSE;
bool gui_gtk3_chatline_autocompletion = TRUE;
int gui_gtk3_citydlg_xsize = GUI_GTK2_CITYDLG_DEFAULT_XSIZE;
int gui_gtk3_citydlg_ysize = GUI_GTK2_CITYDLG_DEFAULT_YSIZE;
char gui_gtk3_font_city_label[512] = "Monospace 8";
char gui_gtk3_font_notify_label[512] = "Monospace Bold 9";
char gui_gtk3_font_spaceship_label[512] = "Monospace 8";
char gui_gtk3_font_help_label[512] = "Sans Bold 10";
char gui_gtk3_font_help_link[512] = "Sans 9";
char gui_gtk3_font_help_text[512] = "Monospace 8";
char gui_gtk3_font_chatline[512] = "Monospace 8";
char gui_gtk3_font_beta_label[512] = "Sans Italic 10";
char gui_gtk3_font_small[512] = "Sans 9";
char gui_gtk3_font_comment_label[512] = "Sans Italic 9";
char gui_gtk3_font_city_names[512] = "Sans Bold 10";
char gui_gtk3_font_city_productions[512] = "Serif 10";
char gui_gtk3/gtk3_message_chat_location' */
    { "SPLIT",    N_("Split") },
    /* TRANS: enum value for 'gui_gtk2/gtk3/gtk3/332gtk33, FC_GTK3†  †  †  Õ€‰0 †x€V H†x€V †x ˜v€Š  ¡K€g K£8€·k Zp€W Uƒ! O„w Y…G€V S‡v€V -Š€Y ‚eŒ%€@ ‚ J€X T’"€F q”<€B o–o „˜Q˜_µ B´@ è„±v¥ š-…š' option is turned on, the tabulation key "
                     "will be used in the chatline to complete the word you "
                     "are typing with the name of a player or a user."),
                  COC_INTERFACE, GUI_GTK2, TRUE, NULL),
  GEN_INT_OPTION(gui_gtk2_citydlg_xsize,
                 N_("Width of the city dialog"),
                 N_("This value is only used if the width of the city "
                    "dialog is saved."),
                 COC_INTERFACE, GUI_GTK2, GUI_GTK2_CITYDLG_DEFAULT_XSIZE,
                 GUI_GTK2_CITYDLG_MIN_XSIZE, GUI_GTK2_CITYDLG_MAX_XSIZE,
                 NULL),
  GEN_INT_OPTION(gui_gtk2_citydlg_ysize,
                 N_("Height of the city dialog"),
                 N_("This value is only used if the height of the city "
                    "dialog is saved."),
                 COC_INTERFACE, GUI_GTK2, GUI_GTK2_CITYDLG_DEFAULT_YSIZE,
                 GUI_GTK2_CITYDLG_MIN_YSIZE, GUI_GTK2_CITYDLG_MAX_YSIZE,
                 NULL),
  GEN_FONT_OPTION(gui_gtk2_font_city_label, "city_label",
                  N_("City Label"),
                  N_("This font is used to display the city labels on city "
                     "dialogsnotify_label, "notify_label",
                  N_("Notify Label"),
                  N_("This font is used to display server reports such "
                     "as the demographic report or historian publicationsBold 9", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk2_font_spaceship_label, "spaceship_label",
                  N_("Spaceship Label"),
                  N_("This font is used to display the spaceship widgetsgtk-3.0 client specific options. */
  GEN_BOOL_OPTION(gui_gtk3_map_scrollbars, N_("Show map scrollbars"),
                  N_("Disable this option to hide the scrollbars on the "
                     "map view."),
                  COC_INTERFACE, GUI_GTK3, FALSE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_dialogs_on_top, N_("Keep dialogs on top"),
                  N_("If this option is set then dialog windows will always "
                     "remain in front of the main Freeciv window. "
                     "Disabling this has no effect in fullscreen mode."),
                  COC_INTERFACE, GUI_GTK3, TRUE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_show_task_icons, N_("Show worklist task icons"),
                  N_("Disabling this will turn off the unit and building "
                     "icons in the worklist dialog and the production "
                     "tab of the city dialog."),
                  COC_GRAPHICS, GUI_GTK3, TRUE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_enable_tabs, N_("Enable status report tabs"),
                  N_("If this option is enabled then report dialogs will "
                     "be shown as separate tabs rather than in popup "
                     "dialogs."),
                  COC_INTERFACE, GUI_GTK3, TRUE, NULL),
  GEN_BOOL_OPTION(gui_gtk3"
                     "for drawing fog-of-war.  It is not any slower but "
                     "will GTK3,
                  TRUE, view_option_changed_callback),
  GEN_BOOL_OPTION(gui_gtk3_show_chat_message_time,
                  N_("Show time for each chat message"),
                  N_("If this option is enabled then all chat messages "
                     "will be prefixed by a time string of the form "
                     "[hour:minute:second]."),
                  COC_INTERFACE, GUI_GTK3, FALSE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_new_messages_go_to_top,
                  N_("New message events go to top of list"),
                  N_("If this option is enabled, new events in the "
                     "message window will appear at the top of the list, "
                     "rather than being appended at the bottom."),
                  COC_INTERFACE, GUI_GTK3, FALSE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_show_message_window_buttons,
                  N_("Show extra message window buttons"),
                  N_("If this option is enabled, there will be two "
                     "buttons displayed in the message window for "
                     "inspecting a city and going to a location. If this "
                     "option is disabled, these buttons will not appear "
                     "(you can still double-click with the left mouse "
                     "button or right-click on a row to inspect or goto "
                     "respectively). This option will only take effect "
                     "once the message window is closed and reopened."),
                  COC_INTERFACE, GUI_GTK3, TRUE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_metaserver_tab_first,
                  N_("Metaserver tab first in network page"),
                  N_("If this option is enabled, the metaserver tab will "
                     "be the first notebook tab in the network page. This "
                     "option requires a restart in order to take effect."),
                  COC_NETWORK, GUI_GTK3, FALSE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_allied_chat_only,
                  N_("Plain chat messages are sent to allies only"),
                  N_("If this option is enabled, then plain messages "
                     "typed into the chat entry while the game is "
                     "running will only be sent to your allies. "
                     "Otherwise plain messages will be sent as "
                     "public chat messages. To send a public chat "
                     "message with this option enabled, prefix the "
                     "message with a single colon ':'. This option "
                     "can also be set using a toggle button beside "
                     "the chat entry (only visible in multiplayer "
                     "games)."),
                  COC_INTERFACE, GUI_GTK3, FALSE, NULL),
  GEN_ENUM_OPTION(gui_gtk3_message_chat_location,
                  N_("Messages and Chat reports location"),
                  /* TRANS: The strings used in the UI for 'Split' etc are
                   * tagged 'gui_gtk3_message_chat_location' */
                  N_("Controls where the Messages and Chat reports "
                     "appear relative to the main view containing the map.\n"
                     "'Split' allows all three to be seen simultaneously, "
                     "which is best for multiplayer, but requires a large "
                     "window to be usable.\n"
                     "'Separate' puts Messages and Chat in a notebook "
                     "separate from the main view, so that one of them "
                     "can always be seen alongside the main view.\n"
                     "'Merged' makes the Messages and Chat reports into "
                     "tabs alongside the map and other reports; this "
                     "allows a larger map view on small screens.\n"
                     "This option requires a restart in order to take "
                     "effect."), COC_INTERFACE, GUI_GTK3,
                  GUI_GTK3_MSGCHAT_MERGED /* Ignored! See options_load(). */,
                  gui_gtk_message_chat_location_name, NULL),
  GEN_BOOL_OPTION(gui_gtk3_small_display_layout,
                  N_("Arrange widgets for small displays"),
                  N_("If this option is enabled, widgets in the main "
                     "window will be arranged so that they take up the "
                     "least amount of total screen space. Specifically, "
                     "the left panel containing the overview, player "
                     "status, and the unit information box will be "
                     "extended over the entire left side of the window. "
                     "This option requires a restart in order to take "
                     "effect."), COC_INTERFACE, GUI_GTK3, TRUE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_mouse_over_map_focus,
                  N_("Mouse over the map widget selects it automatically"),
                  N_("If this option is enabled, then the map will be "
                     "focused when the mouse hovers over it."),
                  COC_INTERFACE, GUI_GTK3, FALSE, NULL),
  GEN_BOOL_OPTION(gui_gtk3_chatline_autocompletion,
                  N_("Player or user name autocompletion"),
                  N_("If this option is turned on, the tabulation key "
                     "will be used in the chatline to complete the word you "
                     "are typing with the name of a player or a user."),
                  COC_INTERFACE, GUI_GTK3, TRUE, NULL),
  GEN_INT_OPTION(gui_gtk3_citydlg_xsize,
                 N_("Width of the city dialog"),
                 N_("This value is only used if the width of the city "
                    "dialog is saved."),
                 COC_INTERFACE, GUI_GTK3, GUI_GTK3_CITYDLG_DEFAULT_XSIZE,
                 GUI_GTK3_CITYDLG_MIN_XSIZE, GUI_GTK3_CITYDLG_MAX_XSIZE,
                 NULL),
  GEN_INT_OPTION(gui_gtk3_citydlg_ysize,
                 N_("Height of the city dialog"),
                 N_("This value is only used if the height of the city "
                    "dialog is saved."),
                 COC_INTERFACE, GUI_GTK3, GUI_GTK3_CITYDLG_DEFAULT_YSIZE,
                 GUI_GTK3_CITYDLG_MIN_YSIZE, GUI_GTK3_CITYDLG_MAX_YSIZE,
                 NULL),
  GEN_FONT_OPTION(gui_gtk3_font_city_label, "city_label",
                  N_("City Label"),
                  N_("This font is used to display the city labels on city "
                     "dialogs."),
                  COC_FONT, GUI_GTK3,
                  "Monospace 8", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk3_font_notify_label, "notify_label",
                  N_("Notify Label"),
                  N_("This font is used to display server reports such "
                     "as the demographic report or historian publications."),
                  COC_FONT, GUI_GTK3,
                  "Monospace Bold 9", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk3_font_spaceship_label, "spaceship_label",
                  N_("Spaceship Label"),
                  N_("This font is used to display the spaceship widgets."),
                  COC_FONT, GUI_GTK3,
                  "Monospace 8", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk33,
                  "Sans Bold 10", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk3333,
                  "Monospace 8", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk33,
                  "Monospace 8", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk33,
                  "Sans Italic 10", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk33,
                  "Sans 9", NULL),
  GEN_FONT_OPTION(gui_gtk33,
                  "Sans Italic 9", font_changed_callback),
  GEN_FONT_OPTION(gui_gtk33,
                  "Sans Bold 10", NULL),
  GEN_FONT_OPTION(gui_gtk33,
                  "Serif 10", NULL),
  GEN_FONT_OPTION(gui_gtk33  Free resources allocated for message options system!fc_strcasecmp(name, "gameseed") || !ŒÀ ¼¨}qâ.€ Oƒ² \µ@€” Iž £ Xµ8€…! Iž ¬ dµ8€†/ Tƒz« dµ8€‚  Eƒ€
 Cµ@€…S Kƒy€o Cµ@€…v @ž €N Cµ@€–n Rƒˆ Tµ8€ˆP Iž Ÿ ¼ settable_option_upgrade_value(const struct option *poption,
                                          int old_value,
                                          char *buf, size_t buf_len)
{
  const char *name = option_name(poption);

#define SETTING_CASE(ARG_name, ...)                                         \
  if (0 == strcmp(ARG_name, name)) {                                        \
    static const char *values[] = { __VA_ARGS__ };                          \
    if (0 <= old_value && old_value < ARRAY_SIZE(values)                    \
        && NULL != values[old_value]) {                                     \
      fc_strlcpy(buf, values[old_value], buf_len);                          \
      return TRUE;                                                          \
    } else {                                                                \
      return FALSE;                                                         \
    }                                                                       \
  }

  SETTING_CASE("topology", "", "WRAPX", "WRAPY", "WRAPX|WRAPY", "ISO",
               "WRAPX|ISO", "WRAPY|ISO", "WRAPX|WRAPY|ISO", "HEX",
               "WRAPX|HEX", "WRAPY|HEX", "WRAPX|WRAPY|HEX", "ISO|HEX",
               "WRAPX|ISO|HEX", "WRAPY|ISO|HEX", "WRAPX|WRAPY|ISO|HEX");
  SETTING_CASE("generator", NULL, "RANDOM", "FRACTAL", "ISLAND");
  SETTING_CASE("startpos", "DEFAULT", "SINGLE", "2or3", "ALL", "VARIABLE");
  SETTING_CASE("killcitizen", "", "LAND", "SEA", "LAND|SEA", "BOTH",
               "LAND|BOTH", "SEA|BOTH", "LAND|SEA|BOTH");
  SETTING_CASE("borders", "DISABLED", "ENABLED", "SEE_INSIDE", "EXPAND");
  SETTING_CASE("diplomacy", "ALL", "HUMAN", "AI", "TEAM", "DISABLED");
  SETTING_CASE("citynames", "NO_RESTRICTIONS", "PLAYER_UNIQUE",
               "GLOBAL_UNIQUE", "NO_STEALING");
  SETTING_CASE("barbarians", "DISABLED", "HUTS_ONLY", "NORMAL", "FREQUENT",
               "HORDES");
  SETTING_CASE("phasemode", "ALL", "PLAYER", "TEAM");
  SETTING_CASE("compresstype", "PLAIN", "LIBZ", "BZIP2");

#undef SETTING_CASE
  return FALSE;**
  Send the desired server options to the serverdesired_settable_option_send(struct option *poption)
{
  char *desired;
  int value;

  fc_assert_ret(NULL != settable_options_hash);

  if (!settable_options_hash_lookup(settable_options_hash,
                                    option_name(poption), &desired)) {
    /* No change explicitly  desired. */
    return;
  }

  switch (option_type(poption)) {
  case OT_BOOLEAN:
    if ((0 == fc_strcasecmp("enabled", desired)
         || (str_to_int(desired, &value) && 1 == value))
        && !option_bool_get(poption)) {
      send_chat_printf("/set %s enabled", option_name(poption));
    } else if ((0 == fc_strcasecmp("disabled", desired)
                || (str_to_int(desired, &value) && 0 == value))
               && option_bool_get(poption)) {
      send_chat_printf("/set %s disabled", option_name(poption));
    }
    return;
  case OT_INTEGER:
    if (str_to_int(desired, &value) && value != option_int_get(poption)) {
      send_chat_printf("/set %s %d", option_name(poption), value);
    }
    return;
  case OT_STRING:
    if (0 != strcmp(desired, option_str_get(poption))) {
      send_chat_printf("/set %s \"%s\"", option_name(poption), desired);
    }
    return;
  case OT_ENUM:
    {
      char desired_buf[256];
      const char *value_str;

      /* Handle old values. */
      if (str_to_int(desired, &value)
          && settable_option_upgrade_value(poption, value, desired_buf,
                                           sizeof(desired_buf))) {
        desired = desired_buf;
      }

      server_option_enum_support_name(poption, &value_str, NULL);
      if (0 != strcmp(desired, value_str)) {
        send_chat_printf("/set %s \"%s\"", option_name(poption), desired);
      }
    }
    return;
  case OT_BITWISE:
    {
      char desired_buf[256], value_buf[256];

      /* Handle old values. */
      if (str_to_int(desired, &value)
          && settable_option_upgrade_value(poption, value, desired_buf,
                                           sizeof(desired_buf))) {
        desired = desired_buf;
      }

      server_option_bitwise_support_name(poption, value_buf,
                                         sizeof(value_buf), NULL, 0);
      if (0 != strcmp(desired, value_buf)) {
        send_chat_printf("/set %s \"%s\"", option_name(poption), desired);
      }
    }
    return;
  case OT_FONT:
  case OT_COLOR:
  case OT_VIDEO_MODE:
    break;
  }

  log_error("Option type %s (%d) not supported for '%s'.",
            option_type_name(option_type(poption)), option_type(poption),
            option_name(poption));
}


/***
  City and player report dialog#define SPECHASH_TAG dialog_options
#define SPECHASH_KEY_TYPE char *
#define SPECHASH_DATA_TYPE bool
#define SPECHASH_KEY_VAL genhash_str_val_func
#define SPECHASH_KEY_COMP genhash_str_comp_func
#define SPECHASH_KEY_COPY genhash_str_copy_func
#define SPECHASH_KEY_FREE genhash_str_free_func
#define SPECHASH_DATA_TO_PTR FC_INT_TO_PTR
#define SPECHASH_PTR_TO_DATA FC_PTR_TO_INT
#include "spechash.h"
#define dialog_options_hash_iterate(hash, column, visible)                  \
  TYPED_HASH_ITERATE(const char *, unsigned long, hash, column, visible)
#define dialog_options_hash_iterate_end HASH_ITERATE_END

static struct dialog_options_hash *dialog_options_hash = NULL;

/***
  Load the city and player report dialogoptions_dialogs_load(struct section_file *sf)
{
  const struct entry_list *entries;
  const char *prefixes[] = { "player_dlg_", "city_report_", NULL };
  const char **prefix;
  bool visible;

  fc_assert_ret(NULL != dialog_options_hash);

  entries = section_entries(secfile_section_by_name(sf, "client"));

  if (NULL != entries) {
    entry_list_iterate(entries, pentry) {
      for (prefix = prefixes; NULL != *prefix; prefix++) {
        if (0 == strncmp(*prefix, entry_name(pentry), strlen(*prefix))
            && secfile_lookup_bool(sf, &visible, "client.%s",
                                   entry_name(pentry))) {
          dialog_options_hash_replace(dialog_options_hash,
                                      entry_name(pentry), visible);
          break;
        }
      }
    } entry_list_iterate_end**
  Save the city and player report dialogoptions_dialogs_save(struct section_file *sf)
{
  fc_assert_ret(NULL != dialog_options_hash);

  options_dialogs_update();
  dialog_options_hash_iterate(dialog_options_hash, column, visible) {
    secfile_insert_bool(sf, visible, "client.%s", column);
  } dialog_options_hash_iterate_end;
  This set the city and player report dialog options to the
  current ones.  It's called when the client goes to
  C_S_DISCONNECTED state/
void options_dialogs_update(void)
{
  char buf[64];
  int i;

  fc_assert_ret(NULL != dialog_options_hash);

  /* Player report dialog options. */
  for (i = 1; i < num_player_dlg_columns; i++) {
    fc_snprintf(buf, sizeof(buf), "player_dlg_%s",
                player_dlg_columns[i].tagname);
    dialog_options_hash_replace(dialog_options_hash, buf,
                                player_dlg_columns[i].show);
  }

  /* City report dialog options. */
  for (i = 0; i < num_city_report_spec(); i++) {
    fc_snprintf(buf, sizeof(buf), "city_report_%s",
                city_report_spec_tagname(i));
    dialog_options_hash_replace(dialog_options_hash, buf,
                                *city_report_spec_show_ptr(i)
  This set the city and player report dialog options.  It's called
  when the client goes to C_S_RUNNING state/
void options_dialogs_set(void)
{
  char buf[64];
  bool visible;
  int i;

  fc_assert_ret(NULL != dialog_options_hash);

  /* Player report dialog options. */
  for (i = 1; i < num_player_dlg_columns; i++) {
    fc_snprintf(buf, sizeof(buf), "player_dlg_%s",
                player_dlg_columns[i].tagname);
    if (dialog_options_hash_lookup(dialog_options_hash, buf, &visible)) {
      player_dlg_columns[i].show = visible;
    }
  }

  /* City report dialog options. */
  for (i = 0; i < num_city_report_spec(); i++) {
    fc_snprintf(buf, sizeof(buf), "city_report_%s",
                city_report_spec_tagname(i));
    if (dialog_options_hash_lookup(dialog_options_hash, buf, &visible)) {
      *city_report_spec_show_ptr(i) = visible;
    }
  }
}


/
  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 log_*()/
void options_load(void)
{
  struct section_file *sf;
  int i, num;
  const char *name;
  const char * const prefix = "client";

  name = get_last_option_file_name();
  if (!name) {
    log_normal(_("Didn't find the option file."));
    options_fully_initialized = TRUE;
    create_default_cma_presets();
    return;
  }
  if (!(sf = secfile_load(name, TRUE))) {
    log_debug("Error loading option file '%s':\n%s", name, secfile_error());
    /* try to create the rc file */
    sf = secfile_new(TRUE);
    secfile_insert_str(sf, VERSION_STRING, "client.version");

    create_default_cma_presets();
    save_cma_presets(sf);

    /* FIXME: need better messages */
    if (!secfile_save(sf, name, 0, FZ_PLAIN)) {
      log_error(_("Save failed, cannot write to file %s"), name);
    } else {
      log_normal(_("Saved settings to file %s"), name);
    }
    secfile_destroy(sf);
    options_fully_initialized = TRUE;
    return;
  }

  /* a "secret" option for the lazy. TODO: make this saveable */
  sz_strlcpy(password,
             secfile_lookup_str_default(sf, "", "%s.password", prefix));

  save_options_on_exit =
    secfile_lookup_bool_default(sf, save_options_on_exit,
                                "%s.save_options_on_exit", prefix);
  fullscreen_mode =
    secfile_lookup_bool_default(sf, fullscreen_mode,
                                "%s.fullscreen_mode", prefix);

  /* Backwards compatibility for removed options. The equivalent "new"
   * option will override these, if set. */

  /* Note: this overrides the previously specified default for
   * gui_gtk2_message_chat_location */
  if (secfile_lookup_bool_default(sf, FALSE,
                                  "%s.gui_gtk_merge_notebooks", prefix)) {
    gui_gtk2_message_chat_location = GUI_GTK2_MSGCHAT_MERGED;
    gui_gtk3_message_chat_location = GUI_GTK3_MSGCHAT_MERGED;
  } else if (secfile_lookup_bool_default(sf, FALSE,
                                         "%s.gui_gtk_split_bottom_notebook",
                                         prefix)) {
    gui_gtk2_message_chat_location = GUI_GTK2_MSGCHAT_SPLIT;
    gui_gtk3_message_chat_location = GUI_GTK3_MSGCHAT_SPLIT;
  } else {
    gui_gtk2_message_chat_location = GUI_GTK2_MSGCHAT_SEPARATE;
    gui_gtk3_message_chat_location = GUI_GTK3_MSGCHAT_SEPARATE;
  }

  client_options_iterate_all(poption) {
    client_option_load(poption, sf);
  } client_options_iterate_all_end;

  message_options_load(sf, prefix);
  options_dialogs_load(sf);

  /* Load cma presets. If cma.number_of_presets doesn't exist, don't load 
   * any, the order here should be reversed to keep the order the same */
  if (secfile_lookup_int(sf, &num, "cma.number_of_presets")) {
    for (i = num - 1; i >= 0; i--) {
      load_cma_preset(sf, i);
    }
  } else {
    create_default_cma_presets();
  }

  settable_options_load(sf);
  global_worklists_load(sf);

  secfile_destroy(sf);
  options_fully_initialized = TRUE;Save all/
void options_save(void)
{
  struct section_file *sf;
  const char *name = get_current_option_file_name();

  if (!name) {
    output_window_append(ftc_client,
                         _("Save failed, cannot find a filename."));
    return;
  }

  sf = secfile_new(TRUE);
  secfile_insert_str(sf, VERSION_STRING, "client.version");

  secfile_insert_bool(sf, save_options_on_exit, "client.save_options_on_exit");
  secfile_insert_bool(sf, fullscreen_mode, "client.fullscreen_mode");

  client_options_iterate_all(poption) {
    client_option_save(poption, sf);
  } client_options_iterate_all_end;

  message_options_save(sf, "client");
  options_dialogs_save(sf);

  /* server settings */
  save_cma_presets(sf);
  settable_options_save(sf);

  /* insert global worklists */
  global_worklists_save(sf);

  /* save to disk */
  if (!secfile_save(sf, name, 0, FZ_PLAIN)) {
    output_window_printf(ftc_client,
                         _("Save failed, cannot write to file %s"), name);
  } else {
    output_window_printf(ftc_client, _("Saved settings to file %s"), name);
  }
  secfile_destroy(sf);
}


/*
  Initialize lists of names fENDREP
DELTA 19400 74 8561
SVN  ‚ÿƒ€T‚^ ‰  ˜W‰ ­R¡gƒ WÏ8€: YÑ=ƒ GÒƒ ‚Ó[ƒ ‚lÕi› †mØl ‹+ßZ€I E§  .ëN¢ E§  ‘IíEclient/gui-gtk-33KEYKEY_c:
      inputline_make_tag(GTK_ENTRY(w), TTT_COLOR);
      return TRUE;

    case GDK_KEY_i:
      inputline_make_tag(GTK_ENTRY(w), TTT_ITALIC);
      return TRUE;

    case GDK_KEYKEYKEYKEYKEY_Tab:
      if (gui_gtk33  Clear output window. This does *not* destroy it, or free its resources
  Set given text to output window
ENDREP
DELTA 19259 301577 115
SVN  —H—S
4 Ž ´ ‰ŽGfreeciv-client-rc-A.B. */
    current_name = FC_GTK2ENDREP
DELTA 19259 301577 115
SVN  —H—Sx Œ< €D  ´ ‰ŽG3_default_theme_name;

  if (current_name == NULL) {
    /* gui_gtk3freeciv-client-rc.A.B. */
    current_name = FC_GTK3ENDREP
DELTA 17849 3706 56892
SVN  „Ä-„¨B…nÂ~ …X ƒ ‡…X€B „ ƒ&‘€„d …}• ‚›Q ‡gq€Q ‚¥q€n G¨C– Mƒ›@ e¹Z» Nƒ›? ‰^È• Mƒ›@ ‹3Ò=´ Mƒ›@ HÞ@€‚{ $âk oâs ‚åƒ jç€p jèkƒ SéT€Y Sëx€Y í€…p Eó=€ƒK o÷¯ Mƒ›@ Kª „wú#€} Tû: Oß9œ 
3ƒ ‚,‚<² „Z„y€i ¥ Š0€ƒy E±† r²X† ‚E³R€M J¶0€i …f¸g€[ ‚4¿,º iÁy€t iÁyª …-Ãf€U JÉl´ (Ën­ ’qÍG” ˆhà8€D ƒvéZ íQ€1 hîg€‚ ‚qðw€. Šóf‰ ¡Xþ
­ Œ(‚  ‚¬A€ƒ2 ‚}‚®1Š “{‚±1€n z‚Åh„ ^‚Æe€@ ƒH‚É$€N I‚Í8 E‚Í½ G‚Î}€ ‚Ð-“ ‹‚ßUŽ OÔ  §I‚ë8‡ ƒ ƒ’n€[ ‚Eƒ–€A QŠ@• Mƒ›@´ QŠ@ˆ PÇ? ƒÐ]€u Mƒ›>€K TƒÐ ƒƒÝx )ƒá ~ƒâO "ƒãR” fƒé7 YƒÝw w®d€y fƒé7© Mƒ›@ ‚ƒêm Mƒ›@ ‰'ƒíOŸ Mƒ›@€/ `ƒé=³ Nƒ›?€, `ƒé=ž Mƒ›@ ‚#ƒü
€^ ‚2ƒÿz€‚ ‚N„ƒ¸ ‚„…|€‚ TƒÑ  ^„‰<¸ GƒÑ  Œ`„‹}‡ o„˜` _Š1 ƒ„š) „> `„£&” RƒÐ f„±e† Z²> ƒg„³+€m e„¸t q„¹Z ‰a„ºLfc_client/gui-gtk-3.0 */
#include "chatline.h"
#include "citizensinfo3/* The two values below define the width and height of the map overview. The
 * first set of values (2*62, 2*46) define the size for a netbook display. For
 * bigger displays the values are doubled (default). */
#define OVERVIEW_CANVAS_STORE_WIDTH_NETBOOK  (2 * 64)
#define OVERVIEW_CANVAS_STORE_HEIGHT_NETBOOK (2 * 46)
#define OVERVIEW_CANVAS_STORE_WIDTH \
  (2 * OVERVIEW_CANVAS_STORE_WIDTH_NETBOOK)
#define OVERVIEW_CANVAS_STORE_HEIGHT \
  (2 * OVERVIEW_CANVAS_STORE_HEIGHT_NETBOOK)
int overview_canvas_store_width = OVERVIEW_CANVAS_STORE_WIDTH;
int overview_canvas_store_height = OVERVIEW_CANVAS_STORE_HEIGHTGIOChannel *srv_channel;
static GIOChannel *ggz_channel;
static guint srv_id, ggzgboolean get_net_input(GIOChannel *source, GIOCondition condition,
                              gpointer data  Callback for freelog  Focus on widget. Returns whether focus was really changed  Focus on map canvas  Handle keypress events when map canvas is in focusKEY_Left:
      scroll_mapview(DIR8_WEST);
      return TRUE;

    case GDK_KEY_Right:
      scroll_mapview(DIR8_EAST);
      return TRUE;

    case GDK_KEY_Up:
      scroll_mapview(DIR8_NORTH);
      return TRUE;

    case GDK_KEY_Down:
      scroll_mapview(DIR8_SOUTH);
      return TRUE;

    case GDK_KEY_Home:
      key_center_capital();
      return TRUE;

    case GDK_KEYKEY_Page_DownKEYKEY_F2:
      key_unit_assign_battlegroup(1, (ev->state & GDK_SHIFT_MASK));
      return TRUE;

    case GDK_KEYKEYKEY_F1:
      key_unit_select_battlegroup(0, FALSE);
      return TRUE;

    case GDK_KEYKEY_F3:
      key_unit_select_battlegroup(2, FALSE);
      return TRUE;

    case GDK_KEYEY_KP_Up:
  case GDK_KEY_KP_8:
  case GDK_KEY_Up:
  case GDK_KEY_8:
    key_unit_move(DIR8_NORTH);
    return TRUE;

  case GDK_KEY_KP_Page_Up:
  case GDK_KEY_KP_9:
  case GDK_KEY_Page_Up:
  case GDK_KEY_9:
    key_unit_move(DIR8_NORTHEAST);
    return TRUE;

  case GDK_KEY_KP_Right:
  case GDK_KEY_KP_6:
  case GDK_KEY_Right:
  case GDK_KEY_6:
    key_unit_move(DIR8_EAST);
    return TRUE;

  case GDK_KEY_KP_Page_Down:
  case GDK_KEY_KP_3:
  case GDK_KEY_Page_Down:
  case GDK_KEY_3:
    key_unit_move(DIR8_SOUTHEAST);
    return TRUE;

  case GDK_KEY_KP_Down:
  case GDK_KEY_KP_2:
  case GDK_KEY_Down:
  case GDK_KEY_2:
    key_unit_move(DIR8_SOUTH);
    return TRUE;

  case GDK_KEY_KP_End:
  case GDK_KEY_KP_1:
  case GDK_KEY_End:
  case GDK_KEYEY_KP_Left:
  case GDK_KEY_KP_4:
  case GDK_KEY_Left:
  case GDK_KEY_4:
    key_unit_move(DIR8_WEST);
    return TRUE;

  case GDK_KEY_KP_Home:
  case GDK_KEY_KP_7:
  case GDK_KEY_Home:
  case GDK_KEY_7:
    key_unit_move(DIR8_NORTHWEST);
    return TRUE;

  case GDK_KEY_KP_Begin:
  case GDK_KEY_KP_5: 
  case GDK_KEY_5:
    key_recall_previous_focus_unit(); 
    return TRUE;

  case GDK_KEY_Escape:
    key_cancel_action();
    return TRUE;

  case GDK_KEY  Handler for "key release" for toplevel windowInputline history code. */
  if (!GTK_WIDGET_MAPPED(top_vbox)
      || inputline_has_focus()
      || !can_client_change_viewpress(ev);
  }
KEY_Return:
    case GDK_KEYKEY3_message_chat_location == GUI_GTK3_MSGCHAT_MERGEDKEY_F4:
      map_canvas_focus();
      return TRUE;

    default:
      break;
    };
  }
#endif /* 0 */if (gui_gtk3_small_display_layout) {
    /* We want arrow to appear if there is other units in addition
       to active one in tile. Active unit is not counted, so there
       can be 0 other units to not to display arrow. */
    num_units_below = 1 - 1;
  } else {
    num_units_below = width / (int) tileset_tile_width(tileset);
    num_units_below = CLIP(1, num_units_below, MAX_NUM_UNITS_BELOW);
  }

  gtk_table_resize(GTK_TABLE(table), 2, MAX(1,num_units_below));

  /* Top row: the active unit. */_objec_objec3_small_display_layout) {
    /* Bottom row: other units in the same tile. */_object_ref(unit_below_pixmap[i]);
      unit_below_pixmap_button[i] = gtk_event_box_new();
      g_objec_object_ref(more_arrow_pixmap);
  more_arrow_pixmap_button = gtk_event_box_new();
  g_objec3_small_display_layout) {
    /* Display on bottom row. */MAX_NUM_UNITS_BELOW, MAX_NUM_UNITS_BELOW+1, 1, 2);
  } else {
    /* Display on top row (there is no bottom row). */MAX_NUM_UNITS_BELOW, MAX_NUM_UNITS_BELOW+1_object_unref(unit_pixmap);
    g_object_unref(unit_pixmap_button);
    if (!gui_gtk3_object_unref(unit_below_pixmap[i]);
        g_objec_object_unref(more_arrow_pixmap);
    g_objec, *right_vbox = NULLeditgui_create_widgets();

  ingame_votebar = voteinfo_bar_new(FALSE3right_vbox = gtk_vbox_new(FALSE, 0);
    gtk_box_pack_end(GTK_BOX(hbox), right_vbox, TRUE, TRUE, 0);
    gtk_box_pack_end(GTK_BOX(right_vbox), ingame_votebar, FALSE, FALSE, 2);
start(GTK_BOX(right_vbox), paned, TRUE, TRUE, 0);

    /* Overview size designed for small displays (netbooks). */
    overview_canvas_store_width = OVERVIEW_CANVAS_STORE_WIDTH_NETBOOK;
    overview_canvas_store_height = OVERVIEW_CANVAS_STORE_HEIGHT_NETBOOK
    /* Overview size designed for netbooks. */
    overview_canvas_store_width = OVERVIEW_CANVAS_STORE_WIDTH;
    overview_canvas_store_height = OVERVIEW_CANVAS_STORE_HEIGHTTRUE, TRUwidget_set_tooltip_text(turn_done_button, buf
  if (gui_gtk3_small_display_layout) {
    gtk_paned_pack1(GTK_PANED(paned), top_notebook, TRUE, TRUE);
  } else if (gui_gtk3_message_chat_location == GUI_GTK3_MSGCHAT_MERGED) {
    right_vbox = gtk_vbox_new(FALSE, 0);

    gtk_box_pack_start(GTK_BOX(right_vbox), top_notebook, TRUE, TRUE, 0);
    gtk_box_pack_end(GTK_BOX(right_vbox), ingame_votebar, FALSE, FALSE, 2);
    gtk_box_pack_start(GTK_BOX(hbox), right_vbox, TRUE, TRUE, 0Q_("?noun:3_message_chat_location == GUI_GTK3_MSGCHAT_MERGED) {
    bottom_hpaned = hpaned = paned;
    right_notebook =FALS!gui_gtk3_small_display_layout) {
      gtk_box_pack_start(GTK_BOX(vbox), ingame_votebar, FALSE, FALSE, 2);
    }
    gtk_box_pack_start(GTK_BOX(avbox), vbox, TRUE, TRUE, 0);

    if (gui_gtk3
    right_notebook = gtk_notebook_new();
    g_object_ref(right_notebook);
    g_signal_connect(right_notebook, "button-release-event",
    if (gui_gtk3_message_chat_location == GUI_GTK3_MSGCHAT_SPLIT) {
      gtk_paned_pack2(GTK_PANED(hpaned), right_notebook, TRUE, TRUE);
    }meswin_dialog_popup /* GGZ_GTK */citizenfree_mapcanvas_and_overview();
  spaceship_dialog_done();
  intel_dialog_done();
  citizensvoid)
{
  g_object_unref(message_buffer);
  message_buffer = NULL  Return our GUI typeenum gui_type get_gui_type(void)
{
  return GUI_GTK3 obvious**
  Called when the set of units in focus (get_units_in_focus()) changes.
  Standard updates like update_unit_info_label() are handled in the platform-
  independent code; we use this to keep the goto/airlift dialog up to date,
  if it's visibl**/
void real_focus_units_changed(void)
{
  goto_dialog_focus_units_changedunit_tile(punit)unit_focus_set(punit
{
  struct unit *punit = game_unit_by_number(unit_id_top);

  if (punit) {
    unit_select_dialog_popup(unit_tile(punit)  Button released when showing info popup  Popup info box  Read input from server socketstatic gboolean get_net_input(GIOChannel *source, GIOCondition condition,
                              gpointer data)
{
  input_from_server(g_io_channel_unix_get_fd(source));  Callback for when the GGZ socket has data pendingstatic gboolean get_ggz_input(GIOChannel *source, GIOCondition condition,
                              gpointer data)
{
  input_from_ggz(g_io_channel_unix_get_fd(source));  Set socket writability state
  g_source_remove(srv_id);
  srv_id = g_io_add_watch(srv_channel,
                          G_IO_IN | (socket_writable ? G_IO_OUT : 0) | G_IO_ERR,
                          get_net_input,
                          NULL);
#ifdef WIN32_NATIVE
  srv_channel = g_io_channel_win32_new_socket(sock);
#else
  srv_channel = g_io_channel_unix_new(sock);
#endif
  srv_id = g_io_add_watch(srv_channel,
                          G_IO_IN | G_IO_ERR,
                          get_net_input,
                         _source_remove(srv_id);
  g_io_channel_unref(srv_channel#ifdef WIN32_NATIVE
  ggz_channel = g_io_channel_win32_new_socket(sock);
#else
  ggz_channel = g_io_channel_unix_new(sock);
#endif
  srv_id = g_io_add_watch(ggz_channel,
                          G_IO_IN,
                          get_ggz_input,
                          NULL_source_remove(ggz_id);
  g_io_channel_unref(ggz_channelbooleanreport_dialog_redraw3.0 op3_allied_chat_only,
                          allied_chat_only_callback);

  option_var_set_callback(gui_gtk333ENDREP
id: i4.5ck.r19767/50514
type: file
pred: i4.5ck.r19154/47911
count: 106
text: 19767 0 2175 14231 ba734b51ac66b886fd9de2fda02c8ab2
props: 11044 512 111 0 e5ad8d36ef6bfd356bb06d6f3ece066f
cpath: /trunk/client/options.h
copyroot: 15280 /trunk

id: 34x.5ck.r19767/50755
type: file
pred: 34x.5ck.r19259/424137
count: 9
text: 19767 14574 122 7143 767db85bea66c25a6d7bd203de28bda6
props: 10945 10388 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/client/gui-gtk-2.0/themes.c
copyroot: 15280 /trunk

id: 47d.5ck.r19767/51012
type: file
pred: 47d.5ck.r19259/427405
count: 5
text: 19767 40864 73 3027 6959dc35500362f15e92cc95d59cbda5
props: 13968 60058 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-gtk-2.0/theme_dlg.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 23
file zu.5ck.r19300/9996
K 8
canvas.c
V 26
file 2y6.5ck.r19259/423619
K 8
canvas.h
V 23
file 2y7.0.r10096/14437
K 16
caravan_dialog.c
V 25
file 376.5ck.r19683/42608
K 10
chatline.c
V 24
file zw.5ck.r19683/47416
K 10
chatline.h
V 24
file zx.5ck.r16063/47311
K 15
choice_dialog.c
V 25
file 377.5ck.r19683/46177
K 15
choice_dialog.h
V 23
file 378.0.r12670/99360
K 14
citizensinfo.c
V 25
file 6n1.5ck.r19683/47673
K 14
citizensinfo.h
V 24
file 6n2.5ck.r19130/7932
K 9
citydlg.c
V 24
file zy.5ck.r19683/41112
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 25
file 100.5ck.r19683/43846
K 9
cityrep.h
V 25
file 101.5ck.r18101/91562
K 8
cma_fe.c
V 25
file 102.5ck.r19683/43590
K 8
cma_fe.h
V 25
file 103.5ck.r19385/17470
K 8
colors.c
V 25
file 104.5ck.r19683/45150
K 8
colors.h
V 24
file 105.5ck.r16180/3087
K 12
connectdlg.c
V 25
file 106.5ck.r19683/48662
K 12
connectdlg.h
V 25
file 107.5ck.r19154/49180
K 9
dialogs.c
V 25
file 108.5ck.r19683/44107
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 25
file 10a.5ck.r19683/44633
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 25
file 36n.5ck.r19683/44366
K 9
editgui.c
V 25
file 4ej.5ck.r19683/42873
K 9
editgui.h
V 25
file 4ek.5ck.r19385/16755
K 10
editprop.c
V 25
file 4el.5ck.r19683/47215
K 10
editprop.h
V 26
file 3bj.5cl.r18452/125612
K 10
embedggz.c
V 26
file 4gq.5ck.r19259/430259
K 9
finddlg.c
V 25
file 10c.5ck.r19683/45919
K 9
finddlg.h
V 22
file 2d0.0.r5989/22356
K 10
gamedlgs.c
V 25
file 10d.5ck.r19683/49186
K 9
gotodlg.c
V 25
file 10e.5ck.r19683/41368
K 9
gotodlg.h
V 25
file 10f.5ck.r19505/20989
K 10
graphics.c
V 25
file 10g.5ck.r19683/44889
K 10
graphics.h
V 23
file 10h.0.r11337/80150
K 12
gtkpixcomm.c
V 25
file 10i.5ck.r19683/48923
K 12
gtkpixcomm.h
V 22
file 10j.0.r10800/1606
K 10
gui_main.c
V 23
file 10k.5ck.r19730/125
K 10
gui_main.h
V 25
file 10l.5ck.r19385/16497
K 11
gui_stuff.c
V 25
file 10m.5ck.r19683/43073
K 11
gui_stuff.h
V 25
file 10n.5ck.r18150/60736
K 11
happiness.c
V 25
file 10o.5ck.r19683/42346
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 25
file 10q.5ck.r19683/46440
K 9
helpdlg.h
V 23
file 10r.0.r4313/267882
K 10
inputdlg.c
V 25
file 10s.5ck.r19683/46961
K 10
inputdlg.h
V 24
file 10t.5ck.r19651/6762
K 10
inteldlg.c
V 25
file 10u.5ck.r19683/45406
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 9
mapctrl.c
V 25
file 10v.5ck.r19683/45663
K 9
mapctrl.h
V 25
file 10w.5bk.r14157/11089
K 9
mapview.c
V 24
file 10x.5ck.r19729/1534
K 9
mapview.h
V 24
file 10y.5ck.r17351/2736
K 6
menu.c
V 24
file 10z.5ck.r19742/4134
K 6
menu.h
V 25
file 110.5ck.r16067/65085
K 12
messagedlg.c
V 25
file 111.5ck.r19683/48401
K 12
messagedlg.h
V 22
file 2d2.0.r5989/22693
K 12
messagewin.c
V 26
file 112.5ck.r19259/425905
K 12
messagewin.h
V 25
file 113.5ck.r18082/27153
K 11
optiondlg.c
V 24
file 4js.5ck.r19400/8662
K 11
optiondlg.h
V 25
file 114.5ck.r17037/29773
K 7
pages.c
V 24
file 2pi.5ck.r19693/2461
K 7
pages.h
V 25
file 2pj.5ck.r19154/48664
K 8
plrdlg.c
V 25
file 115.5ck.r19683/46701
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 24
file 118.5ck.r19589/7111
K 10
repodlgs.h
V 24
file 119.5ck.r18439/2365
K 11
resources.c
V 26
file 11a.5ck.r19259/423360
K 11
resources.h
V 23
file 11b.0.r4313/267539
K 14
spaceshipdlg.c
V 25
file 11c.5ck.r19683/47879
K 14
spaceshipdlg.h
V 23
file 11d.0.r9577/110090
K 8
sprite.c
V 26
file 2y8.5ck.r19259/422842
K 8
sprite.h
V 23
file 2y9.0.r10141/29270
K 11
theme_dlg.c
V 25
file 47d.5ck.r19767/51012
K 8
themes.c
V 25
file 34x.5ck.r19767/50755
K 13
tileset_dlg.c
V 26
file 45i.5ck.r19259/431179
K 12
unitselect.c
V 25
file 6pa.5ck.r19683/41883
K 12
unitselect.h
V 24
file 6pb.5ck.r19300/9312
K 14
voteinfo_bar.c
V 26
file 4h8.5ck.r19259/426678
K 14
voteinfo_bar.h
V 24
file 4h9.5ck.r17959/2670
K 7
wldlg.c
V 25
file 11e.5ck.r19683/48143
K 7
wldlg.h
V 25
file 11f.5ck.r16285/86707
END
ENDREP
id: zs.5ck.r19767/55251
type: dir
pred: zs.5ck.r19742/8367
count: 1496
text: 19767 51270 3968 3968 cca851b80f7ee261275c04cc069c3798
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-2.0
copyroot: 15280 /trunk

id: zy.5g7.r19767/55497
type: file
pred: zy.5g7.r19740/13968
count: 219
text: 19767 3254 208 103617 ab046fc5a68d8488337615945a82e4f6
props: 11072 618 112 0 0564c5503f2d15442a967c72794b21e8
cpath: /trunk/client/gui-gtk-3.0/citydlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10x.5g7.r19767/55772
type: file
pred: 10x.5g7.r19740/15006
count: 215
text: 19767 14382 94 28868 a4f279bdb56b03930e0339798042476a
props: 11084 1701 112 0 86d6a13b4b5d042ef40af0a2a7a26786
cpath: /trunk/client/gui-gtk-3.0/mapview.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 34x.5g7.r19767/56049
type: file
pred: 34x.5g7.r19740/15781
count: 10
text: 19767 14727 136 7143 7e657d26585fbbad63bf6f52e0a4bc69
props: 10945 10388 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/client/gui-gtk-3.0/themes.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10k.5g7.r19767/56325
type: file
pred: 10k.5g7.r19740/16055
count: 288
text: 19767 41145 9339 70722 37ee830c7a40566cc040bf8fca9a43aa
props: 11057 38870 112 0 ec3aa248409009be6c82cab2c7e95ef5
cpath: /trunk/client/gui-gtk-3.0/gui_main.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10m.5g7.r19767/56606
type: file
pred: 10m.5g7.r19740/16831
count: 52
text: 19767 2201 956 34776 26753cf6ea09f9af7c4cc80c818fa819
props: 10967 1745 111 0 05a46e497021c8716b647ee1425e21a2
cpath: /trunk/client/gui-gtk-3.0/gui_stuff.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 2pi.5g8.r19767/56884
type: file
pred: 2pi.5g8.r19740/17108
count: 151
text: 19767 3187 40 116535 a563ffc70a8c61875c6173c0ce2988cc
props: 11100 16432 111 0 622f1432038f91cce287c1d90e4f7964
cpath: /trunk/client/gui-gtk-3.0/pages.c
copyroot: 19694 /trunk/client/gui-gtk-3.0/pages.c

id: 112.5g7.r19767/57168
type: file
pred: 112.5g7.r19740/17388
count: 48
text: 19767 3488 10559 13902 ca9c276af94adae5606ae6adac3eafee
props: 10731 3775 111 0 9b377c828b4ca1827963af8e19878787
cpath: /trunk/client/gui-gtk-3.0/messagewin.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10z.5g7.r19767/57449
type: file
pred: 10z.5g7.r19742/8611
count: 177
text: 19767 14253 102 89907 fc412706045df7df3c217548d358c7f5
props: 11057 39977 111 0 05d0c9433d86d9823b0e8b2536eb2299
cpath: /trunk/client/gui-gtk-3.0/menu.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 47d.5g7.r19767/57724
type: file
pred: 47d.5ck.r19259/427405
count: 5
text: 19767 40967 148 3027 a773e00a20dcb55ccfd89dec8617b48c
props: 13968 60058 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-gtk-3.0/theme_dlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: zw.5g7.r19767/58002
type: file
pred: zw.5g7.r19740/20870
count: 52
text: 19767 40389 448 49176 be28a2a3bebfb877903044d43997ab53
props: 9577 108867 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/gui-gtk-3.0/chatline.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 11e.5g7.r19767/58279
type: file
pred: 11e.5g7.r19740/21646
count: 77
text: 19767 14503 42 43876 dcd20c955f8bf718e0c636d8bfef1fc2
props: 11057 41445 111 0 9c2dbf68c7baabdec873d497eccc2dc6
cpath: /trunk/client/gui-gtk-3.0/wldlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

PLAIN
K 11
Makefile.am
V 23
file zu.5g7.r19758/8506
K 8
canvas.c
V 26
file 2y6.5ck.r19259/423619
K 8
canvas.h
V 23
file 2y7.0.r10096/14437
K 16
caravan_dialog.c
V 25
file 376.5ck.r19683/42608
K 10
chatline.c
V 24
file zw.5g7.r19767/58002
K 10
chatline.h
V 24
file zx.5ck.r16063/47311
K 15
choice_dialog.c
V 25
file 377.5ck.r19683/46177
K 15
choice_dialog.h
V 23
file 378.0.r12670/99360
K 14
citizensinfo.c
V 25
file 6n1.5g7.r19740/21145
K 14
citizensinfo.h
V 24
file 6n2.5ck.r19130/7932
K 9
citydlg.c
V 24
file zy.5g7.r19767/55497
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 25
file 100.5g7.r19740/18441
K 9
cityrep.h
V 25
file 101.5ck.r18101/91562
K 8
cma_fe.c
V 25
file 102.5g7.r19740/17940
K 8
cma_fe.h
V 25
file 103.5ck.r19385/17470
K 8
colors.c
V 25
file 104.5ck.r19683/45150
K 8
colors.h
V 24
file 105.5ck.r16180/3087
K 12
connectdlg.c
V 25
file 106.5ck.r19683/48662
K 12
connectdlg.h
V 25
file 107.5ck.r19154/49180
K 9
dialogs.c
V 25
file 108.5g7.r19740/18719
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 25
file 10a.5g7.r19740/19280
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 25
file 36n.5g7.r19740/18996
K 9
editgui.c
V 25
file 4ej.5g7.r19740/16613
K 9
editgui.h
V 25
file 4ek.5ck.r19385/16755
K 10
editprop.c
V 25
file 4el.5g7.r19740/20649
K 10
editprop.h
V 26
file 3bj.5cl.r18452/125612
K 10
embedggz.c
V 26
file 4gq.5ck.r19259/430259
K 9
finddlg.c
V 25
file 10c.5g7.r19740/20100
K 9
finddlg.h
V 22
file 2d0.0.r5989/22356
K 10
gamedlgs.c
V 25
file 10d.5g7.r19740/22201
K 9
gotodlg.c
V 25
file 10e.5g7.r19740/14241
K 9
gotodlg.h
V 25
file 10f.5ck.r19505/20989
K 10
graphics.c
V 25
file 10g.5g7.r19740/19552
K 10
graphics.h
V 23
file 10h.0.r11337/80150
K 12
gtkpixcomm.c
V 25
file 10i.5ck.r19683/48923
K 12
gtkpixcomm.h
V 22
file 10j.0.r10800/1606
K 10
gui_main.c
V 25
file 10k.5g7.r19767/56325
K 10
gui_main.h
V 25
file 10l.5ck.r19385/16497
K 11
gui_stuff.c
V 25
file 10m.5g7.r19767/56606
K 11
gui_stuff.h
V 25
file 10n.5ck.r18150/60736
K 11
happiness.c
V 25
file 10o.5g7.r19740/16333
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 25
file 10q.5ck.r19683/46440
K 9
helpdlg.h
V 23
file 10r.0.r4313/267882
K 10
inputdlg.c
V 25
file 10s.5g7.r19740/20374
K 10
inputdlg.h
V 24
file 10t.5ck.r19651/6762
K 10
inteldlg.c
V 25
file 10u.5g7.r19740/19827
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 9
mapctrl.c
V 25
file 10v.5ck.r19683/45663
K 9
mapctrl.h
V 25
file 10w.5bk.r14157/11089
K 9
mapview.c
V 25
file 10x.5g7.r19767/55772
K 9
mapview.h
V 24
file 10y.5ck.r17351/2736
K 6
menu.c
V 25
file 10z.5g7.r19767/57449
K 6
menu.h
V 25
file 110.5ck.r16067/65085
K 12
messagedlg.c
V 25
file 111.5g7.r19740/21922
K 12
messagedlg.h
V 22
file 2d2.0.r5989/22693
K 12
messagewin.c
V 25
file 112.5g7.r19767/57168
K 12
messagewin.h
V 25
file 113.5ck.r18082/27153
K 11
optiondlg.c
V 25
file 4js.5g7.r19740/14515
K 11
optiondlg.h
V 25
file 114.5ck.r17037/29773
K 7
pages.c
V 25
file 2pi.5g8.r19767/56884
K 7
pages.h
V 25
file 2pj.5ck.r19154/48664
K 8
plrdlg.c
V 25
file 115.5ck.r19683/46701
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 25
file 118.5g7.r19740/15502
K 10
repodlgs.h
V 24
file 119.5ck.r18439/2365
K 11
resources.c
V 26
file 11a.5ck.r19259/423360
K 11
resources.h
V 23
file 11b.0.r4313/267539
K 14
spaceshipdlg.c
V 25
file 11c.5g7.r19740/21367
K 14
spaceshipdlg.h
V 23
file 11d.0.r9577/110090
K 8
sprite.c
V 25
file 2y8.5g7.r19740/14732
K 8
sprite.h
V 23
file 2y9.0.r10141/29270
K 11
theme_dlg.c
V 25
file 47d.5g7.r19767/57724
K 8
themes.c
V 25
file 34x.5g7.r19767/56049
K 13
tileset_dlg.c
V 26
file 45i.5ck.r19259/431179
K 12
unitselect.c
V 25
file 6pa.5g7.r19740/15281
K 12
unitselect.h
V 24
file 6pb.5ck.r19300/9312
K 14
voteinfo_bar.c
V 25
file 4h8.5g7.r19740/18215
K 14
voteinfo_bar.h
V 24
file 4h9.5ck.r17959/2670
K 7
wldlg.c
V 25
file 11e.5g7.r19767/58279
K 7
wldlg.h
V 25
file 11f.5ck.r16285/86707
END
ENDREP
id: zs.5g7.r19767/62539
type: dir
pred: zs.5g7.r19758/12764
count: 1502
text: 19767 58554 3972 3972 3c3acea70723dd8d5a79687aa96335fa
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-3.0
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: hl.5ck.r19767/62805
type: file
pred: hl.5ck.r19721/10310
count: 470
text: 19767 14078 145 181059 fcc06fd5b56c70e43e928f3069bb4853
props: 11096 3792 112 0 71c6b453a620995957914f193a952f13
cpath: /trunk/client/tilespec.c
copyroot: 15280 /trunk

id: dc.5ck.r19767/63052
type: file
pred: dc.5ck.r19370/124
count: 252
text: 19767 14894 25464 226429 304fbfcbe5a03eb0e07648889df18de0
props: 10965 83 112 0 b4bb2e29c9087472d2e44c6eab39b6d6
cpath: /trunk/client/options.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 23
file 5f.5ck.r19724/7646
K 6
agents
V 22
dir zf.5ck.r19466/4004
K 11
attribute.c
V 24
file xh.5ck.r19354/73372
K 11
attribute.h
V 24
file xi.5ck.r18863/23649
K 7
audio.c
V 26
file 139.5ck.r19259/494261
K 7
audio.h
V 25
file 13a.5ck.r18863/23408
K 12
audio_none.c
V 26
file 13d.5ck.r19259/462511
K 12
audio_none.h
V 25
file 13e.5ck.r18863/20841
K 11
audio_sdl.c
V 25
file 13f.5ck.r19354/73618
K 11
audio_sdl.h
V 25
file 13g.5ck.r18863/23885
K 17
chatline_common.c
V 26
file 14q.5ck.r19259/494007
K 17
chatline_common.h
V 25
file 14r.5ck.r18863/23155
K 16
citydlg_common.c
V 24
file z4.5ck.r19573/81033
K 16
citydlg_common.h
V 24
file z5.5ck.r18863/18619
K 13
cityrepdata.c
V 22
file mb.5ck.r19433/338
K 13
cityrepdata.h
V 24
file mc.5ck.r18863/19121
K 11
civclient.c
V 23
file 4f2.5ck.r15408/695
K 13
client_main.c
V 24
file 2f.5cp.r19354/74862
K 13
client_main.h
V 24
file hz.5cq.r18863/25358
K 8
climap.c
V 26
file 197.5ck.r19259/495004
K 8
climap.h
V 25
file 198.5ck.r18863/24126
K 9
climisc.c
V 25
file d5.5ck.r19573/101844
K 9
climisc.h
V 23
file i0.5ck.r19330/6112
K 8
clinet.c
V 24
file hc.5ck.r19354/74365
K 8
clinet.h
V 24
file i1.5ck.r18863/24866
K 15
colors_common.c
V 26
file 33a.5ck.r19259/421115
K 15
colors_common.h
V 25
file 33b.5ck.r19135/48891
K 19
connectdlg_common.c
V 25
file 2fw.5ck.r19499/14174
K 19
connectdlg_common.h
V 25
file 2fx.5ck.r19154/53802
K 9
control.c
V 24
file gz.5ck.r19505/20493
K 9
control.h
V 24
file i2.5ck.r19298/89363
K 7
dummy.c
V 23
file 4f9.5ck.r15641/551
K 12
dummycxx.cpp
V 23
file 6kr.5ck.r18947/939
K 8
editor.c
V 25
file 3bg.5ck.r19354/75379
K 8
editor.h
V 26
file 3bh.5ck.r19295/112400
K 11
ggzclient.c
V 25
file 394.5ck.r19354/71479
K 11
ggzclient.h
V 25
file 395.5ck.r18863/21083
K 17
global_worklist.c
V 26
file 4i6.5ck.r19259/493810
K 17
global_worklist.h
V 25
file 4i7.5ck.r18863/22960
K 6
goto.c
V 24
file vu.5ck.r19354/70988
K 6
goto.h
V 24
file vv.5ck.r18863/20355
K 8
gui-ftwl
V 24
dir 2k2.5ck.r19299/27538
K 11
gui-gtk-2.0
V 23
dir zs.5ck.r19767/55251
K 11
gui-gtk-3.0
V 23
dir zs.5g7.r19767/62539
K 6
gui-qt
V 24
dir 6ie.5ck.r19505/44333
K 7
gui-sdl
V 23
dir 16t.5ck.r19750/7223
K 8
gui-stub
V 23
dir mh.5ck.r19505/40118
K 9
gui-win32
V 23
dir np.5ck.r19573/95021
K 7
gui-xaw
V 23
dir 9o.5ck.r19589/15587
K 10
helpdata.c
V 24
file h1.5ck.r19670/10772
K 10
helpdata.h
V 24
file i3.5ck.r18863/21834
K 7
include
V 23
dir b8.5ck.r19505/31224
K 16
mapctrl_common.c
V 25
file 15m.5ck.r19354/74109
K 16
mapctrl_common.h
V 25
file 15n.5ck.r18863/24615
K 16
mapview_common.c
V 21
file z2.5ck.r19716/81
K 16
mapview_common.h
V 24
file z3.5ck.r19406/16986
K 19
messagewin_common.c
V 25
file 14s.5ck.r19354/71979
K 19
messagewin_common.h
V 25
file 14t.5ck.r18863/21579
K 9
options.c
V 24
file dc.5ck.r19767/63052
K 9
options.h
V 24
file i4.5ck.r19767/50514
K 17
overview_common.c
V 23
file 2yk.5ck.r19511/702
K 17
overview_common.h
V 24
file 2yl.5ck.r19511/5441
K 10
packhand.c
V 22
file n.5ck.r19685/3638
K 10
packhand.h
V 24
file i5.5ck.r18863/20596
K 15
plrdlg_common.c
V 25
file 14u.5ck.r19354/71728
K 15
plrdlg_common.h
V 25
file 14v.5ck.r18863/21328
K 17
repodlgs_common.c
V 25
file 11i.5ck.r19589/11608
K 17
repodlgs_common.h
V 25
file 11j.5ck.r19589/11861
K 9
reqtree.c
V 25
file 2ym.5ck.r19354/69749
K 9
reqtree.h
V 24
file 2yn.5ck.r19057/3837
K 9
servers.c
V 25
file 33x.5ck.r19354/75625
K 9
servers.h
V 25
file 33y.5ck.r19197/36044
K 6
text.c
V 24
file 2g3.5ck.r19753/7672
K 6
text.h
V 25
file 2g4.5ck.r19506/24456
K 15
themes_common.c
V 25
file 352.5ck.r19354/73121
K 15
themes_common.h
V 25
file 353.5ck.r18863/22710
K 10
tilespec.c
V 24
file hl.5ck.r19767/62805
K 10
tilespec.h
V 24
file i6.5ck.r19193/20158
K 14
update_queue.c
V 25
file 4jw.5ck.r19354/72481
K 14
update_queue.h
V 25
file 4jx.5ck.r18863/22078
K 10
voteinfo.c
V 25
file 4fe.5ck.r19354/72931
K 10
voteinfo.h
V 25
file 4ff.5ck.r18863/22523
END
ENDREP
id: d.5ck.r19767/67203
type: dir
pred: d.5ck.r19758/16933
count: 5195
text: 19767 63296 3894 3894 61e344ff7e064e8d448af15994ffcc7a
props: 19011 0 171 0 fba7c48237e627bad76bd950fb92deb2
cpath: /trunk/client
copyroot: 15280 /trunk

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 26
file 6l.5ck.r18394/4622094
K 7
INSTALL
V 21
file 6.5ck.r19421/429
K 11
Makefile.am
V 23
file 59.5ck.r19758/8270
K 4
NEWS
V 22
file 6m.5ck.r18758/131
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 22
dir 8.5ck.r19757/17441
K 10
autogen.sh
V 23
file 12o.5ck.r19421/654
K 9
bootstrap
V 23
dir 2p5.5ck.r19701/2157
K 6
client
V 22
dir d.5ck.r19767/67203
K 6
common
V 22
dir p.5ck.r19766/10105
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 24
file 149.5ck.r19758/8031
K 4
data
V 23
dir w.5ck.r19765/174916
K 6
debian
V 22
dir 5w.5ck.r19120/2508
K 12
dependencies
V 22
dir 2yu.5ck.r19482/236
K 11
diff_ignore
V 22
file qq.5ck.r19346/607
K 3
doc
V 22
dir k7.5ck.r19738/1980
K 10
fc_version
V 24
file 2lo.5en.r19721/5541
K 2
m4
V 23
dir 12p.5ck.r19758/7805
K 6
manual
V 24
dir 2m2.5ck.r19337/14697
K 7
modinst
V 23
dir 4pj.5ck.r19308/6753
K 2
po
V 24
dir fs.5ck.r19765/177051
K 7
scripts
V 22
dir 2yo.5ck.r19606/730
K 6
server
V 21
dir z.5ck.r19766/5627
K 10
stamp-h.in
V 19
file 80.0.r1125/241
K 5
tests
V 22
dir 2g9.5ck.r15661/767
K 7
utility
V 22
dir 1c.5ck.r19724/4166
K 3
vms
V 21
dir u9.0.r11105/70719
K 5
win32
V 24
dir 2eu.5bk.r13732/30345
END
ENDREP
id: 3.5ck.r19767/68741
type: dir
pred: 3.5ck.r19766/11644
count: 14597
text: 19767 67433 1295 1295 7012f7d0f689ea7c6dc3ca41a05a0675
props: 19316 5978 270 0 5c0560926331b228de03b640e1c09fc4
cpath: /trunk
copyroot: 15280 /trunk

PLAIN
K 8
branches
V 19
dir 1.0.r19764/7905
K 4
tags
V 19
dir 2.0.r19568/5509
K 5
trunk
V 22
dir 3.5ck.r19767/68741
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r19767/69131
type: dir
pred: 0.0.r19766/12035
count: 19767
text: 19767 68968 150 150 bbe820dad8c032578d8561320e1738e0
cpath: /
copyroot: 0 /

10m.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/gui_stuff.c

i4.5ck.t19766-1 modify true false /trunk/client/options.h

zy.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/citydlg.c

2pi.5g8.t19766-1 modify true false /trunk/client/gui-gtk-3.0/pages.c

112.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/messagewin.c

hl.5ck.t19766-1 modify true false /trunk/client/tilespec.c

10z.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/menu.c

10x.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/mapview.c

11e.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/wldlg.c

34x.5ck.t19766-1 modify true false /trunk/client/gui-gtk-2.0/themes.c

34x.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/themes.c

dc.5ck.t19766-1 modify true false /trunk/client/options.c

47d.5ck.t19766-1 modify true false /trunk/client/gui-gtk-2.0/theme_dlg.c

zw.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/chatline.c

10k.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/gui_main.c

47d.5g7.t19766-1 modify true false /trunk/client/gui-gtk-3.0/theme_dlg.c


69131 69281
