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)
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 ***********************************************************************/
18 #endif /* __cplusplus */
21 #include "support.h" /* bool type */
25 #include "fc_types.h" /* enum gui_type */
26 #include "featured_text.h" /* struct ft_color */
29 #define DEFAULT_METASERVER_OPTION "default"
36 #define VIDEO_MODE(ARG_width, ARG_height) \
37 { ARG_width, ARG_height }
39 /****************************************************************************
41 ****************************************************************************/
42 static inline struct video_mode
video_mode_construct(int width
, int height
)
44 struct video_mode mode
= VIDEO_MODE(width
, height
);
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
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
{
69 OLAYER_BORDERS_ON_OCEAN
,
75 /* Holds all information about the overview aka minimap. */
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. */
84 /* A backing store for the window itself, wrapped. */
85 struct canvas
*window
;
88 bool layers
[OLAYER_COUNT
];
93 char default_user_name
[512];
94 char default_server_host
[512];
95 int default_server_port
;
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
;
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
;
137 bool goto_into_unknown
;
138 bool center_when_popup_city
;
139 bool show_previous_turn_messages
;
140 bool concise_city_production
;
142 bool meta_accelerators
;
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
;
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
;
177 bool draw_roads_rails
;
178 bool draw_irrigation
;
180 bool draw_fortress_airbase
;
186 bool draw_focus_unit
;
187 bool draw_fog_of_war
;
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];
200 bool mapimg_layer
[MAPIMG_LAYER_COUNT
];
201 char mapimg_filename
[512];
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
);
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
,
427 #define optset_option_by_index optset_option_by_number
428 struct option
*optset_option_by_name(const struct option_set
*poptset
,
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
,
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
,
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: */
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
);
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);
628 #endif /* __cplusplus */
630 #endif /* FC__OPTIONS_H */