DELTA 19505 585 8475
SVN  ÓJ€oC¯Z †s Š ‚ †h¥ T‰† BŠ[€B ‚\Œ¤ G © G  ‡µ G €K „h˜-€…B 
ž^ ƒ_ŸY€y ‚£4Œ …V¥N€ xª ‡ q« ƒ®y€C „³¡ G  ‰\·g§ !Á+€ G €˜F G €J G  ƒÃŸ G €N G €…T G  ‚FÆz „9Ér€h G  }Îv€} ‚wÏp€}%Ó%astring.h"#include "text.h"

/* clien/gui-gtk-3sourceupdate_source_label(void);
static void refresh_airlift_column(void  GD_COL_AIRLIFT,

  GD_COL_NUM
};

****
  User has responded to goto dialog
  Create goto -dialog for gotoing or airlifting unit
***/
static void create_goto_dialog(void)
{
  GtkWidget *sw, *label, *framesource = gtk_label_new("" /* filled in later */);
  gtk_label_set_line_wrap(GTK_LABEL(source), TRUE);
  gtk_label_set_justify(GTK_LABEL(source), GTK_JUSTIFY_CENTER);
  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dshell))),
        source, FALSE, FALSE, 0);

  label = g_object_new(GTK_TYPE_LABEL,
    "use-underline", TRUE,
    "label", _("Select destination ci_ty"),
    "xalign", 0.0,
    "yalign", 0.5,
    NULL);
  frame = gtk_frame_new("");
  gtk_frame_set_label_widget(GTK_FRAME(frame), label);
  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dshell))),
        frame, TRUE, TRUE, 0);

  vbox = gtk_vbox_new(FALSE, 6);
  gtk_container_add(GTK_CONTAINER(frame  /* Set the mnemonic in the frame label to focus the city list */
  gtk_label_set_mnemonic_widget(GTK_LABEL(label), view /* DEBUG */rend = gtk_cell_renderer_text_new();
  col = gtk_tree_view_column_new_with_attributes(_("Airlift"), rend,
    "text", GD_COL_AIRLIFTAIRLIFTgtk_dialog_get_content_area(GTK_DIALOG(dshell)));
  gtk_widget_show_all(gtk_dialog_get_action_area(GTK_DIALOG(dshell)));


  original_tile = get_center_tile_mapcanvas();

  update_source_label();  Return currently selected city
/* GD_COL_AIRLIFT is populated later */  Refresh the label that shows where the selected unit(s) currently are
  (and the relevant cities' airlift capacities, if relevant).
***/
static void update_source_label(void)
{
  /* Arbitrary limit to stop the label getting ridiculously long */
  static const int max_cities = 10;
  struct {
    const struct city *city;
    struct unit_list *units;
  } cities[max_cities];
  int ncities = 0;
  bool too_many = FALSE;
  bool no_city = FALSE; /* any units not in a city? */
  struct astring strs[max_cities];
  int nstrs;
  char *last_str;
  const char *descriptions[max_cities+1];
  int i;

  /* Sanity check: if no units selected, give up */
  if (unit_list_size(get_units_in_focus()) == 0) {
    gtk_label_set_text(GTK_LABEL(source), _("No units selected."));
    return;
  }

  /* Divide selected units up into a list of unique cities */
  unit_list_iterate(get_units_in_focus(), punit) {
    const struct city *pcity = tile_city(unit_tile(punit));
    if (pcity) {
      /* Inefficient, but it's not a long list */
      for (i = 0; i < ncities; i++) {
        if (cities[i].city == pcity) {
          unit_list_append(cities[i].units, punit);
          break;
        }
      }
      if (i == ncities) {
        if (ncities < max_cities) {
          cities[ncities].city = pcity;
          cities[ncities].units = unit_list_new();
          unit_list_append(cities[ncities].units, punit);
          ncities++;
        } else {
          too_many = TRUE;
          break;
        }
      }
    } else {
      no_city = TRUE;
    }
  } unit_list_iterate_end;

  /* Describe the individual cities. */
  for (i = 0; i < ncities; i++) {
    const char *air_text = get_airlift_text(cities[i].units, NULL);
    astr_init(&strs[i]);
    astr_add(&strs[i], 
             /* TRANS: goto/airlift dialog. "Paris (airlift: 2/4)".
              * A set of these appear in an "and"-separated list. */
             air_text ? _("%s (airlift: %s)") : "%s",
             city_name(cities[i].city), air_text);
    /* FIXME: free air_text */
    descriptions[i] = astr_str(&strs[i]);
    unit_list_destroy(cities[i].units);
  }
  if (too_many) {
    /* TRANS: goto/airlift dialog. Too many cities to list, some omitted.
     * Appears at the end of an "and"-separated list. */
    descriptions[ncities] = last_str = fc_strdup(Q_("?gotodlg:more"));
    nstrs = ncities+1;
  } else if (no_city) {
    /* TRANS: goto/airlift dialog. For units not currently in a city.
     * Appears at the end of an "and"-separated list. */
    descriptions[ncities] = last_str = fc_strdup(Q_("?gotodlg:no city"));
    nstrs = ncities+1;
  } else {
    last_str = NULL;
    nstrs = ncities;
  }

  /* Finally, update the label. */
  {
    struct astring label = ASTRING_INIT, list = ASTRING_INIT;
    astr_set(&label, 
             /* TRANS: goto/airlift dialog. Current location of units; %s is an
              * "and"-separated list of cities and associated info */
             _("Currently in: %s"),
             astr_build_and_list(&list, descriptions, nstrs));
    astr_free(&list);
    gtk_label_set_text(GTK_LABEL(source), astr_str(&label));
    astr_free(&label);
  }

  /* Clear up. */
  for (i = 0; i < ncities; i++) {
    astr_free(&strs[i]);
  }
  free(last_str); /* might have been NULL */
}

****
  Refresh city list (in response to "all cities" checkbox changing).
  refresh_airlift_column();
}

****
  Refresh airlift column in city list (without tearing everything down).
***/
static void refresh_airlift_column(void)
{
  GtkTreeIter iter;
  bool valid;
  valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
  while (valid) {
    int city_id;
    const struct city *pcity;
    const char *air_text;
    gtk_tree_model_get(GTK_TREE_MODEL(store), &iter,
                       GD_COL_CITY_ID, &city_id, -1);
    pcity = game_city_by_number(city_id);
    fc_assert_ret(pcity != NULL);
    air_text = get_airlift_text(get_units_in_focus(), pcity);
    gtk_list_store_set(GTK_LIST_STORE(store), &iter,
                       GD_COL_AIRLIFT, air_text ? air_text : "-", -1);
    /* FIXME: FC_FREE(air_text); */
    valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
  }
}

  Update goto dialog. button tells if cities of all players or just
  client's player should be listed.
struct city *pdestcity = get_selected_city();
  if (NULL != pdestcity) {
    center_tile_mapcanvas(city_tile(pdestcity));
  }Location of current units and ability to airlift may have changed */
    update_source_label();
    refresh_airlift_column();ENDREP
DELTA 20394 0 12801
SVN  †  †  q‰c ë €r Zí4 eì€r º%í4˜ Ç+§b· †‚ï- ‰i‚õW¶ [‚ÿg¶ Œ'ƒ€i€ ‹$ƒp† †ƒ™€A RƒŸ  ™xƒ¡• „»€O ²$„½5€‚v ªO…ògtk_adjustment_get_lower(adjust)
    + gtk_adjustment_get_upper(adjust)
    - gtk_adjustment_get_page_size(adjust)gtk_adjustment_get_lower(adjust)
    + gtk_adjustment_get_upper(adjust)
    - gtk_adjustment_get_page_size(adjust)gtk_widget_get_window(p)gtk_dialog_get_content_area(GTK_DIALOG(pdialog->shell))_OBJECT(ebox), "button-press-gtk_dialog_get_action_area(GTK_DIALOG(pdialog->shell))gtk_dialog_get_action_area(GTK_DIALOG(pdialog->shell))gtk_dialog_get_content_area(GTK_DIALOG(pdialog->shell)));
  gtk_widget_show_all(gtk_dialog_get_action_area(GTK_DIALOG(pdialog->shell)), xpadmisc_get_padding(GTK_MISC(pdialog->citizen_pixmap), &xpad, NULL);Allocation allocationallocation(widget, &allocation);
  gtk_widget_get_child_requisition(GTK_WIDGET(menu), &requisition);

  gdk_window_get_origin(gtk_widget_get_window(widget), &xpos, &ypos);

  xpos += allocation.x;
  ypos += gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pdialog->misc.disband_on_settler))) {
      BV_SET(new_options, CITYO_DISBAND);
    }
    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pdialog->misc.new_citizens_radio[1]))) {
      BV_SET(new_options, CITYO_NEW_EINSTEIN);
    }
    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pdialog->misc.new_citizens_radio[2]))†  ƒa‡ƒ$€ƒ$ ƒa izens),
                       citizens_dialog_display(pdialog->pcity),
                       TRUE, TRUE, 0);
  }
  gtk_box_pack_start(GTK_BOX(pdialog->happiness.widget),
                     get_top_happiness_display(pdialog->pcity), TRUE, TRUE, 0);
  if (!client_is_observer()) {
    fc_assert(pdialog->cma_editor != NULL);
    pdialog->cma_editor->pcity = new_pcity;
  }

  reset_city_worklist(pdialog->production.woENDREP
DELTA 16998 11167 1061
SVN  ”n‚œ3‚sï …X €’% G ° Oˆ €†N G ± Oˆ €‚6 G © Jˆ €‚ G § Jˆ €‚ G § Jˆ €‚ G ² Jˆ €Œ\ G ¼ Oˆ €‚ G ¡ Oˆ €] G £ Oˆ €Œ  G ¤ Oˆ €… G ³ Oˆ €ˆ\ G ¥ Oˆ €4 G £ Oˆ €„' G º Oˆ €‚1 G ¿ Oˆ €„% G » Oˆ €‚O G ¬ Oˆ €®3 G ± Oˆ €„` G ­ Oˆ €‚" G ­ Oˆ €w G ¬ Oˆ €ƒ G ª Oˆ €…: G ª Oˆ €ƒF G ª Oˆ €‚ G ª Oˆ €‰= G ¯ Oˆ €ˆP G š Oˆ €‡Y G ¡ Oˆ €“: G ´  ˆ €W G ¶ eˆ €, G § [ˆ €> G ¤ [ˆ €F G § [ˆ €Efc_config.h>
#endif

#include <stdlib.h>

#include <gtk/gtk.h>

/* utility */
#include "log.h"
#include "mem.h"
#include "string_vector.h"

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

/* client/gui-gtk-3.0 */
#include "colors.h"
#include "gui_main.h"
#include "gui_stuff.h"

#include "optiondlg.h"


/* The option dialog data. */
struct option_dialog {
  const struct option_set *poptset;     /* The option set. */
  GtkWidget *shell;                     /* The main widget. */
  GtkWidget *notebook;                  /* The notebook. */
  GtkWidget **vboxes;                   /* Category boxes. */
  int *box_children;                    /* The number of children for
                                         * each category. */
};

#define SPECLIST_TAG option_dialog
#define SPECLIST_TYPE struct option_dialog
#include "speclist.h"
#define option_dialogs_iterate(pdialog) \
  TYPED_LIST_ITERATE(struct option_dialog, option_dialogs, pdialog)
#define option_dialogs_iterate_end  LIST_ITERATE_END

/* All option dialog are set on this list. */
static struct option_dialog_list *option_dialogs = NULL;

