DELTA 16998 0 890
SVN  R@  &  &, , q H
ENDREP
DELTA 1186 166968 4700
SVN  ρUδ>'Ηe 8  Y7 7A U=  C ¬ gye A  BΙ@ ’x A _ CΙ?M A  FΙ< ¦x₯@ cΔw‘ G  GΙ8r LΚ G  aΙ8X LΚ G C KΙ@K G E KΙ@q G Ά KΙ@d G ³ KΙ@a G Ά KΙ@cList.h>
#include <X11/Xaw/Command.h>
#include <X11/Xaw/MenuButtonSmeBSB.h>
#include <X11/Xaw/AsciiText.h>
#include <X11/Xaw/Toggle.h>
#include <X11/Xaw/Viewport.h>

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

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

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

/* client/gui-xaw */
#include "chatline.h"
#include "cityrep.h"
#include "gui_main.h"
#include "gui_stuff.h"
#include "mapview.h"
#include "repodlgs.h"

#include "optiondlg.h"

static Widget option_dialog_shell;

/
void create_option_dialog(const char *namevoid option_cancel_command_callback(Widget w, XtPointer client_data, 
				    XtPointer call_data);


... /
void popup_option_dialog(const char *name)
{
  char valstr[64];
  void *gui_data;

  create_option_dialog(name);

  options_iterate(client_optset, poption) {
    gui_data = option_get_gui_data(poption);

    switch (option_type(poption)) {
    case OT_BOOLEAN:
      XtVaSetValues((Widget) gui_data, XtNstate, option_bool_get(poption),
                    XtNlabel, option_bool_get(poption) ? _("Yes") : _("No"),
                    NULL);
      break;
    case OT_INTEGER:
      my_snprintf(valstr, sizeof(valstr), "%d", option_int_get(poption));
      XtVaSetValues((Widget) gui_data, XtNstring, valstr, NULL);
      break;
    case OT_STRING:
      XtVaSetValues((Widget) gui_data,
                    option_str_values(poption) ? "label" : XtNstring,
                    option_str_get(poption), NULL);
      break;
    case OT_FONT:
      /* FIXME */
      break;
    }
  } options_iterate_end
  Callback to change the entry for a string option that has
  a fixed list of possible entries/
static void stropt_change_callback(Widget w,
				   XtPointer client_data,
				   XtPointer call_data)
{
  char* val = (char*)client_data;

  XtVaSetValues(XtParent(XtParent(w)), "label", val, NULL);
}

/
void create_option_dialog(const char *name)
{
  Widget option_form, option_label;
  Widget option_viewport, option_scrollform;
  Widget option_ok_command, option_cancel_command;
  Widget prev_widget, longest_label = 0;
  size_t longest_len = 0;
  Dimension width;
  
  option_dialog_shell =
    I_T(XtCreatePopupShell("optionpopup", transientShellWidgetClass,
			   toplevel, NULL, 0)
    I_L(XtVaCreateManagedWidget("optionlabel", labelWidgetClass, 
				option_form, NULL));

  option_viewport =
    XtVaCreateManagedWidget("optionviewport", viewportWidgetClass,
			    option_form, NULL);

  option_scrollform =
    XtVaCreateManagedWidget("optionscrollform", formWidgetClass,
			    option_viewport, NULL);   

  prev_widget = NULL; /* init the prev-Widget */
  options_iterate(client_optset, poption) {
    const char *descr = option_description(poption);
    size_t len = strlen(descr);

    /* 
     * Remember widget so we can reset the vertical position; need to
     * do this because labels and toggles etc have different heights.
     */
    option_set_gui_data(poption, prev_widget);

    if (prev_widget) {
      prev_widget = 
	XtVaCreateManagedWidget("label", labelWidgetClass, option_scrollform,
				XtNlabel, descr,
				XtNfromVert, prev_widget,
				NULL);
    } else {
      prev_widget = 
	XtVaCreateManagedWidget("label", labelWidgetClass, option_scrollform,
				XtNlabel, descr,
				NULL);
    }

    /* 
     * The addition of a scrollbar screws things up. There must be a
     * better way to do this.
     */
    XtVaGetValues(prev_widget, XtNwidth, &width, NULL);
    XtVaSetValues(prev_widget, XtNwidth, width + 15, NULL);

    if (len > longest_len) {
      longest_len = len;
      longest_label = prev_widget;
    }
  } options_iterate_end;

  XtVaGetValues(longest_label, XtNwidth, &width, NULL);
  XtVaSetValues(option_label, XtNwidth, width + 15, NULL);

  options_iterate(client_optset, poption) {
    void *gui_data = option_get_gui_data(poption);

    /* 
     * At the start of the loop gui_data will contain the widget
     * which is above the label widget which is associated with this
     * option.
     */
    switch (option_type(poption)) {
    case OT_BOOLEAN:
      if (gui_data) {
	prev_widget =
	  XtVaCreateManagedWidget("toggle", toggleWidgetClass,
				  option_scrollform,
				  XtNfromHoriz, option_label,
				  XtNfromVert, gui_data,
				  NULL);
      } else {
	prev_widget =
	  XtVaCreateManagedWidget("toggle", toggleWidgetClass,
				  option_scrollform,
				  XtNfromHoriz, option_label,
				  NULL);
      }
      XtAddCallback(prev_widget, XtNcallback, toggle_callback, NULL);
      break;
    case OT_STRING:
      if (option_str_values(poption)) {
        const struct strvec *vals = option_str_values(poption);
	Widget popupmenu;

        if (gui_data) {
	  prev_widget =
            XtVaCreateManagedWidget(option_name(poption),
                                    menuButtonWidgetClass,
				    option_scrollform,
				    XtNfromHoriz, option_label,
				    XtNfromVert, gui_data,
				    NULL);
	} else {
	  prev_widget =
            XtVaCreateManagedWidget(option_name(poption),
                                    menuButtonWidgetClass,
				    option_scrollform,
				    XtNfromHoriz, option_label,
				    NULL);
	}

	popupmenu = XtVaCreatePopupShell("menu",
					 simpleMenuWidgetClass,
					 prev_widget,
					 NULL);

        strvec_iterate(vals, val) {
	  Widget entry = XtVaCreateManagedWidget(val, smeBSBObjectClass,
                                                 popupmenu, NULL);
          XtAddCallback(entry, XtNcallback, stropt_change_callback,
                        (XtPointer) val);
        } strvec_iterate_end;

        if (0 == strvec_size(vals)) {
          /* We could disable this if there was just one possible choice,
             too, but for values that are uninitialized (empty) this
             would be confusing. */
	  XtSetSensitive(prev_widget, FALSE);
	}

	/* There should be another way to set width of menu button */
	XtVaSetValues(prev_widget, XtNwidth, 120 ,NULL);

	break;
      }
      /* else fall through */
    case OT_INTEGER:
      if (gui_data) {
	prev_widget =
	  XtVaCreateManagedWidget("input", asciiTextWidgetClass,
				  option_scrollform,
				  XtNfromHoriz, option_label,
				  XtNfromVert, gui_data,
				  NULL);
      } else {
	prev_widget =
	  XtVaCreateManagedWidget("input", asciiTextWidgetClass,
				  option_scrollform,
				  XtNfromHoriz, option_label,
				  NULL);
      }
      break;
    case OT_FONT:
      /* FIXME */
      break;
    }

    /* store the final widget */
    option_set_gui_data(poption, (void *) prev_widget);
  } options_iterate_end;

  option_ok_command =
    I_L(XtVaCreateManagedWidget("optionokcommand", commandWidgetClass,
				option_form, XtNfromVert, option_viewport,
				NULL));
  
  option_cancel_command =
    I_L(XtVaCreateManagedWidget("optioncancelcommand", commandWidgetClass,
				option_form, XtNfromVert, option_viewport,
				NULL));
	
  XtAddCallback(option_ok_command, XtNcallback, 
		option_ok_command_callback, NULL);
  XtAddCallback(option_cancel_command, XtNcallback, 
		option_cancel_command_callback, NULL); ? _("Yes") : _("No"), NULL);
}

int val;
  XtPointer dp;
  Widget gui_data;

  options_iterate(client_optset, poption) {
    gui_data = (Widget) option_get_gui_data(poption);

    switch (option_type(poption)) {
    case OT_BOOLEAN:
      XtVaGetValues(gui_data, XtNstate, &b, NULL);
      (void) option_bool_set(poption, b);
      break;
    case OT_INTEGER:
      XtVaGetValues(gui_data, XtNstring, &dp, NULL);
      sscanf(dp, "%d", &val);
      (void) option_int_set(poption, val);
      break;
    case OT_STRING:
      XtVaGetValues(gui_data,
                    option_str_values(poption) ? "label" : XtNstring,
                    &dp, NULL);
      (void) option_str_set(poption, dp);
      break;
    case OT_FONT:
      /* FIXME */
      break;
    }
  } options_iterate_end;
}

cancel_command_callback(Widget w, XtPointer client_data, 
				    XtPointer call_data)
{}

******
  Popup the option dialog for the option set.
  FIXME/PORTME**/
void option_dialog_popup(const char *name, const struct option_set *poptset)
{
  if (poptset == client_optset) {
    /* FIXME: this is a big hack! */
    popup_option_dialog(name);
  } else if (poptset == server_optset) {
    popup_settable_options_dialog(name);
  } else {
    log_error("%s(): PORTME!", __FUNCTION__);
  }
}

******
  Popdown the option dialog for the option set.
  FIXME/PORTME**/
void option_dialog_popdown(const struct option_set *poptset)
{
  if (poptset == server_optset) {
    /* FIXME: this is a big hack! */
    popdown_settable_options_dialog();
  } else {
    log_error("%s(): PORTME!", __FUNCTION__);
  }
}

******
  Update the GUI for the option.
  FIXME/PORTME**/
void option_gui_update(struct option *poption)
{
  log_error("%s(): PORTME!", __FUNCTION__);
}

******
  Add the GUI for the option.
  FIXME/PORTME**/
void option_gui_add(struct option *poption)
{
  log_error("%s(): PORTME!", __FUNCTION__);
}

******
  Remove the GUI for the option.
  FIXME/PORTME**/
void option_gui_remove(struct option *poption)
{
  log_error("%s(): PORTME!", __FUNCTION__);
}
ENDREP
DELTA 16998 11167 1061
SVN  nΊ&n j ) G ° O ' G ± O 6 G © J  G § J  G § J  G ² J \ G Ό O  G ₯ O C G £ O X G Ί O 1 G Ώ O % G » O O G ¬ O / G ± O ` G ­ O " G ­ O w G ¬ O  G ͺ O  G ― O i G  O r G ‘ O y G ΄   W G Ά e , G § [ > G € [ F G § [ E#include <stdlib.h>

