Skip to content

Commit

Permalink
Add and use few new macros in rc file writing code.
Browse files Browse the repository at this point in the history
  • Loading branch information
Laurent Monin committed Apr 15, 2008
1 parent 0612855 commit 5fb1b9f
Showing 1 changed file with 134 additions and 119 deletions.
253 changes: 134 additions & 119 deletions src/rcfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -278,174 +278,183 @@ void save_options(void)
return;
}

#define WRITE_BOOL(_name_) write_bool_option(ssi, #_name_, options->_name_)
#define WRITE_INT(_name_) write_int_option(ssi, #_name_, options->_name_)
#define WRITE_INT_UNIT(_name_, _unit_) write_int_unit_option(ssi, #_name_, options->_name_, _unit_)
#define WRITE_CHAR(_name_) write_char_option(ssi, #_name_, options->_name_)
#define WRITE_COLOR(_name_) write_color_option(ssi, #_name_, &options->_name_)

#define WRITE_SEPARATOR() secure_fputc(ssi, '\n')
#define WRITE_SUBTITLE(_title_) secure_fprintf(ssi, "\n\n##### "_title_" #####\n\n")

secure_fprintf(ssi, "######################################################################\n");
secure_fprintf(ssi, "# %30s config file version %7s #\n", GQ_APPNAME, VERSION);
secure_fprintf(ssi, "######################################################################\n");
secure_fputc(ssi, '\n');
WRITE_SEPARATOR();

secure_fprintf(ssi, "# Note: This file is autogenerated. Options can be changed here,\n");
secure_fprintf(ssi, "# but user comments and formatting will be lost.\n");
secure_fputc(ssi, '\n');
WRITE_SEPARATOR();

secure_fprintf(ssi, "##### General Options #####\n\n");
WRITE_SUBTITLE("General Options");

write_bool_option(ssi, "show_icon_names", options->show_icon_names);
secure_fputc(ssi, '\n');
WRITE_BOOL(show_icon_names);
WRITE_SEPARATOR();

write_bool_option(ssi, "tree_descend_subdirs", options->tree_descend_subdirs);
write_bool_option(ssi, "lazy_image_sync", options->lazy_image_sync);
write_bool_option(ssi, "update_on_time_change", options->update_on_time_change);
secure_fputc(ssi, '\n');
WRITE_BOOL(tree_descend_subdirs);
WRITE_BOOL(lazy_image_sync);
WRITE_BOOL(update_on_time_change);
WRITE_SEPARATOR();

write_bool_option(ssi, "startup_path_enable", options->startup_path_enable);
write_char_option(ssi, "startup_path", options->startup_path);
WRITE_BOOL(startup_path_enable);
WRITE_CHAR(startup_path);

write_bool_option(ssi, "progressive_key_scrolling", options->progressive_key_scrolling);
write_bool_option(ssi, "enable_metadata_dirs", options->enable_metadata_dirs);
WRITE_BOOL(progressive_key_scrolling);
WRITE_BOOL(enable_metadata_dirs);

write_int_option(ssi, "duplicates_similarity_threshold", options->duplicates_similarity_threshold);
secure_fputc(ssi, '\n');
WRITE_INT(duplicates_similarity_threshold);
WRITE_SEPARATOR();

write_bool_option(ssi, "mousewheel_scrolls", options->mousewheel_scrolls);
write_int_option(ssi, "open_recent_list_maxsize", options->open_recent_list_maxsize);
write_bool_option(ssi, "place_dialogs_under_mouse", options->place_dialogs_under_mouse);
WRITE_BOOL(mousewheel_scrolls);
WRITE_INT(open_recent_list_maxsize);
WRITE_BOOL(place_dialogs_under_mouse);


secure_fprintf(ssi, "\n##### File operations Options #####\n\n");
WRITE_SUBTITLE("File operations Options");

write_bool_option(ssi, "file_ops.enable_in_place_rename", options->file_ops.enable_in_place_rename);
write_bool_option(ssi, "file_ops.confirm_delete", options->file_ops.confirm_delete);
write_bool_option(ssi, "file_ops.enable_delete_key", options->file_ops.enable_delete_key);
write_bool_option(ssi, "file_ops.safe_delete_enable", options->file_ops.safe_delete_enable);
write_char_option(ssi, "file_ops.safe_delete_path", options->file_ops.safe_delete_path);
write_int_option(ssi, "file_ops.safe_delete_folder_maxsize", options->file_ops.safe_delete_folder_maxsize);
WRITE_BOOL(file_ops.enable_in_place_rename);
WRITE_BOOL(file_ops.confirm_delete);
WRITE_BOOL(file_ops.enable_delete_key);
WRITE_BOOL(file_ops.safe_delete_enable);
WRITE_CHAR(file_ops.safe_delete_path);
WRITE_INT(file_ops.safe_delete_folder_maxsize);


