* This file describes the programming interface for the configuration module.
* It includes functions allowing to declare, get or set configuration options.
*****************************************************************************
- * Copyright (C) 1999, 2000 VideoLAN
+ * Copyright (C) 1999, 2000 the VideoLAN team
* $Id$
*
* Authors: Gildas Bazin <gbazin@videolan.org>
#define CONFIG_ITEM_FLOAT 0x0060 /* Float option */
#define CONFIG_ITEM_DIRECTORY 0x0070 /* Directory option */
#define CONFIG_ITEM_KEY 0x0080 /* Hot key option */
-#define CONFIG_ITEM_MODULE_LIST 0x0090 /* Module option */
-#define CONFIG_ITEM_MODULE_LIST_CAT 0x00A0 /* Module option */
+#define CONFIG_ITEM_MODULE_CAT 0x0090 /* Module option */
+#define CONFIG_ITEM_MODULE_LIST 0x00A0 /* Module option */
+#define CONFIG_ITEM_MODULE_LIST_CAT 0x00B0 /* Module option */
#define CONFIG_ITEM 0x00F0
#define SUBCAT_VIDEO_SUBPIC 305
#define CAT_INPUT 4
- #define SUBCAT_INPUT_ACCESS 401
- #define SUBCAT_INPUT_DEMUX 402
- #define SUBCAT_INPUT_VCODEC 403
- #define SUBCAT_INPUT_ACODEC 404
- #define SUBCAT_INPUT_SCODEC 405
- #define SUBCAT_INPUT_ADVANCED 406
+ #define SUBCAT_INPUT_GENERAL 401
+ #define SUBCAT_INPUT_ACCESS 402
+ #define SUBCAT_INPUT_ACCESS_FILTER 403
+ #define SUBCAT_INPUT_DEMUX 404
+ #define SUBCAT_INPUT_VCODEC 405
+ #define SUBCAT_INPUT_ACODEC 406
+ #define SUBCAT_INPUT_SCODEC 407
#define CAT_SOUT 5
#define SUBCAT_SOUT_GENERAL 501
char **ppsz_action_text; /* Friendly names for actions */
int i_action; /* actions list size */
+ /* Deprecated */
+ char *psz_current; /* Good option name */
+ vlc_bool_t b_strict; /* Transitionnal or strict */
/* Misc */
vlc_mutex_t *p_lock; /* Lock to use when modifying the config */
vlc_bool_t b_dirty; /* Dirty flag to indicate a config change */
char *psz_value_orig;
int i_value_orig;
float f_value_orig;
+
+ /* Option values loaded from config file */
+ char *psz_value_saved;
+ int i_value_saved;
+ float f_value_saved;
+ vlc_bool_t b_autosave; /* Config will be auto-saved at exit time */
};
/*****************************************************************************
VLC_EXPORT( int, __config_LoadCmdLine, ( vlc_object_t *, int *, char *[], vlc_bool_t ) );
VLC_EXPORT( char *, config_GetHomeDir, ( void ) );
+VLC_EXPORT( char *, config_GetUserDir, ( void ) );
VLC_EXPORT( int, __config_LoadConfigFile, ( vlc_object_t *, const char * ) );
VLC_EXPORT( int, __config_SaveConfigFile, ( vlc_object_t *, const char * ) );
VLC_EXPORT( void, __config_ResetAll, ( vlc_object_t * ) );
/* internal only */
int config_CreateDir( vlc_object_t *, char * );
+int config_AutoSaveConfigFile( vlc_object_t * );
/*****************************************************************************
* Macros used to build the configuration structure.
(i_config+11) * sizeof(module_config_t)); \
{ static module_config_t tmp = { CONFIG_ITEM_MODULE, psz_caps, name, '\0', text, longtext, psz_value }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
+#define add_module_cat( name, i_subcategory, psz_value, p_callback, text, longtext, advc ) \
+ i_config++; \
+ if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
+ (i_config+11) * sizeof(module_config_t)); \
+ { static module_config_t tmp = { CONFIG_ITEM_MODULE_CAT, NULL, name, '\0', text, longtext, psz_value, 0, 0.0, i_subcategory }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
#define add_module_list( name, psz_caps, psz_value, p_callback, text, longtext, advc ) \
i_config++; \
if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
(i_config+11) * sizeof(module_config_t)); \
{ static module_config_t tmp = { CONFIG_ITEM_BOOL, NULL, name, '\0', text, longtext, NULL, b_value }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
-
+/* For option renamed */
+#define add_deprecated( name, strict ) \
+ i_config++; \
+ if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
+ (i_config+11) * sizeof(module_config_t)); \
+ { static module_config_t tmp; \
+ p_config[ i_config ] = tmp; \
+ p_config[ i_config ].i_type = p_config[ i_config -1 ].i_type; \
+ p_config[ i_config ].psz_name = name; \
+ p_config[i_config].b_strict = strict; \
+ p_config[ i_config ].psz_current = p_config[ i_config-1].psz_current?p_config[ i_config-1 ].psz_current:p_config[ i_config-1 ].psz_name; }
+/* For option suppressed*/
+#define add_suppressed_bool( name ) \
+ i_config++; \
+ if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
+ (i_config+11) * sizeof(module_config_t)); \
+ { static module_config_t tmp; \
+ p_config[ i_config ] = tmp; \
+ p_config[ i_config ].i_type = CONFIG_ITEM_BOOL; \
+ p_config[ i_config ].psz_name = name; \
+ p_config[ i_config ].psz_current = "SUPPRESSED"; }
+
+#define add_suppressed_integer( name ) \
+ i_config++; \
+ if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
+ (i_config+11) * sizeof(module_config_t)); \
+ { static module_config_t tmp; \
+ p_config[ i_config ] = tmp; \
+ p_config[ i_config ].i_type = CONFIG_ITEM_INTEGER; \
+ p_config[ i_config ].psz_name = name; \
+ p_config[ i_config ].psz_current = "SUPPRESSED"; }
+#define add_suppressed_float( name ) \
+ i_config++; \
+ if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
+ (i_config+11) * sizeof(module_config_t)); \
+ { static module_config_t tmp; \
+ p_config[ i_config ] = tmp; \
+ p_config[ i_config ].i_type = CONFIG_ITEM_FLOAT; \
+ p_config[ i_config ].psz_name = name; \
+ p_config[ i_config ].psz_current = "SUPPRESSED"; }
+#define add_suppressed_string( name ) \
+ i_config++; \
+ if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
+ (i_config+11) * sizeof(module_config_t)); \
+ { static module_config_t tmp; \
+ p_config[ i_config ] = tmp; \
+ p_config[ i_config ].i_type = CONFIG_ITEM_STRING; \
+ p_config[ i_config ].psz_name = name; \
+ p_config[ i_config ].psz_current = "SUPPRESSED"; }
/* Modifier macros for the config options (used for fine tuning) */
#define change_short( ch ) \
p_config[i_config].i_short = ch;
p_config[i_config].ppsz_action_text[p_config[i_config].i_action] = \
action_text; \
p_config[i_config].i_action++;
+
+#define change_autosave() \
+ p_config[i_config].b_autosave = VLC_TRUE;