#include <gtk/gtk.h>

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

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

/* client/gui-gtk-2.0 */
#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. */
  GtkTooltips *tips;                    /* The tips stuff. */
};

#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:
    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;
}

******
  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));
  pdialog->tips = gtk_tooltips_new();

  /* 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(pdialog->shell)->vbox),
                     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_unlink(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);
  }

  gtk_object_destroy(GTK_OBJECT(pdialog->tips));
  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(TRUE, 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_tooltips_set_tip(pdialog->tips, ebox, option_help_text(poption), NULL);
  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_entry_new_text();
        strvec_iterate(values, value) {
          gtk_combo_box_append_text(GTK_COMBO_BOX(w), value);
        } strvec_iterate_end;
      } else {
        w = gtk_entry_new();
      }
    }
    break;

  case OT_FONT:
    w = gtk_font_button_new();
    g_object_set(G_OBJECT(w), "use-font", TRUE, NULL);
    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
                       (option_get_gui_data(poption))->child), string);
  } else {
    gtk_entry_set_text(GTK_ENTRY(option_get_gui_data(poption)), string);
  }
}

******
  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);
}

******
  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_FONT:
    option_dialog_option_font_set(poption, option_font_get(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_FONT:
    option_dialog_option_font_set(poption, option_font_def(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(w)->child)));
    } else {
      (void) option_str_set(poption, gtk_entry_get_text(GTK_ENTRY(w)));
    }
    break;

  case OT_FONT:
    (void) option_font_set(poption, gtk_font_button_get_font_name
                           (GTK_FONT_BUTTON(w)));
    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 16998 16303 592
SVN  ¬!α     F€? ΑA‘ENDREP
DELTA 16998 5021 1478
SVN  ϊ;ϊ) υ  &υ υ φ1 HωsRemoveremove(ENDREP
DELTA 16998 21670 1352
SVN  GΦB  ΦB ENDREP
DELTA 4313 219549 670
SVN  q!/ r ―"optiondlg_g.h"

#endif  /* FC__OPTIONDLG_H */
ENDREP
DELTA 9098 1893 84
SVN     ENDREP
DELTA 16998 23147 47766
SVN      ^ δJ F WδB €ϋDon't keep this dialog open. */
  option_dialog_popdown(server_optset)poptset = server_optset;  ¦j§^KK V@ ¦=-tion_first(void)
{
  return OPTION(server_option_next_valid(server_options)ENDREP
DELTA 16998 71560 711
SVN  ]K	] 4 ]:#struct option *poption);
void option_gui_add(struct option *poption);
void option_gui_remove(ENDREP
id: 4js.5ck.r17037/29570
type: file
pred: 4js.5ck.r16998/72526
count: 1
text: 17037 9458 19363 23819 461b99e4ad031ab8c5826dab7b317cb0
cpath: /trunk/client/gui-gtk-2.0/optiondlg.c
copyroot: 15280 /trunk

id: 114.5ck.r17037/29773
type: file
pred: 114.5ck.r16998/72701
count: 2
text: 17037 29039 63 801 71cc69c4de584b1e3a478769314a0a61
props: 4313 263983 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/client/gui-gtk-2.0/optiondlg.h
copyroot: 15280 /trunk

id: 118.5ck.r17037/30030
type: file
pred: 118.5ck.r16998/72956
count: 139
text: 17037 28851 28 45216 3c9e00f4da83626b9cb9f19b9f098aeb
props: 11057 38502 111 0 89e24921275908e1dbda216a065c4859
cpath: /trunk/client/gui-gtk-2.0/repodlgs.c
copyroot: 15280 /trunk

id: 119.5ck.r17037/30290
type: file
pred: 119.5ck.r16998/73216
count: 6
text: 17037 29131 15 921 8c622c38aa1dcfb2a7d2e024cdfd5203
props: 9098 9189 110 0 7d181b70073f10d0c5a58c73a72d4f04
cpath: /trunk/client/gui-gtk-2.0/repodlgs.h
copyroot: 15280 /trunk

id: 10d.5ck.r17037/30544
type: file
pred: 10d.5ck.r16998/74239
count: 45
text: 17037 28993 16 11074 3a67656cfe278ae2075510ef802b732d
props: 11057 41811 111 0 b4233197920770c602c29330b7f7c623
cpath: /trunk/client/gui-gtk-2.0/gamedlgs.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file zu.5ck.r16998/74500
K 8
canvas.c
V 25
file 2y6.5ck.r16281/14174
K 8
canvas.h
V 23
file 2y7.0.r10096/14437
K 16
caravan_dialog.c
V 25
file 376.5ck.r16397/92668
K 10
chatline.c
V 24
file zw.5ck.r16973/10020
K 10
chatline.h
V 24
file zx.5ck.r16063/47311
K 15
choice_dialog.c
V 23
file 377.0.r13481/22903
K 15
choice_dialog.h
V 23
file 378.0.r12670/99360
K 9
citydlg.c
V 25
file zy.5ck.r16984/109506
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 24
file 100.5ck.r16973/9763
K 9
cityrep.h
V 22
file 101.0.r9098/11480
K 8
cma_fe.c
V 26
file 102.5ck.r16929/318450
K 8
cma_fe.h
V 25
file 103.5ck.r15813/67548
K 8
colors.c
V 26
file 104.5ck.r16929/319229
K 8
colors.h
V 24
file 105.5ck.r16180/3087
K 12
connectdlg.c
V 26
file 106.5ck.r15410/343701
K 12
connectdlg.h
V 21
file 107.0.r7580/6878
K 9
dialogs.c
V 26
file 108.5ck.r16929/318968
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 23
file 10a.5ck.r16918/453
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 26
file 36n.5ck.r15410/341404
K 9
editgui.c
V 26
file 4ej.5ck.r16929/317992
K 9
editgui.h
V 25
file 4ek.5ck.r15355/70937
K 10
editprop.c
V 26
file 4el.5ck.r16929/320257
K 10
editprop.h
V 24
file 3bj.5cl.r15704/4438
K 10
embedggz.c
V 25
file 4gq.5ck.r15814/16205
K 9
finddlg.c
V 25
file 10c.5ck.r16015/48885
K 9
finddlg.h
V 22
file 2d0.0.r5989/22356
K 10
gamedlgs.c
V 25
file 10d.5ck.r17037/30544
K 9
gotodlg.c
V 24
file 10e.5ck.r16899/8280
K 9
gotodlg.h
V 23
file 10f.0.r4313/263426
K 10
graphics.c
V 23
file 10g.0.r11337/79662
K 10
graphics.h
V 23
file 10h.0.r11337/80150
K 12
gtkpixcomm.c
V 25
file 10i.5ck.r16973/10277
K 12
gtkpixcomm.h
V 22
file 10j.0.r10800/1606
K 10
gui_main.c
V 25
file 10k.5ck.r16998/73466
K 10
gui_main.h
V 25
file 10l.5ck.r16281/14952
K 11
gui_stuff.c
V 24
file 10m.5ck.r16973/8995
K 11
gui_stuff.h
V 25
file 10n.5ck.r16281/15466
K 11
happiness.c
V 25
file 10o.5ck.r16015/47595
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 26
file 10q.5ck.r16929/319741
K 9
helpdlg.h
V 23
file 10r.0.r4313/267882
K 10
inputdlg.c
V 25
file 10s.5ck.r16015/49143
K 10
inputdlg.h
V 21
file 10t.0.r7580/3991
K 10
inteldlg.c
V 25
file 10u.5ck.r16015/48627
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 9
mapctrl.c
V 26
file 10v.5ck.r16929/319486
K 9
mapctrl.h
V 25
file 10w.5bk.r14157/11089
K 9
mapview.c
V 26
file 10x.5ck.r16929/317210
K 9
mapview.h
V 23
file 10y.0.r12881/17128
K 6
menu.c
V 24
file 10z.5ck.r16999/7374
K 6
menu.h
V 25
file 110.5ck.r16067/65085
K 12
messagedlg.c
V 23
file 111.0.r11771/10924
K 12
messagedlg.h
V 22
file 2d2.0.r5989/22693
K 12
messagewin.c
V 24
file 112.5ck.r16973/9506
K 12
messagewin.h
V 23
file 113.0.r10108/19424
K 11
optiondlg.c
V 25
file 4js.5ck.r17037/29570
K 11
optiondlg.h
V 25
file 114.5ck.r17037/29773
K 7
pages.c
V 23
file 2pi.5ck.r17021/415
K 7
pages.h
V 25
file 2pj.5ck.r16532/16664
K 8
plrdlg.c
V 26
file 115.5ck.r16929/319999
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.5ck.r17037/30030
K 10
repodlgs.h
V 25
file 119.5ck.r17037/30290
K 11
resources.c
V 23
file 11a.0.r5390/112550
K 11
resources.h
V 23
file 11b.0.r4313/267539
K 14
spaceshipdlg.c
V 25
file 11c.5ck.r16015/49648
K 14
spaceshipdlg.h
V 23
file 11d.0.r9577/110090
K 8
sprite.c
V 26
file 2y8.5ck.r16578/445568
K 8
sprite.h
V 23
file 2y9.0.r10141/29270
K 11
theme_dlg.c
V 25
file 47d.5ck.r16193/58569
K 8
themes.c
V 25
file 34x.5ck.r17013/10030
K 13
tileset_dlg.c
V 25
file 45i.5bk.r13968/60424
K 14
voteinfo_bar.c
V 25
file 4h8.5ck.r16955/11098
K 14
voteinfo_bar.h
V 25
file 4h9.5ck.r16063/46876
K 7
wldlg.c
V 26
file 11e.5ck.r16929/320462
K 7
wldlg.h
V 25
file 11f.5ck.r16285/86707
END
ENDREP
id: zs.5ck.r17037/34569
type: dir
pred: zs.5ck.r17021/4432
count: 1286
text: 17037 30803 3753 3753 42aaaf2bda5755820ffb44373517ee53
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-2.0
copyroot: 15280 /trunk

id: ar.5ck.r17037/34815
type: file
pred: ar.5ck.r16998/78771
count: 32
text: 17037 59 9369 12862 3b088c6b76f141630444306117602a9a
props: 10897 2598 111 0 7c94b769c2c0998a2747d858cb1e860f
cpath: /trunk/client/gui-xaw/optiondlg.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file bq.5ck.r16063/52349
K 9
actions.c
V 24
file nt.5ck.r16397/97629
K 9
actions.h
V 21
file nu.0.r1888/21779
K 4
ad2c
V 22
file 9q.0.r1186/243967
K 8
canvas.c
V 21
file 9r.0.r3959/87925
K 8
canvas.h
V 20
file 9s.0.r4034/9073
K 9
canvasp.h
V 20
file 9t.0.r4034/8365
K 10
chatline.c
V 24
file 9u.5ck.r16992/29629
K 10
chatline.h
V 21
file 9v.0.r2187/10435
K 9
citydlg.c
V 25
file 9w.5ck.r16984/113722
K 9
citydlg.h
V 20
file 9x.0.r2187/8309
K 9
cityrep.c
V 25
file 9y.5ck.r16929/326459
K 9
cityrep.h
V 20
file g1.0.r5489/4916
K 8
cma_fe.c
V 25
file 2ei.5ck.r15813/72072
K 8
cma_fe.h
V 21
file 2ej.0.r6908/4433
K 8
colors.c
V 25
file a2.5ck.r16578/453349
K 8
colors.h
V 21
file a3.0.r10532/9312
K 12
connectdlg.c
V 25
file a4.5ck.r16929/327980
K 12
connectdlg.h
V 21
file a5.0.r2187/12228
K 9
dialogs.c
V 25
file a6.5ck.r16929/326713
K 9
dialogs.h
V 21
file a7.0.r10882/3191
K 10
diplodlg.c
V 25
file a8.5ck.r16929/326969
K 10
diplodlg.h
V 20
file a9.0.r2187/7955
K 17
diplomat_dialog.c
V 26
file 37p.5ck.r16578/452827
K 9
finddlg.c
V 24
file aa.5ck.r16015/55751
K 9
finddlg.h
V 22
file 2dk.0.r5989/31562
K 9
gotodlg.c
V 24
file ab.5ck.r16015/53991
K 9
gotodlg.h
V 21
file ac.0.r1888/21069
K 10
graphics.c
V 24
file ad.5ck.r16601/86298
K 10
graphics.h
V 21
file ae.0.r10789/6338
K 10
gui_main.c
V 25
file bm.5ck.r16929/325951
K 10
gui_main.h
V 22
file bn.0.r11408/10219
K 11
gui_stuff.c
V 25
file bo.5ck.r16929/326206
K 11
gui_stuff.h
V 21
file bp.0.r4964/56392
K 9
helpdlg.c
V 24
file af.5ck.r16992/29381
K 9
helpdlg.h
V 21
file g2.0.r1888/23188
K 10
inputdlg.c
V 20
file ag.0.r7586/1961
K 10
inputdlg.h
V 20
file ah.0.r7586/2315
K 10
inteldlg.c
V 24
file ai.5ck.r16015/55498
K 10
inteldlg.h
V 23
file 2dl.0.r10108/22972
K 9
mapctrl.c
V 25
file aj.5ck.r16929/327222
K 9
mapctrl.h
V 21
file ak.0.r10532/9667
K 9
mapview.c
V 25
file al.5ck.r16929/325441
K 9
mapview.h
V 24
file am.5bk.r13912/46304
K 6
menu.c
V 24
file an.5ck.r16999/11888
K 6
menu.h
V 24
file ao.5ck.r16824/42452
K 12
messagedlg.c
V 25
file ap.5bk.r14427/290582
K 12
messagedlg.h
V 22
file 2dm.0.r5989/31896
K 12
messagewin.c
V 25
file aq.5bk.r14427/286529
K 12
messagewin.h
V 20
file g3.0.r5489/3851
K 11
optiondlg.c
V 24
file ar.5ck.r17037/34815
K 11
optiondlg.h
V 24
file as.5ck.r16998/79026
K 7
pages.c
V 25
file 2qm.5ck.r16999/11642
K 7
pages.h
V 22
file 2qn.0.r10536/7909
K 9
pixcomm.c
V 21
file at.0.r3145/18494
K 9
pixcomm.h
V 20
file au.0.r4034/9777
K 10
pixcommp.h
V 20
file av.0.r4034/8719
K 8
plrdlg.c
V 25
file aw.5ck.r16199/127963
K 8
plrdlg.h
V 20
file g4.0.r5489/3140
K 10
ratesdlg.c
V 25
file ax.5ck.r15410/352614
K 10
ratesdlg.h
V 22
file 2dn.0.r5989/31227
K 10
repodlgs.c
V 24
file ay.5ck.r16998/79274
K 10
repodlgs.h
V 24
file az.5ck.r16998/79526
K 11
resources.c
V 20
file b0.0.r9310/2224
K 11
resources.h
V 21
file b1.0.r3145/14204
K 14
spaceshipdlg.c
V 24
file b2.5ck.r16015/56004
K 14
spaceshipdlg.h
V 21
file b3.0.r2187/11152
K 8
themes.c
V 23
file 350.0.r10945/14451
K 14
voteinfo_bar.c
V 25
file 4hg.5ck.r16063/52010
K 14
voteinfo_bar.h
V 25
file 4hh.5ck.r16063/52179
K 7
wldlg.c
V 25
file o5.5ck.r16929/327729
K 7
wldlg.h
V 24
file o6.5ck.r16285/91411
END
ENDREP
id: 9o.5ck.r17037/38250
type: dir
pred: 9o.5ck.r16999/15319
count: 917
text: 17037 35067 3170 3170 6a6e019145805b33cbdf3833faa0fe10
props: 11108 12237 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-xaw
copyroot: 15280 /trunk

id: 4jv.5ck.r17037/38492
type: file
pred: 4jv.5ck.r16998/83447
count: 1
text: 17037 29428 113 1099 6017472337bcc70911684626dfac024a
cpath: /trunk/client/include/optiondlg_g.h
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file dt.5ck.r16998/83619
K 10
canvas_g.h
V 25
file 2y4.5bk.r15074/16002
K 12
chatline_g.h
V 24
file en.5ck.r15990/65213
K 11
citydlg_g.h
V 21
file eo.0.r10219/5134
K 11
cityrep_g.h
V 21
file g5.0.r9098/20785
K 10
colors_g.h
V 21
file in.0.r10458/8958
K 14
connectdlg_g.h
V 21
file eq.0.r10804/9790
K 11
dialogs_g.h
V 24
file er.5ck.r15934/34534
K 12
diplodlg_g.h
V 21
file es.0.r7930/21998
K 11
editgui_g.h
V 25
file 3bj.5cm.r16630/10713
K 11
finddlg_g.h
V 22
file 2do.0.r5989/36572
K 7
ggz_g.h
V 25
file 4gr.5ck.r15814/24021
K 11
gotodlg_g.h
V 21
file et.0.r1432/33793
K 12
graphics_g.h
V 21
file eu.0.r10095/7747
K 12
gui_main_g.h
V 24
file ev.5ck.r16248/25056
K 11
helpdlg_g.h
V 22
file g6.5ck.r16916/474
K 12
inteldlg_g.h
V 22
file 2dp.0.r8119/35181
K 11
mapctrl_g.h
V 21
file ew.0.r8119/34823
K 11
mapview_g.h
V 23
file ex.0.r13297/464396
K 8
menu_g.h
V 24
file ey.5ck.r16999/15812
K 14
messagedlg_g.h
V 22
file 2dq.0.r5989/35559
K 14
messagewin_g.h
V 21
file g7.0.r9098/20426
K 13
optiondlg_g.h
V 25
file 4jv.5ck.r17037/38492
K 9
pages_g.h
V 25
file 2pk.5ck.r16999/15561
K 10
plrdlg_g.h
V 21
file g8.0.r9098/20071
K 12
ratesdlg_g.h
V 22
file 2dr.0.r5989/36235
K 12
repodlgs_g.h
V 24
file ez.5ck.r16998/83871
K 16
spaceshipdlg_g.h
V 21
file f0.0.r8119/33388
K 10
sprite_g.h
V 23
file 2y5.0.r10141/41098
K 10
themes_g.h
V 23
file 351.0.r10945/18328
K 16
voteinfo_bar_g.h
V 25
file 4hi.5ck.r16063/56509
K 9
wldlg_g.h
V 21
file o7.0.r1939/66425
END
ENDREP
id: b8.5ck.r17037/40177
type: dir
pred: b8.5ck.r16999/17544
count: 233
text: 17037 38691 1473 1473 f050d599517cca67538a83431b979cc0
props: 4431 36493 46 0 e473fc4bd409d833d90929dfcb3a14b8
cpath: /trunk/client/include
copyroot: 15280 /trunk

id: 18d.5ck.r17037/40418
type: file
pred: 18d.5ck.r16998/85845
count: 87
text: 17037 28908 56 81193 f47abdb796dcce3ec8c9b5aa70eead1f
props: 9803 3079 111 0 9b377c828b4ca1827963af8e19878787
cpath: /trunk/client/gui-sdl/optiondlg.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 25
file 16u.5ck.r16063/63204
K 14
SDL_rotozoom.c
V 24
file 3jy.0.r12670/115301
K 14
SDL_rotozoom.h
V 24
file 3jz.0.r12670/115888
K 9
SDL_ttf.c
V 24
file 2dz.5bk.r13597/7386
K 9
SDL_ttf.h
V 24
file 2e0.5bk.r13597/7647
K 11
alphablit.c
V 23
file 3be.0.r13354/59832
K 8
canvas.c
V 25
file 39i.5bk.r15074/21186
K 8
canvas.h
V 23
file 39j.0.r13354/56918
K 16
caravan_dialog.c
V 26
file 3bp.5ck.r16397/106733
K 10
chatline.c
V 26
file 16y.5ck.r16929/335253
K 10
chatline.h
V 26
file 16z.5ck.r16199/137581
K 9
citydlg.c
V 26
file 170.5ck.r16984/121056
K 9
citydlg.h
V 23
file 171.0.r13354/55222
K 9
cityrep.c
V 26
file 172.5ck.r16929/333704
K 9
cityrep.h
V 22
file 173.0.r12769/2941
K 8
cma_fe.c
V 25
file 174.5ck.r15813/79444
K 8
cma_fe.h
V 23
file 175.0.r11361/43495
K 8
colors.c
V 23
file 176.0.r13354/62500
K 8
colors.h
V 24
file 177.5bk.r14076/4693
K 12
connectdlg.c
V 26
file 178.5ck.r16929/336027
K 12
connectdlg.h
V 23
file 179.0.r12349/45319
K 9
dialogs.c
V 25
file 17a.5ck.r17013/14799
K 9
dialogs.h
V 23
file 17b.0.r13354/61529
K 10
diplodlg.c
V 26
file 17c.5ck.r16929/334478
K 10
diplodlg.h
V 22
file 17d.0.r11584/2869
K 17
diplomat_dialog.c
V 26
file 3bn.5ck.r15410/369250
K 9
finddlg.c
V 25
file 17e.5ck.r16015/63375
K 9
finddlg.h
V 20
file 2d8.0.r5991/702
K 9
gotodlg.c
V 26
file 17f.5ck.r16929/332404
K 9
gotodlg.h
V 22
file 17g.0.r6515/58208
K 10
graphics.c
V 26
file 17h.5ck.r16929/334736
K 10
graphics.h
V 23
file 17i.0.r12611/13939
K 11
gui_iconv.c
V 26
file 17l.5ck.r16578/465566
K 11
gui_iconv.h
V 23
file 17m.0.r13354/66657
K 8
gui_id.h
V 26
file 17n.5ck.r16397/107249
K 10
gui_main.c
V 25
file 17o.5ck.r16630/16093
K 10
gui_main.h
V 25
file 17p.5ck.r16059/44129
K 11
gui_mouse.c
V 23
file 3ca.0.r13354/59349
K 11
gui_mouse.h
V 24
file 3cb.0.r12670/112397
K 12
gui_string.c
V 26
file 17r.5ck.r16929/335767
K 12
gui_string.h
V 23
file 17s.0.r13481/30445
K 14
gui_tilespec.c
V 26
file 191.5ck.r16929/332661
K 14
gui_tilespec.h
V 25
file 192.5bk.r13912/53929
K 11
happiness.c
V 23
file 17x.0.r11361/41144
K 11
happiness.h
V 23
file 17y.0.r11361/41867
K 9
helpdlg.c
V 26
file 17z.5ck.r16578/464537
K 9
helpdlg.h
V 23
file 180.0.r11361/47416
K 10
inputdlg.c
V 23
file 181.0.r11361/47897
K 10
inputdlg.h
V 23
file 182.0.r5500/260641
K 10
inteldlg.c
V 25
file 183.5ck.r16015/63118
K 10
inteldlg.h
V 22
file 2d9.0.r11409/2687
K 9
mapctrl.c
V 24
file 184.5ck.r17022/1139
K 9
mapctrl.h
V 23
file 185.0.r13354/63700
K 9
mapview.c
V 23
file 186.5ck.r17022/641
K 9
mapview.h
V 23
file 187.0.r13354/56676
K 6
menu.c
V 25
file 188.5ck.r16999/18279
K 6
menu.h
V 25
file 189.5bk.r13856/57405
K 12
messagedlg.c
V 26
file 18a.5ck.r16578/465051
K 12
messagedlg.h
V 22
file 2da.0.r5989/48394
K 12
messagewin.c
V 24
file 18b.5ck.r15883/3836
K 12
messagewin.h
V 23
file 18c.0.r6286/140236
K 5
mmx.h
V 23
file 2e1.0.r6286/134429
K 11
optiondlg.c
V 25
file 18d.5ck.r17037/40418
K 11
optiondlg.h
V 25
file 18e.5ck.r16998/86101
K 7
pages.c
V 23
file 2qg.5ck.r17022/893
K 7
pages.h
V 22
file 2qh.0.r8639/16416
K 8
plrdlg.c
V 26
file 18f.5ck.r15785/122781
K 8
plrdlg.h
V 22
file 18g.0.r6387/81301
K 10
ratesdlg.h
V 22
file 2db.0.r5989/47726
K 10
repodlgs.c
V 25
file 18i.5ck.r17013/14298
K 10
repodlgs.h
V 23
file 18j.0.r13354/58129
K 14
spaceshipdlg.c
V 25
file 18m.5ck.r16015/63630
K 14
spaceshipdlg.h
V 23
file 18n.0.r5500/263363
K 8
sprite.c
V 26
file 39k.5ck.r16578/462217
K 8
sprite.h
V 24
file 39l.0.r12670/108062
K 18
themebackgrounds.c
V 26
file 3ff.5ck.r16929/333181
K 18
themebackgrounds.h
V 25
file 3fg.5bk.r13794/17440
K 13
themecolors.c
V 26
file 392.5ck.r16929/334218
K 13
themecolors.h
V 24
file 393.0.r12670/114433
K 8
themes.c
V 25
file 38p.5ck.r16601/93391
K 11
themespec.c
V 26
file 390.5ck.r16929/333445
K 11
themespec.h
V 26
file 391.5ck.r16578/464018
K 11
unistring.c
V 23
file 18o.0.r13354/57401
K 11
unistring.h
V 23
file 18p.0.r13481/30205
K 14
voteinfo_bar.c
V 25
file 4ha.5ck.r16063/62859
K 14
voteinfo_bar.h
V 25
file 4hb.5ck.r16063/63032
K 8
widget.c
V 25
file 3fu.5bk.r15218/30693
K 8
widget.h
V 25
file 3fv.5bk.r15218/31232
K 15
widget_button.c
V 24
file 3fh.5bk.r14076/3619
K 15
widget_button.h
V 24
file 3g7.0.r12670/113556
K 17
widget_checkbox.c
V 24
file 3fi.5bk.r14076/6064
K 17
widget_checkbox.h
V 24
file 3g8.0.r12670/106620
K 13
widget_core.c
V 23
file 3fj.0.r13354/61769
K 13
widget_edit.c
V 23
file 3fk.0.r13354/64909
K 13
widget_edit.h
V 24
file 3g9.0.r12670/115595
K 13
widget_icon.c
V 23
file 3fl.0.r13354/59104
K 13
widget_icon.h
V 24
file 3ga.0.r12670/112107
K 14
widget_label.c
V 24
file 3fm.5bk.r13597/6851
K 14
widget_label.h
V 24
file 3gb.0.r12670/110079
K 10
widget_p.h
V 24
file 3fn.0.r12670/107197
K 18
widget_scrollbar.c
V 26
file 3fo.5df.r16929/336288
K 18
widget_scrollbar.h
V 24
file 3gc.0.r12670/116811
K 15
widget_window.c
V 23
file 3fp.0.r13354/55944
K 15
widget_window.h
V 23
file 3gd.0.r12699/32533
K 7
wldlg.c
V 26
file 18q.5ck.r16929/335510
K 7
wldlg.h
V 26
file 18r.5ck.r16285/100508
END
ENDREP
id: 16t.5ck.r17037/45645
type: dir
pred: 16t.5ck.r17022/6363
count: 588
text: 17037 40672 4960 4960 9021f99554d5ebe9fe6392ee5c327f7c
props: 11108 12869 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-sdl
copyroot: 15280 /trunk

id: 4jt.5ck.r17037/45888
type: file
pred: 4jt.5ck.r16998/92344
count: 1
text: 17037 0 34 2368 32b25b62d69b292e8b71b75ae5033646
cpath: /trunk/client/gui-stub/optiondlg.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file mj.5ck.r16998/92932
K 8
canvas.c
V 25
file 2y0.5bk.r15074/29613
K 8
canvas.h
V 23
file 2y1.0.r10095/12720
K 10
chatline.c
V 24
file ml.5ck.r15990/83099
K 10
chatline.h
V 21
file mm.0.r5491/41569
K 9
citydlg.c
V 25
file mn.5bk.r13949/170892
K 9
citydlg.h
V 21
file mo.0.r5491/35843
K 9
cityrep.c
V 22
file mp.0.r10144/11456
K 9
cityrep.h
V 21
file mq.0.r5491/46587
K 8
colors.c
V 22
file mr.0.r10458/11165
K 8
colors.h
V 22
file ms.0.r10458/11524
K 12
connectdlg.c
V 25
file mt.5ck.r16929/344729
K 12
connectdlg.h
V 21
file mu.0.r5491/46943
K 9
dialogs.c
V 25
file mv.5ck.r16397/116369
K 9
dialogs.h
V 20
file mw.0.r8956/1107
K 10
diplodlg.c
V 21
file mx.0.r10144/8226
K 10
diplodlg.h
V 21
file my.0.r5491/35128
K 9
finddlg.c
V 21
file mz.0.r5491/37629
K 9
finddlg.h
V 22
file 2dc.0.r5989/44093
K 9
gotodlg.c
V 25
file n0.5ck.r15410/383554
K 9
gotodlg.h
V 21
file n1.0.r5491/35486
K 10
graphics.c
V 22
file n2.0.r10141/65831
K 10
graphics.h
V 21
file n3.0.r5491/36199
K 10
gui_main.c
V 24
file n4.5ck.r16630/24721
K 10
gui_main.h
V 21
file n5.0.r5491/41925
K 9
helpdlg.c
V 21
file n6.0.r10144/9660
K 9
helpdlg.h
V 21
file n7.0.r5491/39423
K 10
inteldlg.c
V 21
file n8.0.r7847/24779
K 10
inteldlg.h
V 22
file 2dd.0.r5989/43421
K 9
mapctrl.c
V 21
file n9.0.r7018/49625
K 9
mapctrl.h
V 21
file na.0.r5491/37272
K 9
mapview.c
V 25
file nb.5ck.r15410/383805
K 9
mapview.h
V 21
file nc.0.r5491/38349
K 6
menu.c
V 24
file nd.5ck.r16999/24332
K 6
menu.h
V 21
file ne.0.r5491/43723
K 12
messagedlg.c
V 21
file nf.0.r5491/44434
K 12
messagedlg.h
V 22
file 2de.0.r5989/44428
K 12
messagewin.c
V 21
file ng.0.r9098/29017
K 12
messagewin.h
V 21
file nh.0.r5491/43363
K 11
optiondlg.c
V 25
file 4jt.5ck.r17037/45888
K 11
optiondlg.h
V 25
file 4ju.5ck.r16998/92511
K 7
pages.c
V 25
file 2qi.5ck.r16999/24085
K 7
pages.h
V 22
file 2qj.0.r8639/28697
K 8
plrdlg.c
V 21
file ni.0.r9098/28662
K 8
plrdlg.h
V 21
file nj.0.r5491/41213
K 10
ratesdlg.c
V 21
file nk.0.r5491/36557
K 10
ratesdlg.h
V 22
file 2df.0.r5989/43757
K 10
repodlgs.c
V 24
file nl.5ck.r16998/92681
K 10
repodlgs.h
V 21
file nm.0.r5491/40138
K 14
spaceshipdlg.c
V 21
file nn.0.r5491/42999
K 14
spaceshipdlg.h
V 21
file no.0.r5491/44796
K 8
sprite.c
V 22
file 2y2.0.r11749/1632
K 8
sprite.h
V 23
file 2y3.0.r10095/12384
K 8
themes.c
V 23
file 34y.0.r10945/24922
K 14
voteinfo_bar.c
V 25
file 4hc.5ck.r16063/72831
K 14
voteinfo_bar.h
V 25
file 4hd.5ck.r16063/73005
K 7
wldlg.c
V 21
file qj.0.r5491/44077
K 7
wldlg.h
V 21
file qk.0.r5491/45158
END
ENDREP
id: mh.5ck.r17037/48612
type: dir
pred: mh.5ck.r16999/27110
count: 169
text: 17037 46081 2518 2518 467ef2b3e30bc54699566c0e1dfac94a
props: 11108 13796 68 0 fbaef5f6348d6ae4b0cc177104ca4ad2
cpath: /trunk/client/gui-stub
copyroot: 15280 /trunk

id: dc.5ck.r17037/48855
type: file
pred: dc.5ck.r16998/95961
count: 213
text: 17037 29172 225 140254 3b458c9548b983e886953597ac36d57a
props: 10965 83 112 0 b4bb2e29c9087472d2e44c6eab39b6d6
cpath: /trunk/client/options.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file 5f.5ck.r16999/27621
K 6
agents
V 24
dir zf.5ck.r16984/108758
K 11
attribute.c
V 24
file xh.5ck.r17034/13614
K 11
attribute.h
V 19
file xi.0.r4715/844
K 7
audio.c
V 26
file 139.5ck.r16929/343729
K 7
audio.h
V 25
file 13a.5ck.r16165/81556
K 12
audio_none.c
V 23
file 13d.0.r6129/145164
K 12
audio_none.h
V 22
file 13e.0.r4452/27228
K 11
audio_sdl.c
V 26
file 13f.5ck.r16578/477644
K 11
audio_sdl.h
V 22
file 13g.0.r4452/26570
K 17
chatline_common.c
V 26
file 14q.5ck.r16929/343474
K 17
chatline_common.h
V 25
file 14r.5ck.r16888/19266
K 16
citydlg_common.c
V 25
file z4.5ck.r16984/109000
K 16
citydlg_common.h
V 25
file z5.5ck.r16984/109254
K 13
cityrepdata.c
V 23
file mb.5ck.r17030/1319
K 13
cityrepdata.h
V 21
file mc.0.r9153/21475
K 11
civclient.c
V 23
file 4f2.5ck.r15408/695
K 13
client_main.c
V 24
file 2f.5cp.r16999/27353
K 13
client_main.h
V 23
file hz.5cq.r16632/1773
K 8
climap.c
V 25
file 197.5ck.r16888/19519
K 8
climap.h
V 25
file 198.5ck.r16888/20012
K 9
climisc.c
V 25
file d5.5ck.r16929/348439
K 9
climisc.h
V 24
file i0.5ck.r16888/20499
K 8
clinet.c
V 25
file hc.5ck.r16929/347665
K 8
clinet.h
V 25
file i1.5bk.r14427/324634
K 15
colors_common.c
V 26
file 33a.5ck.r16929/316194
K 15
colors_common.h
V 25
file 33b.5ck.r16397/92170
K 19
connectdlg_common.c
V 26
file 2fw.5ck.r16929/342570
K 19
connectdlg_common.h
V 25
file 2fx.5ck.r16532/38983
K 9
control.c
V 24
file gz.5ck.r16931/13785
K 9
control.h
V 24
file i2.5ck.r16594/13196
K 7
dummy.c
V 23
file 4f9.5ck.r15641/551
K 8
editor.c
V 26
file 3bg.5ck.r16929/348687
K 8
editor.h
V 25
file 3bh.5ck.r15761/13075
K 11
ggzclient.c
V 25
file 394.5ck.r15814/34717
K 11
ggzclient.h
V 24
file 395.0.r12670/122419
K 17
global_worklist.c
V 26
file 4i6.5ck.r16929/343274
K 17
global_worklist.h
V 26
file 4i7.5ck.r16319/100206
K 6
goto.c
V 25
file vu.5ck.r16929/331656
K 6
goto.h
V 24
file vv.5ck.r15509/18108
K 8
gui-ftwl
V 24
dir 2k2.5ck.r16630/24475
K 11
gui-gtk-2.0
V 23
dir zs.5ck.r17037/34569
K 7
gui-sdl
V 24
dir 16t.5ck.r17037/45645
K 8
gui-stub
V 23
dir mh.5ck.r17037/48612
K 9
gui-win32
V 23
dir np.5ck.r16992/36470
K 7
gui-xaw
V 23
dir 9o.5ck.r17037/38250
K 10
helpdata.c
V 24
file h1.5ck.r16956/15226
K 10
helpdata.h
V 25
file i3.5bk.r14417/261925
K 7
include
V 23
dir b8.5ck.r17037/40177
K 16
mapctrl_common.c
V 26
file 15m.5ck.r16929/344475
K 16
mapctrl_common.h
V 23
file 15n.0.r11378/41712
K 16
mapview_common.c
V 25
file z2.5ck.r16984/126792
K 16
mapview_common.h
V 25
file z3.5ck.r16578/482844
K 19
messagewin_common.c
V 26
file 14s.5ck.r16929/342065
K 19
messagewin_common.h
V 25
file 14t.5ck.r15909/37338
K 9
options.c
V 24
file dc.5ck.r17037/48855
K 9
options.h
V 24
file i4.5ck.r16998/72284
K 17
overview_common.c
V 25
file 2yk.5ck.r16930/40265
K 17
overview_common.h
V 25
file 2yl.5ck.r16930/40516
K 10
packhand.c
V 23
file n.5ck.r16999/17785
K 10
packhand.h
V 24
file i5.5bk.r14422/90154
K 15
plrdlg_common.c
V 26
file 14u.5ck.r16929/341814
K 15
plrdlg_common.h
V 26
file 14v.5bk.r14417/257761
K 17
repodlgs_common.c
V 25
file 11i.5ck.r16971/56554
K 17
repodlgs_common.h
V 25
file 11j.5ck.r16971/56809
K 9
reqtree.c
V 26
file 2ym.5ck.r16929/315694
K 9
reqtree.h
V 23
file 2yn.0.r13481/22674
K 9
servers.c
V 26
file 33x.5ck.r16929/348935
K 9
servers.h
V 25
file 33y.5ck.r15505/14398
K 6
text.c
V 25
file 2g3.5ck.r16956/14982
K 6
text.h
V 24
file 2g4.5bk.r14284/8380
K 15
themes_common.c
V 25
file 352.5ck.r16930/48921
K 15
themes_common.h
V 25
file 353.5ck.r16930/49172
K 10
tilespec.c
V 25
file hl.5ck.r16984/126542
K 10
tilespec.h
V 24
file i6.5ck.r16930/49667
K 14
update_queue.c
V 25
file 4jw.5ck.r16999/23755
K 14
update_queue.h
V 25
file 4jx.5ck.r16999/23921
K 10
voteinfo.c
V 26
file 4fe.5ck.r16929/342829
K 10
voteinfo.h
V 25
file 4ff.5ck.r16201/17543
END
ENDREP
id: d.5ck.r17037/52881
type: dir
pred: d.5ck.r17034/17638
count: 4751
text: 17037 49099 3769 3769 35ee478a2bf73e2c4c60e8b2049fff71
props: 12883 2898 109 0 732f4656541fb514e4368d9517bdf317
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.r15924/3800068
K 7
INSTALL
V 23
file 6.5ck.r16872/79279
K 11
Makefile.am
V 23
file 59.5bk.r14918/1267
K 4
NEWS
V 23
file 6m.5ck.r16839/2057
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 22
dir 8.5ck.r16984/92135
K 10
autogen.sh
V 24
file 12o.5ck.r16223/7590
K 9
bootstrap
V 23
dir 2p5.5ck.r16731/2595
K 6
client
V 22
dir d.5ck.r17037/52881
K 6
common
V 22
dir p.5ck.r17034/10747
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 24
file 149.5ck.r17010/2239
K 4
data
V 23
dir w.5ck.r16984/107868
K 6
debian
V 23
dir 5w.5ck.r16224/17276
K 12
dependencies
V 23
dir 2yu.5ck.r17024/5709
K 11
diff_ignore
V 23
file qq.5ck.r16311/3290
K 3
doc
V 22
dir k7.5ck.r17012/6320
K 2
m4
V 23
dir 12p.5ck.r17012/4520
K 6
manual
V 23
dir 2m2.5ck.r17035/8944
K 2
po
V 22
dir fs.5ck.r17026/2600
K 7
scripts
V 23
dir 2yo.5bk.r14810/1300
K 6
server
V 21
dir z.5ck.r17031/3958
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.r17035/8354
K 10
version.in
V 22
file 2lo.5ck.r16985/77
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.r17037/54384
type: dir
pred: 3.5ck.r17035/10440
count: 12805
text: 17037 53114 1257 1257 bd4ac9df16fb5731effacfedf5a9c36f
props: 11109 0 255 0 8cbc80e0da9c47b05b8ffee17ea9b0f1
cpath: /trunk
copyroot: 15280 /trunk

PLAIN
K 8
branches
V 20
dir 1.0.r17036/10828
K 4
tags
V 19
dir 2.0.r16877/5158
K 5
trunk
V 22
dir 3.5ck.r17037/54384
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r17037/54772
type: dir
pred: 0.0.r17036/11148
count: 17037
text: 17037 54608 151 151 872561530febda0b5ac05b7b878fc0cc
cpath: /
copyroot: 0 /

4jt.5ck.t17036-1 modify true false /trunk/client/gui-stub/optiondlg.c

ar.5ck.t17036-1 modify true false /trunk/client/gui-xaw/optiondlg.c

4js.5ck.t17036-1 modify true false /trunk/client/gui-gtk-2.0/optiondlg.c

118.5ck.t17036-1 modify true false /trunk/client/gui-gtk-2.0/repodlgs.c

18d.5ck.t17036-1 modify true false /trunk/client/gui-sdl/optiondlg.c

10d.5ck.t17036-1 modify true false /trunk/client/gui-gtk-2.0/gamedlgs.c

114.5ck.t17036-1 modify true false /trunk/client/gui-gtk-2.0/optiondlg.h

119.5ck.t17036-1 modify true false /trunk/client/gui-gtk-2.0/repodlgs.h

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

4jv.5ck.t17036-1 modify true false /trunk/client/include/optiondlg_g.h


54772 54922