enum {
  RESPONSE_CANCEL,
  RESPONSE_OK,
  RESPONSE_APPLY,
  RESPONSE_RESET,
  RESPONSE_REFRESH,
  RESPONSE_SAVE
};


/* Option dialog main functions. */
static struct option_dialog *
option_dialog_get(const struct option_set *poptset);
static struct option_dialog *
option_dialog_new(const char *name, const struct option_set *poptset);
static void option_dialog_destroy(struct option_dialog *pdialog);

static void option_dialog_reorder_notebook(struct option_dialog *pdialog);
static inline void option_dialog_foreach(struct option_dialog *pdialog,
                                         void (*option_action)
                                         (struct option *));

/* Option dialog option-specific functions. */
static void option_dialog_option_add(struct option_dialog *pdialog,
                                     struct option *poption,
                                     bool reorder_notebook);
static void option_dialog_option_remove(struct option_dialog *pdialog,
                                        struct option *poption);

static void option_dialog_option_refresh(struct option *poption);
static void option_dialog_option_reset(struct option *poption);
static void option_dialog_option_apply(struct option *poption);


******
  Option dialog widget response callback.static void option_dialog_reponse_callback(GtkDialog *dialog,
                                           gint response_id, gpointer data)
{
  struct option_dialog *pdialog = (struct option_dialog *) data;

  switch (response_id) {
  case RESPONSE_CANCEL:
    gtk_widget_destroy(GTK_WIDGET(dialog));
    break;
  case RESPONSE_OK:
    option_dialog_foreach(pdialog, option_dialog_option_apply);
    gtk_widget_destroy(GTK_WIDGET(dialog));
    break;
  case RESPONSE_APPLY:
    option_dialog_foreach(pdialog, option_dialog_option_apply);
    break;
  case RESPONSE_RESET:
    option_dialog_foreach(pdialog, option_dialog_option_reset);
    break;
  case RESPONSE_REFRESH:
    option_dialog_foreach(pdialog, option_dialog_option_refresh);
    break;
  case RESPONSE_SAVE:
    desired_settable_options_update();
    options_save();
    break;
  }
}

******
  Option dialog widget destroyed callback.static void option_dialog_destroy_callback(GtkObject *object, gpointer data)
{
  struct option_dialog *pdialog = (struct option_dialog *) data;

  if (NULL != pdialog->shell) {
    /* Mark as destroyed, see also option_dialog_destroy(). */
    pdialog->shell = NULL;
    option_dialog_destroy(pdialog);
  }
}

***
  Option refresh requested from menu./
static void option_refresh_callback(GtkMenuItem *menuitem, gpointer data)
{
  struct option *poption = (struct option *) data;
  struct option_dialog *pdialog = option_dialog_get(option_optset(poption));

  if (NULL != pdialog) {
    option_dialog_option_refresh(poption);
  }
}

***
  Option reset requested from menu./
static void option_reset_callback(GtkMenuItem *menuitem, gpointer data)
{
  struct option *poption = (struct option *) data;
  struct option_dialog *pdialog = option_dialog_get(option_optset(poption));

  if (NULL != pdialog) {
    option_dialog_option_reset(poption);
  }
}

***
  Option apply requested from menu./
static void option_apply_callback(GtkMenuItem *menuitem, gpointer data)
{
  struct option *poption = (struct option *) data;
  struct option_dialog *pdialog = option_dialog_get(option_optset(poption));

  if (NULL != pdialog) {
    option_dialog_option_apply(poption);
  }
}

***
  Called when a button is pressed on a option./
static gboolean option_button_press_callback(GtkWidget *widget,
                                             GdkEventButton *event,
                                             gpointer data)
{
  struct option *poption = (struct option *) data;
  GtkWidget *menu, *item;

  if (3 != event->button || !option_is_changeable(poption)) {
    /* Only right button please! */
    return FALSE;
  }

  menu = gtk_menu_new();

  item = gtk_image_menu_item_new_with_label(_("Refresh this option"));
  gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
      gtk_image_new_from_stock(GTK_STOCK_REFRESH, GTK_ICON_SIZE_MENU));
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
  g_signal_connect(item, "activate",
                   G_CALLBACK(option_refresh_callback), poption);

  item = gtk_image_menu_item_new_with_label(_("Reset this option"));
  gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
      gtk_image_new_from_stock(GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU));
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
  g_signal_connect(item, "activate",
                   G_CALLBACK(option_reset_callback), poption);

  item = gtk_image_menu_item_new_with_label(
             _("Apply the changes for this option"));
  gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
      gtk_image_new_from_stock(GTK_STOCK_APPLY, GTK_ICON_SIZE_MENU));
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
  g_signal_connect(item, "activate",
                   G_CALLBACK(option_apply_callback), poption);

  gtk_widget_show_all(menu);
  gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, 0);

  return TRUE;
}

******
  Returns the option dialog which fit the option set.static struct option_dialog *
option_dialog_get(const struct option_set *poptset)
{
  if (NULL != option_dialogs) {
    option_dialogs_iterate(pdialog) {
      if (pdialog->poptset == poptset) {
        return pdialog;
      }
    } option_dialogs_iterate_end;
  }
  return NULL;
}

******
  GDestroyNotify callback.static void option_color_destroy_notify(gpointer data)
{
  GdkColor *color = (GdkColor *) data;

  if (NULL != color) {
    gdk_colormap_free_colors(gdk_colormap_get_system(), color, 1);
    gdk_color_free(color);
  }
}

******
  Set the color of a button.static void option_color_set_button_color(GtkButton *button,
                                          const GdkColor *new_color)
{
  GdkColormap *colormap = gdk_colormap_get_system();
  GdkColor *current_color = g_object_get_data(G_OBJECT(button), "color");
  GtkWidget *child;

  if (NULL == new_color) {
    if (NULL != current_color) {
      g_object_set_data(G_OBJECT(button), "color", NULL);
      if ((child = gtk_bin_get_child(GTK_BIN(button)))) {
        gtk_widget_destroy(child);
      }
    }
  } else {
    GdkPixmap *pixmap;

    /* Apply the new color. */
    if (NULL != current_color) {
      /* We already have a GdkColor pointer. */
      gdk_colormap_free_colors(colormap, current_color, 1);
      *current_color = *new_color;
    } else {
      /* We need to make a GdkColor pointer. */
      current_color = gdk_color_copy(new_color);
      g_object_set_data_full(G_OBJECT(button), "color", current_color,
                             option_color_destroy_notify);
    }
    gdk_colormap_alloc_color(colormap, current_color, TRUE, TRUE);
    if ((child = gtk_bin_get_child(GTK_BIN(button)))) {
      gtk_widget_destroy(child);
    }

    /* Update the button. */
    pixmap = gdk_pixmap_new(root_window, 16, 16, -1);
    gdk_gc_set_foreground(fill_bg_gc, current_color);
    gdk_draw_rectangle(pixmap, fill_bg_gc, TRUE, 0, 0, 16, 16);
    child = gtk_image_new_from_pixmap(pixmap, NULL);
    gtk_container_add(GTK_CONTAINER(button), child);
    gtk_widget_show(child);
    g_object_unref(G_OBJECT(pixmap));
  }
}

******
  "response" signal callback.static void color_selector_response_callback(GtkDialog *dialog,
                                             gint res, gpointer data)
{
  if (res == GTK_RESPONSE_REJECT) {
    /* Clears the current color. */
    option_color_set_button_color(GTK_BUTTON(data), NULL);
  } else if (res == GTK_RESPONSE_OK) {
    /* Apply the new color. */
    GtkColorSelection *selection =
      GTK_COLOR_SELECTION(g_object_get_data(G_OBJECT(dialog), "selection"));
    GdkColor new_color;

    gtk_color_selection_get_current_color(selection, &new_color);
    option_color_set_button_color(GTK_BUTTON(data), &new_color);
  }

  gtk_widget_destroy(GTK_WIDGET(dialog));
}

******
  Called when the user press a color button.static void option_color_select_callback(GtkButton *button, gpointer data)
{
  GtkWidget *dialog, *selection;
  GdkColor *current_color = g_object_get_data(G_OBJECT(button), "color");

  dialog = gtk_dialog_new_with_buttons(_("Select a color"), NULL,
                                       GTK_DIALOG_MODAL,
                                       GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                       GTK_STOCK_CLEAR, GTK_RESPONSE_REJECT,
                                       GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
  setup_dialog(dialog, toplevel);
  g_signal_connect(dialog, "response",
                   G_CALLBACK(color_selector_response_callback), button);

  selection = gtk_color_selection_new();
  g_object_set_data(G_OBJECT(dialog), "selection", selection);
  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), selection,
                     FALSE, FALSE, 0);
  if (current_color) {
    gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(selection),
                                          current_color);
  }

  gtk_widget_show_all(dialog);
}


******
  Creates a new option dialog.static struct option_dialog *
option_dialog_new(const char *name, const struct option_set *poptset)
{
  struct option_dialog *pdialog;
  const int CATEGORY_NUM = optset_category_number(poptset);

  /* Create the dialog structure. */
  pdialog = fc_malloc(sizeof(*pdialog));
  pdialog->poptset = poptset;
  pdialog->shell = gtk_dialog_new_with_buttons(name, NULL, 0,
                       GTK_STOCK_CANCEL, RESPONSE_CANCEL,
                       GTK_STOCK_SAVE, RESPONSE_SAVE,
                       GTK_STOCK_REFRESH, RESPONSE_REFRESH,
                       _("Reset"), RESPONSE_RESET,
                       GTK_STOCK_APPLY, RESPONSE_APPLY,
                       GTK_STOCK_OK, RESPONSE_OK, NULL);
  pdialog->notebook = gtk_notebook_new();
  pdialog->vboxes = fc_calloc(CATEGORY_NUM, sizeof(*pdialog->vboxes));
  pdialog->box_children = fc_calloc(CATEGORY_NUM,
                                    sizeof(*pdialog->box_children));

  /* Append to the option dialog list. */
  if (NULL == option_dialogs) {
    option_dialogs = option_dialog_list_new();
  }
  option_dialog_list_append(option_dialogs, pdialog);

  /* Shell */
  setup_dialog(pdialog->shell, toplevel);
  gtk_window_set_position(GTK_WINDOW(pdialog->shell), GTK_WIN_POS_MOUSE);
  gtk_window_set_default_size(GTK_WINDOW(pdialog->shell), -1, 480);
  g_signal_connect(pdialog->shell, "response",
                   G_CALLBACK(option_dialog_reponse_callback), pdialog);
  g_signal_connect(pdialog->shell, "destroy",
                   G_CALLBACK(option_dialog_destroy_callback), pdialog);

  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(pdialog->shell))),
                     pdialog->notebook, TRUE, TRUE, 0);

  /* Add the options. */
  options_iterate(poptset, poption) {
    option_dialog_option_add(pdialog, poption, FALSE);
  } options_iterate_end;

  option_dialog_reorder_notebook(pdialog);

  /* Show the widgets. */
  gtk_widget_show_all(pdialog->shell);

  return pdialog;
}

******
  Destroys an option dialog.static void option_dialog_destroy(struct option_dialog *pdialog)
{
  GtkWidget *shell = pdialog->shell;

  if (NULL != option_dialogs) {
    option_dialog_list_remove(option_dialogs, pdialog);
  }

  options_iterate(pdialog->poptset, poption) {
    option_set_gui_data(poption, NULL);
  } options_iterate_end;

  if (NULL != shell) {
    /* Maybe already destroyed, see also option_dialog_destroy_callback(). */
    pdialog->shell = NULL;
    gtk_widget_destroy(shell);
  }

  free(pdialog->vboxes);
  free(pdialog->box_children);
  free(pdialog);
}

