Stop sharing requirement_unit_state_ereq().
[freeciv.git] / client / options.h
blobdce426dd43afdff4a797d2cc298a6a39e98dde79
1 /**********************************************************************
2 Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2, or (at your option)
6 any later version.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 ***********************************************************************/
13 #ifndef FC__OPTIONS_H
14 #define FC__OPTIONS_H
16 #ifdef __cplusplus
17 extern "C" {
18 #endif /* __cplusplus */
20 /* utility */
21 #include "support.h" /* bool type */
23 /* common */
24 #include "events.h"
25 #include "fc_types.h" /* enum gui_type */
26 #include "featured_text.h" /* struct ft_color */
27 #include "mapimg.h"
29 #define DEFAULT_METASERVER_OPTION "default"
31 struct video_mode {
32 int width;
33 int height;
36 #define VIDEO_MODE(ARG_width, ARG_height) \
37 { ARG_width, ARG_height }
39 /****************************************************************************
40 Constructor.
41 ****************************************************************************/
42 static inline struct video_mode video_mode_construct(int width, int height)
44 struct video_mode mode = VIDEO_MODE(width, height);
46 return mode;
49 enum {
50 /* Order must match strings in
51 * options.c:gui_gtk_message_chat_location_name() */
52 GUI_GTK_MSGCHAT_SPLIT,
53 GUI_GTK_MSGCHAT_SEPARATE,
54 GUI_GTK_MSGCHAT_MERGED
57 enum {
58 /* Order must match strings in
59 * options.c:gui_popup_tech_help_name() */
60 GUI_POPUP_TECH_HELP_ENABLED,
61 GUI_POPUP_TECH_HELP_DISABLED,
62 GUI_POPUP_TECH_HELP_RULESET
65 enum overview_layers {
66 OLAYER_BACKGROUND,
67 OLAYER_RELIEF,
68 OLAYER_BORDERS,
69 OLAYER_BORDERS_ON_OCEAN,
70 OLAYER_UNITS,
71 OLAYER_CITIES,
72 OLAYER_COUNT
75 /* Holds all information about the overview aka minimap. */
76 struct overview {
77 /* The following fields are controlled by mapview_common.c. */
78 double map_x0, map_y0; /* Origin of the overview, in natural coords. */
79 int width, height; /* Size in pixels. */
81 /* Holds the map, unwrapped. */
82 struct canvas *map;
84 /* A backing store for the window itself, wrapped. */
85 struct canvas *window;
87 bool fog;
88 bool layers[OLAYER_COUNT];
91 struct client_options
93 char default_user_name[512];
94 char default_server_host[512];
95 int default_server_port;
96 bool use_prev_server;
97 bool heartbeat_enabled;
98 char default_metaserver[512];
99 char default_tileset_overhead_name[512];
100 char default_tileset_iso_name[512];
101 char default_tileset_hex_name[512];
102 char default_tileset_isohex_name[512];
103 char default_sound_set_name[512];
104 char default_music_set_name[512];
105 char default_sound_plugin_name[512];
106 char default_chat_logfile[512];
108 bool save_options_on_exit;
110 /** Migrations **/
111 bool first_boot; /* There was no earlier options saved.
112 * This affects some migrations, but not all. */
113 char default_tileset_name[512]; /* pre-2.6 had just this one tileset name */
114 bool gui_gtk3_migrated_from_gtk2;
115 bool gui_gtk3_22_migrated_from_gtk3;
116 bool gui_gtk4_migrated_from_gtk3_22;
117 bool gui_sdl2_migrated_from_sdl;
118 bool gui_gtk2_migrated_from_2_5;
119 bool gui_gtk3_migrated_from_2_5;
120 bool gui_qt_migrated_from_2_5;
122 bool migrate_fullscreen;
124 /** Local Options: **/
126 bool solid_color_behind_units;
127 bool sound_bell_at_new_turn;
128 int smooth_move_unit_msec;
129 int smooth_center_slide_msec;
130 int smooth_combat_step_msec;
131 bool ai_manual_turn_done;
132 bool auto_center_on_unit;
133 bool auto_center_on_automated;
134 bool auto_center_on_combat;
135 bool auto_center_each_turn;
136 bool wakeup_focus;
137 bool goto_into_unknown;
138 bool center_when_popup_city;
139 bool show_previous_turn_messages;
140 bool concise_city_production;
141 bool auto_turn_done;
142 bool meta_accelerators;
143 bool ask_city_name;
144 bool popup_new_cities;
145 bool popup_actor_arrival;
146 bool popup_attack_actions;
147 bool update_city_text_in_refresh_tile;
148 bool keyboardless_goto;
149 bool enable_cursor_changes;
150 bool separate_unit_selection;
151 bool unit_selection_clears_orders;
152 struct ft_color highlight_our_names;
154 bool voteinfo_bar_use;
155 bool voteinfo_bar_always_show;
156 bool voteinfo_bar_hide_when_not_player;
157 bool voteinfo_bar_new_at_front;
159 bool autoaccept_tileset_suggestion;
160 bool autoaccept_soundset_suggestion;
161 bool autoaccept_musicset_suggestion;
163 bool sound_enable_effects;
164 bool sound_enable_menu_music;
165 bool sound_enable_game_music;
167 bool draw_city_outlines;
168 bool draw_city_output;
169 bool draw_map_grid;
170 bool draw_city_names;
171 bool draw_city_growth;
172 bool draw_city_productions;
173 bool draw_city_buycost;
174 bool draw_city_trade_routes;
175 bool draw_terrain;
176 bool draw_coastline;
177 bool draw_roads_rails;
178 bool draw_irrigation;
179 bool draw_mines;
180 bool draw_fortress_airbase;
181 bool draw_specials;
182 bool draw_huts;
183 bool draw_pollution;
184 bool draw_cities;
185 bool draw_units;
186 bool draw_focus_unit;
187 bool draw_fog_of_war;
188 bool draw_borders;
189 bool draw_native;
190 bool draw_full_citybar;
191 bool draw_unit_shields;
193 bool player_dlg_show_dead_players;
194 bool reqtree_show_icons;
195 bool reqtree_curved_lines;
197 /* options for map images */
198 char mapimg_format[64];
199 int mapimg_zoom;
200 bool mapimg_layer[MAPIMG_LAYER_COUNT];
201 char mapimg_filename[512];
203 bool zoom_set;
204 float zoom_default_level;
206 /* gui-gtk-2.0 client specific options. */
207 #define FC_GTK2_DEFAULT_THEME_NAME "Freeciv"
208 char gui_gtk2_default_theme_name[512];
209 bool gui_gtk2_fullscreen;
210 bool gui_gtk2_map_scrollbars;
211 bool gui_gtk2_dialogs_on_top;
212 bool gui_gtk2_show_task_icons;
213 bool gui_gtk2_enable_tabs;
214 bool gui_gtk2_better_fog;
215 bool gui_gtk2_show_chat_message_time;
216 bool gui_gtk2_new_messages_go_to_top;
217 bool gui_gtk2_show_message_window_buttons;
218 bool gui_gtk2_metaserver_tab_first;
219 bool gui_gtk2_allied_chat_only;
220 int gui_gtk2_message_chat_location; /* enum GUI_GTK_MSGCHAT_* */
221 bool gui_gtk2_small_display_layout;
222 bool gui_gtk2_mouse_over_map_focus;
223 bool gui_gtk2_chatline_autocompletion;
224 int gui_gtk2_citydlg_xsize;
225 int gui_gtk2_citydlg_ysize;
226 int gui_gtk2_popup_tech_help;
227 char gui_gtk2_font_city_label[512];
228 char gui_gtk2_font_notify_label[512];
229 char gui_gtk2_font_spaceship_label[512];
230 char gui_gtk2_font_help_label[512];
231 char gui_gtk2_font_help_link[512];
232 char gui_gtk2_font_help_text[512];
233 char gui_gtk2_font_chatline[512];
234 char gui_gtk2_font_beta_label[512];
235 char gui_gtk2_font_small[512];
236 char gui_gtk2_font_comment_label[512];
237 char gui_gtk2_font_city_names[512];
238 char gui_gtk2_font_city_productions[512];
239 char gui_gtk2_font_reqtree_text[512];
241 /* gui-gtk-3.0 client specific options. */
242 #define FC_GTK3_DEFAULT_THEME_NAME "Freeciv"
243 char gui_gtk3_default_theme_name[512];
244 bool gui_gtk3_fullscreen;
245 bool gui_gtk3_map_scrollbars;
246 bool gui_gtk3_dialogs_on_top;
247 bool gui_gtk3_show_task_icons;
248 bool gui_gtk3_enable_tabs;
249 bool gui_gtk3_show_chat_message_time;
250 bool gui_gtk3_new_messages_go_to_top;
251 bool gui_gtk3_show_message_window_buttons;
252 bool gui_gtk3_metaserver_tab_first;
253 bool gui_gtk3_allied_chat_only;
254 int gui_gtk3_message_chat_location; /* enum GUI_GTK_MSGCHAT_* */
255 bool gui_gtk3_small_display_layout;
256 bool gui_gtk3_mouse_over_map_focus;
257 bool gui_gtk3_chatline_autocompletion;
258 int gui_gtk3_citydlg_xsize;
259 int gui_gtk3_citydlg_ysize;
260 int gui_gtk3_popup_tech_help;
261 int gui_gtk3_governor_range_min;
262 int gui_gtk3_governor_range_max;
263 char gui_gtk3_font_city_label[512];
264 char gui_gtk3_font_notify_label[512];
265 char gui_gtk3_font_spaceship_label[512];
266 char gui_gtk3_font_help_label[512];
267 char gui_gtk3_font_help_link[512];
268 char gui_gtk3_font_help_text[512];
269 char gui_gtk3_font_chatline[512];
270 char gui_gtk3_font_beta_label[512];
271 char gui_gtk3_font_small[512];
272 char gui_gtk3_font_comment_label[512];
273 char gui_gtk3_font_city_names[512];
274 char gui_gtk3_font_city_productions[512];
275 char gui_gtk3_font_reqtree_text[512];
277 /* gui-gtk-3.22 client specific options. */
278 #define FC_GTK3_22_DEFAULT_THEME_NAME "Freeciv"
279 char gui_gtk3_22_default_theme_name[512];
280 bool gui_gtk3_22_fullscreen;
281 bool gui_gtk3_22_map_scrollbars;
282 bool gui_gtk3_22_dialogs_on_top;
283 bool gui_gtk3_22_show_task_icons;
284 bool gui_gtk3_22_enable_tabs;
285 bool gui_gtk3_22_show_chat_message_time;
286 bool gui_gtk3_22_new_messages_go_to_top;
287 bool gui_gtk3_22_show_message_window_buttons;
288 bool gui_gtk3_22_metaserver_tab_first;
289 bool gui_gtk3_22_allied_chat_only;
290 int gui_gtk3_22_message_chat_location; /* enum GUI_GTK_MSGCHAT_* */
291 bool gui_gtk3_22_small_display_layout;
292 bool gui_gtk3_22_mouse_over_map_focus;
293 bool gui_gtk3_22_chatline_autocompletion;
294 int gui_gtk3_22_citydlg_xsize;
295 int gui_gtk3_22_citydlg_ysize;
296 int gui_gtk3_22_popup_tech_help;
297 int gui_gtk3_22_governor_range_min;
298 int gui_gtk3_22_governor_range_max;
299 char gui_gtk3_22_font_city_label[512];
300 char gui_gtk3_22_font_notify_label[512];
301 char gui_gtk3_22_font_spaceship_label[512];
302 char gui_gtk3_22_font_help_label[512];
303 char gui_gtk3_22_font_help_link[512];
304 char gui_gtk3_22_font_help_text[512];
305 char gui_gtk3_22_font_chatline[512];
306 char gui_gtk3_22_font_beta_label[512];
307 char gui_gtk3_22_font_small[512];
308 char gui_gtk3_22_font_comment_label[512];
309 char gui_gtk3_22_font_city_names[512];
310 char gui_gtk3_22_font_city_productions[512];
311 char gui_gtk3_22_font_reqtree_text[512];
313 /* gui-gtk-3-x client specific options. */
314 #define FC_GTK4_DEFAULT_THEME_NAME "Freeciv"
315 char gui_gtk4_default_theme_name[512];
316 bool gui_gtk4_fullscreen;
317 bool gui_gtk4_map_scrollbars;
318 bool gui_gtk4_dialogs_on_top;
319 bool gui_gtk4_show_task_icons;
320 bool gui_gtk4_enable_tabs;
321 bool gui_gtk4_show_chat_message_time;
322 bool gui_gtk4_new_messages_go_to_top;
323 bool gui_gtk4_show_message_window_buttons;
324 bool gui_gtk4_metaserver_tab_first;
325 bool gui_gtk4_allied_chat_only;
326 int gui_gtk4_message_chat_location; /* enum GUI_GTK_MSGCHAT_* */
327 bool gui_gtk4_small_display_layout;
328 bool gui_gtk4_mouse_over_map_focus;
329 bool gui_gtk4_chatline_autocompletion;
330 int gui_gtk4_citydlg_xsize;
331 int gui_gtk4_citydlg_ysize;
332 int gui_gtk4_popup_tech_help;
333 int gui_gtk4_governor_range_min;
334 int gui_gtk4_governor_range_max;
335 char gui_gtk4_font_city_label[512];
336 char gui_gtk4_font_notify_label[512];
337 char gui_gtk4_font_spaceship_label[512];
338 char gui_gtk4_font_help_label[512];
339 char gui_gtk4_font_help_link[512];
340 char gui_gtk4_font_help_text[512];
341 char gui_gtk4_font_chatline[512];
342 char gui_gtk4_font_beta_label[512];
343 char gui_gtk4_font_small[512];
344 char gui_gtk4_font_comment_label[512];
345 char gui_gtk4_font_city_names[512];
346 char gui_gtk4_font_city_productions[512];
347 char gui_gtk4_font_reqtree_text[512];
349 /* gui-sdl client specific options.
350 * These are still kept just so users can migrate them to sdl2-client */
351 bool gui_sdl_fullscreen;
352 struct video_mode gui_sdl_screen;
353 bool gui_sdl_do_cursor_animation;
354 bool gui_sdl_use_color_cursors;
356 /* gui-sdl2 client specific options. */
357 #define FC_SDL2_DEFAULT_THEME_NAME "human"
358 char gui_sdl2_default_theme_name[512];
359 bool gui_sdl2_fullscreen;
360 struct video_mode gui_sdl2_screen;
361 bool gui_sdl2_swrenderer;
362 bool gui_sdl2_do_cursor_animation;
363 bool gui_sdl2_use_color_cursors;
365 /* gui-qt client specific options. */
366 #define FC_QT_DEFAULT_THEME_NAME "NightStalker"
367 bool gui_qt_fullscreen;
368 bool gui_qt_show_preview;
369 bool gui_qt_allied_chat_only;
370 bool gui_qt_sidebar_left;
371 char gui_qt_default_theme_name[512];
372 char gui_qt_font_city_label[512];
373 char gui_qt_font_default[512];
374 char gui_qt_font_notify_label[512];
375 char gui_qt_font_spaceship_label[512];
376 char gui_qt_font_help_label[512];
377 char gui_qt_font_help_link[512];
378 char gui_qt_font_help_text[512];
379 char gui_qt_font_help_title[512];
380 char gui_qt_font_chatline[512];
381 char gui_qt_font_beta_label[512];
382 char gui_qt_font_small[512];
383 char gui_qt_font_comment_label[512];
384 char gui_qt_font_city_names[512];
385 char gui_qt_font_city_productions[512];
386 char gui_qt_font_reqtree_text[512];
387 bool gui_qt_show_titlebar;
388 char gui_qt_wakeup_text[512];
390 struct overview overview;
393 extern struct client_options gui_options;
395 #define SPECENUM_NAME option_type
396 #define SPECENUM_VALUE0 OT_BOOLEAN
397 #define SPECENUM_VALUE1 OT_INTEGER
398 #define SPECENUM_VALUE2 OT_STRING
399 #define SPECENUM_VALUE3 OT_ENUM
400 #define SPECENUM_VALUE4 OT_BITWISE
401 #define SPECENUM_VALUE5 OT_FONT
402 #define SPECENUM_VALUE6 OT_COLOR
403 #define SPECENUM_VALUE7 OT_VIDEO_MODE
404 #include "specenum_gen.h"
407 struct option; /* Opaque type. */
408 struct option_set; /* Opaque type. */
410 typedef void (*option_save_log_callback)(enum log_level lvl, const char *msg, ...);
412 /* Main functions. */
413 void options_init(void);
414 void options_free(void);
415 void server_options_init(void);
416 void server_options_free(void);
417 void options_load(void);
418 void options_save(option_save_log_callback log_cb);
421 /* Option sets. */
422 extern const struct option_set *client_optset;
423 extern const struct option_set *server_optset;
425 struct option *optset_option_by_number(const struct option_set *poptset,
426 int id);
427 #define optset_option_by_index optset_option_by_number
428 struct option *optset_option_by_name(const struct option_set *poptset,
429 const char *name);
430 struct option *optset_option_first(const struct option_set *poptset);
432 int optset_category_number(const struct option_set *poptset);
433 const char *optset_category_name(const struct option_set *poptset,
434 int category);
437 /* Common option functions. */
438 const struct option_set *option_optset(const struct option *poption);
439 int option_number(const struct option *poption);
440 #define option_index option_number
441 const char *option_name(const struct option *poption);
442 const char *option_description(const struct option *poption);
443 const char *option_help_text(const struct option *poption);
444 enum option_type option_type(const struct option *poption);
445 int option_category(const struct option *poption);
446 const char *option_category_name(const struct option *poption);
447 bool option_is_changeable(const struct option *poption);
448 struct option *option_next(const struct option *poption);
450 bool option_reset(struct option *poption);
451 void option_set_changed_callback(struct option *poption,
452 void (*callback) (struct option *));
453 void option_changed(struct option *poption);
455 /* Option gui functions. */
456 void option_set_gui_data(struct option *poption, void *data);
457 void *option_get_gui_data(const struct option *poption);
459 /* Callback assistance */
460 int option_get_cb_data(const struct option *poption);
462 /* Option type OT_BOOLEAN functions. */
463 bool option_bool_get(const struct option *poption);
464 bool option_bool_def(const struct option *poption);
465 bool option_bool_set(struct option *poption, bool val);
467 /* Option type OT_INTEGER functions. */
468 int option_int_get(const struct option *poption);
469 int option_int_def(const struct option *poption);
470 int option_int_min(const struct option *poption);
471 int option_int_max(const struct option *poption);
472 bool option_int_set(struct option *poption, int val);
474 /* Option type OT_STRING functions. */
475 const char *option_str_get(const struct option *poption);
476 const char *option_str_def(const struct option *poption);
477 const struct strvec *option_str_values(const struct option *poption);
478 bool option_str_set(struct option *poption, const char *str);
480 /* Option type OT_ENUM functions. */
481 int option_enum_str_to_int(const struct option *poption, const char *str);
482 const char *option_enum_int_to_str(const struct option *poption, int val);
483 int option_enum_get_int(const struct option *poption);
484 const char *option_enum_get_str(const struct option *poption);
485 int option_enum_def_int(const struct option *poption);
486 const char *option_enum_def_str(const struct option *poption);
487 const struct strvec *option_enum_values(const struct option *poption);
488 bool option_enum_set_int(struct option *poption, int val);
489 bool option_enum_set_str(struct option *poption, const char *str);
491 /* Option type OT_BITWISE functions. */
492 unsigned option_bitwise_get(const struct option *poption);
493 unsigned option_bitwise_def(const struct option *poption);
494 unsigned option_bitwise_mask(const struct option *poption);
495 const struct strvec *option_bitwise_values(const struct option *poption);
496 bool option_bitwise_set(struct option *poption, unsigned val);
498 /* Option type OT_FONT functions. */
499 const char *option_font_get(const struct option *poption);
500 const char *option_font_def(const struct option *poption);
501 const char *option_font_target(const struct option *poption);
502 bool option_font_set(struct option *poption, const char *font);
504 /* Option type OT_COLOR functions. */
505 struct ft_color option_color_get(const struct option *poption);
506 struct ft_color option_color_def(const struct option *poption);
507 bool option_color_set(struct option *poption, struct ft_color color);
509 /* Option type OT_VIDEO_MODE functions. */
510 struct video_mode option_video_mode_get(const struct option *poption);
511 struct video_mode option_video_mode_def(const struct option *poption);
512 bool option_video_mode_set(struct option *poption, struct video_mode mode);
515 #define options_iterate(poptset, poption) \
517 struct option *poption = optset_option_first(poptset); \
518 for (; NULL != poption; poption = option_next(poption)) { \
520 #define options_iterate_end \
525 /** Desired settable options. **/
526 void desired_settable_options_update(void);
527 void desired_settable_option_update(const char *op_name,
528 const char *op_value,
529 bool allow_replace);
532 /** Dialog report options. **/
533 void options_dialogs_update(void);
534 void options_dialogs_set(void);
537 /** Message Options: **/
539 /* for specifying which event messages go where: */
540 #define NUM_MW 3
541 #define MW_OUTPUT 1 /* add to the output window */
542 #define MW_MESSAGES 2 /* add to the messages window */
543 #define MW_POPUP 4 /* popup an individual window */
545 extern int messages_where[]; /* OR-ed MW_ values [E_COUNT] */
548 /** Client options **/
550 #define GUI_DEFAULT_CHAT_LOGFILE "freeciv-chat.log"
552 /* gui-gtk2: [xy]size of the city dialog */
553 #define GUI_GTK2_CITYDLG_DEFAULT_XSIZE 770
554 #define GUI_GTK2_CITYDLG_MIN_XSIZE 256
555 #define GUI_GTK2_CITYDLG_MAX_XSIZE 4096
557 #define GUI_GTK2_CITYDLG_DEFAULT_YSIZE 512
558 #define GUI_GTK2_CITYDLG_MIN_YSIZE 128
559 #define GUI_GTK2_CITYDLG_MAX_YSIZE 4096
561 #define GUI_GTK_OVERVIEW_MIN_XSIZE 160
562 #define GUI_GTK_OVERVIEW_MIN_YSIZE 100
564 /* gui-gtk3: [xy]size of the city dialog */
565 #define GUI_GTK3_CITYDLG_DEFAULT_XSIZE 770
566 #define GUI_GTK3_CITYDLG_MIN_XSIZE 256
567 #define GUI_GTK3_CITYDLG_MAX_XSIZE 4096
569 #define GUI_GTK3_CITYDLG_DEFAULT_YSIZE 512
570 #define GUI_GTK3_CITYDLG_MIN_YSIZE 128
571 #define GUI_GTK3_CITYDLG_MAX_YSIZE 4096
573 #define GUI_GTK3_GOV_RANGE_MIN_DEFAULT -20
574 #define GUI_GTK3_GOV_RANGE_MIN_MIN -100
575 #define GUI_GTK3_GOV_RANGE_MIN_MAX 0
577 #define GUI_GTK3_GOV_RANGE_MAX_DEFAULT 20
578 #define GUI_GTK3_GOV_RANGE_MAX_MIN 0
579 #define GUI_GTK3_GOV_RANGE_MAX_MAX 100
581 /* gui-gtk3.22: [xy]size of the city dialog */
582 #define GUI_GTK3_22_CITYDLG_DEFAULT_XSIZE 770
583 #define GUI_GTK3_22_CITYDLG_MIN_XSIZE 256
584 #define GUI_GTK3_22_CITYDLG_MAX_XSIZE 4096
586 #define GUI_GTK3_22_CITYDLG_DEFAULT_YSIZE 512
587 #define GUI_GTK3_22_CITYDLG_MIN_YSIZE 128
588 #define GUI_GTK3_22_CITYDLG_MAX_YSIZE 4096
590 #define GUI_GTK3_22_GOV_RANGE_MIN_DEFAULT -20
591 #define GUI_GTK3_22_GOV_RANGE_MIN_MIN -100
592 #define GUI_GTK3_22_GOV_RANGE_MIN_MAX 0
594 #define GUI_GTK3_22_GOV_RANGE_MAX_DEFAULT 20
595 #define GUI_GTK3_22_GOV_RANGE_MAX_MIN 0
596 #define GUI_GTK3_22_GOV_RANGE_MAX_MAX 100
598 /* gui-gtk3x: [xy]size of the city dialog */
599 #define GUI_GTK4_CITYDLG_DEFAULT_XSIZE 770
600 #define GUI_GTK4_CITYDLG_MIN_XSIZE 256
601 #define GUI_GTK4_CITYDLG_MAX_XSIZE 4096
603 #define GUI_GTK4_CITYDLG_DEFAULT_YSIZE 512
604 #define GUI_GTK4_CITYDLG_MIN_YSIZE 128
605 #define GUI_GTK4_CITYDLG_MAX_YSIZE 4096
607 #define GUI_GTK4_GOV_RANGE_MIN_DEFAULT -20
608 #define GUI_GTK4_GOV_RANGE_MIN_MIN -100
609 #define GUI_GTK4_GOV_RANGE_MIN_MAX 0
611 #define GUI_GTK4_GOV_RANGE_MAX_DEFAULT 20
612 #define GUI_GTK4_GOV_RANGE_MAX_MIN 0
613 #define GUI_GTK4_GOV_RANGE_MAX_MAX 100
615 #define GUI_DEFAULT_MAPIMG_FILENAME "freeciv"
617 bool video_mode_to_string(char *buf, size_t buf_len, struct video_mode *mode);
618 bool string_to_video_mode(const char *buf, struct video_mode *mode);
620 struct tileset;
622 const char *tileset_name_for_topology(int topology_id);
623 void option_set_default_ts(struct tileset *t);
624 void fill_topo_ts_default(void);
626 #ifdef __cplusplus
628 #endif /* __cplusplus */
630 #endif /* FC__OPTIONS_H */