nkeynes@450: /** nkeynes@561: * $Id$ nkeynes@450: * nkeynes@450: * User configuration support nkeynes@450: * nkeynes@450: * Copyright (c) 2005 Nathan Keynes. nkeynes@450: * nkeynes@450: * This program is free software; you can redistribute it and/or modify nkeynes@450: * it under the terms of the GNU General Public License as published by nkeynes@450: * the Free Software Foundation; either version 2 of the License, or nkeynes@450: * (at your option) any later version. nkeynes@450: * nkeynes@450: * This program is distributed in the hope that it will be useful, nkeynes@450: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@450: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@450: * GNU General Public License for more details. nkeynes@450: */ nkeynes@450: nkeynes@450: #ifndef lxdream_config_H nkeynes@450: #define lxdream_config_H 1 nkeynes@450: nkeynes@450: #include nkeynes@755: #include "gettext.h" nkeynes@450: nkeynes@736: #ifdef __cplusplus nkeynes@736: extern "C" { nkeynes@736: #endif nkeynes@736: nkeynes@450: #define CONFIG_TYPE_NONE 0 nkeynes@450: #define CONFIG_TYPE_FILE 1 nkeynes@450: #define CONFIG_TYPE_PATH 2 nkeynes@450: #define CONFIG_TYPE_KEY 3 nkeynes@450: nkeynes@450: #define DEFAULT_CONFIG_FILENAME "lxdreamrc" nkeynes@450: nkeynes@450: typedef struct lxdream_config_entry { nkeynes@450: const gchar *key; nkeynes@724: const gchar *label; // i18n nkeynes@450: const int type; nkeynes@450: const gchar *default_value; nkeynes@450: gchar *value; nkeynes@450: } *lxdream_config_entry_t; nkeynes@450: nkeynes@450: typedef struct lxdream_config_group { nkeynes@450: const gchar *key; nkeynes@450: struct lxdream_config_entry *params; nkeynes@450: } *lxdream_config_group_t; nkeynes@450: nkeynes@450: #define CONFIG_BIOS_PATH 0 nkeynes@450: #define CONFIG_FLASH_PATH 1 nkeynes@450: #define CONFIG_DEFAULT_PATH 2 nkeynes@450: #define CONFIG_SAVE_PATH 3 nkeynes@450: #define CONFIG_BOOTSTRAP 4 nkeynes@464: #define CONFIG_GDROM 5 nkeynes@470: #define CONFIG_RECENT 6 nkeynes@724: #define CONFIG_KEY_MAX CONFIG_RECENT nkeynes@450: nkeynes@450: extern struct lxdream_config_group lxdream_config_root[]; nkeynes@450: nkeynes@450: /* Global config values */ nkeynes@450: const gchar *lxdream_get_config_value( int key ); nkeynes@759: const struct lxdream_config_entry * lxdream_get_config_entry( int key ); nkeynes@450: nkeynes@460: void lxdream_set_global_config_value( int key, const gchar *value ); nkeynes@460: void lxdream_set_config_value( lxdream_config_entry_t entry, const gchar *value ); nkeynes@458: gboolean lxdream_set_group_value( lxdream_config_group_t group, const gchar *key, const gchar *value ); nkeynes@460: void lxdream_copy_config_list( lxdream_config_entry_t dest, lxdream_config_entry_t src ); nkeynes@460: nkeynes@450: /** nkeynes@450: * Search the standard locations for the configuration file: nkeynes@450: * $HOME/.lxdreamrc nkeynes@450: * $CWD/lxdreamrc nkeynes@450: * $SYSCONF_DIR/lxdreamrc nkeynes@450: * @return TRUE if the file was found, otherwise FALSE. nkeynes@450: */ nkeynes@450: gboolean lxdream_find_config( ); nkeynes@450: nkeynes@450: /** nkeynes@450: * Set the configuration file filename to the supplied string. nkeynes@450: * The string is copied internally (ie can be released by the nkeynes@450: * caller). nkeynes@450: */ nkeynes@450: void lxdream_set_config_filename( const gchar *filename ); nkeynes@450: nkeynes@450: /** nkeynes@450: * Load the configuration from the previously determined filename. nkeynes@450: */ nkeynes@450: gboolean lxdream_load_config( ); nkeynes@450: nkeynes@450: /** nkeynes@450: * Update the configuration nkeynes@450: */ nkeynes@450: gboolean lxdream_save_config( ); nkeynes@450: nkeynes@736: #ifdef __cplusplus nkeynes@736: } nkeynes@736: #endif nkeynes@450: nkeynes@450: #endif /* !lxdream_config_H */