******
  Utility for sorting the pages of a option dialog.static int option_dialog_pages_sort_func(const void *w1, const void *w2)
{
  GObject *obj1 = G_OBJECT(*(GtkWidget **) w1);
  GObject *obj2 = G_OBJECT(*(GtkWidget **) w2);

  return (GPOINTER_TO_INT(g_object_get_data(obj1, "category"))
          - GPOINTER_TO_INT(g_object_get_data(obj2, "category")));
}

******
  Reoder the pages of the notebook of the option dialog.static void option_dialog_reorder_notebook(struct option_dialog *pdialog)
{
  GtkNotebook *notebook = GTK_NOTEBOOK(pdialog->notebook);
  const int pages_num = gtk_notebook_get_n_pages(notebook);

  if (0 < pages_num) {
    GtkWidget *pages[pages_num];
    int i;

    for (i = 0; i < pages_num; i++) {
      pages[i] = gtk_notebook_get_nth_page(notebook, i);
    }
    qsort(pages, pages_num, sizeof(*pages), option_dialog_pages_sort_func);
    for (i = 0; i < pages_num; i++) {
      gtk_notebook_reorder_child(notebook, pages[i], i);
    }
  }
}

******
  Do an action for all options of the option dialog.static inline void option_dialog_foreach(struct option_dialog *pdialog,
                                         void (*option_action)
                                         (struct option *))
{
  fc_assert_ret(NULL != pdialog);

  options_iterate(pdialog->poptset, poption) {
    option_action(poption);
  } options_iterate_end;
}

******
  Add an option to the option dialog.static void option_dialog_option_add(struct option_dialog *pdialog,
                                     struct option *poption,
                                     bool reorder_notebook)
{
  const int category = option_category(poption);
  GtkWidget *hbox, *ebox, *w = NULL;

  fc_assert(NULL == option_get_gui_data(poption));

  /* Add category if needed. */
  if (NULL == pdialog->vboxes[category]) {
    GtkWidget *sw, *align;

    sw = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
                                   GTK_POLICY_NEVER,
                                   GTK_POLICY_AUTOMATIC);
    g_object_set_data(G_OBJECT(sw), "category", GINT_TO_POINTER(category));
    gtk_notebook_append_page(GTK_NOTEBOOK(pdialog->notebook), sw,
                             gtk_label_new_with_mnemonic
                             (option_category_name(poption)));

    if (reorder_notebook) {
      option_dialog_reorder_notebook(pdialog);
    }

    align = gtk_alignment_new(0.0, 0.0, 1.0, 0.0);
    gtk_container_set_border_width(GTK_CONTAINER(align), 8);
    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), align);

    pdialog->vboxes[category] = gtk_vbox_new(FALSE, 0);
    gtk_container_add(GTK_CONTAINER(align), pdialog->vboxes[category]);

    gtk_widget_show_all(sw);
  }
  pdialog->box_children[category]++;

  ebox = gtk_event_box_new();
  gtk_widget_set_tooltip_text(ebox, option_help_text(poption));
  gtk_box_pack_start(GTK_BOX(pdialog->vboxes[category]), ebox,
                     FALSE, FALSE, 0);
  g_signal_connect(ebox, "button_press_event",
                   G_CALLBACK(option_button_press_callback), poption);

  hbox = gtk_hbox_new(FALSE, 0);
  gtk_box_pack_start(GTK_BOX(hbox),
                     gtk_label_new(option_description(poption)),
                     FALSE, FALSE, 5);
  gtk_container_add(GTK_CONTAINER(ebox), hbox);

  switch (option_type(poption)) {
  case OT_BOOLEAN:
    w = gtk_check_button_new();
    break;

  case OT_INTEGER:
    {
      int min = option_int_min(poption), max = option_int_max(poption);

      w = gtk_spin_button_new_with_range(min, max, MAX((max - min) / 50, 1));
    }
    break;

  case OT_STRING:
    {
      const struct strvec *values = option_str_values(poption);

      if (NULL != values) {
        w = gtk_combo_box_text_new_with_entry();
        strvec_iterate(values, value) {
          gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(w), value);
        } strvec_iterate_end;
      } else {
        w = gtk_entry_new();
      }
    }
    break;

  case OT_ENUM:
    {
      int i;
      const char *str;
      GtkListStore *model;
      GtkCellRenderer *renderer;
      GtkTreeIter iter;

      /* 0: enum index, 1: translated enum name. */
      model = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING);
      w = gtk_combo_box_new_with_model(GTK_TREE_MODEL(model));
      g_object_unref(model);

      renderer = gtk_cell_renderer_text_new();
      gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), renderer, FALSE);
      gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), renderer,
                                     "text", 1, NULL);
      for (i = 0; (str = option_enum_int_to_str(poption, i)); i++) {
        gtk_list_store_append(model, &iter);
        gtk_list_store_set(model, &iter, 0, i, 1, _(str), -1);
      }
    }
    break;

  case OT_BITWISE:
    {
      GList *list = NULL;
      GtkWidget *vbox, *hbox, *check, *label;
      const struct strvec *values = option_bitwise_values(poption);
      int i;

      w = gtk_frame_new(NULL);
      vbox = gtk_vbox_new(TRUE, 0);
      gtk_container_add(GTK_CONTAINER(w), vbox);
      for (i = 0; i < strvec_size(values); i++) {
        hbox = gtk_hbox_new(FALSE, 4);
        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
        check = gtk_check_button_new();
        gtk_box_pack_start(GTK_BOX(hbox), check, FALSE, TRUE, 0);
        label = gtk_label_new(_(strvec_get(values, i)));
        gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);
        list = g_list_append(list, check);
      }
      g_object_set_data_full(G_OBJECT(w), "check_buttons", list,
                             (GDestroyNotify) g_list_free);
    }
    break;

  case OT_FONT:
    w = gtk_font_button_new();
    g_object_set(G_OBJECT(w), "use-font", TRUE, NULL);
    break;

  case OT_COLOR:
    {
      GtkWidget *button;

      w = gtk_hbox_new(TRUE, 4);

      /* Foreground color selector button. */
      button = gtk_button_new();
      gtk_box_pack_start(GTK_BOX(w), button, FALSE, TRUE, 0);
      gtk_widget_set_tooltip_text(GTK_WIDGET(button),
                                  _("Select the text color"));
      g_object_set_data(G_OBJECT(w), "fg_button", button);
      g_signal_connect(button, "clicked",
                       G_CALLBACK(option_color_select_callback), NULL);

      /* Background color selector button. */
      button = gtk_button_new();
      gtk_box_pack_start(GTK_BOX(w), button, FALSE, TRUE, 0);
      gtk_widget_set_tooltip_text(GTK_WIDGET(button),
                                  _("Select the background color"));
      g_object_set_data(G_OBJECT(w), "bg_button", button);
      g_signal_connect(button, "clicked",
                       G_CALLBACK(option_color_select_callback), NULL);
    }
    break;

  case OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_type(poption));
    break;
  }

  option_set_gui_data(poption, w);
  if (NULL == w) {
    log_error("Failed to create a widget for option %d \"%s\".",
              option_number(poption), option_name(poption));
  } else {
    g_object_set_data(G_OBJECT(w), "main_widget", ebox);
    gtk_box_pack_end(GTK_BOX(hbox), w, FALSE, FALSE, 0);
  }

  gtk_widget_show_all(ebox);

  /* Set as current value. */
  option_dialog_option_refresh(poption);
}

******
  Remove an option from the option dialog.static void option_dialog_option_remove(struct option_dialog *pdialog,
                                        struct option *poption)
{
  GObject *object = G_OBJECT(option_get_gui_data(poption));

  if (NULL != object) {
    const int category = option_category(poption);

    option_set_gui_data(poption, NULL);
    gtk_widget_destroy(GTK_WIDGET(g_object_get_data(object, "main_widget")));

    /* Remove category if needed. */
    if (0 == --pdialog->box_children[category]) {
      gtk_notebook_remove_page(GTK_NOTEBOOK(pdialog->notebook), category);
      pdialog->vboxes[category] = NULL;
    }
  }
}

******
  Set the boolean value of the option.static inline void option_dialog_option_bool_set(struct option *poption,
                                                 bool value)
{
  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
                               (option_get_gui_data(poption)),
                               value);
}

******
  Set the integer value of the option.static inline void option_dialog_option_int_set(struct option *poption,
                                                int value)
{
  gtk_spin_button_set_value(GTK_SPIN_BUTTON(option_get_gui_data(poption)),
                            value);
}

******
  Set the string value of the option.static inline void option_dialog_option_str_set(struct option *poption,
                                                const char *string)
{
  if (NULL != option_str_values(poption)) {
    gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN
                       (option_get_gui_data(poption)))), string);
  } else {
    gtk_entry_set_text(GTK_ENTRY(option_get_gui_data(poption)), string);
  }
}

******
  Set the enum value of the option.static inline void option_dialog_option_enum_set(struct option *poption,
                                                 int value)
{
  GtkComboBox *combo = GTK_COMBO_BOX(option_get_gui_data(poption));
  GtkTreeModel *model = gtk_combo_box_get_model(combo);
  GtkTreeIter iter;
  int i;

  if (gtk_tree_model_get_iter_first(model, &iter)) {
    do {
      gtk_tree_model_get(model, &iter, 0, &i, -1);
      if (i == value) {
        gtk_combo_box_set_active_iter(combo, &iter);
        return;
      }
    } while (gtk_tree_model_iter_next(model, &iter));
  }

  log_error("Didn't find the value %d for option \"%s\" (nb %d).",
            value, option_name(poption), option_number(poption));
}

******
  Set the enum value of the option.static inline void option_dialog_option_bitwise_set(struct option *poption,
                                                    unsigned value)
{
  GObject *data = option_get_gui_data(poption);
  GList *iter = g_object_get_data(data, "check_buttons");
  int bit;

  for (bit = 0; NULL != iter; iter = g_list_next(iter), bit++) {
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(iter->data),
                                 value & (1 << bit));
  }
}

******
  Set the font value of the option.static inline void option_dialog_option_font_set(struct option *poption,
                                                 const char *font)
{
  gtk_font_button_set_font_name(GTK_FONT_BUTTON
                                (option_get_gui_data(poption)), font);
}

******
  Set the font value of the option.static inline void option_dialog_option_color_set(struct option *poption,
                                                  struct ft_color color)
{
  GtkWidget *w = option_get_gui_data(poption);
  GdkColor gdk_color;

  /* Update the foreground button. */
  if (NULL != color.foreground
      && '\0' != color.foreground[0]
      && gdk_color_parse(color.foreground, &gdk_color)) {
    option_color_set_button_color(g_object_get_data(G_OBJECT(w),
                                                    "fg_button"),
                                  &gdk_color);
  } else {
    option_color_set_button_color(g_object_get_data(G_OBJECT(w),
                                                    "fg_button"), NULL);
  }

  /* Update the background button. */
  if (NULL != color.background
      && '\0' != color.background[0]
      && gdk_color_parse(color.background, &gdk_color)) {
    option_color_set_button_color(g_object_get_data(G_OBJECT(w),
                                                    "bg_button"),
                                  &gdk_color);
  } else {
    option_color_set_button_color(g_object_get_data(G_OBJECT(w),
                                                    "bg_button"), NULL);
  }
}

