1 /*
2 * This file is a part of the Cairo-Dock project
3 *
4 * Copyright : (C) see the 'copyright' file.
5 * E-mail    : see the 'copyright' file.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 3
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 
21 #ifndef __CAIRO_DOCK_CONFIG__
22 #define  __CAIRO_DOCK_CONFIG__
23 
24 #include <glib.h>
25 #include <libxml/tree.h>
26 #include <libxml/parser.h>
27 
28 #include "cairo-dock-struct.h"
29 G_BEGIN_DECLS
30 
31 /**
32 *@file cairo-dock-config.h This class manages the configuration system of Cairo-Dock.
33 * Cairo-Dock and any items (icons, root docks, modules, etc) are configured by conf files.
34 * Conf files containes some information usable by the GUI manager to build a corresponding config panel and update the conf file automatically, which relieves you from this thankless task.
35 */
36 
37 /*
38 *Recupere une cle booleene d'un fichier de cles.
39 *@param pKeyFile le fichier de cles.
40 *@param cGroupName le com du groupe.
41 *@param cKeyName le nom de la cle.
42 *@param bFlushConfFileNeeded est mis a TRUE si la cle est manquante.
43 *@param bDefaultValue valeur par defaut a utiliser et a inserer dans le fichier de cles au cas ou la cle est manquante.
44 *@param cDefaultGroupName nom de groupe alternatif, ou NULL si aucun autre.
45 *@param cDefaultKeyName nom de cle alternative, ou NULL si aucune autre.
46 *@return la valeur booleene de la cle.
47 */
48 gboolean cairo_dock_get_boolean_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, gboolean bDefaultValue, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName);
49 /*
50 *Recupere une cle entiere d'un fichier de cles.
51 *@param pKeyFile le fichier de cles.
52 *@param cGroupName le com du groupe.
53 *@param cKeyName le nom de la cle.
54 *@param bFlushConfFileNeeded est mis a TRUE si la cle est manquante.
55 *@param iDefaultValue valeur par defaut a utiliser et a inserer dans le fichier de cles au cas ou la cle est manquante.
56 *@param cDefaultGroupName nom de groupe alternatif, ou NULL si aucun autre.
57 *@param cDefaultKeyName nom de cle alternative, ou NULL si aucune autre.
58 @return la valeur entiere de la cle.
59 */
60 int cairo_dock_get_integer_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, int iDefaultValue, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName);
61 /*
62 *Recupere une cle flottante d'un fichier de cles.
63 *@param pKeyFile le fichier de cles.
64 *@param cGroupName le com du groupe.
65 *@param cKeyName le nom de la cle.
66 *@param bFlushConfFileNeeded est mis a TRUE si la cle est manquante.
67 *@param fDefaultValue valeur par defaut a utiliser et a inserer dans le fichier de cles au cas ou la cle est manquante.
68 *@param cDefaultGroupName nom de groupe alternatif, ou NULL si aucun autre.
69 *@param cDefaultKeyName nom de cle alternative, ou NULL si aucune autre.
70 *@return la valeur flottante de la cle.
71 */
72 double cairo_dock_get_double_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, double fDefaultValue, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName);
73 /*
74 *Recupere une cle d'un fichier de cles sous la forme d'une chaine de caractere.
75 *@param pKeyFile le fichier de cles.
76 *@param cGroupName le com du groupe.
77 *@param cKeyName le nom de la cle.
78 *@param bFlushConfFileNeeded est mis a TRUE si la cle est manquante.
79 *@param cDefaultValue valeur par defaut a utiliser et a inserer dans le fichier de cles au cas ou la cle est manquante.
80 *@param cDefaultGroupName nom de groupe alternatif, ou NULL si aucun autre.
81 *@param cDefaultKeyName nom de cle alternative, ou NULL si aucune autre.
82 *@return la chaine de caractere nouvellement allouee correspondante a la cle.
83 */
84 gchar *cairo_dock_get_string_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, const gchar *cDefaultValue, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName);
85 /*
86 *Recupere une cle d'un fichier de cles sous la forme d'un tableau d'entiers.
87 *@param pKeyFile le fichier de cles.
88 *@param cGroupName le com du groupe.
89 *@param cKeyName le nom de la cle.
90 *@param bFlushConfFileNeeded est mis a TRUE si la cle est manquante.
91 *@param iValueBuffer tableau qui sera rempli.
92 *@param iNbElements nombre d'elements a recuperer; c'est le nombre d'elements du tableau passe en entree.
93 *@param iDefaultValues valeur par defaut a utiliser et a inserer dans le fichier de cles au cas ou la cle est manquante.
94 *@param cDefaultGroupName nom de groupe alternatif, ou NULL si aucun autre.
95 *@param cDefaultKeyName nom de cle alternative, ou NULL si aucune autre.
96 */
97 void cairo_dock_get_integer_list_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, int *iValueBuffer, guint iNbElements, int *iDefaultValues, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName);
98 /*
99 *Recupere une cle d'un fichier de cles sous la forme d'un tableau de doubles.
100 *@param pKeyFile le fichier de cles.
101 *@param cGroupName le com du groupe.
102 *@param cKeyName le nom de la cle.
103 *@param bFlushConfFileNeeded est mis a TRUE si la cle est manquante.
104 *@param fValueBuffer tableau qui sera rempli.
105 *@param iNbElements nombre d'elements a recuperer; c'est le nombre d'elements du tableau passe en entree.
106 *@param fDefaultValues valeur par defaut a utiliser et a inserer dans le fichier de cles au cas ou la cle est manquante.
107 *@param cDefaultGroupName nom de groupe alternatif, ou NULL si aucun autre.
108 *@param cDefaultKeyName nom de cle alternative, ou NULL si aucune autre.
109 */
110 void cairo_dock_get_double_list_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, double *fValueBuffer, guint iNbElements, double *fDefaultValues, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName);
111 /*
112 *Recupere une cle d'un fichier de cles sous la forme d'un tableau de chaines de caracteres.
113 *@param pKeyFile le fichier de cles.
114 *@param cGroupName le com du groupe.
115 *@param cKeyName le nom de la cle.
116 *@param bFlushConfFileNeeded est mis a TRUE si la cle est manquante.
117 *@param length nombre de chaines de caracteres recuperees.
118 *@param cDefaultValues valeur par defaut a utiliser et a inserer dans le fichier de cles au cas ou la cle est manquante.
119 *@param cDefaultGroupName nom de groupe alternatif, ou NULL si aucun autre.
120 *@param cDefaultKeyName nom de cle alternative, ou NULL si aucune autre.
121 *@return un tableau de chaines de caracteres; a liberer avec g_strfreev().
122 */
123 gchar **cairo_dock_get_string_list_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, gsize *length, const gchar *cDefaultValues, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName);
124 
125 void cairo_dock_get_size_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, gint iDefaultSize, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName, int *iWidth, int *iHeight);
126 /*
127 *Recupere une cle d'un fichier de cles sous la forme d'un chemin de fichier complet. La clé peut soit être un fichier relatif au thème courant, soit un chemin començant par '~', soit un chemin complet, soit vide auquel cas le chemin d'un fichier par defaut est renvoye s'il est specifie.
128 *@param pKeyFile le fichier de cles.
129 *@param cGroupName le com du groupe.
130 *@param cKeyName le nom de la cle.
131 *@param bFlushConfFileNeeded est mis a TRUE si la cle est manquante.
132 *@param cDefaultGroupName nom de groupe alternatif, ou NULL si aucun autre.
133 *@param cDefaultKeyName nom de cle alternative, ou NULL si aucune autre.
134 *@param cDefaultDir si la cle est vide, on prendra un fichier par defaut situe dans ce repertoire. (optionnel)
135 *@param cDefaultFileName si la cle est vide, on prendra ce fichier par defaut dans le repertoire defini ci-dessus. (optionnel)
136 *@return le chemin complet du fichier, a liberer avec g_free().
137 */
138 gchar *cairo_dock_get_file_path_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName, const gchar *cDefaultDir, const gchar *cDefaultFileName);
139 
140 #define cairo_dock_get_size_key_value_helper(pKeyFile, cGroupName, cKeyPrefix, bFlushConfFileNeeded, iWidth, iHeight) \
141 	cairo_dock_get_size_key_value (pKeyFile, cGroupName, cKeyPrefix"size", &bFlushConfFileNeeded, 0, NULL, NULL, &iWidth, &iHeight);\
142 	if (iWidth == 0) {\
143 		iWidth = g_key_file_get_integer (pKeyFile, cGroupName, cKeyPrefix"width", NULL);\
144 		if (iWidth != 0) {\
145 			iHeight = g_key_file_get_integer (pKeyFile, cGroupName, cKeyPrefix"height", NULL);\
146 			int iSize[2] = {iWidth, iHeight};\
147 			g_key_file_set_integer_list (pKeyFile, cGroupName, cKeyPrefix"size", iSize, 2); } }
148 
149 void cairo_dock_get_color_key_value (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cKeyName, gboolean *bFlushConfFileNeeded, GldiColor *fValueBuffer, GldiColor *fDefaultValues, const gchar *cDefaultGroupName, const gchar *cDefaultKeyName);
150 
151 
152 /** Load the current theme. This will (re)load all the parameters of Cairo-Dock and all the plug-ins, as if you just started the dock.
153 */
154 void cairo_dock_load_current_theme (void);
155 
156 
157 /** Say if Cairo-Dock is loading.
158 *@return TRUE if the global config is being loaded (this happens when a theme is loaded).
159 */
160 gboolean cairo_dock_is_loading (void);
161 
162 
163 /** Decrypt a string (uses DES-encryption from libcrypt).
164 *@param cEncryptedString the encrypted string.
165 *@param cDecryptedString the decrypted string.
166 */
167 void cairo_dock_decrypt_string( const gchar *cEncryptedString,  gchar **cDecryptedString );
168 
169 /** Encrypt a string (uses DES-encryption from libcrypt).
170 *@param cDecryptedString the decrypted string.
171 *@param cEncryptedString the encrypted string.
172 */
173 void cairo_dock_encrypt_string( const gchar *cDecryptedString,  gchar **cEncryptedString );
174 
175 
176 xmlDocPtr cairo_dock_open_xml_file (const gchar *cDataFilePath, const gchar *cRootNodeName, xmlNodePtr *root_node, GError **erreur);
177 
178 void cairo_dock_close_xml_file (xmlDocPtr doc);
179 
180 
181 G_END_DECLS
182 #endif
183