secure_fprintf(ssi, "\n##### Layout Options #####\n\n");
WRITE_SUBTITLE("Layout Options");

write_int_option(ssi, "layout.style", options->layout.style);
write_char_option(ssi, "layout.order", options->layout.order);
write_bool_option(ssi, "layout.view_as_icons", options->layout.view_as_icons);
write_bool_option(ssi, "layout.view_as_tree", options->layout.view_as_tree);
write_bool_option(ssi, "layout.show_thumbnails", options->layout.show_thumbnails);
secure_fputc(ssi, '\n');
WRITE_INT(layout.style);
WRITE_CHAR(layout.order);
WRITE_BOOL(layout.view_as_icons);
WRITE_BOOL(layout.view_as_tree);
WRITE_BOOL(layout.show_thumbnails);
WRITE_SEPARATOR();

write_bool_option(ssi, "layout.save_window_positions", options->layout.save_window_positions);
secure_fputc(ssi, '\n');
WRITE_BOOL(layout.save_window_positions);
WRITE_SEPARATOR();

write_int_option(ssi, "layout.main_window.x", options->layout.main_window.x);
write_int_option(ssi, "layout.main_window.y", options->layout.main_window.y);
write_int_option(ssi, "layout.main_window.w", options->layout.main_window.w);
write_int_option(ssi, "layout.main_window.h", options->layout.main_window.h);
write_bool_option(ssi, "layout.main_window.maximized", options->layout.main_window.maximized);
write_int_option(ssi, "layout.main_window.hdivider_pos", options->layout.main_window.hdivider_pos);
write_int_option(ssi, "layout.main_window.vdivider_pos", options->layout.main_window.vdivider_pos);
secure_fputc(ssi, '\n');
WRITE_INT(layout.main_window.x);
WRITE_INT(layout.main_window.y);
WRITE_INT(layout.main_window.w);
WRITE_INT(layout.main_window.h);
WRITE_BOOL(layout.main_window.maximized);
WRITE_INT(layout.main_window.hdivider_pos);
WRITE_INT(layout.main_window.vdivider_pos);
WRITE_SEPARATOR();

write_int_option(ssi, "layout.float_window.x", options->layout.float_window.x);
write_int_option(ssi, "layout.float_window.y", options->layout.float_window.y);
write_int_option(ssi, "layout.float_window.w", options->layout.float_window.w);
write_int_option(ssi, "layout.float_window.h", options->layout.float_window.h);
write_int_option(ssi, "layout.float_window.vdivider_pos", options->layout.float_window.vdivider_pos);
secure_fputc(ssi, '\n');
WRITE_INT(layout.float_window.x);
WRITE_INT(layout.float_window.y);
WRITE_INT(layout.float_window.w);
WRITE_INT(layout.float_window.h);
WRITE_INT(layout.float_window.vdivider_pos);
WRITE_SEPARATOR();

write_bool_option(ssi, "layout.tools_float", options->layout.tools_float);
write_bool_option(ssi, "layout.tools_hidden", options->layout.tools_hidden);
write_bool_option(ssi, "layout.tools_restore_state", options->layout.tools_restore_state);
secure_fputc(ssi, '\n');
WRITE_BOOL(layout.tools_float);
WRITE_BOOL(layout.tools_hidden);
WRITE_BOOL(layout.tools_restore_state);
WRITE_SEPARATOR();

write_bool_option(ssi, "layout.toolbar_hidden", options->layout.toolbar_hidden);
WRITE_BOOL(layout.toolbar_hidden);


secure_fprintf(ssi, "\n##### Image Options #####\n\n");
WRITE_SUBTITLE("Image Options");

