2
* This file is a part of the Cairo-Dock project
4
* Copyright : (C) see the 'copyright' file.
5
* E-mail : see the 'copyright' file.
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.
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/>.
21
#ifndef __CAIRO_DOCK_CONFIG__
22
#define __CAIRO_DOCK_CONFIG__
25
#include <libxml/tree.h>
26
#include <libxml/parser.h>
28
#include "cairo-dock-struct.h"
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.
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.
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);
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.
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);
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.
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);
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.
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);
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.
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);
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.
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);
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().
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);
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);
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().
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);
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);\
143
iWidth = g_key_file_get_integer (pKeyFile, cGroupName, cKeyPrefix"width", NULL);\
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); } }
149
/** Convert an integer in [0,9] into a Pango text weight.
150
*@param iWeight weight between 0 and 9.
152
#define cairo_dock_get_pango_weight_from_1_9(iWeight) ((int) ((((PANGO_WEIGHT_HEAVY - PANGO_WEIGHT_ULTRALIGHT) * iWeight + 9 * PANGO_WEIGHT_ULTRALIGHT - PANGO_WEIGHT_HEAVY) / 8) / 100)) * 100
155
/** Get the Cairo-Dock's config and reload everything.
156
*@param cConfFilePath path to the main conf file.
157
*@param pDock the main dock, created beforehand.
159
void cairo_dock_read_conf_file (const gchar *cConfFilePath, CairoDock *pDock);
161
/** Say if Cairo-Dock is loading.
162
*@return TRUE if the global config is being loaded (this happens when a theme is loaded).
164
gboolean cairo_dock_is_loading (void);
166
/** Update a conf file with a list of values of the form : {type, name of the groupe, name of the key, value}. Must end with G_TYPE_INVALID.
167
*@param cConfFilePath path to the conf file.
168
*@param iFirstDataType type of the first value.
170
void cairo_dock_update_conf_file (const gchar *cConfFilePath, GType iFirstDataType, ...);
172
/* Met a jour un fichier de conf de dock racine avec sa position définie par les écarts en x et en y.
173
*@param cConfFilePath chemin du fichier de conf.
174
*@param x écart latéral.
175
*@param y écart vertical.
177
void cairo_dock_update_conf_file_with_position (const gchar *cConfFilePath, int x, int y);
181
/** Get the 3 version numbers of a string.
182
*@param cVersionString the string of the form "x.y.z".
183
*@param iMajorVersion pointer to the major version.
184
*@param iMinorVersion pointer to the minor version.
185
*@param iMicroVersion pointer to the micro version.
187
void cairo_dock_get_version_from_string (const gchar *cVersionString, int *iMajorVersion, int *iMinorVersion, int *iMicroVersion);
190
/** Decrypt a string (uses DES-encryption from libcrypt).
191
*@param cEncryptedString the encrypted string.
192
*@param cDecryptedString the decrypted string.
194
void cairo_dock_decrypt_string( const guchar *cEncryptedString, guchar **cDecryptedString );
196
/** Encrypt a string (uses DES-encryption from libcrypt).
197
*@param cDecryptedString the decrypted string.
198
*@param cEncryptedString the encrypted string.
200
void cairo_dock_encrypt_string( const guchar *cDecryptedString, guchar **cEncryptedString );
203
xmlDocPtr cairo_dock_open_xml_file (const gchar *cDataFilePath, const gchar *cRootNodeName, xmlNodePtr *root_node, GError **erreur);
205
void cairo_dock_close_xml_file (xmlDocPtr doc);
208
gchar *cairo_dock_get_default_system_font (void);
211
#define DEFINE_PRE_INIT(cGroupName) \
212
void cairo_dock_pre_init_##cGroupName (CairoDockInternalModule *pModule)