75 .default_server_host =
"localhost",
76 .default_server_port = DEFAULT_SOCK_PORT,
78 .default_tileset_square_name =
"\0",
79 .default_tileset_hex_name =
"\0",
80 .default_tileset_isohex_name =
"\0",
81 .default_sound_set_name =
"stdsounds",
82 .default_music_set_name =
"stdmusic",
83 .default_sound_plugin_name =
"\0",
86 .save_options_on_exit =
TRUE,
88 .use_prev_server =
FALSE,
89 .heartbeat_enabled =
FALSE,
93 .default_tileset_name =
"\0",
94 .default_tileset_overhead_name =
"\0",
95 .default_tileset_iso_name =
"\0",
96 .gui_gtk3_migrated_from_gtk2 =
FALSE,
97 .gui_gtk3_22_migrated_from_gtk3 =
FALSE,
98 .gui_gtk4_migrated_from_gtk3_22 =
FALSE,
99 .gui_sdl2_migrated_from_sdl =
FALSE,
100 .gui_gtk2_migrated_from_2_5 =
FALSE,
101 .gui_gtk3_migrated_from_2_5 =
FALSE,
102 .gui_qt_migrated_from_2_5 =
FALSE,
104 .migrate_fullscreen =
FALSE,
108 .gui_qt_default_fonts_set =
FALSE,
112 .solid_color_behind_units =
FALSE,
113 .sound_bell_at_new_turn =
FALSE,
114 .smooth_move_unit_msec = 30,
115 .smooth_center_slide_msec = 200,
116 .smooth_combat_step_msec = 10,
117 .ai_manual_turn_done =
TRUE,
118 .auto_center_on_unit =
TRUE,
119 .auto_center_on_automated =
TRUE,
120 .auto_center_on_combat =
FALSE,
121 .auto_center_each_turn =
TRUE,
122 .wakeup_focus =
TRUE,
123 .goto_into_unknown =
TRUE,
124 .center_when_popup_city =
TRUE,
125 .show_previous_turn_messages =
TRUE,
126 .concise_city_production =
FALSE,
127 .auto_turn_done =
FALSE,
128 .meta_accelerators =
TRUE,
129 .ask_city_name =
TRUE,
130 .popup_new_cities =
TRUE,
131 .popup_actor_arrival =
TRUE,
132 .popup_attack_actions =
TRUE,
133 .popup_last_move_to_allied =
TRUE,
134 .keyboardless_goto =
TRUE,
135 .enable_cursor_changes =
TRUE,
136 .separate_unit_selection =
FALSE,
137 .unit_selection_clears_orders =
TRUE,
138 .highlight_our_names =
FT_COLOR(
"#000000",
"#FFFF00"),
140 .voteinfo_bar_use =
TRUE,
141 .voteinfo_bar_always_show =
FALSE,
142 .voteinfo_bar_hide_when_not_player =
FALSE,
143 .voteinfo_bar_new_at_front =
FALSE,
145 .autoaccept_tileset_suggestion =
FALSE,
146 .autoaccept_soundset_suggestion =
FALSE,
147 .autoaccept_musicset_suggestion =
FALSE,
149 .sound_enable_effects =
TRUE,
150 .sound_enable_menu_music =
TRUE,
151 .sound_enable_game_music =
TRUE,
152 .sound_effects_volume = 100,
155 .update_city_text_in_refresh_tile =
TRUE,
157 .draw_city_outlines =
TRUE,
158 .draw_city_output =
FALSE,
159 .draw_map_grid =
FALSE,
160 .draw_city_names =
TRUE,
161 .draw_city_growth =
TRUE,
162 .draw_city_productions =
TRUE,
163 .draw_city_buycost =
FALSE,
164 .draw_city_trade_routes =
FALSE,
165 .draw_terrain =
TRUE,
166 .draw_coastline =
FALSE,
167 .draw_roads_rails =
TRUE,
168 .draw_irrigation =
TRUE,
170 .draw_fortress_airbase =
TRUE,
171 .draw_specials =
TRUE,
173 .draw_pollution =
TRUE,
176 .draw_focus_unit =
FALSE,
177 .draw_fog_of_war =
TRUE,
178 .draw_borders =
TRUE,
179 .draw_native =
FALSE,
180 .draw_full_citybar =
TRUE,
181 .draw_unit_shields =
TRUE,
182 .draw_unit_stack_size =
TRUE,
183 .player_dlg_show_dead_players =
TRUE,
184 .reqtree_show_icons =
TRUE,
185 .reqtree_curved_lines =
FALSE,
203 .zoom_default_level = 1.0,
208 .gui_gtk2_map_scrollbars =
FALSE,
209 .gui_gtk2_dialogs_on_top =
TRUE,
210 .gui_gtk2_show_task_icons =
TRUE,
211 .gui_gtk2_enable_tabs =
TRUE,
212 .gui_gtk2_better_fog =
TRUE,
213 .gui_gtk2_show_chat_message_time =
FALSE,
214 .gui_gtk2_new_messages_go_to_top =
FALSE,
215 .gui_gtk2_show_message_window_buttons =
TRUE,
216 .gui_gtk2_metaserver_tab_first =
FALSE,
217 .gui_gtk2_allied_chat_only =
FALSE,
218 .gui_gtk2_mouse_over_map_focus =
FALSE,
219 .gui_gtk2_chatline_autocompletion =
TRUE,
223 .gui_gtk2_font_city_label =
"Monospace 8",
224 .gui_gtk2_font_notify_label =
"Monospace Bold 9",
225 .gui_gtk2_font_spaceship_label =
"Monospace 8",
226 .gui_gtk2_font_help_label =
"Sans Bold 10",
227 .gui_gtk2_font_help_link =
"Sans 9",
228 .gui_gtk2_font_help_text =
"Monospace 8",
229 .gui_gtk2_font_chatline =
"Monospace 8",
230 .gui_gtk2_font_beta_label =
"Sans Italic 10",
231 .gui_gtk2_font_small =
"Sans 9",
232 .gui_gtk2_font_comment_label =
"Sans Italic 9",
233 .gui_gtk2_font_city_names =
"Sans Bold 10",
234 .gui_gtk2_font_city_productions =
"Serif 10",
235 .gui_gtk2_font_reqtree_text =
"Serif 10",
239 .gui_gtk3_fullscreen =
FALSE,
240 .gui_gtk3_map_scrollbars =
FALSE,
241 .gui_gtk3_dialogs_on_top =
TRUE,
242 .gui_gtk3_show_task_icons =
TRUE,
243 .gui_gtk3_enable_tabs =
TRUE,
244 .gui_gtk3_show_chat_message_time =
FALSE,
245 .gui_gtk3_new_messages_go_to_top =
FALSE,
246 .gui_gtk3_show_message_window_buttons =
TRUE,
247 .gui_gtk3_metaserver_tab_first =
FALSE,
248 .gui_gtk3_allied_chat_only =
FALSE,
250 .gui_gtk3_small_display_layout =
FALSE,
251 .gui_gtk3_mouse_over_map_focus =
FALSE,
252 .gui_gtk3_chatline_autocompletion =
TRUE,
256 .gui_gtk3_governor_range_min = -20,
257 .gui_gtk3_governor_range_max = 20,
258 .gui_gtk3_font_city_label =
"Monospace 8",
259 .gui_gtk3_font_notify_label =
"Monospace Bold 9",
260 .gui_gtk3_font_spaceship_label =
"Monospace 8",
261 .gui_gtk3_font_help_label =
"Sans Bold 10",
262 .gui_gtk3_font_help_link =
"Sans 9",
263 .gui_gtk3_font_help_text =
"Monospace 8",
264 .gui_gtk3_font_chatline =
"Monospace 8",
265 .gui_gtk3_font_beta_label =
"Sans Italic 10",
266 .gui_gtk3_font_small =
"Sans 9",
267 .gui_gtk3_font_comment_label =
"Sans Italic 9",
268 .gui_gtk3_font_city_names =
"Sans Bold 10",
269 .gui_gtk3_font_city_productions =
"Serif 10",
270 .gui_gtk3_font_reqtree_text =
"Serif 10",
274 .gui_gtk3_22_fullscreen =
FALSE,
275 .gui_gtk3_22_map_scrollbars =
FALSE,
276 .gui_gtk3_22_dialogs_on_top =
TRUE,
277 .gui_gtk3_22_show_task_icons =
TRUE,
278 .gui_gtk3_22_enable_tabs =
TRUE,
279 .gui_gtk3_22_show_chat_message_time =
FALSE,
280 .gui_gtk3_22_new_messages_go_to_top =
FALSE,
281 .gui_gtk3_22_show_message_window_buttons =
TRUE,
282 .gui_gtk3_22_metaserver_tab_first =
FALSE,
283 .gui_gtk3_22_allied_chat_only =
FALSE,
285 .gui_gtk3_22_small_display_layout =
FALSE,
286 .gui_gtk3_22_mouse_over_map_focus =
FALSE,
287 .gui_gtk3_22_chatline_autocompletion =
TRUE,
291 .gui_gtk3_22_governor_range_min = -20,
292 .gui_gtk3_22_governor_range_max = 20,
293 .gui_gtk3_22_font_city_label =
"Monospace 8",
294 .gui_gtk3_22_font_notify_label =
"Monospace Bold 9",
295 .gui_gtk3_22_font_spaceship_label =
"Monospace 8",
296 .gui_gtk3_22_font_help_label =
"Sans Bold 10",
297 .gui_gtk3_22_font_help_link =
"Sans 9",
298 .gui_gtk3_22_font_help_text =
"Monospace 8",
299 .gui_gtk3_22_font_chatline =
"Monospace 8",
300 .gui_gtk3_22_font_beta_label =
"Sans Italic 10",
301 .gui_gtk3_22_font_small =
"Sans 9",
302 .gui_gtk3_22_font_comment_label =
"Sans Italic 9",
303 .gui_gtk3_22_font_city_names =
"Sans Bold 10",
304 .gui_gtk3_22_font_city_productions =
"Serif 10",
305 .gui_gtk3_22_font_reqtree_text =
"Serif 10",
309 .gui_gtk4_fullscreen =
FALSE,
310 .gui_gtk4_map_scrollbars =
FALSE,
311 .gui_gtk4_dialogs_on_top =
TRUE,
312 .gui_gtk4_show_task_icons =
TRUE,
313 .gui_gtk4_enable_tabs =
TRUE,
314 .gui_gtk4_show_chat_message_time =
FALSE,
315 .gui_gtk4_new_messages_go_to_top =
FALSE,
316 .gui_gtk4_show_message_window_buttons =
TRUE,
317 .gui_gtk4_metaserver_tab_first =
FALSE,
318 .gui_gtk4_allied_chat_only =
FALSE,
320 .gui_gtk4_small_display_layout =
FALSE,
321 .gui_gtk4_mouse_over_map_focus =
FALSE,
322 .gui_gtk4_chatline_autocompletion =
TRUE,
326 .gui_gtk4_governor_range_min = -20,
327 .gui_gtk4_governor_range_max = 20,
328 .gui_gtk4_font_city_label =
"Monospace 8",
329 .gui_gtk4_font_notify_label =
"Monospace Bold 9",
330 .gui_gtk4_font_spaceship_label =
"Monospace 8",
331 .gui_gtk4_font_help_label =
"Sans Bold 10",
332 .gui_gtk4_font_help_link =
"Sans 9",
333 .gui_gtk4_font_help_text =
"Monospace 8",
334 .gui_gtk4_font_chatline =
"Monospace 8",
335 .gui_gtk4_font_beta_label =
"Sans Italic 10",
336 .gui_gtk4_font_small =
"Sans 9",
337 .gui_gtk4_font_comment_label =
"Sans Italic 9",
338 .gui_gtk4_font_city_names =
"Sans Bold 10",
339 .gui_gtk4_font_city_productions =
"Serif 10",
340 .gui_gtk4_font_reqtree_text =
"Serif 10",
343 .gui_sdl_fullscreen =
FALSE,
345 .gui_sdl_do_cursor_animation =
TRUE,
346 .gui_sdl_use_color_cursors =
TRUE,
350 .gui_sdl2_fullscreen =
FALSE,
352 .gui_sdl2_swrenderer =
FALSE,
353 .gui_sdl2_do_cursor_animation =
TRUE,
354 .gui_sdl2_use_color_cursors =
TRUE,
355 .gui_sdl2_font_city_names =
"10",
356 .gui_sdl2_font_city_productions =
"10",
359 .gui_qt_fullscreen =
FALSE,
360 .gui_qt_show_preview =
TRUE,
361 .gui_qt_sidebar_left =
TRUE,
363 .gui_qt_font_default =
"Sans Serif,10,-1,5,75,0,0,0,0,0",
364 .gui_qt_font_notify_label =
"Monospace,8,-1,5,75,0,0,0,0,0",
365 .gui_qt_font_help_label =
"Sans Serif,9,-1,5,50,0,0,0,0,0",
366 .gui_qt_font_help_text =
"Monospace,8,-1,5,50,0,0,0,0,0",
367 .gui_qt_font_chatline =
"Monospace,8,-1,5,50,0,0,0,0,0",
368 .gui_qt_font_city_names =
"Sans Serif,10,-1,5,75,0,0,0,0,0",
369 .gui_qt_font_city_productions =
"Sans Serif,10,-1,5,50,1,0,0,0,0",
370 .gui_qt_font_reqtree_text =
"Sans Serif,10,-1,5,50,1,0,0,0,0",
371 .gui_qt_show_titlebar =
TRUE,
372 .gui_qt_wakeup_text =
"Wake up %1"
385 struct option * (*option_by_number) (int);
386 struct option * (*option_first) (void);
389 const char * (*category_name) (int);
463 const char * (*name) (
const struct option *);
464 const char * (*description) (
const struct option *);
465 const char * (*help_text) (
const struct option *);
473 const struct option_bool_vtable {
479 const struct option_int_vtable {
487 const struct option_str_vtable {
488 const char * (*get) (
const struct option *);
489 const char * (*def) (
const struct option *);
490 const struct strvec * (*values) (
const struct option *);
494 const struct option_enum_vtable {
495 int (*get) (
const struct option *);
496 int (*def) (
const struct option *);
497 const struct strvec * (*values) (
const struct option *);
499 int (*
cmp) (
const char *,
const char *);
502 const struct option_bitwise_vtable {
505 const struct strvec * (*values) (
const struct option *);
509 const struct option_font_vtable {
510 const char * (*get) (
const struct option *);
511 const char * (*def) (
const struct option *);
512 const char * (*target) (
const struct option *);
516 const struct option_color_vtable {
522 const struct option_video_mode_vtable {
538#define OPTION(poption) ((struct option *) (poption))
540#define OPTION_INIT(optset, spec_type, spec_table_var, common_table, \
541 spec_table, changed_cb, cb_data) { \
544 .common_vtable = &common_table, \
546 .spec_table_var = &spec_table \
548 .changed_callback = changed_cb, \
549 .callback_data = cb_data, \
552#define OPTION_BOOL_INIT(optset, common_table, bool_table, changed_cb) \
553 OPTION_INIT(optset, OT_BOOLEAN, bool_vtable, common_table, bool_table, \
555#define OPTION_INT_INIT(optset, common_table, int_table, changed_cb) \
556 OPTION_INIT(optset, OT_INTEGER, int_vtable, common_table, int_table, \
558#define OPTION_STR_INIT(optset, common_table, str_table, changed_cb, cb_data) \
559 OPTION_INIT(optset, OT_STRING, str_vtable, common_table, str_table, \
561#define OPTION_ENUM_INIT(optset, common_table, enum_table, changed_cb) \
562 OPTION_INIT(optset, OT_ENUM, enum_vtable, common_table, enum_table, \
564#define OPTION_BITWISE_INIT(optset, common_table, bitwise_table, \
566 OPTION_INIT(optset, OT_BITWISE, bitwise_vtable, common_table, \
567 bitwise_table, changed_cb, 0)
568#define OPTION_FONT_INIT(optset, common_table, font_table, changed_cb) \
569 OPTION_INIT(optset, OT_FONT, font_vtable, common_table, font_table, \
571#define OPTION_COLOR_INIT(optset, common_table, color_table, changed_cb) \
572 OPTION_INIT(optset, OT_COLOR, color_vtable, common_table, color_table, \
574#define OPTION_VIDEO_MODE_INIT(optset, common_table, video_mode_table, \
576 OPTION_INIT(optset, OT_VIDEO_MODE, video_mode_vtable, common_table, \
577 video_mode_table, changed_cb, 0)
637 return poption->
type;
920 const struct strvec *values;
942 const struct strvec *values;
1073 const struct strvec *values;
1311static const struct strvec *
1324static const struct strvec *
1337static unsigned client_option_bitwise_get(
const struct option *poption);
1338static unsigned client_option_bitwise_def(
const struct option *poption);
1339static const struct strvec *
1340 client_option_bitwise_pretty_names(
const struct option *poption);
1341static bool client_option_bitwise_set(
struct option *poption,
unsigned val);
1343static const struct option_bitwise_vtable client_option_bitwise_vtable = {
1344 .get = client_option_bitwise_get,
1345 .def = client_option_bitwise_def,
1346 .values = client_option_bitwise_pretty_names,
1347 .set = client_option_bitwise_set
1430 const struct strvec *(*
const val_accessor) (
const struct option *);
1437 const struct copt_val_name * (*
const name_accessor) (
int value);
1443 struct strvec *support_names, *pretty_names;
1444 const struct copt_val_name * (*
const name_accessor) (
int value);
1450 const char *
const def;
1466#define CLIENT_OPTION(poption) ((struct client_option *) (poption))
1484#define GEN_BOOL_OPTION(oname, odesc, ohelp, ocat, ospec, odef, ocb) \
1486 .base_option = OPTION_BOOL_INIT(&client_optset_static, \
1487 client_option_common_vtable, \
1488 client_option_bool_vtable, ocb), \
1490 .description = odesc, \
1491 .help_text = ohelp, \
1493 .specific = ospec, \
1496 .pvalue = &gui_options.oname, \
1520#define GEN_INT_OPTION(oname, odesc, ohelp, ocat, ospec, odef, omin, omax, ocb) \
1522 .base_option = OPTION_INT_INIT(&client_optset_static, \
1523 client_option_common_vtable, \
1524 client_option_int_vtable, ocb), \
1526 .description = odesc, \
1527 .help_text = ohelp, \
1529 .specific = ospec, \
1532 .pvalue = &gui_options.oname, \
1558#define GEN_STR_OPTION(oname, odesc, ohelp, ocat, ospec, odef, ocb, cbd) \
1560 .base_option = OPTION_STR_INIT(&client_optset_static, \
1561 client_option_common_vtable, \
1562 client_option_str_vtable, ocb, cbd), \
1564 .description = odesc, \
1565 .help_text = ohelp, \
1567 .specific = ospec, \
1570 .pvalue = gui_options.oname, \
1571 .size = sizeof(gui_options.oname), \
1573 .val_accessor = NULL \
1599#define GEN_STR_LIST_OPTION(oname, odesc, ohelp, ocat, ospec, odef, oacc, ocb, cbd) \
1601 .base_option = OPTION_STR_INIT(&client_optset_static, \
1602 client_option_common_vtable, \
1603 client_option_str_vtable, ocb, cbd), \
1605 .description = odesc, \
1606 .help_text = ohelp, \
1608 .specific = ospec, \
1611 .pvalue = gui_options.oname, \
1612 .size = sizeof(gui_options.oname), \
1614 .val_accessor = oacc \
1636#define GEN_ENUM_OPTION(oname, odesc, ohelp, ocat, ospec, odef, oacc, ocb) \
1638 .base_option = OPTION_ENUM_INIT(&client_optset_static, \
1639 client_option_common_vtable, \
1640 client_option_enum_vtable, ocb), \
1642 .description = odesc, \
1643 .help_text = ohelp, \
1645 .specific = ospec, \
1648 .pvalue = (int *) &gui_options.oname, \
1650 .support_names = NULL, \
1651 .pretty_names = NULL, \
1652 .name_accessor = oacc \
1674#define GEN_BITWISE_OPTION(oname, odesc, ohelp, ocat, ospec, odef, oacc, \
1677 .base_option = OPTION_BITWISE_INIT(&client_optset_static, \
1678 client_option_common_vtable, \
1679 client_option_bitwise_vtable, ocb), \
1681 .description = odesc, \
1682 .help_text = ohelp, \
1684 .specific = ospec, \
1687 .pvalue = &gui_options.oname, \
1689 .support_names = NULL, \
1690 .pretty_names = NULL, \
1691 .name_accessor = oacc \
1715#define GEN_FONT_OPTION(oname, otgt, odesc, ohelp, ocat, ospec, odef, ocb) \
1717 .base_option = OPTION_FONT_INIT(&client_optset_static, \
1718 client_option_common_vtable, \
1719 client_option_font_vtable, ocb), \
1721 .description = odesc, \
1722 .help_text = ohelp, \
1724 .specific = ospec, \
1727 .pvalue = gui_options.oname, \
1728 .size = sizeof(gui_options.oname), \
1751#define GEN_COLOR_OPTION(oname, odesc, ohelp, ocat, ospec, odef_fg, \
1754 .base_option = OPTION_COLOR_INIT(&client_optset_static, \
1755 client_option_common_vtable, \
1756 client_option_color_vtable, ocb), \
1758 .description = odesc, \
1759 .help_text = ohelp, \
1761 .specific = ospec, \
1764 .pvalue = &gui_options.oname, \
1765 .def = FT_COLOR(odef_fg, odef_bg) \
1786#define GEN_VIDEO_OPTION(oname, odesc, ohelp, ocat, ospec, odef_width, \
1789 .base_option = OPTION_VIDEO_MODE_INIT(&client_optset_static, \
1790 client_option_common_vtable, \
1791 client_option_video_mode_vtable, \
1794 .description = odesc, \
1795 .help_text = ohelp, \
1797 .specific = ospec, \
1800 .pvalue = &gui_options.oname, \
1801 .def = VIDEO_MODE(odef_width, odef_height) \
1819 {
"SPLIT",
N_(
"Split") },
1821 {
"SEPARATE",
N_(
"Separate") },
1823 {
"MERGED",
N_(
"Merged") }
1826 return (0 <= value && value <
ARRAY_SIZE(names)
1827 ? names + value : NULL);
1839 {
"ENABLED",
N_(
"Enabled") },
1841 {
"DISABLED",
N_(
"Disabled") },
1843 {
"RULESET",
N_(
"Ruleset") }
1846 return (0 <= value && value <
ARRAY_SIZE(names)
1847 ? names + value : NULL);
1864 N_(
"This is the default login username that will be used "
1865 "in the connection dialogs or with the -a command-line "
1869 N_(
"Automatically update \"Server\" and \"Server port\" "
1870 "options to match your latest connection, so by "
1871 "default you connect to the same server you used "
1872 "on the previous run. You should enable "
1873 "saving options on exit too, so that the automatic "
1874 "updates to the options get saved too."),
1878 N_(
"This is the default server hostname that will be used "
1879 "in the connection dialogs or with the -a command-line "
1884 N_(
"This is the default server port that will be used "
1885 "in the connection dialogs or with the -a command-line "
1887 COC_NETWORK, GUI_STUB, DEFAULT_SOCK_PORT, 0, 65535, NULL),
1890 N_(
"The metaserver is a host that the client contacts to "
1891 "find out about games on the internet. Don't change "
1892 "this from its default value unless you know what "
1896 N_(
"Periodically send an empty heartbeat message to the "
1897 "server to probe whether the connection is still up. "
1898 "This can help to make it obvious when the server has "
1899 "cut the connection due to a connectivity outage, if "
1900 "the client would otherwise sit idle for a long period."),
1904 N_(
"This is the soundset that will be used. Changing "
1905 "this is the same as using the -S command-line "
1906 "parameter. Use modpack installer utility to install "
1907 "additional soundsets."),
1911 N_(
"This is the musicset that will be used. Changing "
1912 "this is the same as using the -m command-line "
1913 "parameter. Use modpack installer utility to install "
1914 "additional musicsets."),
1918 N_(
"If you have a problem with sound, try changing "
1919 "the sound plugin. The new plugin won't take "
1920 "effect until you restart Freeciv. Changing this "
1921 "is the same as using the -P command-line option."),
1924 N_(
"The chat log file"),
1925 N_(
"The name of the chat log file."),
1931 N_(
"By changing this option you change the "
1936 N_(
"By changing this option you change the "
1941 N_(
"By changing this option you change the "
1946 N_(
"By changing this option you change the "
1951 N_(
"By changing this option you change the "
1962 N_(
"Select the tileset used with Square based maps. "
1963 "This may change the currently active tileset, if "
1964 "you are playing on such a map, in which "
1965 "case this is the same as using the -t "
1966 "command-line parameter. "
1967 "Use modpack installer utility to install "
1968 "additional tilesets."),
1972 N_(
"Select the tileset used with Hex maps. "
1973 "This may change the currently active tileset, if "
1974 "you are playing on such a map, in which "
1975 "case this is the same as using the -t "
1976 "command-line parameter. "
1977 "Use modpack installer utility to install "
1978 "additional tilesets."),
1982 N_(
"Select the tileset used with Iso-Hex maps. "
1983 "This may change the currently active tileset, if "
1984 "you are playing on such a map, in which "
1985 "case this is the same as using the -t "
1986 "command-line parameter."
1987 "Use modpack installer utility to install "
1988 "additional tilesets."),
1993 N_(
"Setting this option will draw a line at the city "
1998 N_(
"Setting this option will draw city output for every "
2003 N_(
"Setting this option will draw a grid over the map."),
2007 N_(
"Setting this option will display a 'city bar' "
2008 "containing useful information beneath each city. "
2009 "Disabling this option will display only the city's "
2010 "name and, optionally, production."),
2014 N_(
"Setting this option will draw the names of the cities "
2019 N_(
"Setting this option will draw in how many turns the "
2020 "cities will grow or shrink."),
2024 N_(
"Setting this option will draw what the cities are "
2025 "currently building on the map."),
2029 N_(
"Setting this option will draw how much gold is "
2030 "needed to buy the production of the cities."),
2034 N_(
"Setting this option will draw trade route lines "
2035 "between cities which have trade routes."),
2039 N_(
"Setting this option will draw the terrain."),
2043 N_(
"Setting this option will draw a line to separate the "
2044 "land from the ocean."),
2048 N_(
"Setting this option will draw the roads and the "
2049 "railroads on the map."),
2053 N_(
"Setting this option will draw the irrigation systems "
2058 N_(
"Setting this option will draw the mines on the map."),
2062 N_(
"Setting this option will draw the bases on the map."),
2066 N_(
"Setting this option will draw the resources on the "
2071 N_(
"Setting this option will draw the huts on the "
2076 N_(
"Setting this option will draw pollution and "
2077 "nuclear fallout on the map."),
2081 N_(
"Setting this option will draw the cities on the map."),
2085 N_(
"Setting this option will draw the units on the map."),
2089 N_(
"Solid unit background color"),
2090 N_(
"Setting this option will cause units on the map "
2091 "view to be drawn with a solid background color "
2092 "instead of the flag backdrop."),
2096 N_(
"Setting this option will draw a shield icon "
2097 "as the flags on units. If unset, the full flag will "
2101 N_(
"Setting this option will draw a numbers indicating "
2102 "size of the unit stacks. Not all clients support "
2106 N_(
"Setting this option will cause the currently focused "
2107 "unit(s) to always be drawn, even if units are not "
2108 "otherwise being drawn (for instance if 'Draw the units' "
2113 N_(
"Setting this option will draw the fog of war."),
2117 N_(
"Setting this option will draw the national borders."),
2122 N_(
"Setting this option will highlight tiles that the "
2123 "currently selected unit cannot enter unaided due to "
2124 "non-native terrain. (If multiple units are selected, "
2125 "only tiles that all of them can enter are indicated.)"),
2129 N_(
"Show dead players in Nations report"),
2130 N_(
"This option controls whether defeated nations are "
2131 "shown on the Nations report page."),
2135 N_(
"Set this option to have a \"bell\" event be generated "
2136 "at the start of a new turn. You can control the "
2137 "behavior of the \"bell\" event by editing the message "
2141 N_(
"Unit movement animation time (milliseconds)"),
2142 N_(
"This option controls how long unit \"animation\" takes "
2143 "when a unit moves on the map view. Set it to 0 to "
2144 "disable animation entirely."),
2147 N_(
"Mapview recentering time (milliseconds)"),
2148 N_(
"When the map view is recentered, it will slide "
2149 "smoothly over the map to its new position. This "
2150 "option controls how long this slide lasts. Set it to "
2151 "0 to disable mapview sliding entirely."),
2154 N_(
"Combat animation step time (milliseconds)"),
2155 N_(
"This option controls the speed of combat animation "
2156 "between units on the mapview. Set it to 0 to disable "
2157 "animation entirely."),
2160 N_(
"Show icons in the technology tree"),
2161 N_(
"Setting this option will display icons "
2162 "on the technology tree diagram. Turning "
2163 "this option off makes the technology tree "
2167 N_(
"Use curved lines in the technology tree"),
2168 N_(
"Setting this option make the technology tree "
2169 "diagram use curved lines to show technology "
2170 "relations. Turning this option off causes "
2171 "the lines to be drawn straight."),
2175 N_(
"Color to highlight your player/user name"),
2176 N_(
"If set, your player and user name in the new chat "
2177 "messages will be highlighted using this color as "
2178 "background. If not set, it will just not highlight "
2182 N_(
"Disable this option if you do not want to "
2183 "press the Turn Done button manually when watching "
2187 N_(
"Set this option to have the active unit centered "
2188 "automatically when the unit focus changes."),
2191 N_(
"Disable this option if you do not want to see "
2192 "automated units autocentered and animated."),
2195 N_(
"Set this option to have any combat be centered "
2196 "automatically. Disabling this will speed up the time "
2197 "between turns but may cause you to miss combat "
2201 N_(
"Set this option to have the client automatically "
2202 "recenter the map on a suitable location at the "
2203 "start of each turn."),
2206 N_(
"Set this option to have newly awoken units be "
2207 "focused automatically."),
2210 N_(
"If this option is set then a goto may be initiated "
2211 "by left-clicking and then holding down the mouse "
2212 "button while dragging the mouse onto a different "
2216 N_(
"Setting this option will make the game consider "
2217 "moving into unknown tiles. If not, then goto routes "
2218 "will detour around or be blocked by unknown tiles."),
2221 N_(
"Setting this option makes the mapview center on a "
2222 "city when its city dialog is popped up."),
2224 GEN_BOOL_OPTION(show_previous_turn_messages,
N_(
"Show messages from previous turn"),
2225 N_(
"Message Window shows messages also from previous turn. "
2226 "This makes sure you don't miss messages received in the end of "
2227 "the turn, just before the window gets cleared."),
2230 N_(
"Set this option to make the city production (as shown "
2231 "in the city dialog) to be more compact."),
2234 N_(
"Setting this option makes your turn end automatically "
2235 "when all your units are done moving."),
2238 N_(
"Disabling this option will make the names of newly "
2239 "founded cities be chosen automatically by the server."),
2242 N_(
"Setting this option will pop up a newly-founded "
2243 "city's city dialog automatically."),
2246 N_(
"If this option is enabled, when a unit arrives at "
2247 "a city where it can perform an action like "
2248 "establishing a trade route, helping build a wonder, or "
2249 "establishing an embassy, a window will pop up asking "
2250 "which action should be performed. "
2251 "Disabling this option means you will have to do the "
2252 "action manually by pressing either 'r' (for a trade "
2253 "route), 'b' (for building a wonder) or 'd' (for a "
2254 "spy action) when the unit is in the city."),
2257 N_(
"If this option is enabled, when a unit arrives at a "
2258 "target it can attack, a window will pop up asking "
2259 "which action should be performed even if an attack "
2260 "action is legal and no other interesting action are. "
2261 "This allows you to change your mind or to select an "
2262 "uninteresting action."),
2269 N_(
"Pop up actions when final move to allied tile"),
2270 N_(
"If this option is enabled the final move in a unit's"
2271 " orders to a tile with allied units or cities it can"
2272 " perform an action to is interpreted as an attempted"
2273 " action. This makes the action selection dialog pop up"
2274 " while the unit is at the adjacent tile."
2275 " This can, in cases where the action requires that"
2276 " the actor unit has moves left, save a turn."
2277 " The down side is that the unit remains adjacent to"
2278 " rather than inside the protection of an allied city"
2282 N_(
"This option controls whether the client should "
2283 "try to change the mouse cursor depending on what "
2284 "is being pointed at, as well as to indicate "
2285 "changes in the client or server state."),
2288 N_(
"If this option is enabled, when both cities and "
2289 "units are present in the selection rectangle, only "
2290 "cities will be selected. See the help on Controls."),
2293 N_(
"Clear unit orders on selection"),
2294 N_(
"Enabling this option will cause unit orders to be "
2295 "cleared as soon as one or more units are selected. If "
2296 "this option is disabled, busy units will not stop "
2297 "their current activity when selected. Giving them "
2298 "new orders will clear their current ones; pressing "
2299 "<space> once will clear their orders and leave them "
2300 "selected, and pressing <space> a second time will "
2304 N_(
"If this option is turned on, the vote bar will be "
2305 "displayed to show vote information."),
2308 N_(
"Always display the vote bar"),
2309 N_(
"If this option is turned on, the vote bar will never "
2310 "be hidden, even if there is no running vote."),
2313 N_(
"Do not show vote bar if not a player"),
2314 N_(
"If this option is enabled, the client won't show the "
2315 "vote bar if you are not a player."),
2318 N_(
"If this option is enabled, then new votes will go "
2319 "to the front of the vote list."),
2322 N_(
"Autoaccept tileset suggestions"),
2323 N_(
"If this option is enabled, any tileset suggested by "
2324 "the ruleset is automatically used; otherwise you "
2325 "are prompted to change tileset."),
2329 N_(
"Enable sound effects"),
2330 N_(
"Play sound effects, assuming there's suitable "
2331 "sound plugin and soundset with the sounds."),
2334 N_(
"Enable in-game music"),
2335 N_(
"Play music during the game, assuming there's suitable "
2336 "sound plugin and musicset with in-game tracks."),
2339 N_(
"Enable menu music"),
2340 N_(
"Play music while not in actual game, "
2341 "assuming there's suitable "
2342 "sound plugin and musicset with menu music tracks."),
2346 N_(
"Volume scale from 0-100"),
2352 N_(
"Autoaccept soundset suggestions"),
2353 N_(
"If this option is enabled, any soundset suggested by "
2354 "the ruleset is automatically used."),
2357 N_(
"Autoaccept musicset suggestions"),
2358 N_(
"If this option is enabled, any musicset suggested by "
2359 "the ruleset is automatically used."),
2363 N_(
"Background layer"),
2364 N_(
"The background layer of the overview shows just "
2368 N_(
"Terrain relief map layer"),
2369 N_(
"The relief layer shows all terrains on the map."),
2372 N_(
"Borders layer"),
2373 N_(
"The borders layer of the overview shows which tiles "
2374 "are owned by each player."),
2377 N_(
"Borders layer on ocean tiles"),
2378 N_(
"The borders layer of the overview are drawn on "
2379 "ocean tiles as well (this may look ugly with many "
2380 "islands). This option is only of interest if you "
2381 "have set the option \"Borders layer\" already."),
2385 N_(
"Enabling this will draw units on the overview."),
2389 N_(
"Enabling this will draw cities on the overview."),
2392 N_(
"Overview fog of war"),
2393 N_(
"Enabling this will show fog of war on the "
2400 N_(
"The image toolkit and file format used for "
2405 N_(
"Zoom factor for map images"),
2406 N_(
"The magnification used for map images."),
2409 N_(
"Show area within borders"),
2410 N_(
"If set, the territory of each nation is shown "
2411 "on the saved image."),
2415 N_(
"If set, the border of each nation is shown on the "
2420 N_(
"If set, cities are shown on the saved image."),
2423 N_(
"Show fog of war"),
2424 N_(
"If set, the extent of fog of war is shown on the "
2428 N_(
"Show full terrain"),
2429 N_(
"If set, terrain relief is shown with different colors "
2430 "in the saved image; otherwise, only land and water are "
2435 N_(
"If set, units are shown in the saved image."),
2438 N_(
"Map image file name"),
2439 N_(
"The base part of the filename for saved map images. "
2440 "A string identifying the game turn and map options will "
2526 "Sans Bold 10", NULL),
2538 N_(
"If this option is set the client will use the "
2539 "whole screen area for drawing."),
2542 N_(
"Disable this option to hide the scrollbars on the "
2546 N_(
"If this option is set then dialog windows will always "
2547 "remain in front of the main Freeciv window. "
2548 "Disabling this has no effect in fullscreen mode."),
2551 N_(
"Disabling this will turn off the unit and building "
2552 "icons in the worklist dialog and the production "
2553 "tab of the city dialog."),
2556 N_(
"If this option is enabled then report dialogs will "
2557 "be shown as separate tabs rather than in popup "
2561 N_(
"Show time for each chat message"),
2562 N_(
"If this option is enabled then all chat messages "
2563 "will be prefixed by a time string of the form "
2564 "[hour:minute:second]."),
2567 N_(
"New message events go to top of list"),
2568 N_(
"If this option is enabled, new events in the "
2569 "message window will appear at the top of the list, "
2570 "rather than being appended at the bottom."),
2573 N_(
"Show extra message window buttons"),
2574 N_(
"If this option is enabled, there will be two "
2575 "buttons displayed in the message window for "
2576 "inspecting a city and going to a location. If this "
2577 "option is disabled, these buttons will not appear "
2578 "(you can still double-click with the left mouse "
2579 "button or right-click on a row to inspect or goto "
2580 "respectively). This option will only take effect "
2581 "once the message window is closed and reopened."),
2584 N_(
"Metaserver tab first in network page"),
2585 N_(
"If this option is enabled, the metaserver tab will "
2586 "be the first notebook tab in the network page. This "
2587 "option requires a restart in order to take effect."),
2590 N_(
"Plain chat messages are sent to allies only"),
2591 N_(
"If this option is enabled, then plain messages "
2592 "typed into the chat entry while the game is "
2593 "running will only be sent to your allies. "
2594 "Otherwise plain messages will be sent as "
2595 "public chat messages. To send a public chat "
2596 "message with this option enabled, prefix the "
2597 "message with a single colon ':'. This option "
2598 "can also be set using a toggle button beside "
2599 "the chat entry (only visible in multiplayer "
2603 N_(
"Messages and Chat reports location"),
2606 N_(
"Controls where the Messages and Chat reports "
2607 "appear relative to the main view containing the map.\n"
2608 "'Split' allows all three to be seen simultaneously, "
2609 "which is best for multiplayer, but requires a large "
2610 "window to be usable.\n"
2611 "'Separate' puts Messages and Chat in a notebook "
2612 "separate from the main view, so that one of them "
2613 "can always be seen alongside the main view.\n"
2614 "'Merged' makes the Messages and Chat reports into "
2615 "tabs alongside the map and other reports; this "
2616 "allows a larger map view on small screens.\n"
2617 "This option requires a restart in order to take "
2622 N_(
"Arrange widgets for small displays"),
2623 N_(
"If this option is enabled, widgets in the main "
2624 "window will be arranged so that they take up the "
2625 "least amount of total screen space. Specifically, "
2626 "the left panel containing the overview, player "
2627 "status, and the unit information box will be "
2628 "extended over the entire left side of the window. "
2629 "This option requires a restart in order to take "
2632 N_(
"Mouse over the map widget selects it automatically"),
2633 N_(
"If this option is enabled, then the map will be "
2634 "focused when the mouse hovers over it."),
2637 N_(
"Player or user name autocompletion"),
2638 N_(
"If this option is turned on, the tabulation key "
2639 "will be used in the chatline to complete the word you "
2640 "are typing with the name of a player or a user."),
2643 N_(
"Width of the city dialog"),
2644 N_(
"This value is only used if the width of the city "
2645 "dialog is saved."),
2650 N_(
"Height of the city dialog"),
2651 N_(
"This value is only used if the height of the city "
2652 "dialog is saved."),
2657 N_(
"Popup tech help when gained"),
2658 N_(
"Controls if tech help should be opened when "
2659 "new tech has been gained.\n"
2660 "'Ruleset' means that behavior suggested by "
2665 N_(
"Minimum surplus for a governor"),
2666 N_(
"The lower limit of the range for requesting surpluses "
2667 "from the governor."),
2672 N_(
"Maximum surplus for a governor"),
2673 N_(
"The higher limit of the range for requesting surpluses "
2674 "from the governor."),
2680 N_(
"This font is used to display the city labels on city "
2686 N_(
"This font is used to display server reports such "
2687 "as the demographic report or historian publications."),
2691 N_(
"Spaceship Label"),
2692 N_(
"This font is used to display the spaceship widgets."),
2697 N_(
"This font is used to display the help headers in the "
2703 N_(
"This font is used to display the help links in the "
2709 N_(
"This font is used to display the help body text in "
2710 "the help window."),
2714 N_(
"Chatline Area"),
2715 N_(
"This font is used to display the text in the "
2721 N_(
"This font is used to display the beta label."),
2726 N_(
"This font is used for any small font request. For "
2727 "example, it is used for display the building lists "
2728 "in the city dialog, the Economy report or the Units "
2733 N_(
"Comment Label"),
2734 N_(
"This font is used to display comment labels, such as "
2735 "in the governor page of the city dialogs."),
2740 N_(
"This font is used to the display the city names "
2743 "Sans Bold 10", NULL),
2745 N_(
"City Productions"),
2746 N_(
"This font is used to display the city production "
2751 N_(
"Requirement Tree"),
2752 N_(
"This font is used to the display the requirement tree "
2753 "in the Research report."),
2759 N_(
"If this option is set the client will use the "
2760 "whole screen area for drawing."),
2763 N_(
"Disable this option to hide the scrollbars on the "
2767 N_(
"If this option is set then dialog windows will always "
2768 "remain in front of the main Freeciv window. "
2769 "Disabling this has no effect in fullscreen mode."),
2772 N_(
"Disabling this will turn off the unit and building "
2773 "icons in the worklist dialog and the production "
2774 "tab of the city dialog."),
2777 N_(
"If this option is enabled then report dialogs will "
2778 "be shown as separate tabs rather than in popup "
2782 N_(
"Show time for each chat message"),
2783 N_(
"If this option is enabled then all chat messages "
2784 "will be prefixed by a time string of the form "
2785 "[hour:minute:second]."),
2788 N_(
"New message events go to top of list"),
2789 N_(
"If this option is enabled, new events in the "
2790 "message window will appear at the top of the list, "
2791 "rather than being appended at the bottom."),
2794 N_(
"Show extra message window buttons"),
2795 N_(
"If this option is enabled, there will be two "
2796 "buttons displayed in the message window for "
2797 "inspecting a city and going to a location. If this "
2798 "option is disabled, these buttons will not appear "
2799 "(you can still double-click with the left mouse "
2800 "button or right-click on a row to inspect or goto "
2801 "respectively). This option will only take effect "
2802 "once the message window is closed and reopened."),
2805 N_(
"Metaserver tab first in network page"),
2806 N_(
"If this option is enabled, the metaserver tab will "
2807 "be the first notebook tab in the network page. This "
2808 "option requires a restart in order to take effect."),
2811 N_(
"Plain chat messages are sent to allies only"),
2812 N_(
"If this option is enabled, then plain messages "
2813 "typed into the chat entry while the game is "
2814 "running will only be sent to your allies. "
2815 "Otherwise plain messages will be sent as "
2816 "public chat messages. To send a public chat "
2817 "message with this option enabled, prefix the "
2818 "message with a single colon ':'. This option "
2819 "can also be set using a toggle button beside "
2820 "the chat entry (only visible in multiplayer "
2824 N_(
"Messages and Chat reports location"),
2827 N_(
"Controls where the Messages and Chat reports "
2828 "appear relative to the main view containing the map.\n"
2829 "'Split' allows all three to be seen simultaneously, "
2830 "which is best for multiplayer, but requires a large "
2831 "window to be usable.\n"
2832 "'Separate' puts Messages and Chat in a notebook "
2833 "separate from the main view, so that one of them "
2834 "can always be seen alongside the main view.\n"
2835 "'Merged' makes the Messages and Chat reports into "
2836 "tabs alongside the map and other reports; this "
2837 "allows a larger map view on small screens.\n"
2838 "This option requires a restart in order to take "
2843 N_(
"Arrange widgets for small displays"),
2844 N_(
"If this option is enabled, widgets in the main "
2845 "window will be arranged so that they take up the "
2846 "least amount of total screen space. Specifically, "
2847 "the left panel containing the overview, player "
2848 "status, and the unit information box will be "
2849 "extended over the entire left side of the window. "
2850 "This option requires a restart in order to take "
2853 N_(
"Mouse over the map widget selects it automatically"),
2854 N_(
"If this option is enabled, then the map will be "
2855 "focused when the mouse hovers over it."),
2858 N_(
"Player or user name autocompletion"),
2859 N_(
"If this option is turned on, the tabulation key "
2860 "will be used in the chatline to complete the word you "
2861 "are typing with the name of a player or a user."),
2864 N_(
"Width of the city dialog"),
2865 N_(
"This value is only used if the width of the city "
2866 "dialog is saved."),
2871 N_(
"Height of the city dialog"),
2872 N_(
"This value is only used if the height of the city "
2873 "dialog is saved."),
2878 N_(
"Popup tech help when gained"),
2879 N_(
"Controls if tech help should be opened when "
2880 "new tech has been gained.\n"
2881 "'Ruleset' means that behavior suggested by "
2886 N_(
"Minimum surplus for a governor"),
2887 N_(
"The lower limit of the range for requesting surpluses "
2888 "from the governor."),
2893 N_(
"Maximum surplus for a governor"),
2894 N_(
"The higher limit of the range for requesting surpluses "
2895 "from the governor."),
2901 N_(
"This font is used to display the city labels on city "
2907 N_(
"This font is used to display server reports such "
2908 "as the demographic report or historian publications."),
2912 N_(
"Spaceship Label"),
2913 N_(
"This font is used to display the spaceship widgets."),
2918 N_(
"This font is used to display the help headers in the "
2924 N_(
"This font is used to display the help links in the "
2930 N_(
"This font is used to display the help body text in "
2931 "the help window."),
2935 N_(
"Chatline Area"),
2936 N_(
"This font is used to display the text in the "
2942 N_(
"This font is used to display the beta label."),
2947 N_(
"This font is used for any small font request. For "
2948 "example, it is used for display the building lists "
2949 "in the city dialog, the Economy report or the Units "
2954 N_(
"Comment Label"),
2955 N_(
"This font is used to display comment labels, such as "
2956 "in the governor page of the city dialogs."),
2961 N_(
"This font is used to the display the city names "
2964 "Sans Bold 10", NULL),
2965 GEN_FONT_OPTION(gui_gtk3_22_font_city_productions,
"city_productions",
2966 N_(
"City Productions"),
2967 N_(
"This font is used to display the city production "
2972 N_(
"Requirement Tree"),
2973 N_(
"This font is used to the display the requirement tree "
2974 "in the Research report."),
2980 N_(
"If this option is set the client will use the "
2981 "whole screen area for drawing."),
2984 N_(
"Disable this option to hide the scrollbars on the "
2988 N_(
"If this option is set then dialog windows will always "
2989 "remain in front of the main Freeciv window. "
2990 "Disabling this has no effect in fullscreen mode."),
2993 N_(
"Disabling this will turn off the unit and building "
2994 "icons in the worklist dialog and the production "
2995 "tab of the city dialog."),
2998 N_(
"If this option is enabled then report dialogs will "
2999 "be shown as separate tabs rather than in popup "
3003 N_(
"Show time for each chat message"),
3004 N_(
"If this option is enabled then all chat messages "
3005 "will be prefixed by a time string of the form "
3006 "[hour:minute:second]."),
3009 N_(
"New message events go to top of list"),
3010 N_(
"If this option is enabled, new events in the "
3011 "message window will appear at the top of the list, "
3012 "rather than being appended at the bottom."),
3015 N_(
"Show extra message window buttons"),
3016 N_(
"If this option is enabled, there will be two "
3017 "buttons displayed in the message window for "
3018 "inspecting a city and going to a location. If this "
3019 "option is disabled, these buttons will not appear "
3020 "(you can still double-click with the left mouse "
3021 "button or right-click on a row to inspect or goto "
3022 "respectively). This option will only take effect "
3023 "once the message window is closed and reopened."),
3026 N_(
"Metaserver tab first in network page"),
3027 N_(
"If this option is enabled, the metaserver tab will "
3028 "be the first notebook tab in the network page. This "
3029 "option requires a restart in order to take effect."),
3032 N_(
"Plain chat messages are sent to allies only"),
3033 N_(
"If this option is enabled, then plain messages "
3034 "typed into the chat entry while the game is "
3035 "running will only be sent to your allies. "
3036 "Otherwise plain messages will be sent as "
3037 "public chat messages. To send a public chat "
3038 "message with this option enabled, prefix the "
3039 "message with a single colon ':'. This option "
3040 "can also be set using a toggle button beside "
3041 "the chat entry (only visible in multiplayer "
3045 N_(
"Messages and Chat reports location"),
3048 N_(
"Controls where the Messages and Chat reports "
3049 "appear relative to the main view containing the map.\n"
3050 "'Split' allows all three to be seen simultaneously, "
3051 "which is best for multiplayer, but requires a large "
3052 "window to be usable.\n"
3053 "'Separate' puts Messages and Chat in a notebook "
3054 "separate from the main view, so that one of them "
3055 "can always be seen alongside the main view.\n"
3056 "'Merged' makes the Messages and Chat reports into "
3057 "tabs alongside the map and other reports; this "
3058 "allows a larger map view on small screens.\n"
3059 "This option requires a restart in order to take "
3064 N_(
"Arrange widgets for small displays"),
3065 N_(
"If this option is enabled, widgets in the main "
3066 "window will be arranged so that they take up the "
3067 "least amount of total screen space. Specifically, "
3068 "the left panel containing the overview, player "
3069 "status, and the unit information box will be "
3070 "extended over the entire left side of the window. "
3071 "This option requires a restart in order to take "
3074 N_(
"Mouse over the map widget selects it automatically"),
3075 N_(
"If this option is enabled, then the map will be "
3076 "focused when the mouse hovers over it."),
3079 N_(
"Player or user name autocompletion"),
3080 N_(
"If this option is turned on, the tabulation key "
3081 "will be used in the chatline to complete the word you "
3082 "are typing with the name of a player or a user."),
3085 N_(
"Width of the city dialog"),
3086 N_(
"This value is only used if the width of the city "
3087 "dialog is saved."),
3092 N_(
"Height of the city dialog"),
3093 N_(
"This value is only used if the height of the city "
3094 "dialog is saved."),
3099 N_(
"Popup tech help when gained"),
3100 N_(
"Controls if tech help should be opened when "
3101 "new tech has been gained.\n"
3102 "'Ruleset' means that behavior suggested by "
3107 N_(
"Minimum surplus for a governor"),
3108 N_(
"The lower limit of the range for requesting surpluses "
3109 "from the governor."),
3114 N_(
"Maximum surplus for a governor"),
3115 N_(
"The higher limit of the range for requesting surpluses "
3116 "from the governor."),
3122 N_(
"This font is used to display the city labels on city "
3128 N_(
"This font is used to display server reports such "
3129 "as the demographic report or historian publications."),
3133 N_(
"Spaceship Label"),
3134 N_(
"This font is used to display the spaceship widgets."),
3139 N_(
"This font is used to display the help headers in the "
3145 N_(
"This font is used to display the help links in the "
3151 N_(
"This font is used to display the help body text in "
3152 "the help window."),
3156 N_(
"Chatline Area"),
3157 N_(
"This font is used to display the text in the "
3163 N_(
"This font is used to display the beta label."),
3168 N_(
"This font is used for any small font request. For "
3169 "example, it is used for display the building lists "
3170 "in the city dialog, the Economy report or the Units "
3175 N_(
"Comment Label"),
3176 N_(
"This font is used to display comment labels, such as "
3177 "in the governor page of the city dialogs."),
3182 N_(
"This font is used to the display the city names "
3185 "Sans Bold 10", NULL),
3187 N_(
"City Productions"),
3188 N_(
"This font is used to display the city production "
3193 N_(
"Requirement Tree"),
3194 N_(
"This font is used to the display the requirement tree "
3195 "in the Research report."),
3212 N_(
"If this option is set the client will use the "
3213 "whole screen area for drawing."),
3216 N_(
"This option controls the resolution of the "
3217 "selected screen."),
3220 N_(
"Usually hardware rendering is used when possible. "
3221 "With this option set, software rendering is always used."),
3224 N_(
"If this option is disabled, the cursor will "
3225 "always be displayed as static."),
3228 N_(
"If this option is disabled, the cursor will "
3229 "always be displayed in black and white."),
3233 N_(
"The size of font used to the display the city names "
3238 N_(
"City Productions"),
3239 N_(
"The size of font used to the display the city "
3240 "production names on the map."),
3246 N_(
"If this option is set the client will use the "
3247 "whole screen area for drawing."),
3250 N_(
"If this option is set the client will show a titlebar. "
3251 "If disabled, then no titlebar will be shown, and "
3252 "minimize/maximize/etc buttons will be placed on the "
3257 N_(
"This is default font"),
3259 "Sans Serif,10,-1,5,75,0,0,0,0,0",
font_changed_callback),
3262 N_(
"This font is used to display server reports such "
3263 "as the demographic report or historian publications."),
3265 "Monospace,9,-1,5,75,0,0,0,0,0",
font_changed_callback),
3268 N_(
"This font is used to display the help labels in the "
3271 "Sans Serif,9,-1,5,50,0,0,0,0,0",
font_changed_callback),
3274 N_(
"This font is used to display the help body text in "
3275 "the help window."),
3277 "Monospace,8,-1,5,50,0,0,0,0,0",
font_changed_callback),
3279 N_(
"Chatline Area"),
3280 N_(
"This font is used to display the text in the "
3283 "Monospace,8,-1,5,50,0,0,0,0,0",
font_changed_callback),
3286 N_(
"This font is used to the display the city names "
3289 "Sans Serif,10,-1,5,75,0,0,0,0,0",
font_changed_callback),
3291 N_(
"City Productions"),
3292 N_(
"This font is used to display the city production "
3295 "Sans Serif,10,-1,5,50,1,0,0,0,0",
font_changed_callback),
3297 N_(
"Requirement Tree"),
3298 N_(
"This font is used to the display the requirement tree "
3299 "in the Research report."),
3301 "Sans Serif,10,-1,5,50,1,0,0,0,0",
font_changed_callback),
3303 N_(
"If this option is set the client will show "
3304 "information and map preview of current savegame."),
3307 N_(
"If this option is set, the sidebar will be to the left "
3308 "of the map, otherwise to the right."),
3311 N_(
"Wake up sequence"),
3312 N_(
"String which will trigger sound in pregame page; "
3313 "%1 stands for username."),
3320#define client_options_iterate_all(poption) \
3322 const struct client_option *const poption##_max = \
3323 client_options + client_options_num; \
3324 struct client_option *client_##poption = client_options; \
3325 struct option *poption; \
3326 for (; client_##poption < poption##_max; client_##poption++) { \
3327 poption = OPTION(client_##poption);
3329#define client_options_iterate_all_end \
3344 while (poption <
max
3346 && poption->
specific != our_type) {
3350 return (poption <
max ? poption : NULL);
3387 return _(
"Graphics");
3390 return Q_(
"?map:Overview");
3394 return _(
"Interface");
3396 return _(
"Map Image");
3398 return _(
"Network");
3405 log_error(
"%s: invalid option category number %d.",
3406 __FUNCTION__, category);
3538 if (val < pcoption->
integer.min
3568static const struct strvec *
3572 ?
CLIENT_OPTION(poption)->
string.val_accessor(poption) : NULL);
3612static const struct strvec *
3654static unsigned client_option_bitwise_get(
const struct option *poption)
3662static unsigned client_option_bitwise_def(
const struct option *poption)
3671static const struct strvec *
3672 client_option_bitwise_pretty_names(
const struct option *poption)
3681static bool client_option_bitwise_set(
struct option *poption,
unsigned val)
3773 bool changed =
FALSE;
3775#define color_set(color_tgt, color) \
3776 if (NULL == color_tgt) { \
3777 if (NULL != color) { \
3778 color_tgt = fc_strdup(color); \
3782 if (NULL == color) { \
3783 free((void *) color_tgt); \
3786 } else if (0 != strcmp(color_tgt, color)) { \
3787 free((void *) color_tgt); \
3788 color_tgt = fc_strdup(color); \
3877 poption,
"client.%s",
3887 poption,
"client.%s",
3903 return ((
color.foreground =
3906 && (
color.background =
4059static const struct strvec *
4072static const struct strvec *
4086static const struct strvec *
4139 struct strvec *support_names;
4140 struct strvec *pretty_names;
4145#define SERVER_OPTION(poption) ((struct server_option *) (poption))
4208 if (NULL != poption->
name) {
4309#define handle_server_setting_common(psoption, packet) \
4310 psoption->is_changeable = packet->is_changeable; \
4311 psoption->setdef = packet->setdef; \
4312 if (psoption->is_visible != packet->is_visible) { \
4313 if (psoption->is_visible) { \
4314 need_gui_remove = TRUE; \
4315 } else if (packet->is_visible) { \
4316 need_gui_add = TRUE; \
4318 psoption->is_visible = packet->is_visible; \
4323 if (!psoption->desired_sent \
4324 && psoption->is_visible \
4325 && psoption->is_changeable \
4326 && is_server_running() \
4327 && packet->initial_setting) { \
4333 desired_settable_option_send(OPTION(poption)); \
4334 psoption->desired_sent = TRUE; \
4338 if (need_gui_remove) { \
4339 option_gui_remove(poption); \
4340 } else if (need_gui_add) { \
4341 option_gui_add(poption); \
4343 option_gui_update(poption); \
4354 bool need_gui_remove =
FALSE;
4355 bool need_gui_add =
FALSE;
4363 poption->
type = OT_BOOLEAN;
4367 "Server setting \"%s\" (nb %d) has type %s (%d), "
4370 option_type_name(poption->
type), poption->
type,
4371 option_type_name(OT_BOOLEAN), OT_BOOLEAN);
4389 bool need_gui_remove =
FALSE;
4390 bool need_gui_add =
FALSE;
4398 poption->
type = OT_INTEGER;
4402 "Server setting \"%s\" (nb %d) has type %s (%d), "
4405 option_type_name(poption->
type), poption->
type,
4406 option_type_name(OT_INTEGER), OT_INTEGER);
4426 bool need_gui_remove =
FALSE;
4427 bool need_gui_add =
FALSE;
4435 poption->
type = OT_STRING;
4439 "Server setting \"%s\" (nb %d) has type %s (%d), "
4442 option_type_name(poption->
type), poption->
type,
4443 option_type_name(OT_STRING), OT_STRING);
4471 bool need_gui_remove =
FALSE;
4472 bool need_gui_add =
FALSE;
4480 poption->
type = OT_ENUM;
4484 "Server setting \"%s\" (nb %d) has type %s (%d), "
4487 option_type_name(poption->
type), poption->
type,
4488 option_type_name(OT_ENUM), OT_ENUM);
4525 need_gui_remove =
TRUE;
4526 need_gui_add =
TRUE;
4538 need_gui_remove =
TRUE;
4539 need_gui_add =
TRUE;
4560 bool need_gui_remove =
FALSE;
4561 bool need_gui_add =
FALSE;
4569 poption->
type = OT_BITWISE;
4573 "Server setting \"%s\" (nb %d) has type %s (%d), "
4576 option_type_name(poption->
type), poption->
type,
4577 option_type_name(OT_BITWISE), OT_BITWISE);
4592 for (i = 0; i < packet->
bits_num; i++) {
4607 for (i = 0; i < packet->
bits_num; i++) {
4614 need_gui_remove =
TRUE;
4615 need_gui_add =
TRUE;
4621 for (i = 0; i < packet->
bits_num; i++) {
4627 need_gui_remove =
TRUE;
4628 need_gui_add =
TRUE;
4651 while (NULL != poption && poption < max && !poption->
is_visible) {
4655 return (poption <
max ? poption : NULL);
4785 val ?
"enabled" :
"disabled");
4829 if (val < psoption->
integer.min
4859static const struct strvec *
4901static const struct strvec *
4930 const char **pvalue,
4931 const char **pdefault)
4936 if (NULL != pvalue) {
4939 if (NULL != pdefault) {
4964static const struct strvec *
4975 char *buf,
size_t buf_len)
4981 if ((1 << bit) & val) {
4982 if (
'\0' != buf[0]) {
5014 char *val_buf,
size_t val_len,
5015 char *def_buf,
size_t def_len)
5020 if (NULL != val_buf && 0 < val_len) {
5024 if (NULL != def_buf && 0 < def_len) {
5043 E_IMP_BUY, E_IMP_SOLD, E_UNIT_BUY,
5044 E_UNIT_LOST_ATT, E_UNIT_WIN_ATT, E_GAME_START,
5045 E_CITY_BUILD, E_NEXT_YEAR,
5046 E_CITY_PRODUCTION_CHANGED,
5047 E_CITY_MAY_SOON_GROW, E_WORKLIST, E_AI_DEBUG
5050 E_NATION_SELECTED, E_CHAT_MSG, E_CHAT_ERROR, E_CONNECTION,
5051 E_LOG_ERROR, E_SETTING, E_VOTE_NEW, E_VOTE_RESOLVED, E_VOTE_ABORTED
5054 E_LOG_FATAL, E_SCRIPT, E_DEPRECATION_WARNING, E_MESSAGE_WALL
5058 for (i = 0; i <= event_type_max(); i++) {
5090 enum event_type
event;
5097 const enum event_type old_events[] = {
5098 E_CITY_CANTBUILD, E_CITY_LOST, E_CITY_LOVE, E_CITY_DISORDER,
5099 E_CITY_FAMINE, E_CITY_FAMINE_FEARED, E_CITY_GROWTH,
5100 E_CITY_MAY_SOON_GROW, E_CITY_AQUEDUCT, E_CITY_AQ_BUILDING,
5101 E_CITY_NORMAL, E_CITY_NUKED, E_CITY_CMA_RELEASE, E_CITY_GRAN_THROTTLE,
5102 E_CITY_TRANSFER, E_CITY_BUILD, E_CITY_PRODUCTION_CHANGED,
5103 E_WORKLIST, E_UPRISING, E_CIVIL_WAR, E_ANARCHY, E_FIRST_CONTACT,
5104 E_NEW_GOVERNMENT, E_LOW_ON_FUNDS, E_POLLUTION, E_REVOLT_DONE,
5105 E_REVOLT_START, E_SPACESHIP, E_MY_DIPLOMAT_BRIBE,
5106 E_DIPLOMATIC_INCIDENT, E_MY_DIPLOMAT_ESCAPE, E_MY_DIPLOMAT_EMBASSY,
5107 E_MY_DIPLOMAT_FAILED, E_MY_DIPLOMAT_INCITE, E_MY_DIPLOMAT_POISON,
5108 E_MY_DIPLOMAT_SABOTAGE, E_MY_DIPLOMAT_THEFT, E_ENEMY_DIPLOMAT_BRIBE,
5109 E_ENEMY_DIPLOMAT_EMBASSY, E_ENEMY_DIPLOMAT_FAILED,
5110 E_ENEMY_DIPLOMAT_INCITE, E_ENEMY_DIPLOMAT_POISON,
5111 E_ENEMY_DIPLOMAT_SABOTAGE, E_ENEMY_DIPLOMAT_THEFT,
5112 E_CARAVAN_ACTION, E_SCRIPT, E_BROADCAST_REPORT, E_GAME_END,
5113 E_GAME_START, E_NATION_SELECTED, E_DESTROYED, E_REPORT, E_TURN_BELL,
5114 E_NEXT_YEAR, E_GLOBAL_ECO, E_NUKE, E_HUT_BARB, E_HUT_CITY, E_HUT_GOLD,
5115 E_HUT_BARB_KILLED, E_HUT_MERC, E_HUT_SETTLER, E_HUT_TECH,
5116 E_HUT_BARB_CITY_NEAR, E_IMP_BUY, E_IMP_BUILD, E_IMP_AUCTIONED,
5117 E_IMP_AUTO, E_IMP_SOLD, E_TECH_GAIN, E_TECH_LEARNED, E_TREATY_ALLIANCE,
5118 E_TREATY_BROKEN, E_TREATY_CEASEFIRE, E_TREATY_PEACE,
5119 E_TREATY_SHARED_VISION, E_UNIT_LOST_ATT, E_UNIT_WIN_ATT, E_UNIT_BUY,
5120 E_UNIT_BUILT, E_UNIT_LOST_DEF, E_UNIT_WIN_DEF, E_UNIT_BECAME_VET,
5121 E_UNIT_UPGRADED, E_UNIT_RELOCATED, E_UNIT_ORDERS, E_WONDER_BUILD,
5122 E_WONDER_OBSOLETE, E_WONDER_STARTED, E_WONDER_STOPPED,
5123 E_WONDER_WILL_BE_BUILT, E_DIPLOMACY, E_TREATY_EMBASSY,
5124 E_BAD_COMMAND, E_SETTING, E_CHAT_MSG, E_MESSAGE_WALL, E_CHAT_ERROR,
5125 E_CONNECTION, E_AI_DEBUG
5127 const size_t old_events_num =
ARRAY_SIZE(old_events);
5129 for (i = 0; i < old_events_num; i++) {
5132 "%s.message_where_%02d", prefix, i);
5137 for (i = 0; i < num_events; i++) {
5147 p =
"E_UNIT_WIN_DEF";
5149 event = event_type_by_name(p, strcmp);
5150 if (!event_type_is_valid(
event)) {
5151 log_error(
"Event not supported: %s", p);
5156 "messages.event%d.where", i)) {
5170 enum event_type
event;
5173 for (
event = event_type_begin();
event != event_type_end();
5174 event = event_type_next(
event)) {
5176 "messages.event%d.name", i);
5178 "messages.event%d.where", i);
5193 "cma.preset%d.name", i);
5227 "cma.preset%d.minsurp%d", i, o);
5229 "cma.preset%d.factor%d", i, o);
5232 "cma.preset%d.reqhappy", i);
5234 "cma.preset%d.happyfactor", i);
5245 _(
"If you add a preset by hand,"
5246 " also update \"number_of_presets\""),
5247 "cma.number_of_presets");
5254#define OLD_OPTION_FILE_NAME ".civclientrc"
5256#define MID_OPTION_FILE_NAME ".freeciv-client-rc-%d.%d"
5257#define NEW_OPTION_FILE_NAME "freeciv-client-rc-%d.%d"
5260#define FIRST_MAJOR_NEW_OPTION_FILE_NAME 2
5261#define FIRST_MINOR_NEW_OPTION_FILE_NAME 6
5263#define FIRST_MAJOR_MID_OPTION_FILE_NAME 2
5264#define FIRST_MINOR_MID_OPTION_FILE_NAME 2
5266#define FIRST_MAJOR_NEW_BOOLEAN 2
5267#define FIRST_MINOR_NEW_BOOLEAN 3
5278 static char name_buffer[256];
5281 name = getenv(
"FREECIV_OPT");
5286#ifdef OPTION_FILE_NAME
5287 fc_strlcpy(name_buffer, OPTION_FILE_NAME,
sizeof(name_buffer));
5291 log_error(
_(
"Cannot find freeciv storage directory"));
5313 static char name_buffer[256];
5315 static int last_minors[] = {
5321#if MINOR_VERSION >= 90
5322 FC_STATIC_ASSERT(MAJOR_VERSION <
sizeof(last_minors) /
sizeof(
int), missing_last_minor);
5324 FC_STATIC_ASSERT(MAJOR_VERSION <=
sizeof(last_minors) /
sizeof(
int), missing_last_minor);
5327 *allow_digital_boolean =
FALSE;
5328 name = getenv(
"FREECIV_OPT");
5332#ifdef OPTION_FILE_NAME
5333 fc_strlcpy(name_buffer, OPTION_FILE_NAME,
sizeof(name_buffer));
5340 log_error(
_(
"Cannot find freeciv storage directory"));
5350 : minor >= 0); minor--) {
5353 if (0 ==
fc_stat(name_buffer, &buf)) {
5357 "loading from '%s' instead."),
5359 name_buffer + strlen(
name) + 1);
5365 minor = last_minors[major - 1];
5371 log_error(
_(
"Cannot find your home directory"));
5385 if (0 ==
fc_stat(name_buffer, &buf)) {
5387 "loading from '%s' instead."),
5389 name_buffer + strlen(
name) + 1);
5392 *allow_digital_boolean =
TRUE;
5401 if (0 ==
fc_stat(name_buffer, &buf)) {
5403 "loading from '%s' instead."),
5406 *allow_digital_boolean =
TRUE;
5416#undef OLD_OPTION_FILE_NAME
5417#undef MID_OPTION_FILE_NAME
5418#undef NEW_OPTION_FILE_NAME
5419#undef FIRST_MAJOR_NEW_OPTION_FILE_NAME
5420#undef FIRST_MINOR_NEW_OPTION_FILE_NAME
5421#undef FIRST_MAJOR_MID_OPTION_FILE_NAME
5422#undef FIRST_MINOR_MID_OPTION_FILE_NAME
5423#undef FIRST_MINOR_NEW_BOOLEAN
5429#define SPECHASH_TAG settable_options
5430#define SPECHASH_ASTR_KEY_TYPE
5431#define SPECHASH_ASTR_DATA_TYPE
5433#define settable_options_hash_iterate(hash, name, value) \
5434 TYPED_HASH_ITERATE(const char *, const char *, hash, name, value)
5435#define settable_options_hash_iterate_end HASH_ITERATE_END
5445 const struct section *psection;
5446 const struct entry_list *
entries;
5456 if (NULL == psection) {
5467 fc_strlcpy(buf, bval ?
"enabled" :
"disabled",
sizeof(buf));
5492 if (NULL ==
string) {
5493 log_error(
"Entry type variant of \"%s.%s\" is not supported.",
5538 char val_buf[1024], def_buf[1024];
5539 const char *value, *def_val;
5546 if (srv->
setdef != SETDEF_CHANGED) {
5577 def_buf,
sizeof(def_buf));
5587 if (NULL ==
value || NULL == def_val) {
5588 log_error(
"Option type %s (%d) not supported for '%s'.",
5605 const char *op_value,
5610 if (allow_replace) {
5623 char *buf,
size_t buf_len)
5627#define SETTING_CASE(ARG_name, ...) \
5628 if (0 == strcmp(ARG_name, name)) { \
5629 static const char *values[] = { __VA_ARGS__ }; \
5630 if (0 <= old_value && old_value < ARRAY_SIZE(values) \
5631 && NULL != values[old_value]) { \
5632 fc_strlcpy(buf, values[old_value], buf_len); \
5639 SETTING_CASE(
"topology",
"",
"WRAPX",
"WRAPY",
"WRAPX|WRAPY",
"ISO",
5640 "WRAPX|ISO",
"WRAPY|ISO",
"WRAPX|WRAPY|ISO",
"HEX",
5641 "WRAPX|HEX",
"WRAPY|HEX",
"WRAPX|WRAPY|HEX",
"ISO|HEX",
5642 "WRAPX|ISO|HEX",
"WRAPY|ISO|HEX",
"WRAPX|WRAPY|ISO|HEX");
5643 SETTING_CASE(
"generator", NULL,
"RANDOM",
"FRACTAL",
"ISLAND");
5644 SETTING_CASE(
"startpos",
"DEFAULT",
"SINGLE",
"2or3",
"ALL",
"VARIABLE");
5645 SETTING_CASE(
"borders",
"DISABLED",
"ENABLED",
"SEE_INSIDE",
"EXPAND");
5646 SETTING_CASE(
"diplomacy",
"ALL",
"HUMAN",
"AI",
"TEAM",
"DISABLED");
5647 SETTING_CASE(
"citynames",
"NO_RESTRICTIONS",
"PLAYER_UNIQUE",
5648 "GLOBAL_UNIQUE",
"NO_STEALING");
5649 SETTING_CASE(
"barbarians",
"DISABLED",
"HUTS_ONLY",
"NORMAL",
"FREQUENT",
5652 SETTING_CASE(
"compresstype",
"PLAIN",
"LIBZ",
"BZIP2");
5698 char desired_buf[256];
5699 const char *value_str;
5704 sizeof(desired_buf))) {
5705 desired = desired_buf;
5709 if (0 != strcmp(desired, value_str)) {
5716 char desired_buf[256], value_buf[256];
5721 sizeof(desired_buf))) {
5722 desired = desired_buf;
5726 sizeof(value_buf), NULL, 0);
5727 if (0 != strcmp(desired, value_buf)) {
5738 log_error(
"Option type %s (%d) not supported for '%s'.",
5754 if (poption != NULL) {
5781#define SPECHASH_TAG dialog_options
5782#define SPECHASH_ASTR_KEY_TYPE
5783#define SPECHASH_IDATA_TYPE bool
5784#define SPECHASH_UDATA_TO_IDATA FC_INT_TO_PTR
5785#define SPECHASH_IDATA_TO_UDATA FC_PTR_TO_INT
5786#define SPECHASH_VPTR_TO_IDATA FC_PTR_TO_INT
5788#define dialog_options_hash_iterate(hash, column, visible) \
5789 TYPED_HASH_ITERATE(const char *, intptr_t, hash, column, visible)
5790#define dialog_options_hash_iterate_end HASH_ITERATE_END
5799 const struct entry_list *
entries;
5800 const char *prefixes[] = {
"player_dlg_",
"city_report_", NULL };
5801 const char **prefix;
5810 for (prefix = prefixes; NULL != *prefix; prefix++) {
5811 if (0 == strncmp(*prefix,
entry_name(pentry), strlen(*prefix))
5908 const char *
const prefix =
"client";
5913 log_normal(
_(
"Didn't find the option file. Creating a new one."));
5947 "%s.save_options_on_exit", prefix);
5950 "%s.fullscreen_mode", prefix);
5955 "%s.migration_gtk3_from_gtk2", prefix);
5958 "%s.migration_gtk3_22_from_gtk3", prefix);
5961 "%s.migration_gtk4_from_gtk3_22", prefix);
5964 "%s.migration_sdl2_from_sdl", prefix);
5967 "%s.migration_gtk2_from_2_5", prefix);
5970 "%s.migration_gtk3_from_2_5", prefix);
5973 "%s.migration_qt_from_2_5", prefix);
5978 "%s.flag_qt_default_fonts_set", prefix);
5985 "%s.zoom_default_level", prefix);
6005 "%s.popup_caravan_arrival", prefix);
6018 "%s.do_combat_animation", prefix)) {
6028 for (i = num - 1; i >= 0; i--) {
6046 const char *msg, ...)
6050 va_start(args, msg);
6062 char dir_name[2048];
6065 if (log_cb == NULL) {
6071 log_cb(
LOG_ERROR,
_(
"Save failed, cannot find a filename."));
6079 "client.save_options_on_exit");
6081 "deprecated",
"client.fullscreen_mode");
6085 "client.migration_gtk3_from_gtk2");
6087 "client.migration_gtk3_22_from_gtk3");
6089 "client.migration_gtk4_from_gtk3_22");
6091 "client.migration_sdl2_from_sdl");
6093 "client.migration_gtk2_from_2_5");
6095 "client.migration_gtk3_from_2_5");
6097 "client.migration_qt_from_2_5");
6101 "client.flag_qt_default_fonts_set");
6116 "client.zoom_default_level");
6120 "client.default_tileset_name");
6142 log_cb(
LOG_ERROR,
_(
"Saving options failed, cannot create directory %s"),
6151 log_cb(
LOG_ERROR,
_(
"Saving options failed, cannot write to file %s"),
name);
6169 for (val=0; (
name = acc(val)); val++) {
6197 int new_default =
MAX(
MIN(int_def, int_max), int_min);
6199 log_error(
"option %s has default value of %d, which is "
6200 "out of its range [%d; %d], changing to %d.",
6204 *((
int *) &(pcoption->
integer.
def)) = new_default;
6211 *((
const char **) &(pcoption->
string.
def)) =
6219 log_error(
"Invalid NULL default string for option %s.",
6222 *((
const char **) &(pcoption->
string.
def)) =
6253 if (NULL !=
pcolor->foreground) {
6256 if (NULL !=
pcolor->background) {
6354 if (pplayer != NULL &&
is_ai(pplayer)
6392#ifndef FREECIV_NDEBUG
6396 log_normal(
"Error setting the value for %s (%s). Restoring the default "
6400#ifndef FREECIV_NDEBUG
6406 "Failed to reset the option \"%s\".",
6408#ifndef FREECIV_NDEBUG
6414 "Failed to restore mapimg definition for option \"%s\".",
6460 return (2 == sscanf(buf,
"%dx%d", &mode->
width, &mode->
height));
6476 const char *tsn = NULL;
6478 switch (topology_id & (TF_ISO | TF_HEX)) {
6486 case TF_ISO | TF_HEX:
6503 const char *optname =
"<not set>";
6509 optname =
"default_tileset_square_name";
6513 optname =
"default_tileset_hex_name";
6517 optname =
"default_tileset_isohex_name";
6524 log_error(
"Unknown option name \"%s\" in option_set_default_ts()", optname);
6550 if (val == NULL || val[0] ==
'\0') {
6572 log_debug(
"Setting tileset for square topologies.");
6577 log_debug(
"Setting tileset for hex topology.");
6581 log_debug(
"Setting tileset for isohex topology.");
struct @124::my_agent entries[MAX_AGENTS]
void audio_set_volume(double volume)
const struct strvec * get_musicset_list(const struct option *poption)
const struct strvec * get_soundset_list(const struct option *poption)
const struct strvec * get_soundplugin_list(const struct option *poption)
struct canvas int int struct sprite bool int int fog_y struct canvas struct sprite struct color * pcolor
int send_chat_printf(const char *format,...)
void output_window_vprintf(const struct ft_color color, const char *format, va_list args)
static int cmp(int v1, int v2)
#define output_type_iterate(output)
#define output_type_iterate_end
int num_city_report_spec(void)
const char * city_report_spec_tagname(int i)
bool * city_report_spec_show_ptr(int i)
void user_ended_turn(void)
enum client_states client_state(void)
char fc_password[MAX_LEN_PASSWORD]
bool mapimg_client_define(void)
void cm_init_parameter(struct cm_parameter *dest)
char * cmafec_preset_get_descr(int idx)
const struct cm_parameter * cmafec_preset_get_parameter(int idx)
void cmafec_preset_add(const char *descr_name, struct cm_parameter *pparam)
int cmafec_preset_num(void)
void create_default_cma_presets(void)
bool is_server_running(void)
#define log_deprecation(message,...)
const struct ft_color ftc_client
static struct ft_color ft_color_construct(const char *foreground, const char *background)
static bool static void void global_worklists_init(void)
void global_worklists_load(struct section_file *file)
void global_worklists_free(void)
void global_worklists_save(struct section_file *file)
enum gui_type get_gui_type(void)
void options_extra_init(void)
static GtkTextBuffer * help_text
void option_gui_remove(struct option *poption)
void option_dialog_popdown(const struct option_set *poptset)
void option_gui_update(struct option *poption)
void science_report_dialog_redraw(void)
void voteinfo_gui_update(void)
#define fc_assert_msg(condition, message,...)
#define fc_assert_ret(condition)
#define log_verbose(message,...)
#define fc_assert(condition)
#define fc_assert_ret_msg(condition, message,...)
#define fc_assert_ret_val(condition, val)
#define fc_assert_action(condition, action)
#define log_debug(message,...)
#define log_normal(message,...)
#define log_error(message,...)
#define FC_STATIC_ASSERT(cond, tag)
void update_turn_done_button_state(void)
bool mapimg_initialised(void)
const struct strvec * mapimg_get_format_list(void)
const char * mapimg_error(void)
void update_map_canvas_visible(void)
#define fc_calloc(n, esz)
void musicspec_reread_callback(struct option *poption)
void start_menu_music(const char *const tag, char *const alt_tag)
void stop_menu_music(void)
void start_style_music(void)
void stop_style_music(void)
static struct option * client_optset_option_first(void)
void handle_server_setting_const(const struct packet_server_setting_const *packet)
void handle_server_setting_int(const struct packet_server_setting_int *packet)
static int server_option_int_max(const struct option *poption)
static bool client_option_font_set(struct option *poption, const char *font)
unsigned option_bitwise_mask(const struct option *poption)
void fill_topo_ts_default(void)
#define FIRST_MAJOR_MID_OPTION_FILE_NAME
#define client_options_iterate_all_end
static const struct strvec * server_option_str_values(const struct option *poption)
static int client_option_enum_get(const struct option *poption)
void resend_desired_settable_options(void)
const struct strvec * option_str_values(const struct option *poption)
static void desired_settable_option_send(struct option *poption)
static const char * client_option_name(const struct option *poption)
static unsigned server_option_bitwise_def(const struct option *poption)
#define FIRST_MAJOR_NEW_OPTION_FILE_NAME
static const struct option_video_mode_vtable client_option_video_mode_vtable
#define GEN_STR_OPTION(oname, odesc, ohelp, ocat, ospec, odef, ocb, cbd)
static struct dialog_options_hash * dialog_options_hash
void option_changed(struct option *poption)
static void menu_music_enable_callback(struct option *poption)
static bool options_fully_initialized
static const struct option_str_vtable client_option_str_vtable
unsigned option_bitwise_def(const struct option *poption)
int option_enum_str_to_int(const struct option *poption, const char *str)
static const char * client_option_description(const struct option *poption)
int option_int_min(const struct option *poption)
static void option_save_output_window_callback(enum log_level lvl, const char *msg,...)
static void message_options_save(struct section_file *file, const char *prefix)
bool option_bool_def(const struct option *poption)
static struct option * client_option_next(const struct option *poption)
static const char * server_option_name(const struct option *poption)
const char * option_font_def(const struct option *poption)
const char * tileset_name_for_topology(int topology_id)
static const struct copt_val_name * gui_gtk_message_chat_location_name(int value)
static bool server_option_str_set(struct option *poption, const char *str)
static const struct copt_val_name * gui_popup_tech_help_name(int value)
struct option * optset_option_first(const struct option_set *poptset)
static const char * server_optset_category_name(int category)
const struct option_set * server_optset
static void view_option_changed_callback(struct option *poption)
static const char * client_option_font_target(const struct option *poption)
static void server_option_enum_support_name(const struct option *poption, const char **pvalue, const char **pdefault)
#define GEN_INT_OPTION(oname, odesc, ohelp, ocat, ospec, odef, omin, omax, ocb)
static const char * server_option_description(const struct option *poption)
static unsigned server_option_bitwise_get(const struct option *poption)
static bool client_option_is_changeable(const struct option *poption)
static int server_option_int_min(const struct option *poption)
static const char * client_optset_category_name(int category)
static struct option * server_option_next(const struct option *poption)
static struct client_option client_options[]
#define SERVER_OPTION(poption)
#define OLD_OPTION_FILE_NAME
static void settable_options_save(struct section_file *sf)
static bool server_option_bool_get(const struct option *poption)
bool option_reset(struct option *poption)
const char * option_description(const struct option *poption)
const char * option_help_text(const struct option *poption)
#define settable_options_hash_iterate_end
static const char * client_option_font_get(const struct option *poption)
static int server_option_enum_def(const struct option *poption)
static int server_option_int_def(const struct option *poption)
#define client_options_iterate_all(poption)
static int client_option_int_min(const struct option *poption)
static int server_options_categories_num
const char * option_enum_get_str(const struct option *poption)
static struct ft_color client_option_color_def(const struct option *poption)
static const struct strvec * client_option_enum_pretty_names(const struct option *poption)
static bool server_option_enum_set(struct option *poption, int val)
static void save_cma_presets(struct section_file *file)
struct ft_color option_color_get(const struct option *poption)
static struct video_mode client_option_video_mode_def(const struct option *poption)
static int client_option_int_get(const struct option *poption)
static char ** server_options_categories
int option_enum_get_int(const struct option *poption)
static void settable_options_load(struct section_file *sf)
int option_number(const struct option *poption)
static struct option * server_optset_option_first(void)
static struct settable_options_hash * settable_options_hash
int option_category(const struct option *poption)
static struct server_option * server_options
static const struct option_int_vtable server_option_int_vtable
static void options_dialogs_save(struct section_file *sf)
static struct option_set client_optset_static
static bool client_option_color_set(struct option *poption, struct ft_color color)
#define dialog_options_hash_iterate_end
static void save_cma_preset(struct section_file *file, int i)
static int client_optset_category_number(void)
static const char * client_option_str_def(const struct option *poption)
static bool client_option_video_mode_set(struct option *poption, struct video_mode mode)
void handle_server_setting_bitwise(const struct packet_server_setting_bitwise *packet)
static const struct option_font_vtable client_option_font_vtable
static bool client_option_enum_set(struct option *poption, int val)
void desired_settable_option_update(const char *op_name, const char *op_value, bool allow_replace)
void option_set_default_ts(struct tileset *t)
bool option_str_set(struct option *poption, const char *str)
void handle_server_setting_bool(const struct packet_server_setting_bool *packet)
static const struct strvec * client_option_str_values(const struct option *poption)
const struct option_set * client_optset
static const struct option_bool_vtable server_option_bool_vtable
static const struct option_bitwise_vtable server_option_bitwise_vtable
const char * option_name(const struct option *poption)
static const char * client_option_help_text(const struct option *poption)
static void message_options_init(void)
static int client_option_number(const struct option *poption)
void handle_server_setting_str(const struct packet_server_setting_str *packet)
int option_int_get(const struct option *poption)
static void client_option_save(struct option *poption, struct section_file *sf)
static int client_option_int_def(const struct option *poption)
static int server_option_category(const struct option *poption)
#define FIRST_MINOR_MID_OPTION_FILE_NAME
static const struct option_enum_vtable client_option_enum_vtable
static const struct option_str_vtable server_option_str_vtable
static int server_options_num
#define handle_server_setting_common(psoption, packet)
static const struct option_color_vtable client_option_color_vtable
bool option_enum_set_str(struct option *poption, const char *str)
static const struct strvec * server_option_enum_pretty(const struct option *poption)
static void server_option_bitwise_support_name(const struct option *poption, char *val_buf, size_t val_len, char *def_buf, size_t def_len)
bool option_color_set(struct option *poption, struct ft_color color)
#define SETTING_CASE(ARG_name,...)
static struct video_mode client_option_video_mode_get(const struct option *poption)
static bool is_ts_option_unset(const char *optname)
void option_set_changed_callback(struct option *poption, void(*callback)(struct option *))
#define NEW_OPTION_FILE_NAME
static bool server_option_bool_set(struct option *poption, bool val)
bool option_bool_set(struct option *poption, bool val)
bool option_is_changeable(const struct option *poption)
#define GEN_ENUM_OPTION(oname, odesc, ohelp, ocat, ospec, odef, oacc, ocb)
bool option_video_mode_set(struct option *poption, struct video_mode mode)
#define MID_OPTION_FILE_NAME
static int server_option_number(const struct option *poption)
#define dialog_options_hash_iterate(hash, column, visible)
#define FIRST_MINOR_NEW_BOOLEAN
static const char * server_option_str_get(const struct option *poption)
#define settable_options_hash_iterate(hash, name, value)
void option_set_gui_data(struct option *poption, void *data)
#define FIRST_MINOR_NEW_OPTION_FILE_NAME
#define GEN_BOOL_OPTION(oname, odesc, ohelp, ocat, ospec, odef, ocb)
const char * option_str_get(const struct option *poption)
struct option * optset_option_by_number(const struct option_set *poptset, int id)
static bool client_option_bool_get(const struct option *poption)
void * option_get_gui_data(const struct option *poption)
static const char * server_option_str_def(const struct option *poption)
static const struct option_common_vtable client_option_common_vtable
static bool settable_option_upgrade_value(const struct option *poption, int old_value, char *buf, size_t buf_len)
const struct strvec * option_enum_values(const struct option *poption)
static const struct strvec * get_mapimg_format_list(const struct option *poption)
static void sound_volume_callback(struct option *poption)
bool option_enum_set_int(struct option *poption, int val)
bool option_bool_get(const struct option *poption)
int optset_category_number(const struct option_set *poptset)
#define color_set(color_tgt, color)
static bool client_option_bool_def(const struct option *poption)
static const struct strvec * server_option_bitwise_pretty(const struct option *poption)
void server_options_init(void)
enum option_type option_type(const struct option *poption)
static int client_option_enum_def(const struct option *poption)
const char * option_enum_int_to_str(const struct option *poption, int val)
void options_dialogs_update(void)
int option_get_cb_data(const struct option *poption)
bool video_mode_to_string(char *buf, size_t buf_len, struct video_mode *mode)
static void options_dialogs_load(struct section_file *sf)
const struct option_set * option_optset(const struct option *poption)
void server_options_free(void)
struct video_mode option_video_mode_get(const struct option *poption)
static int server_option_enum_get(const struct option *poption)
struct option * option_next(const struct option *poption)
static struct option * client_optset_option_by_number(int id)
static void font_changed_callback(struct option *poption)
const char * option_str_def(const struct option *poption)
const char * optset_category_name(const struct option_set *poptset, int category)
int option_int_max(const struct option *poption)
#define GEN_COLOR_OPTION(oname, odesc, ohelp, ocat, ospec, odef_fg, odef_bg, ocb)
const char * option_enum_def_str(const struct option *poption)
static const char * client_option_str_get(const struct option *poption)
static const struct option_common_vtable server_option_common_vtable
static int server_optset_category_number(void)
static bool client_option_bool_set(struct option *poption, bool val)
static const char * server_option_help_text(const struct option *poption)
static const struct option_bool_vtable client_option_bool_vtable
static bool client_option_load(struct option *poption, struct section_file *sf)
bool option_font_set(struct option *poption, const char *font)
static bool server_option_bitwise_set(struct option *poption, unsigned val)
const char * option_font_target(const struct option *poption)
static const char * client_option_enum_secfile_str(secfile_data_t data, int val)
static struct server_option * server_option_next_valid(struct server_option *poption)
static void server_option_bitwise_support_base(const struct strvec *values, unsigned val, char *buf, size_t buf_len)
static void voteinfo_bar_callback(struct option *poption)
static struct option * server_optset_option_by_number(int id)
void options_save(option_save_log_callback log_cb)
static void message_options_free(void)
static const struct option_enum_vtable server_option_enum_vtable
bool string_to_video_mode(const char *buf, struct video_mode *mode)
const struct strvec * option_bitwise_values(const struct option *poption)
static bool server_option_int_set(struct option *poption, int val)
int messages_where[E_COUNT]
static void message_options_load(struct section_file *file, const char *prefix)
struct client_options gui_options
static void server_option_free(struct server_option *poption)
#define CLIENT_OPTION(poption)
#define GEN_FONT_OPTION(oname, otgt, odesc, ohelp, ocat, ospec, odef, ocb)
static struct option_set server_optset_static
void handle_server_setting_control(const struct packet_server_setting_control *packet)
static void mapimg_changed_callback(struct option *poption)
bool option_bitwise_set(struct option *poption, unsigned val)
static int server_option_int_get(const struct option *poption)
static void manual_turn_done_callback(struct option *poption)
static void reqtree_show_icons_callback(struct option *poption)
const char * option_font_get(const struct option *poption)
void desired_settable_options_update(void)
static void load_cma_preset(struct section_file *file, int i)
static bool client_option_str_set(struct option *poption, const char *str)
void handle_server_setting_enum(const struct packet_server_setting_enum *packet)
struct ft_color option_color_def(const struct option *poption)
static int client_option_int_max(const struct option *poption)
#define GEN_STR_LIST_OPTION(oname, odesc, ohelp, ocat, ospec, odef, oacc, ocb, cbd)
unsigned option_bitwise_get(const struct option *poption)
static bool server_option_is_changeable(const struct option *poption)
static struct ft_color client_option_color_get(const struct option *poption)
int option_enum_def_int(const struct option *poption)
struct option * optset_option_by_name(const struct option_set *poptset, const char *name)
static const int client_options_num
static bool client_option_int_set(struct option *poption, int val)
void options_dialogs_set(void)
bool option_int_set(struct option *poption, int val)
static struct client_option * client_option_next_valid(struct client_option *poption)
static const char * client_option_bitwise_secfile_str(secfile_data_t data, int val)
#define GEN_VIDEO_OPTION(oname, odesc, ohelp, ocat, ospec, odef_width, odef_height, ocb)
static const struct option_int_vtable client_option_int_vtable
static const char * client_option_font_def(const struct option *poption)
static const char * get_last_option_file_name(bool *allow_digital_boolean)
const char * option_category_name(const struct option *poption)
static void game_music_enable_callback(struct option *poption)
static const char * get_current_option_file_name(void)
int option_int_def(const struct option *poption)
static void options_init_names(const struct copt_val_name *(*acc)(int), struct strvec **support, struct strvec **pretty)
struct video_mode option_video_mode_def(const struct option *poption)
static bool server_option_bool_def(const struct option *poption)
#define GUI_GTK3_CITYDLG_DEFAULT_XSIZE
#define GUI_GTK3_22_GOV_RANGE_MIN_DEFAULT
#define GUI_GTK3_CITYDLG_MAX_YSIZE
#define GUI_GTK3_22_GOV_RANGE_MIN_MIN
#define GUI_GTK3_GOV_RANGE_MIN_DEFAULT
#define GUI_GTK4_GOV_RANGE_MIN_MAX
#define GUI_GTK3_22_CITYDLG_MIN_YSIZE
#define GUI_GTK4_CITYDLG_MAX_XSIZE
#define GUI_GTK4_GOV_RANGE_MIN_DEFAULT
#define GUI_GTK3_GOV_RANGE_MAX_DEFAULT
void(* option_save_log_callback)(enum log_level lvl, const char *msg,...)
#define FC_GTK3_DEFAULT_THEME_NAME
#define GUI_GTK4_CITYDLG_DEFAULT_XSIZE
#define GUI_GTK2_CITYDLG_DEFAULT_YSIZE
#define FC_GTK3_22_DEFAULT_THEME_NAME
#define GUI_GTK3_22_CITYDLG_DEFAULT_XSIZE
#define FC_QT_DEFAULT_THEME_NAME
#define GUI_GTK3_CITYDLG_MIN_YSIZE
#define GUI_GTK3_CITYDLG_MIN_XSIZE
#define GUI_GTK3_22_CITYDLG_DEFAULT_YSIZE
#define GUI_GTK4_CITYDLG_MIN_YSIZE
#define GUI_GTK2_CITYDLG_MIN_YSIZE
#define options_iterate(poptset, poption)
#define GUI_GTK2_CITYDLG_MAX_XSIZE
#define GUI_DEFAULT_CHAT_LOGFILE
#define GUI_GTK3_GOV_RANGE_MAX_MAX
#define GUI_GTK4_CITYDLG_MIN_XSIZE
#define GUI_GTK3_22_GOV_RANGE_MAX_DEFAULT
#define DEFAULT_METASERVER_OPTION
#define GUI_GTK3_CITYDLG_DEFAULT_YSIZE
static struct video_mode video_mode_construct(int width, int height)
#define GUI_GTK3_22_CITYDLG_MAX_XSIZE
#define GUI_GTK3_22_GOV_RANGE_MAX_MIN
#define GUI_GTK3_GOV_RANGE_MIN_MIN
@ GUI_GTK_MSGCHAT_SEPARATE
#define GUI_GTK3_GOV_RANGE_MIN_MAX
#define GUI_GTK3_22_CITYDLG_MIN_XSIZE
#define GUI_GTK4_GOV_RANGE_MAX_DEFAULT
#define MAJOR_NEW_OPTION_FILE_NAME
@ GUI_POPUP_TECH_HELP_RULESET
#define GUI_GTK3_GOV_RANGE_MAX_MIN
#define GUI_GTK2_CITYDLG_MAX_YSIZE
#define GUI_DEFAULT_MAPIMG_FILENAME
#define GUI_GTK3_22_CITYDLG_MAX_YSIZE
#define GUI_GTK4_GOV_RANGE_MIN_MIN
#define GUI_GTK4_CITYDLG_MAX_YSIZE
#define GUI_GTK4_CITYDLG_DEFAULT_YSIZE
#define options_iterate_end
#define GUI_GTK4_GOV_RANGE_MAX_MAX
#define FC_GTK4_DEFAULT_THEME_NAME
#define GUI_GTK3_22_GOV_RANGE_MIN_MAX
#define MINOR_NEW_OPTION_FILE_NAME
#define GUI_GTK2_CITYDLG_DEFAULT_XSIZE
#define FC_SDL2_DEFAULT_THEME_NAME
#define GUI_GTK3_22_GOV_RANGE_MAX_MAX
#define VIDEO_MODE(ARG_width, ARG_height)
@ OLAYER_BORDERS_ON_OCEAN
#define GUI_GTK3_CITYDLG_MAX_XSIZE
#define GUI_GTK4_GOV_RANGE_MAX_MIN
#define FC_GTK2_DEFAULT_THEME_NAME
#define GUI_GTK2_CITYDLG_MIN_XSIZE
void overview_redraw_callback(struct option *option)
struct player_dlg_column player_dlg_columns[]
const int num_player_dlg_columns
struct section_file * secfile_load(const char *filename, bool allow_duplicates)
void secfile_allow_digital_boolean(struct section_file *secfile, bool allow_digital_boolean)
struct section_file * secfile_new(bool allow_duplicates)
const char * secfile_error(void)
const char * section_name(const struct section *psection)
void secfile_destroy(struct section_file *secfile)
bool entry_bool_get(const struct entry *pentry, bool *value)
bool secfile_lookup_int(const struct section_file *secfile, int *ival, const char *path,...)
bool secfile_lookup_enum_data(const struct section_file *secfile, int *pvalue, bool bitwise, secfile_enum_name_data_fn_t name_fn, secfile_data_t data, const char *path,...)
const struct entry_list * section_entries(const struct section *psection)
const char * entry_name(const struct entry *pentry)
bool entry_str_get(const struct entry *pentry, const char **value)
const char * secfile_lookup_str(const struct section_file *secfile, const char *path,...)
float secfile_lookup_float_default(const struct section_file *secfile, float def, const char *path,...)
bool secfile_save(const struct section_file *secfile, const char *filename, int compression_level, enum fz_method compression_method)
bool secfile_lookup_bool_default(const struct section_file *secfile, bool def, const char *path,...)
int secfile_lookup_int_default(const struct section_file *secfile, int def, const char *path,...)
bool entry_int_get(const struct entry *pentry, int *value)
const char * secfile_name(const struct section_file *secfile)
struct section * secfile_section_by_name(const struct section_file *secfile, const char *name)
const char * secfile_lookup_str_default(const struct section_file *secfile, const char *def, const char *path,...)
bool secfile_lookup_bool(const struct section_file *secfile, bool *bval, const char *path,...)
enum entry_type entry_type_get(const struct entry *pentry)
#define secfile_insert_int(secfile, value, path,...)
#define secfile_insert_bool_comment(secfile, value, comment, path,...)
#define entry_list_iterate_end
#define secfile_insert_str(secfile, string, path,...)
#define secfile_insert_bool(secfile, value, path,...)
#define entry_list_iterate(entlist, pentry)
#define secfile_insert_enum_data(secfile, value, bitwise, name_fn, data, path,...)
#define secfile_insert_int_comment(secfile, value, comment, path,...)
#define secfile_insert_float(secfile, value, path,...)
const void * secfile_data_t
char * user_home_dir(void)
bool str_to_int(const char *str, int *pint)
bool make_dir(const char *pathname)
char * freeciv_storage_dir(void)
#define DIR_SEPARATOR_CHAR
void strvec_destroy(struct strvec *psv)
bool strvec_set(struct strvec *psv, size_t svindex, const char *string)
void strvec_append(struct strvec *psv, const char *string)
void strvec_reserve(struct strvec *psv, size_t reserve)
const char * strvec_get(const struct strvec *psv, size_t svindex)
struct strvec * strvec_new(void)
size_t strvec_size(const struct strvec *psv)
const struct copt_val_name *(*const name_accessor)(int value)
struct strvec * pretty_names
struct client_option::@224::@228 string
struct client_option::@224::@231 font
struct client_option::@224::@229 enumerator
struct strvec * support_names
struct ft_color *const pvalue
struct video_mode *const pvalue
struct client_option::@224::@233 video_mode
struct option base_option
struct client_option::@224::@230 bitwise
struct client_option::@224::@232 color
enum client_option_category category
struct client_option::@224::@226 boolean
struct client_option::@224::@227 integer
bool gui_gtk3_22_migrated_from_gtk3
bool gui_gtk2_migrated_from_2_5
bool gui_sdl2_migrated_from_sdl
bool sound_enable_menu_music
char default_tileset_hex_name[512]
char default_tileset_iso_name[512]
char default_tileset_name[512]
char default_tileset_overhead_name[512]
bool gui_gtk3_migrated_from_2_5
char default_tileset_square_name[512]
bool save_options_on_exit
int smooth_combat_step_msec
char default_tileset_isohex_name[512]
bool gui_qt_migrated_from_2_5
bool sound_enable_game_music
bool gui_qt_default_fonts_set
bool gui_gtk3_migrated_from_gtk2
char default_user_name[512]
bool gui_gtk4_migrated_from_gtk3_22
int minimal_surplus[O_LAST]
int(* number)(const struct option *)
const char *(* name)(const struct option *)
int(* category)(const struct option *)
const char *(* description)(const struct option *)
bool(* is_changeable)(const struct option *)
struct option *(* next)(const struct option *)
const char *(* help_text)(const struct option *)
struct option *(* option_by_number)(int)
struct option *(* option_first)(void)
const char *(* category_name)(int)
int(* category_number)(void)
const struct option::option_common_vtable * common_vtable
const struct option::@222::option_bool_vtable * bool_vtable
const struct option::@222::option_font_vtable * font_vtable
const struct option::@222::option_bitwise_vtable * bitwise_vtable
const struct option_set * poptset
const struct option::@222::option_str_vtable * str_vtable
const struct option::@222::option_enum_vtable * enum_vtable
const struct option::@222::option_int_vtable * int_vtable
const struct option::@222::option_color_vtable * color_vtable
void(* changed_callback)(struct option *option)
const struct option::@222::option_video_mode_vtable * video_mode_vtable
bool layers[OLAYER_COUNT]
char support_names[64][MAX_LEN_NAME]
char pretty_names[64][MAX_LEN_ENUM]
char short_help[MAX_LEN_PACKET]
char extra_help[MAX_LEN_PACKET]
char category_names[256][MAX_LEN_NAME]
char pretty_names[64][MAX_LEN_ENUM]
char support_names[64][MAX_LEN_NAME]
char default_val[MAX_LEN_PACKET]
bool allow_digital_boolean
struct strvec * support_names
struct server_option::@234::@239 enumerator
struct strvec * pretty_names
enum setting_default_level setdef
struct server_option::@234::@240 bitwise
struct server_option::@234::@238 string
struct server_option::@234::@236 boolean
struct server_option::@234::@237 integer
struct option base_option
int fc_snprintf(char *str, size_t n, const char *format,...)
size_t fc_strlcpy(char *dest, const char *src, size_t n)
int fc_strcasecmp(const char *str0, const char *str1)
size_t fc_strlcat(char *dest, const char *src, size_t n)
int fc_stat(const char *filename, struct stat *buf)
#define sz_strlcpy(dest, src)
void theme_reread_callback(struct option *poption)
const struct strvec * get_themes_list(const struct option *poption)
bool tilespec_try_read(const char *tileset_name, bool verbose, int topo_id, bool global_default)
const struct strvec * get_tileset_list(const struct option *poption)
const char * tileset_basename(const struct tileset *t)
void tilespec_reread_callback(struct option *poption)
int tileset_topo_index(struct tileset *t)