secure_fprintf(ssi, "image.zoom_mode: ");
if (options->image.zoom_mode == ZOOM_RESET_ORIGINAL) secure_fprintf(ssi, "original\n");
if (options->image.zoom_mode == ZOOM_RESET_FIT_WINDOW) secure_fprintf(ssi, "fit\n");
if (options->image.zoom_mode == ZOOM_RESET_NONE) secure_fprintf(ssi, "dont_change\n");
write_bool_option(ssi, "image.zoom_2pass", options->image.zoom_2pass);
write_bool_option(ssi, "image.zoom_to_fit_allow_expand", options->image.zoom_to_fit_allow_expand);
write_int_option(ssi, "image.zoom_quality", options->image.zoom_quality);
write_int_option(ssi, "image.zoom_increment", options->image.zoom_increment);
write_bool_option(ssi, "image.fit_window_to_image", options->image.fit_window_to_image);
write_bool_option(ssi, "image.limit_window_size", options->image.limit_window_size);
write_int_option(ssi, "image.max_window_size", options->image.max_window_size);
write_bool_option(ssi, "image.limit_autofit_size", options->image.limit_autofit_size);
write_int_option(ssi, "image.max_autofit_size", options->image.max_autofit_size);
write_int_option(ssi, "image.scroll_reset_method", options->image.scroll_reset_method);
write_int_option(ssi, "image.tile_cache_max", options->image.tile_cache_max);
write_int_option(ssi, "image.dither_quality", options->image.dither_quality);
write_bool_option(ssi, "image.enable_read_ahead", options->image.enable_read_ahead);
write_bool_option(ssi, "image.exif_rotate_enable", options->image.exif_rotate_enable);
write_bool_option(ssi, "image.use_custom_border_color", options->image.use_custom_border_color);
write_color_option(ssi, "image.border_color", &options->image.border_color);


secure_fprintf(ssi, "\n##### Thumbnails Options #####\n\n");

write_int_option(ssi, "thumbnails.max_width", options->thumbnails.max_width);
write_int_option(ssi, "thumbnails.max_height", options->thumbnails.max_height);
write_bool_option(ssi, "thumbnails.enable_caching", options->thumbnails.enable_caching);
write_bool_option(ssi, "thumbnails.cache_into_dirs", options->thumbnails.cache_into_dirs);
write_bool_option(ssi, "thumbnails.fast", options->thumbnails.fast);
write_bool_option(ssi, "thumbnails.use_xvpics", options->thumbnails.use_xvpics);
write_bool_option(ssi, "thumbnails.spec_standard", options->thumbnails.spec_standard);
write_int_option(ssi, "thumbnails.quality", options->thumbnails.quality);


secure_fprintf(ssi, "\n##### File sorting Options #####\n\n");

write_int_option(ssi, "file_sort.method", (gint)options->file_sort.method);
write_bool_option(ssi, "file_sort.ascending", options->file_sort.ascending);
write_bool_option(ssi, "file_sort.case_sensitive", options->file_sort.case_sensitive);
WRITE_BOOL(image.zoom_2pass);
WRITE_BOOL(image.zoom_to_fit_allow_expand);
WRITE_INT(image.zoom_quality);
WRITE_INT(image.zoom_increment);
WRITE_BOOL(image.fit_window_to_image);
WRITE_BOOL(image.limit_window_size);
WRITE_INT(image.max_window_size);
WRITE_BOOL(image.limit_autofit_size);
WRITE_INT(image.max_autofit_size);
WRITE_INT(image.scroll_reset_method);
WRITE_INT(image.tile_cache_max);
WRITE_INT(image.dither_quality);
WRITE_BOOL(image.enable_read_ahead);
WRITE_BOOL(image.exif_rotate_enable);
WRITE_BOOL(image.use_custom_border_color);
WRITE_COLOR(image.border_color);


WRITE_SUBTITLE("Thumbnails Options");

WRITE_INT(thumbnails.max_width);
WRITE_INT(thumbnails.max_height);
WRITE_BOOL(thumbnails.enable_caching);
WRITE_BOOL(thumbnails.cache_into_dirs);
WRITE_BOOL(thumbnails.fast);
WRITE_BOOL(thumbnails.use_xvpics);
WRITE_BOOL(thumbnails.spec_standard);
WRITE_INT(thumbnails.quality);


WRITE_SUBTITLE("File sorting Options");

WRITE_INT(file_sort.method);
WRITE_BOOL(file_sort.ascending);
WRITE_BOOL(file_sort.case_sensitive);


secure_fprintf(ssi, "\n##### Fullscreen Options #####\n\n");
WRITE_SUBTITLE("Fullscreen Options");

write_int_option(ssi, "fullscreen.screen", options->fullscreen.screen);
write_bool_option(ssi, "fullscreen.clean_flip", options->fullscreen.clean_flip);
write_bool_option(ssi, "fullscreen.disable_saver", options->fullscreen.disable_saver);
write_bool_option(ssi, "fullscreen.above", options->fullscreen.above);
write_bool_option(ssi, "fullscreen.show_info", options->fullscreen.show_info);
write_char_option(ssi, "fullscreen.info", options->fullscreen.info);
WRITE_INT(fullscreen.screen);
WRITE_BOOL(fullscreen.clean_flip);
WRITE_BOOL(fullscreen.disable_saver);
WRITE_BOOL(fullscreen.above);
WRITE_BOOL(fullscreen.show_info);
WRITE_CHAR(fullscreen.info);