******
  Update an option in the option dialog.static void option_dialog_option_refresh(struct option *poption)
{
  switch (option_type(poption)) {
  case OT_BOOLEAN:
    option_dialog_option_bool_set(poption, option_bool_get(poption));
    break;
  case OT_INTEGER:
    option_dialog_option_int_set(poption, option_int_get(poption));
    break;
  case OT_STRING:
    option_dialog_option_str_set(poption, option_str_get(poption));
    break;
  case OT_ENUM:
    option_dialog_option_enum_set(poption, option_enum_get_int(poption));
    break;
  case OT_BITWISE:
    option_dialog_option_bitwise_set(poption, option_bitwise_get(poption));
    break;
  case OT_FONT:
    option_dialog_option_font_set(poption, option_font_get(poption));
    break;
  case OT_COLOR:
    option_dialog_option_color_set(poption, option_color_get(poption));
    break;
  case OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_type(poption));
    break;
  }

  gtk_widget_set_sensitive(option_get_gui_data(poption),
                           option_is_changeable(poption));
}

******
  Reset the option.static void option_dialog_option_reset(struct option *poption)
{
  switch (option_type(poption)) {
  case OT_BOOLEAN:
    option_dialog_option_bool_set(poption, option_bool_def(poption));
    break;
  case OT_INTEGER:
    option_dialog_option_int_set(poption, option_int_def(poption));
    break;
  case OT_STRING:
    option_dialog_option_str_set(poption, option_str_def(poption));
    break;
  case OT_ENUM:
    option_dialog_option_enum_set(poption, option_enum_def_int(poption));
    break;
  case OT_BITWISE:
    option_dialog_option_bitwise_set(poption, option_bitwise_def(poption));
    break;
  case OT_FONT:
    option_dialog_option_font_set(poption, option_font_def(poption));
    break;
  case OT_COLOR:
    option_dialog_option_color_set(poption, option_color_def(poption));
    break;
  case OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_type(poption));
    break;
  }
}

******
  Apply the option change.static void option_dialog_option_apply(struct option *poption)
{
  GtkWidget *w = GTK_WIDGET(option_get_gui_data(poption));

  switch (option_type(poption)) {
  case OT_BOOLEAN:
    (void) option_bool_set(poption, gtk_toggle_button_get_active
                           (GTK_TOGGLE_BUTTON(w)));
    break;

  case OT_INTEGER:
    (void) option_int_set(poption, gtk_spin_button_get_value_as_int
                          (GTK_SPIN_BUTTON(w)));
    break;

  case OT_STRING:
    if (NULL != option_str_values(poption)) {
      (void) option_str_set(poption, gtk_entry_get_text
                            (GTK_ENTRY(gtk_bin_get_child(GTK_BIN(w)))));
    } else {
      (void) option_str_set(poption, gtk_entry_get_text(GTK_ENTRY(w)));
    }
    break;

  case OT_ENUM:
    {
      GtkTreeIter iter;
      int value;

      if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(w), &iter)) {
        break;
      }

      gtk_tree_model_get(gtk_combo_box_get_model(GTK_COMBO_BOX(w)),
                         &iter, 0, &value, -1);
      (void) option_enum_set_int(poption, value);
    }
    break;

  case OT_BITWISE:
    {
      GList *iter = g_object_get_data(G_OBJECT(w), "check_buttons");
      unsigned value = 0;
      int bit;

      for (bit = 0; NULL != iter; iter = g_list_next(iter), bit++) {
        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(iter->data))) {
          value |= 1 << bit;
        }
      }
      (void) option_bitwise_set(poption, value);
    }
    break;

  case OT_FONT:
    (void) option_font_set(poption, gtk_font_button_get_font_name
                           (GTK_FONT_BUTTON(w)));
    break;

  case OT_COLOR:
    {
      char fg_color_text[32], bg_color_text[32];
      GObject *button;
      GdkColor *color;

      /* Get foreground color. */
      button = g_object_get_data(G_OBJECT(w), "fg_button");
      color = g_object_get_data(button, "color");
      color_to_string(color, fg_color_text, sizeof(fg_color_text));

      /* Get background color. */
      button = g_object_get_data(G_OBJECT(w), "bg_button");
      color = g_object_get_data(button, "color");
      color_to_string(color, bg_color_text, sizeof(bg_color_text));

      (void) option_color_set(poption,
                              ft_color(fg_color_text, bg_color_text));
    }
    break;

  case OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_type(poption));
    break;
  }
}

******
  Popup the option dialog for the option set.struct option_dialog *pdialog = option_dialog_get(poptset);

  if (NULL != pdialog) {
    option_dialog_foreach(pdialog, option_dialog_option_refresh);
  } else {
    (void) option_dialog_new(name, poptset);
  }
}

******
  Popdown the option dialog for the option set.down(const struct option_set *poptset)
{
  struct option_dialog *pdialog = option_dialog_get(poptset);

  if (NULL != pdialog) {
    option_dialog_destroy(pdialog);
  }
}

******
  Update the GUI for the option.gui_update(struct option *poption)
{
  struct option_dialog *pdialog = option_dialog_get(option_optset(poption));

  if (NULL != pdialog) {
    option_dialog_option_refresh(poption);
  }
}

******
  Add the GUI for the option.gui_add(struct option *poption)
{
  struct option_dialog *pdialog = option_dialog_get(option_optset(poption));

  if (NULL != pdialog) {
    option_dialog_option_add(pdialog, poption, TRUE);
  }
}

******
  Remove the GUI for the option.gui_remove(struct option *poption)
{
  struct option_dialog *pdialog = option_dialog_get(option_optset(poption));

  if (NULL != pdialog) {
    option_dialog_option_remove(pdialog, poption);
  }
}
ENDREP
DELTA 19992 1571 2482
SVN  †  †  &ƒ( ŠR ® „³Šiˆ *…¾€2 „w…À€@ ØU…ÆBgtk_dialog_get_content_area(GTK_DIALOG(shell))text_newtext_insert_text(GTK_COMBO_BOX_TEXT(ai_lvl_combobox), i, level_name);
      levels[i] = level;
      i++;
    }
  }
  gtk_combo_box_set_active(GTK_COMBO_BOX(ai_lvl_combobox), 0);new_with_model_and_entry(GTK_TREE_MODEL(model));
    gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(ruleset_combo), 0);
    g_object_unref(G_OBJECT(model));
  }

  g_signal_connect(G_OBJECT†  î;ï$Wž QÚ¹ I@ í3 -1);
  load_filename(filename
  call the default GTK+ requester for scenario loading.
ENDREP
DELTA 13195 0 1670
SVN  —'—C3 …X ƒ ‡:…X „6 ‚‘G¯ ƒA“ffc_sgtk_dialog_get_content_area(GTK_DIALOG(dialog))ENDREP
DELTA 19683 15826 72
SVN  ˜(˜< ˆO € ‰A JŠ^  GdkVisualType type;

  visual = gdk_screen_get_system_visual(gdk_screen_get_default());
  type = gdk_visual_get_visual_type(visual);

  if (ENDREP
DELTA 14417 142068 10300
SVN  ßdé—V …X €< L†;€  ƒiˆ% Hˆ@ „SŒU¡ D”= ‘o³ D”=½ FÂ>€U ‚o”<š D”= ‚4—s« K”= šu® PÂ>¿ C”>‰ YÄr§ FÂ>€U a”<† E—} †Vž ® ‚w¥¿ ™d¨® „@Á|€T …gÇ“ „vÌ}„ hÑr€ŽQfc_config.h>
#endif

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

#include <gtk/gtk.h>

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

/* common */research.h"

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

/* client/gui-gtk-3.0 */
#include "gui_main.h"
#include "gui_stuff.h"
#include "mapview  Initialize intelligenze dialogs  Free resources allocated for intelligenze dialogsvoid intel_dialog_done()
{
  dialog_list_destroy(dialog_list)
  Get intelligenze dialog between client user and other player
  passed as parameter  Open intelligenze dialog  Intelligenze dialog destruction requestedremove(dialog_list, pdialog);

  free(pdialog)
  Close an intelligence dialog for the given player.
*********void clos  intel_destroy_callback(NULL, pdialog)
  Create new intelligenze dialog between client user and player
  given as parametercreategtk_dialog_get_content_area(GTK_DIALOG(shell))/* TRANS: Overview tab of foreign intelligence report dialog */gtk_dialog_get_content_area(GTK_DIALOG(shell))fc_snprintf(buf, sizeof(buf), _("Foreign Intelligence: %s Empire"),
                layer_diplstate_getconn        struct city *pcity;

        switch (i) {
        case LABEL_RULER:
          ruler_title_for_player(p, buf, sizeof(buf));
          break;
        case LABEL_GOVERNMENT:
          sz_strlcpy(buf, government_name_for_player(p));
          break;
        case LABEL_CAPITAL:
          pcity = player_capital(p);
          /* TRANS: "unknown" location */
          sz_strlcpy(buf, (!pcity) ? _("(unknown)") : city_name(pcity));
          break;
        case LABEL_GOLD:
          fc_snprintf(buf, sizeof(buf), "%d", p->economic.gold);
          break;
        case LABEL_TAX:
          fc_snprintf(buf, sizeof(buf), "%d%%", p->economic.tax);
          break;
        case LABEL_SCIENCE:
          fc_snprintf(buf, sizeof(buf), "%d%%", p->economic.science);
          break;
        case LABEL_LUXURY:
          fc_snprintf(buf, sizeof(buf), "%d%%", p->economic.luxury);
          break;
        case LABEL_RESEARCHING:
          {
            struct player_research *research = player_research_get(p);

            switch (research->researching) {
            case A_UNKNOWN:
              /* TRANS: "Unknown" advance/technology */
              fc_snprintf(buf, sizeof(buf), _("(Unknown)"));
              break;
            case A_UNSET:
              /* TRANS: missing value */
              fc_snprintf(buf, sizeof(buf), _("(none)"));
              break;
            default:
              fc_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 19291 26491 2200
SVN  ù<ý6j † €R E†> „M‡ª I@ ‡Œ2€N Ž”-˜ ‚%¢=ª I@ ‚b¥/€‚e Pì@ ‚tªQ€m S© ‡°_€B aã9 ‡q¸M ŒrÀI€c ?Î#Ž ‚Ï`€6 SÓ €M I@ OÕ@¡ Ö!¦ „a×M¡ ƒ4Ü@¯ ‰6à#¡ ƒ%ék˜ I@ Wí] I@ „ð› bã9 ƒnõ€Nutility */
#include "fcintl.h"
#include "support.h"

/* common */
#include "combat  Button released when showing info label
y;

    gdk_window_get_origin(gtk_widget_get_window(map_canvas), &minx, &miny)gtk_widget_get_window(p)  Information label destruction requested
popup_callback(gpointer data, gint response,
                                         const char *input)
{
  int idx = GPOINTER_TO_INT(data);

  switch (response) {
  case GTK_RESPONSE_OK:
    finish_city(index_to_tile(idx), input);
    break;
  case GTK_RESPONSE_CANCEL:
  case GTK_RESPONSE_DELETE_EVENT:
    cancel_city(index_to_tile(idx));
    break;
  }                      _("Build New City"),
                      _("What should we call our new city?"), suggestname,
                      name_new_city_popup_callback,
                      GINT_TO_POINTER(tile_index(unit_tile(punit))),
                         (ev->state & GDK_SHIFT_MASK) != 0);
  } on city/unit: Copy Production. */
    /* If nothing to copy, fall through to rectangle selection. */
    else if (ev->state & GDK_SHIFT_MASK
             && clipboard_copy_production(ptile)) {
      /* Already done the copy */Area selection,
                             (ev->state & GDK_SHIFT_MASK) != 0);
        return TRUE;
      }
      if (hover_state == HOVER_NONE) {
        anchor_selection_rectangle(ev->x, ev->y  Update goto line so that destination is at current mouse pointer location.
gtk_widget_get_window(map_canvas)gtk_widget_get_window(overview_canvas)gtk_widget_get_window(map_canvas)3_mouse_over_map_focus && !gtk_widget_has_focusgtk_widget_get_window(map_canvas)  Overview canvas moved
  Button pressed at overview
APPEND : SELECT_POPUP);
  }gtk_widget_get_window(map_canvas), &x, &y, NULL);
  key_city_overlay(x, y);
}
ENDREP
DELTA 20310 356 5188
SVN  üýq2ƒE ­E £ žB­h€d …KÌG€O …[Òeƒ ‚?Ø?ƒ ”vÚ}€h †Eð; …÷3_message_chat_location == GUI_GTK3chooser_dialog_new("Load Lua file", GTK_WINDOW(toplevel),
                GTK_FILE_CHOOSER_ACTION_OPEN,
                GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                GTK_STOCK_OPEN, GTK_RESPONSE_OK,
                NULLchooser_get_filename
                                         (GTK_FILE_CHOOSERKEYKEYif (pdialog->shell) {
    gui_dialog_destroy(pdialog->shell);
    fc_assert(NULL == pdialog->shell);
  }3ENDREP
DELTA 20126 832 1530
SVN  áEã1„ Œ4 ‰ ¯DŒ9¡ …Y¼€‚ ‡uÂ€f †hË:€  \Ã| mÓXAdjustmengtk_widget_get_window(map_canvas)gtk_adjustment_get_upper(ov_hadj)
                    - gtk_adjustment_get_page_size(ov_hadj));
  ov_scroll_y = MIN(y - (overview_canvas_store_height / 2),
                    gtk_adjustment_get_upper(ov_vadj)
                    - gtk_adjustment_get_page_size(ov_vadj)(GtkAdjustment*)gtk_adjustment_new(-1, xmin, xmax, xstep, xsize, xsize);
  map_vadj = (GtkAdjustment*)gtk_adjustment_get_value(adj);
  } else {
    scroll_y = gtk_adjustment_get_value(adj);
  }

  set_mapview_scroll_pos(scroll_x, ENDREP
DELTA 14977 1076 35294
SVN  ‚ÆO‚×…TÁT …Y ” \…~€ƒ \‡/ ‚‰[€‚; pº D«  ŽQœ QÃ@ ƒ<9¢ K«  ”CŸ D« €ƒ F§ § K« €_ Mô~ 1œW€„7 J™@– K« €p M¦u¦ {§I€‚9 F§ Š gÐ/ †«K® Š±— D«  ‚u¼Y– …¿b– D«  kÅ6” V« € xÈk› K« « ÊZ­ F§ › K« €  J™@£ K«  ‚>Îs€ƒo ‚;ÓG€) ;Ö} K« € 4Ùj’ K«  fÛl€g F§ š K« €„ F§ ¨ K« €„d ƒ"è6• K« ‰ ‚ô: …#î> K«  ƒSô/£ K«  pøPš K« ” Ms¶ 4†( ƒ;ýYŸ K«  ‚_b™ K« – Ms¶ „j†(– K«  Z‹`— †MQš K«  ”l™ K«  –J– K«  w˜(— „Eš6› K« ˆ ˜0 ‚ c– K«  £N— d¤x€Y ¦-› K«  [¨ƒ „©n£ Q­8ƒ ®x— K« ˆ +¹} ‡²œ K«  ‡+¹uš K«  PÁn– K«  Š<Ä€@ ‚4ÐB¯ K«  …LÓD‰ 4Ù‰ „\ÚD‰ ƒ`ß €C ãF— ©9ä^ƒ ‡0‚Žˆ ‹‚•N™ D« ª s‚¡^€„ F§ £ K« €l _‚¡r€‚` F§ — D« € ‚ª€z ‚V‚¬]¶ †‚¯3€L ˆf‚µN¢ K« €; I‚Áˆ ƒH‚Âe€fc_config.h>
#endif
/* utility */
#include "fcintl.h"
#include "log.h"
#include "mem.h"
#include "support.h"

/* common */
#include "city.h"
#include "packets.h"
#include "worklist.h"

/* client */
#include "citydlg_common.h"
#include "client_main.h"
#include "climisc.h"
#include "global_worklist.h"
#include "options.h"
#include "tilespec.h"

/* client/gui-gtk-3.0 */
#include "canvas.h"
#include "citydlg.h"
#include "graphicsreset_global_worklist(GtkWidget *editor,
                                  struct global_worklist *pgwl);
static void popup_worklist(struct global_worklist *pgwl);
static void popdown_worklist(struct global_worklist *pgwl);
static void dst_row_callback(GtkTreeView *view, GtkTreePath *path,
                          Illegal initialization value for max unit size variables  Setup max unit sprite size  Worklists dialog being destroyed  Refresh global worklists listvoid update_worklist_report_dialog(void)
{
  GtkTreeIter it;

  gtk_list_store_clear(worklists_store);
  global_worklists_iterate(pgwl) {
    gtk_list_store_append(worklists_store, &it);

    gtk_list_store_set(worklists_store, &it,
                       0, global_worklist_name(pgwl),
                       1, global_worklist_id(pgwl),
                       -1); 
  } global_worklists_iterate_end;  User has responded to worklist reportvoid worklists_response(GtkWidget *w, gint response)
{
  struct global_worklist *pgwl;
  int idid, -1);
    pgwl = global_worklist_by_id(id);
  } else {
    pgwl = NULL;
    id = -1;
  }

  switch (response) {
  case WORKLISTS_NEW:
    global_worklist_new(_("new"));
    update_worklist_report_dialog();
    return;

  case WORKLISTS_DELETE:
    if (!pgwl) {
      return;
    }

    popdown_worklist(pgwl);
    global_worklist_destroy(pgwl);
    update_worklist_report_dialog();
    return;

  case WORKLISTS_PROPERTIES:
    if (!pgwl) {
      return;
    }

    popup_worklist(pgwl);
    return;

  default:
    gtk_widget_destroy(worklists_shell);
    return;  Worklist cell editedvoid cell_edited(GtkCellRendererText *cell,
                        const gchar *spath,
                        struct global_worklist *pgwl;
  int idgtk_tree_path_free(path);

  gtk_tree_model_get(GTK_TREE_MODEL(worklists_store), &it, 1, &id, -1);
  pgwl = global_worklist_by_id(id);

  if (!pgwl) {
    gtk_list_store_remove(worklists_store, &it);
    return;
  }

  global_worklist_set_name(pgwl, text);
  gtk_list_store_set(worklists_store, &it, 0, text, -1);  Bring upgtk_dialog_get_content_area(GTK_DIALOG(shell))  Open worklists reportint global_worklist_id  Add drag&drop target  Get worklist by idget_worklist(int global_worklist_id)
{
  if (hash) {
    gpointer ret;

    ret = g_hash_table_lookup(hash, GINT_TO_POINTER(global_worklist_id)  Insert worklist to editorvoid insert_worklist(int global_worklist_idGINT_TO_POINTER(global_worklist_id), editor);  Remove worklist from hashvoid delete_worklist(int global_worklist_id)
{
  if (hash) {
    g_hash_table_remove(hash, GINT_TO_POINTER(global_worklist_id));  User responded to worklist reportglobal_worklist *pgwl)
{
  GtkWidget *shell;

  if (!(shell = get_worklist(global_worklist_id(pgwl)))) {
    GtkWidget *editor;

    shell = gtk_dialog_new_with_buttons(global_worklist_name(pgwl),
                                        GTK_WINDOW(worklists_shell),
                                        GTK_DIALOG_DESTROY_WITH_PARENT,
                                        GTK_STOCK_CLOSE,
                                        GTK_RESPONSE_CLOSE,
                                        global_worklist(editor, pgwl);
    insert_worklist(global_worklist_id(pgwl), editor);

    gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(shell))  Close worklistvoid popdown_worklist(struct global_worklist *pgwl)
{
  GtkWidget *shell;
  
  if ((shell = get_worklist(global_worklist_id(pgwl)  Destroy worklist
  if (ptr->global_worklist_id != -1) {
    delete_worklist(ptr->global_worklist_id);
  }

  free(ptr);  Item activated from menuvoid menu_item_callback(GtkMenuItem *item, struct worklist_data *ptr)
{
  struct global_worklist *pgwl;
  const struct worklist *pwl;
  size_t i;

  if (NULL == client.conn.playing) {
    return;
  }

  pgwl = global_worklist_by_id(GPOINTER_TO_INT
                               (g_object_get_data(G_OBJECT(item), "id")));
  if (!pgwl) {
    return;
  }
  pwl = global_worklist_get(pgwl);

  for (i = 0; i < worklist_length(pwl); i++) {
    GtkTreeIter it;
    cid cid;

    cid = cid_encode(pwl->entries[i]);

    gtk_list_store_append(ptr->dst, &it);
    gtk_list_store_set(ptr->dst, &it, 0, (gint) cid, -1);
  }

  commit_worklist(ptr);  Open menu for adding items to worklistvoid popup_add_menu(GtkMenuShell *menu, gpointer data)
{
  GtkWidget *item;

  gtk_container_foreach(GTK_CONTAINER(menu),
                        (GtkCallback) gtk_widget_destroy, NULL);

  global_worklists_iterate(pgwl) {
    item = gtk_menu_item_new_with_label(global_worklist_name(pgwl));
    g_object_set_data(G_OBJECT(item), "id",
                      GINT_TO_POINTER(global_worklist_id(pgwl)));
    gtk_widget_show(item);

    gtk_container_add(GTK_CONTAINER(menu), item);
    g_signal_connect(item, "activate",
                     G_CALLBACK(menu_item_callback), data);
  } global_worklists_iterate_end;  Help button clickedvoid help  "Change Production" clicked  Showing of future targets toggled  Move item up in worklistvoid queue_bubble_up  GtkTreeModel *model;

  if (!gtk_widget_is_sensitive  Removal of the item requested  Move item down in queuevoid queue_bubble_down  GtkTreeModel *model;

  if (!gtk_widget_is_sensitive  Insert item to queuegtk_widget_is_sensitive  Prepend item to worklist  Append item to worklist  Source row activatedgtk_widget_is_sensitive  Destination row activatedvoid dst  Key press for sourcegtk_widget_is_sensitiveKEY_Insert) {
    queue_prepend(ptr);
    return TRUE;
  } else if (ev->keyval == GDK_KEY  Key press for destinationKEYKEY_Up) {
    queue_bubble_up(ptr);KEY  Selection from sourcevoid src  Selection from destination  Drag&drop to destination  Render worklist celluseless = is_improvement_redundant(*pcity, target.value.building  Populate view with buildable item informationgui_gtk3_gui_gtk3_gui_gtk3_  GtkListStore *src_store, *dst_store;
  struct worklist_data *ptr;global_worklist_id = -1auxge Prod_  Reset worklist for cityvoid reset_city_worklist(GtkWidget *editorglobal_worklist_id = -1;
  ptr->pcity = pcity;

  gtk_list_store_clear(ptr->src);
  gtk_list_store_clear(ptr->dst);

  g_object_set(ptr->src_col, "visible", TRUE, NULL);
  g_object_set(ptr->dst_col, "visible", TRUE, NULL);

  gtk_tree_view_enable_model_drag_source(GTK_TREE_VIEW(ptr->src_view),
                                         GDK_BUTTON1_MASK,
                                         wl_dnd_targets,
                                         G_N_ELEMENTS(wl_dnd_targets),
                                         GDK_ACTION_COPY);  Reset one of the global worklistsvoid reset_global_worklist(GtkWidget *editor,
                                  struct global_worklist *pgwlglobal_worklist_id = global_worklist_id(pgwl);
  ptr->pcity = NULL;

  gtk_list_store_clear(ptr->src);
  gtk_list_store_clear(ptr->dst);

  gtk_widget_hide(ptr->change_cmd);
  g_object_set(ptr->src_col, "visible", FALSE, NULL);
  g_object_set(ptr->dst_col, "visible", FALSE, NULL);

  gtk_tree_view_unset_rows_drag_source(GTK_TREE_VIEW(ptr->src_view));  Refresh worklist infovoid refresh_worklist(GtkWidget *editor)
{
  struct worklist_data *ptr;
  const struct global_worklist *pgwl = NULL;
  struct worklist queue;  bool selected;
  gint id;
  GtkTreeIter it;
  GtkTreePath *path;
  GtkTreeModel *model;
  gboolean exists;

  ptr = g_object_get_data(G_OBJECT(editor), "data");

  if (!ptr->pcity
      && !(pgwl = global_worklist_by_id(ptr->global_worklist_id))) {
                                                     fc_assert(NULL != pgwl);
    worklist_copy(&queue, global_worklist_get(pgwl)  Commit worklist data to worklistvoid commit_worklist(struct worklist_data *ptr)
{
  struct worklist queue;
  GtkTreeModel *model;
  GtkTreeIter it;
  size_t i;

  model = GTK_TREE_MODEL(ptr->dst);

  worklist_init(&queu        struct global_worklist *pgwl;

    pgwl = global_worklist_by_id(ptr->global_worklist_id);
    if (pgwl) {
      global_worklist_set(pgwl, &queue);
    }
  }
}
ENDREP
DELTA 15410 109742 13395
SVN  ÈÅ&‚—  …J €; 
†w” ˆ"ˆ €h ƒ7‘Y¢ A¡@ •U´ A¡@€A S‹} ƒA˜=• A¡@ œC¸ G‹} ƒžt¨ A¡@ †$¢Gš A¡@ >©0¥ A¡@ Š«3ˆ ƒ2µD †¹j€‚ ƒFÂ7† „ZÆ€‚n †fÌYƒ ÓC  às ‚aâ$€^ ægƒ Œèž qô(€{ ˆZ÷› S‹} ‚Y€8µ -ƒo E‹ ‹†€‚  G‹}¥ A¡@€ Fµ|± c¦(€H @Ç@€+ E‹ ƒ9žl€R ›\¢oƒ „.¾O€‚` ‚uÅfc_config.h>
#endif

#include <gdk/gdkkeysyms.h>

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

/* common */
#include "events.h"
#include "game/* client/gtk-3.0 */popup_callback(gpointer data, gint response,
                                          const char *input  Initialize cma front end system
  Free resources allocated for cma front end system
*********/
void cma_fe_done()
{
  dialog_list_destroy(dialog_list  Destroy cma dialog
dialog_list_remove(dialog_list, pdialog);
  free(pdialog  User has pressed button in cma dialog
  User has requested help
  Cell data function for cma dialog 
, *imagewidget_set_tooltip_text(view,
                              _("For information on\n"
                                "the citizen governor and governor presets,\n"
                                "including sample presets,\n"
                                "see README.cma.")Prese_button = gtk_button_new_with_mnemonic(_("Ne_w"));
  image = gtk_image_new_from_stock(GTK_STOCK_NEW, GTK_ICON_SIZE_BUTTON);
  gtk_button_set_image(GTK_BUTTON(button), image);
  gtk_container_add(GTK_CONTAINER(hbox), button);
  g_signal_connect(button, "clicked",
                   G_CALLBACK(cma_add_preset_callback), pdialog);
  pdialog->add_preset_command = buttonLASLAST + 1, O_LASLAST + 1, O_LASLAST] =
      GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 50, 1, 1, 0));

  hscale = gtk_hscale_new(GTK_ADJUSTMENT(pdialog->factor[O_LAST]));
  gtk_table_attach_defaults(GTK_TABLE(table), hscale, 2, 3,
			    O_LAST + 1, O_LASLAS*result = cm_result_new(pcity)result, pcity);
  gtk_label_set_text(GTK_LABEL(pdialog->result_label),
                     cmafec_get_result_descr(pcity, 
  cm_result_destroy(resultfor (i = 0; i < cmafec_preset_num(); i++) {
      fc_                                    _("Name new preset"),
                                    _("What should we name the preset?"),
                                    default_name,
                                    cma_preset_add_popup_callback, pdialog
  callback for the add_preset popup
/
static void cma_preset_add_popup_callback(gpointer data, gint response,
                                          const char *inputpdialog) {
    if (response == GTK_RESPONSE_OK) {fec_preset_add(input, &param);
      update_cma_preset_list(pdialog);
      /* if this or other cities have this set as "custom" */
      city_report_dialog_update();
    } /* else CANCEL or DELETE_EVENT */

    pdialog->name_shell = NULL;
  }KEY_Delete:
      cma_preset_remove(pdialog, index);
      break;
    case GDK_KEYLASgtk_adjustment_get_value(pdialog->minimal_surplus[i]));
    param.factor[i] = (int) (gtk_adjustment_get_value(pdialog->factor[i]));
  } output_type_iterate_end;
  param.require_happy =
      (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pdialog->happy_button)) ? 1 : 0);
  param.happy_factor = (int) (gtk_adjustment_get_value(pdialog->factor[O_LAST])ENDREP
DELTA 19740 12026 1680
SVN  ÜÜ Å<  ” Å@– ‚=ÙRgtk_widget_get_visibleENDREP
DELTA 20119 1585 1557
SVN  ‚ýQ‚ý*K ¡  ‘ Ï$¡oº ‚Œñ6_(HELP_ABOUT_ITEMgtk_dialog_get_content_area(GTK_DIALOG(help_dialog_shell))ENDREP
DELTA 20123 1920 60
SVN  „¶n„·0 ’U ˜ ¤@’^˜ ‚ÿG·'gtk_widget_get_parent(w)gtk_widget_get_parent(w)ENDREP
DELTA 19740 1954 3387
SVN  ƒÿ „€A(| –A ˆ ª–Eˆ ƒ+ÀJ b®x ’JÄH€v ?×C€v ƒ¥mÙ3gbooleangbooleangtk_adjustment_get_lower(adjust)
      + gtk_adjustment_get_upper(adjust)
      - gtk_adjustment_get_page_size(adjust)gtk_adjustment_get_lower(adjust)
      + gtk_adjustment_get_upper(adjust)
      - gtk_adjustment_get_page_size(adjust)ENDREP
DELTA 20394 12828 37642
SVN  ‚Ë!‚Ëƒs u  w€x 6¬{½ •®r· WÄ RÑw Jò … W‚  ðq ‚4ò  Lò  [÷>“ tó8Š Jò ‚ ]õ Ÿ cÑ Š M¬{  ùt ‚Tùs †‚œw Tùs §%‚£|Object *object, gpointer data);
static void usdlg_cmd_sentry(GObject *object, gpointer data);
static void usdlg_cmd_select(GObject *object, gpointer data);
static void usdlg_cmd_deselect(GObject *object, gpointer data);
static void usdlg_cmd_exec(GObject *object, gpointer data);
static void usdlg_cmd_focus(Ggtk_dialog_get_content_area(GTK_DIALOG(pdialog->shell))READYCallback for the dedeselect(GDEMain function for the callbackscmd_exec(GObject *object, gpointer dataObject *object, gpointer dataENDREP
DELTA 20394 50496 206
SVN  ‚•Z‚–y0‚V ±. ®  ±E® Ó¾\® ˆ:’€l £ošu² FÅ ® A•@ Õ&À4gtk_dialog_get_content_area(GTK_DIALOG(shell))gtk_dialog_get_content_area(GTK_DIALOG(shell))gtk_dialog_get_content_area(GTK_DIALOG(shell))new_with_model_and_entry(GTK_TREE_MODEL(model));
    gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(combogtk_dialog_get_content_area(GTK_DIALOG(shell)));
}popup the dialog 10% inside the main-window 
 ENDREP
DELTA 19683 37331 1075
SVN  ×8Ø]o†9 ‰  ƒK‰‰ …=ŒU€a ‰“1® ƒœg® ƒ ® „(£Q ‰i¨Š ƒH±l€| Äwš eÆ ‚ l¿w ‚zºt‡ Äwš eÆ  „i¿u‡ 	Äw †VÆ €M ŠÍ,3Adjustmengtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rates_tax_toggle));
  lux_lock	= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rates_lux_toggle));
  sci_lock	= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rates_sci_toggle))gtk_label_get_text(GTK_LABEL(rates_tax_label))gtk_label_get_text(GTK_LABEL(rates_lux_label))gtk_label_get_text(GTK_LABEL(rates_sci_label))gtk_adjustment_get_value(adj), *content  content = gtk_dialog_get_content_area(GTK_DIALOG(shell));

  rates_gov_label = gtk_label_new("");
  gtk_box_pack_start( GTK_BOX( content ), rates_gov_label, TRUE, TRUE, 5 );

  frame = gtk_frame_new( _("Tax") );
  gtk_box_pack_start( GTK_BOX( contenttax_adj = (GtkAdjustment*)tacontentlux_adj = (GtkAdjustment*)content(GtkAdjustment*)content);
  gtk_widget_show_all(gtk_dialog_get_action_area(GTK_DIALOG(shell))ENDREP
DELTA 19740 5425 2332
SVN  ››3
. ˜ ® ‚x˜$gtk_dialog_get_content_area(GTK_DIALOG(shell))ENDREP
DELTA 19400 74 8561
SVN  ‚ÿƒ€!„x ‰  …n‰£ SÌ@ ‘ss ­R¡gƒ WÏ8€: YÑ=ƒ GÒƒ ‚Ó[ƒ ‚lÕi› §Øl¯ ¬€M  ƒ"¬s  ˆ°& Y¸8 ¦A¹ ‹+ßZ€I E§  .ëN¢ E§  ¶eíE€Q ±'‚¤d· ¨U‚Ö9client/gui-gtk-3gtk_widget_has_focus(toolkit.entry)3KEYKEY_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_gtk3void scroll_if_necessary(GtkTextView *textview,gtk_widget_get_window(text_view)gtk_widget_get_window(text_view)3  Clear output window. This does *not* destroy it, or free its resources
  Set given text to output window
gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
                     selection,orientable_set_orientation(GTK_ORIENTABLE(toolbar),
   ENDREP
DELTA 19767 41145 9339
SVN  „¨B„©v‚R   Š ¾ ˜ ³ÎF• „#‚V• ’D‡
” ™bš ª  Qƒë= ›{«r© ¦y‚È „‚ï G‚ó1 ˜O‚ôyŸ ™ƒXŠ „!ƒ¦eŠ †4ƒªt¤ Vß@ ¤*ƒ²˜ šRƒÖ4ƒ —ƒñ	 œo„ˆ(˜ Qƒë= ‚„¦ <„¨luaconsolegtk_widget_get_can_focusgtk_widget_get_mappedgtk_widget_get_mappedgtk_widget_has_focusgtk_widget_get_parent(box)gtk_widget_get_parent(box));
  }gtk_widget_set_can_focus(map_canvas, TRUE333gtk_widget_get_window(toplevel)luaconsoleluaconsoledisplay_beep(gdk_display_get_defaultgtk_widget_get_window(p)ggz33_allied_chat_only);
  }3ENDREP
DELTA 19259 298974 2572
SVN  Ê0×‚^” ‰  ‚x‰  Pø= ‚ŒY ƒuŽj™ Dø=€‚a ‚P“p‰ u–M€! ˜*€f T•t• Hª@­ Pø= ƒv° Pø= ƒ¡W² Uø= x¥:· Pø= *‡< I©?¬ Tø=† *‡<ž 	©« Pø=Ž *‡< M°A© Tø=‡ cÖo ×j c´z® Tø= „·4£ Pø= …$¼$· ‘Áh· hõ: ‚Ô
¶ Tø= „Öd» Tø=‹ F·; ‚gÝ&ª Pø= …\à`» „bÁh‹ „ÆQ …AïU» ƒ õ:¸ ‘qø=¥ Pø=… uŒ] ‚i‹{€‚ ‚RŽd‰ u–M€+ X“+€3 ‡[•t¤ Pø= =ž"£ Pø= $ 2š EÛ  ¨¢3  User responded to bribe dialog  Popup unit bribe dialogvoid popup_bribe_dialog(struct unit *punit, int cost)
{
  GtkWidget *shell;
  char buf[1024];

  fc_snprintf(buf, ARRAY_SIZE(buf), PL_("Treasury contains %d gold.",
                                        "Treasury contains %d gold.",
                                        client_player()->economic.gold),
              client_player()->economic.gold)_player()/* TRANS: %s is pre-pluralised "Treasury contains %d gold." */
      PL_("Bribe unit for %d gold?\n%s",
          "Bribe unit for %d gold?\n%s", cost), cost, buf 0,
      GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
      /* TRANS: %s is pre-pluralised "Treasury contains %d gold." */
      PL_("Bribing the unit costs %d gold.\n%s",
          "Bribing the unit costs %d gold.\n%s", cost), cost, bufbribe_response), NULL  User selected sabotaging from choice dialog  User selected investigating from choice dialog  User selected unit sabotaging from choice dialog  User selected embassy establishing from choice dialogdiplomat_embassy  User selected poisoning from choice dialogpoisonction(SPY_POISON, diplomat_id,  User selected stealing from choice dialogdiplomat_steal  User responded to steal advances dialogadvanceteal_advance > 0  User selected entry in steal advances dialog  Create spy's tech stealing dialoggtk_dialog_get_content_area(GTK_DIALOG(spy_tech_shell))gtk_dialog_get_content_area(GTK_DIALOG(spy_tech_shell))  User has responded to spy's sabotage building dialog  User has selected new building from spy's sabotage dialogimprovement  Creates spy's building sabotaging dialoggtk_dialog_get_content_area(GTK_DIALOG(spy_sabotage_shell))Improvementgtk_dialog_get_content_area(GTK_DIALOG(spy_sabotage_shell))  Popup tech stealing dialog with list of possible techs  User has responded to incite dialogincitchar buf[1024];

  fc_snprintf(buf, ARRAY_SIZE(buf), PL_("Treasury contains %d gold.",
                                        "Treasury contains %d gold.",
                                        client_player()->economic.gold),
              client_player()->economic.gold);
_player()/* TRANS: %s is pre-pluralised "Treasury contains %d gold." */
      PL_("Incite a revolt for %d gold?\n%s",
          "Incite a revolt for %d gold?\n%s", cost), cost, buf/* TRANS: %s is pre-pluralised "Treasury contains %d gold." */
      PL_("Inciting a revolt costs %d gold.\n%s",
          "Inciting a revolt costs %d gold.\n%s", cost), cost, buf  Diplomat dialog has been destoryed  Diplomat dialog has been canceled Popup new diplomat dialogENDREP
DELTA 19259 301577 115
SVN  —H—j' Œ< €D  ´ †<ŽG¯ ‚-•3_default_theme_name;

  if (current_name == NULL) {
    /* gui_gtk3freeciv-client-rc.A.B. */
    current_name = FC_GTK3gtk_dialog_get_content_area(GTK_DIALOG(dialog))ENDREP
DELTA 19740 8320 1002
SVN  ÔoÔ~
 §( ˜ ­>§1gtk_widget_get_window(p)ENDREP
DELTA 19992 4080 53
SVN  ƒÆzƒÇW  8  ÎA <€W ]‚½  Ö`ðgtk_dialog_get_content_area(GTK_DIALOG(tvs->dialog));

  store = gtk_list_store_new(TVSENDREP
id: zy.5g7.r20464/66581
type: file
pred: zy.5g7.r20394/53161
count: 225
text: 20464 6343 1815 103301 034887825f92fc34a74a839b0da02e5f
props: 11072 618 112 0 0564c5503f2d15442a967c72794b21e8
cpath: /trunk/client/gui-gtk-3.0/citydlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10e.5g7.r20464/66857
type: file
pred: 10e.5g7.r19740/14241
count: 36
text: 20464 0 6315 16495 6217ac2bb7cf7358a25602bb7556a8fa
props: 10534 1625 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/client/gui-gtk-3.0/gotodlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 4js.5g7.r20464/67131
type: file
pred: 4js.5g7.r20015/14630
count: 16
text: 20464 8185 30992 36403 b1493d3143759c966ff6dcb281297183
cpath: /trunk/client/gui-gtk-3.0/optiondlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10x.5g7.r20464/67354
type: file
pred: 10x.5g7.r20126/104350
count: 217
text: 20464 45900 604 29076 7c081aa03810fb10193fac49e48a8efa
props: 11084 1701 112 0 86d6a13b4b5d042ef40af0a2a7a26786
cpath: /trunk/client/gui-gtk-3.0/mapview.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 6pa.5g7.r20464/67633
type: file
pred: 6pa.5g7.r20394/53434
count: 5
text: 20464 59633 640 42392 2c82029ef0861d75c155866bd486ba1e
cpath: /trunk/client/gui-gtk-3.0/unitselect.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 118.5g7.r20464/67855
type: file
pred: 118.5g7.r19740/15502
count: 165
text: 20464 59298 306 65601 5322c8abdf7e9847e49cbe57836b71f9
props: 11057 38502 111 0 89e24921275908e1dbda216a065c4859
cpath: /trunk/client/gui-gtk-3.0/repodlgs.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10k.5g7.r20464/68135
type: file
pred: 10k.5g7.r20414/794
count: 296
text: 20464 62624 509 70902 45a5efd7306e92e8885cc3ec5e7fcd8f
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: 10o.5g7.r20464/68413
type: file
pred: 10o.5g7.r19740/16333
count: 41
text: 20464 66355 45 10878 708b8c8a0711a896109859eca0621710
props: 11057 39240 111 0 0b146d6d431c2ad00452618c43381276
cpath: /trunk/client/gui-gtk-3.0/happiness.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 4ej.5g7.r20464/68692
type: file
pred: 4ej.5g7.r19992/4236
count: 35
text: 20464 66429 125 58253 6e66c138e5f9be44dfc0f6041852217f
cpath: /trunk/client/gui-gtk-3.0/editgui.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 2pi.5g8.r20464/68911
type: file
pred: 2pi.5g8.r19992/4453
count: 153
text: 20464 39207 586 116644 1a2b37175d17f7281af8498e5cc4b248
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: 76e.5g7.r20464/69196
type: file
pred: 76e.5g7.r20414/1068
count: 4
text: 20464 45357 515 16113 62fa41081fa327fd1abe1a5dceff260a
cpath: /trunk/client/gui-gtk-3.0/luaconsole.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 102.5g7.r20464/69417
type: file
pred: 102.5g7.r19740/17940
count: 48
text: 20464 55705 3241 25254 5c3b3e2b687897be2fc26a104cdfeb81
props: 9773 10560 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/client/gui-gtk-3.0/cma_fe.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 4h8.5g7.r20464/69694
type: file
pred: 4h8.5g7.r19992/4738
count: 10
text: 20464 58978 48 11791 dadec1d49a100200804d299c24728fef
cpath: /trunk/client/gui-gtk-3.0/voteinfo_bar.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 100.5g7.r20464/69917
type: file
pred: 100.5g7.r20123/9470
count: 127
text: 20464 59190 81 72588 5bc67a27ca4f90b9f9e37a35812eced9
props: 11057 40343 111 0 9323cb943074f1605bbe84192873bd2e
cpath: /trunk/client/gui-gtk-3.0/cityrep.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 108.5g7.r20464/70194
type: file
pred: 108.5g7.r20394/54152
count: 181
text: 20464 60304 404 35705 80962cccd6d0f64eed11b33856c49354
props: 11088 8070 112 0 858133ad234580a5fc7c24a791c3b702
cpath: /trunk/client/gui-gtk-3.0/dialogs.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 47d.5g7.r20464/70472
type: file
pred: 47d.5g7.r19767/57724
count: 6
text: 20464 66123 202 3050 f188844442b8bfef3adcfd53057a63d3
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: 36n.5g7.r20464/70749
type: file
pred: 36n.5g7.r19740/18996
count: 28
text: 20464 63163 2929 27532 64b0feecfc77535aa0eab9ed2afa8448
props: 11088 8800 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/client/gui-gtk-3.0/diplomat_dialog.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 104.5g7.r20464/71035
type: file
pred: 104.5ck.r19683/45150
count: 11
text: 20464 39937 171 3132 845ba4634577c37c495dd9e6ee021f4b
props: 10458 4167 110 0 7d181b70073f10d0c5a58c73a72d4f04
cpath: /trunk/client/gui-gtk-3.0/colors.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10u.5g7.r20464/71310
type: file
pred: 10u.5g7.r19740/19827
count: 48
text: 20464 40136 3194 13463 d891f00212564dad02395700972c0a15
props: 11054 96 111 0 0b146d6d431c2ad00452618c43381276
cpath: /trunk/client/gui-gtk-3.0/inteldlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10v.5g7.r20464/71587
type: file
pred: 10v.5g7.r20414/1283
count: 88
text: 20464 43362 1965 16005 76534f9df490917e54f91158ef1c655f
props: 10781 197 111 0 9c2dbf68c7baabdec873d497eccc2dc6
cpath: /trunk/client/gui-gtk-3.0/mapctrl.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10q.5g7.r20464/71863
type: file
pred: 10q.5g7.r20198/12948
count: 102
text: 20464 59056 105 48810 1e71f73f15329057d8179c26ba279013
props: 10865 34829 111 0 a3a3251698e05efa35962766e5c7e5c1
cpath: /trunk/client/gui-gtk-3.0/helpdlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10s.5g7.r20464/72142
type: file
pred: 10s.5g7.r19740/20374
count: 17
text: 20464 61715 67 3507 ce203c5e839d17b2b7a47eaf4503c50f
props: 8860 101 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /trunk/client/gui-gtk-3.0/inputdlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: zw.5g7.r20464/72416
type: file
pred: zw.5g7.r20310/10211
count: 56
text: 20464 61811 786 49185 1e169172bb7d11b51420de639d59837d
props: 9577 108867 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/gui-gtk-3.0/chatline.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 45i.5g7.r20464/72693
type: file
pred: 45i.5ck.r19259/431179
count: 4
text: 20464 39822 89 3011 48a36ed684b57b986c81479139aeb864
props: 13968 60377 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-gtk-3.0/tileset_dlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 11e.5g7.r20464/72972
type: file
pred: 11e.5g7.r20123/10295
count: 80
text: 20464 46532 9143 43926 394f0ab0dfdc26ffd5e71ddc324c4246
props: 11057 41445 111 0 9c2dbf68c7baabdec873d497eccc2dc6
cpath: /trunk/client/gui-gtk-3.0/wldlg.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

id: 10d.5g7.r20464/73249
type: file
pred: 10d.5g7.r19740/22201
count: 50
text: 20464 60737 948 11357 e1f639509c8c6f709f7d2089d33d676d
props: 11057 41811 111 0 b4233197920770c602c29330b7f7c623
cpath: /trunk/client/gui-gtk-3.0/gamedlgs.c
copyroot: 19694 /trunk/client/gui-gtk-3.0

PLAIN
K 11
Makefile.am
V 22
file zu.5g7.r20326/255
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.5g7.r19878/19470
K 10
chatline.c
V 24
file zw.5g7.r20464/72416
K 10
chatline.h
V 24
file zx.5g7.r20310/10485
K 15
choice_dialog.c
V 25
file 377.5g7.r20037/15062
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.r20464/66581
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 25
file 100.5g7.r20464/69917
K 9
cityrep.h
V 25
file 101.5ck.r18101/91562
K 8
cma_fe.c
V 25
file 102.5g7.r20464/69417
K 8
cma_fe.h
V 25
file 103.5ck.r19385/17470
K 8
colors.c
V 25
file 104.5g7.r20464/71035
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.r20464/70194
K 9
dialogs.h
V 25
file 109.5g7.r20375/32516
K 10
diplodlg.c
V 24
file 10a.5g7.r20123/9744
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 25
file 36n.5g7.r20464/70749
K 9
editgui.c
V 25
file 4ej.5g7.r20464/68692
K 9
editgui.h
V 25
file 4ek.5ck.r19385/16755
K 10
editprop.c
V 25
file 4el.5g7.r20394/54429
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.r20464/73249
K 9
gotodlg.c
V 25
file 10e.5g7.r20464/66857
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 22
file 10i.5g7.r20069/46
K 12
gtkpixcomm.h
V 24
file 10j.5g7.r19779/7124
K 10
gui_main.c
V 25
file 10k.5g7.r20464/68135
K 10
gui_main.h
V 25
file 10l.5ck.r19385/16497
K 11
gui_stuff.c
V 24
file 10m.5g7.r20336/6465
K 11
gui_stuff.h
V 24
file 10n.5g7.r20123/9195
K 11
happiness.c
V 25
file 10o.5g7.r20464/68413
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 25
file 10q.5g7.r20464/71863
K 9
helpdlg.h
V 23
file 10r.0.r4313/267882
K 10
inputdlg.c
V 25
file 10s.5g7.r20464/72142
K 10
inputdlg.h
V 24
file 10t.5ck.r19651/6762
K 10
inteldlg.c
V 25
file 10u.5g7.r20464/71310
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 12
luaconsole.c
V 25
file 76e.5g7.r20464/69196
K 12
luaconsole.h
V 25
file 76f.5g7.r20310/10019
K 9
mapctrl.c
V 25
file 10v.5g7.r20464/71587
K 9
mapctrl.h
V 25
file 10w.5bk.r14157/11089
K 9
mapview.c
V 25
file 10x.5g7.r20464/67354
K 9
mapview.h
V 24
file 10y.5ck.r17351/2736
K 6
menu.c
V 25
file 10z.5g7.r20394/53876
K 6
menu.h
V 25
file 110.5ck.r16067/65085
K 12
messagedlg.c
V 25
file 111.5g7.r20037/15563
K 12
messagedlg.h
V 22
file 2d2.0.r5989/22693
K 12
messagewin.c
V 24
file 112.5g7.r20171/4974
K 12
messagewin.h
V 25
file 113.5ck.r18082/27153
K 11
optiondlg.c
V 25
file 4js.5g7.r20464/67131
K 11
optiondlg.h
V 25
file 114.5ck.r17037/29773
K 7
pages.c
V 25
file 2pi.5g8.r20464/68911
K 7
pages.h
V 25
file 2pj.5ck.r19154/48664
K 8
plrdlg.c
V 25
file 115.5g7.r20123/10018
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.r20464/67855
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 24
file 11c.5g7.r19983/1070
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.r20464/70472
K 8
themes.c
V 23
file 34x.5g7.r20414/524
K 13
tileset_dlg.c
V 25
file 45i.5g7.r20464/72693
K 12
unitselect.c
V 25
file 6pa.5g7.r20464/67633
K 12
unitselect.h
V 25
file 6pb.5g7.r20394/53658
K 14
voteinfo_bar.c
V 25
file 4h8.5g7.r20464/69694
K 14
voteinfo_bar.h
V 24
file 4h9.5ck.r17959/2670
K 7
wldlg.c
V 25
file 11e.5g7.r20464/72972
K 7
wldlg.h
V 25
file 11f.5ck.r16285/86707
END
ENDREP
id: zs.5g7.r20464/77605
type: dir
pred: zs.5g7.r20414/5624
count: 1543
text: 20464 73528 4064 4064 66ee8e9876e1cb8a19858c6fbff4619b
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-3.0
copyroot: 19694 /trunk/client/gui-gtk-3.0

PLAIN
K 11
Makefile.am
V 24
file 5f.5ck.r20393/77664
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.r20392/33993
K 16
citydlg_common.h
V 24
file z5.5ck.r18863/18619
K 13
cityrepdata.c
V 22
file mb.5ck.r20107/421
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.r20355/17462
K 13
client_main.h
V 24
file hz.5cq.r18863/25358
K 8
climap.c
V 24
file 197.5ck.r20232/3008
K 8
climap.h
V 25
file 198.5ck.r18863/24126
K 9
climisc.c
V 24
file d5.5ck.r20389/28214
K 9
climisc.h
V 23
file i0.5ck.r19330/6112
K 8
clinet.c
V 24
file hc.5ck.r20327/24570
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 24
file 2fw.5ck.r20335/9882
K 19
connectdlg_common.h
V 25
file 2fx.5ck.r19154/53802
K 9
control.c
V 24
file gz.5ck.r20389/16579
K 9
control.h
V 24
file i2.5ck.r20393/51882
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.r20389/28455
K 8
editor.h
V 26
file 3bh.5ck.r19295/112400
K 11
ggzclient.c
V 26
file 394.5ck.r20126/104106
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.r20393/70535
K 11
gui-gtk-2.0
V 22
dir zs.5ck.r20413/4488
K 11
gui-gtk-3.0
V 23
dir zs.5g7.r20464/77605
K 6
gui-qt
V 24
dir 6ie.5ck.r20393/77427
K 7
gui-sdl
V 24
dir 16t.5ck.r20393/67324
K 8
gui-stub
V 23
dir mh.5ck.r20393/73913
K 9
gui-win32
V 23
dir np.5ck.r20393/61195
K 7
gui-xaw
V 23
dir 9o.5ck.r20393/55688
K 10
helpdata.c
V 24
file h1.5ck.r20198/12703
K 10
helpdata.h
V 24
file i3.5ck.r18863/21834
K 7
include
V 23
dir b8.5ck.r20393/57742
K 19
luaconsole_common.c
V 22
file 75z.5ck.r20372/58
K 19
luaconsole_common.h
V 25
file 760.5ck.r20306/31022
K 9
luascript
V 22
dir 761.5ck.r20323/104
K 16
mapctrl_common.c
V 25
file 15m.5ck.r20389/27960
K 16
mapctrl_common.h
V 25
file 15n.5ck.r19893/12504
K 16
mapview_common.c
V 24
file z2.5ck.r20392/39260
K 16
mapview_common.h
V 24
file z3.5ck.r20392/39510
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 23
file dc.5ck.r20300/8977
K 9
options.h
V 23
file i4.5ck.r20300/8243
K 17
overview_common.c
V 24
file 2yk.5ck.r20232/2517
K 17
overview_common.h
V 24
file 2yl.5ck.r19511/5441
K 10
packhand.c
V 23
file n.5ck.r20421/61032
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.r20327/24812
K 9
servers.h
V 25
file 33y.5ck.r19197/36044
K 6
text.c
V 22
file 2g3.5ck.r20283/67
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.r20392/38765
K 10
tilespec.h
V 24
file i6.5ck.r20392/39014
K 19
unitselect_common.c
V 24
file 76v.5ck.r20397/3580
K 19
unitselect_common.h
V 24
file 76w.5ck.r20397/3746
K 14
update_queue.c
V 25
file 4jw.5ck.r20393/70780
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.r20464/82037
type: dir
pred: d.5ck.r20421/65445
count: 5301
text: 20464 77870 4154 4154 fa6b8b3e891de7a8329514d7fe5399b0
props: 20330 0 185 0 49d0ce133efef4ceb52292cae3e5ed1c
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.r20415/4358289
K 7
INSTALL
V 21
file 6.5ck.r20081/429
K 11
Makefile.am
V 23
file 59.5ck.r20456/4120
K 4
NEWS
V 23
file 6m.5ck.r20417/3239
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 22
dir 8.5ck.r20460/44912
K 10
autogen.sh
V 23
file 12o.5ck.r20146/164
K 9
bootstrap
V 23
dir 2p5.5ck.r20340/1588
K 6
client
V 22
dir d.5ck.r20464/82037
K 6
common
V 21
dir p.5ck.r20452/4800
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 23
file 149.5ck.r20446/883
K 4
data
V 21
dir w.5ck.r20450/2643
K 6
debian
V 23
dir 5w.5ck.r20125/39180
K 12
dependencies
V 23
dir 2yu.5ck.r19903/6753
K 11
diff_ignore
V 22
file qq.5ck.r19346/607
K 3
doc
V 22
dir k7.5ck.r20446/3016
K 10
fc_version
V 25
file 2lo.5en.r20421/60785
K 2
m4
V 23
dir 12p.5ck.r20456/3895
K 6
manual
V 24
dir 2m2.5ck.r20351/23652
K 7
modinst
V 23
dir 4pj.5ck.r20454/1898
K 2
po
V 23
dir fs.5ck.r20461/13550
K 7
scripts
V 22
dir 2yo.5ck.r20382/620
K 6
server
V 21
dir z.5ck.r20443/4080
K 10
stamp-h.in
V 19
file 80.0.r1125/241
K 5
tests
V 23
dir 2g9.5ck.r20384/1173
K 7
utility
V 23
dir 1c.5ck.r20422/14056
K 3
vms
V 21
dir u9.0.r11105/70719
K 5
win32
V 23
dir 2eu.5ck.r19955/8209
END
ENDREP
id: 3.5ck.r20464/83575
type: dir
pred: 3.5ck.r20461/15089
count: 15041
text: 20464 82267 1295 1295 122a62b39602d63fcae40a0aa0ac43f9
props: 20140 3888 282 0 e4bb46e81629a60eef613b169b23a9ea
cpath: /trunk
copyroot: 15280 /trunk

PLAIN
K 8
branches
V 19
dir 1.0.r20463/4333
K 4
tags
V 19
dir 2.0.r20076/4100
K 5
trunk
V 22
dir 3.5ck.r20464/83575
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r20464/83965
type: dir
pred: 0.0.r20463/4653
count: 20464
text: 20464 83802 150 150 10fbfc67a76d4be714f704e61494fdc5
cpath: /
copyroot: 0 /

10o.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/happiness.c

4ej.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/editgui.c

45i.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/tileset_dlg.c

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

4js.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/optiondlg.c

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

10e.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/gotodlg.c

104.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/colors.c

10v.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/mapctrl.c

10u.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/inteldlg.c

76e.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/luaconsole.c

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

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

102.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/cma_fe.c

4h8.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/voteinfo_bar.c

118.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/repodlgs.c

100.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/cityrep.c

10q.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/helpdlg.c

6pa.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/unitselect.c

108.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/dialogs.c

10d.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/gamedlgs.c

10s.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/inputdlg.c

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

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

36n.5g7.t20463-1 modify true false /trunk/client/gui-gtk-3.0/diplomat_dialog.c

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


83965 84114