secure_fprintf(ssi, "\n##### Slideshow Options #####\n\n");
WRITE_SUBTITLE("Slideshow Options");

write_int_unit_option(ssi, "slideshow.delay", options->slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION);
write_bool_option(ssi, "slideshow.random", options->slideshow.random);
write_bool_option(ssi, "slideshow.repeat", options->slideshow.repeat);
WRITE_INT_UNIT(slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION);
WRITE_BOOL(slideshow.random);
WRITE_BOOL(slideshow.repeat);


secure_fprintf(ssi, "\n##### Collection Options #####\n\n");
WRITE_SUBTITLE("Collection Options");

write_bool_option(ssi, "collections.rectangular_selection", options->collections.rectangular_selection);
WRITE_BOOL(collections.rectangular_selection);


secure_fprintf(ssi, "\n##### Filtering Options #####\n\n");
WRITE_SUBTITLE("Filtering Options");

write_bool_option(ssi, "file_filter.show_hidden_files", options->file_filter.show_hidden_files);
write_bool_option(ssi, "file_filter.disable", options->file_filter.disable);
secure_fputc(ssi, '\n');
WRITE_BOOL(file_filter.show_hidden_files);
WRITE_BOOL(file_filter.disable);
WRITE_SEPARATOR();

filter_write_list(ssi);


secure_fprintf(ssi, "\n##### Sidecars Options #####\n\n");
WRITE_SUBTITLE("Sidecars Options");

sidecar_ext_write(ssi);


secure_fprintf(ssi, "\n##### Color Profiles #####\n\n");
WRITE_SUBTITLE("Color Profiles");

#ifndef HAVE_LCMS
secure_fprintf(ssi, "# NOTICE: %s was not built with support for color profiles,\n"
"# color profile options will have no effect.\n\n", GQ_APPNAME);
"# color profile options will have no effect.\n\n", GQ_APPNAME);
#endif

write_bool_option(ssi, "color_profile.enabled", options->color_profile.enabled);
write_bool_option(ssi, "color_profile.use_image", options->color_profile.use_image);
write_int_option(ssi, "color_profile.input_type", options->color_profile.input_type);
secure_fputc(ssi, '\n');
WRITE_BOOL(color_profile.enabled);
WRITE_BOOL(color_profile.use_image);
WRITE_INT(color_profile.input_type);
WRITE_SEPARATOR();

for (i = 0; i < COLOR_PROFILE_INPUTS; i++)
{
Expand All @@ -459,11 +468,12 @@ void save_options(void)
write_char_option(ssi, buf, options->color_profile.input_name[i]);
g_free(buf);
}
secure_fputc(ssi, '\n');
write_int_option(ssi, "color_profile.screen_type", options->color_profile.screen_type);
write_char_option(ssi, "color_profile.screen_file", options->color_profile.screen_file);

secure_fprintf(ssi, "\n##### External Programs #####\n");
WRITE_SEPARATOR();
WRITE_INT(color_profile.screen_type);
WRITE_CHAR(color_profile.screen_file);

WRITE_SUBTITLE("External Programs");
secure_fprintf(ssi, "# Maximum of %d programs (external_1 through external_%d)\n", GQ_EDITOR_GENERIC_SLOTS, GQ_EDITOR_GENERIC_SLOTS);
secure_fprintf(ssi, "# external_%d through external_%d are used for file ops\n", GQ_EDITOR_GENERIC_SLOTS + 1, GQ_EDITOR_SLOTS);
secure_fprintf(ssi, "# format: external_n: \"menu name\" \"command line\"\n\n");
Expand All @@ -479,14 +489,19 @@ void save_options(void)
}


secure_fprintf(ssi, "\n##### Exif Options #####\n# Display:\n# 0: never\n# 1: if set\n# 2: always\n\n");
WRITE_SUBTITLE("Exif Options");
secure_fprintf(ssi, "# Display: 0: never\n"
"# 1: if set\n"
"# 2: always\n\n");
for (i = 0; ExifUIList[i].key; i++)
{
secure_fprintf(ssi, "exif.display.");
write_int_option(ssi, (gchar *)ExifUIList[i].key, ExifUIList[i].current);
}

secure_fputc(ssi, '\n');
WRITE_SEPARATOR();
WRITE_SEPARATOR();

secure_fprintf(ssi, "######################################################################\n");
secure_fprintf(ssi, "# end of config file #\n");
secure_fprintf(ssi, "######################################################################\n");
Expand Down

0 comments on commit 5fb1b9f

Please sign in to comment.