• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* gkeyfile.h - desktop entry file parser
2  *
3  *  Copyright 2004 Red Hat, Inc.
4  *
5  *  Ray Strode <halfline@hawaii.rr.com>
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library 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 GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this library; if not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef __G_KEY_FILE_H__
22 #define __G_KEY_FILE_H__
23 
24 #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
25 #error "Only <glib.h> can be included directly."
26 #endif
27 
28 #include <glib/gbytes.h>
29 #include <glib/gerror.h>
30 
31 G_BEGIN_DECLS
32 
33 typedef enum
34 {
35   G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
36   G_KEY_FILE_ERROR_PARSE,
37   G_KEY_FILE_ERROR_NOT_FOUND,
38   G_KEY_FILE_ERROR_KEY_NOT_FOUND,
39   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
40   G_KEY_FILE_ERROR_INVALID_VALUE
41 } GKeyFileError;
42 
43 #define G_KEY_FILE_ERROR g_key_file_error_quark()
44 
45 GLIB_AVAILABLE_IN_ALL
46 GQuark g_key_file_error_quark (void);
47 
48 typedef struct _GKeyFile GKeyFile;
49 
50 typedef enum
51 {
52   G_KEY_FILE_NONE              = 0,
53   G_KEY_FILE_KEEP_COMMENTS     = 1 << 0,
54   G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
55 } GKeyFileFlags;
56 
57 GLIB_AVAILABLE_IN_ALL
58 GKeyFile *g_key_file_new                    (void);
59 GLIB_AVAILABLE_IN_ALL
60 GKeyFile *g_key_file_ref                    (GKeyFile             *key_file);
61 GLIB_AVAILABLE_IN_ALL
62 void      g_key_file_unref                  (GKeyFile             *key_file);
63 GLIB_AVAILABLE_IN_ALL
64 void      g_key_file_free                   (GKeyFile             *key_file);
65 GLIB_AVAILABLE_IN_ALL
66 void      g_key_file_set_list_separator     (GKeyFile             *key_file,
67 					     gchar                 separator);
68 GLIB_AVAILABLE_IN_ALL
69 gboolean  g_key_file_load_from_file         (GKeyFile             *key_file,
70 					     const gchar          *file,
71 					     GKeyFileFlags         flags,
72 					     GError              **error);
73 GLIB_AVAILABLE_IN_ALL
74 gboolean  g_key_file_load_from_data         (GKeyFile             *key_file,
75 					     const gchar          *data,
76 					     gsize                 length,
77 					     GKeyFileFlags         flags,
78 					     GError              **error);
79 GLIB_AVAILABLE_IN_2_50
80 gboolean  g_key_file_load_from_bytes        (GKeyFile             *key_file,
81                                              GBytes               *bytes,
82                                              GKeyFileFlags         flags,
83                                              GError              **error);
84 GLIB_AVAILABLE_IN_ALL
85 gboolean g_key_file_load_from_dirs          (GKeyFile             *key_file,
86 					     const gchar	  *file,
87 					     const gchar	 **search_dirs,
88 					     gchar		 **full_path,
89 					     GKeyFileFlags         flags,
90 					     GError              **error);
91 GLIB_AVAILABLE_IN_ALL
92 gboolean g_key_file_load_from_data_dirs     (GKeyFile             *key_file,
93 					     const gchar          *file,
94 					     gchar               **full_path,
95 					     GKeyFileFlags         flags,
96 					     GError              **error);
97 GLIB_AVAILABLE_IN_ALL
98 gchar    *g_key_file_to_data                (GKeyFile             *key_file,
99 					     gsize                *length,
100 					     GError              **error) G_GNUC_MALLOC;
101 GLIB_AVAILABLE_IN_2_40
102 gboolean  g_key_file_save_to_file           (GKeyFile             *key_file,
103                                              const gchar          *filename,
104                                              GError              **error);
105 GLIB_AVAILABLE_IN_ALL
106 gchar    *g_key_file_get_start_group        (GKeyFile             *key_file) G_GNUC_MALLOC;
107 GLIB_AVAILABLE_IN_ALL
108 gchar   **g_key_file_get_groups             (GKeyFile             *key_file,
109 					     gsize                *length);
110 GLIB_AVAILABLE_IN_ALL
111 gchar   **g_key_file_get_keys               (GKeyFile             *key_file,
112 					     const gchar          *group_name,
113 					     gsize                *length,
114 					     GError              **error);
115 GLIB_AVAILABLE_IN_ALL
116 gboolean  g_key_file_has_group              (GKeyFile             *key_file,
117 					     const gchar          *group_name);
118 GLIB_AVAILABLE_IN_ALL
119 gboolean  g_key_file_has_key                (GKeyFile             *key_file,
120 					     const gchar          *group_name,
121 					     const gchar          *key,
122 					     GError              **error);
123 GLIB_AVAILABLE_IN_ALL
124 gchar    *g_key_file_get_value              (GKeyFile             *key_file,
125 					     const gchar          *group_name,
126 					     const gchar          *key,
127 					     GError              **error) G_GNUC_MALLOC;
128 GLIB_AVAILABLE_IN_ALL
129 void      g_key_file_set_value              (GKeyFile             *key_file,
130 					     const gchar          *group_name,
131 					     const gchar          *key,
132 					     const gchar          *value);
133 GLIB_AVAILABLE_IN_ALL
134 gchar    *g_key_file_get_string             (GKeyFile             *key_file,
135 					     const gchar          *group_name,
136 					     const gchar          *key,
137 					     GError              **error) G_GNUC_MALLOC;
138 GLIB_AVAILABLE_IN_ALL
139 void      g_key_file_set_string             (GKeyFile             *key_file,
140 					     const gchar          *group_name,
141 					     const gchar          *key,
142 					     const gchar          *string);
143 GLIB_AVAILABLE_IN_ALL
144 gchar    *g_key_file_get_locale_string      (GKeyFile             *key_file,
145 					     const gchar          *group_name,
146 					     const gchar          *key,
147 					     const gchar          *locale,
148 					     GError              **error) G_GNUC_MALLOC;
149 GLIB_AVAILABLE_IN_2_56
150 gchar    *g_key_file_get_locale_for_key     (GKeyFile             *key_file,
151                                              const gchar          *group_name,
152                                              const gchar          *key,
153                                              const gchar          *locale) G_GNUC_MALLOC;
154 GLIB_AVAILABLE_IN_ALL
155 void      g_key_file_set_locale_string      (GKeyFile             *key_file,
156 					     const gchar          *group_name,
157 					     const gchar          *key,
158 					     const gchar          *locale,
159 					     const gchar          *string);
160 GLIB_AVAILABLE_IN_ALL
161 gboolean  g_key_file_get_boolean            (GKeyFile             *key_file,
162 					     const gchar          *group_name,
163 					     const gchar          *key,
164 					     GError              **error);
165 GLIB_AVAILABLE_IN_ALL
166 void      g_key_file_set_boolean            (GKeyFile             *key_file,
167 					     const gchar          *group_name,
168 					     const gchar          *key,
169 					     gboolean              value);
170 GLIB_AVAILABLE_IN_ALL
171 gint      g_key_file_get_integer            (GKeyFile             *key_file,
172 					     const gchar          *group_name,
173 					     const gchar          *key,
174 					     GError              **error);
175 GLIB_AVAILABLE_IN_ALL
176 void      g_key_file_set_integer            (GKeyFile             *key_file,
177 					     const gchar          *group_name,
178 					     const gchar          *key,
179 					     gint                  value);
180 GLIB_AVAILABLE_IN_ALL
181 gint64    g_key_file_get_int64              (GKeyFile             *key_file,
182 					     const gchar          *group_name,
183 					     const gchar          *key,
184 					     GError              **error);
185 GLIB_AVAILABLE_IN_ALL
186 void      g_key_file_set_int64              (GKeyFile             *key_file,
187 					     const gchar          *group_name,
188 					     const gchar          *key,
189 					     gint64                value);
190 GLIB_AVAILABLE_IN_ALL
191 guint64   g_key_file_get_uint64             (GKeyFile             *key_file,
192 					     const gchar          *group_name,
193 					     const gchar          *key,
194 					     GError              **error);
195 GLIB_AVAILABLE_IN_ALL
196 void      g_key_file_set_uint64             (GKeyFile             *key_file,
197 					     const gchar          *group_name,
198 					     const gchar          *key,
199 					     guint64               value);
200 GLIB_AVAILABLE_IN_ALL
201 gdouble   g_key_file_get_double             (GKeyFile             *key_file,
202                                              const gchar          *group_name,
203                                              const gchar          *key,
204                                              GError              **error);
205 GLIB_AVAILABLE_IN_ALL
206 void      g_key_file_set_double             (GKeyFile             *key_file,
207                                              const gchar          *group_name,
208                                              const gchar          *key,
209                                              gdouble               value);
210 GLIB_AVAILABLE_IN_ALL
211 gchar   **g_key_file_get_string_list        (GKeyFile             *key_file,
212 					     const gchar          *group_name,
213 					     const gchar          *key,
214 					     gsize                *length,
215 					     GError              **error);
216 GLIB_AVAILABLE_IN_ALL
217 void      g_key_file_set_string_list        (GKeyFile             *key_file,
218 					     const gchar          *group_name,
219 					     const gchar          *key,
220 					     const gchar * const   list[],
221 					     gsize                 length);
222 GLIB_AVAILABLE_IN_ALL
223 gchar   **g_key_file_get_locale_string_list (GKeyFile             *key_file,
224 					     const gchar          *group_name,
225 					     const gchar          *key,
226 					     const gchar          *locale,
227 					     gsize                *length,
228 					     GError              **error);
229 GLIB_AVAILABLE_IN_ALL
230 void      g_key_file_set_locale_string_list (GKeyFile             *key_file,
231 					     const gchar          *group_name,
232 					     const gchar          *key,
233 					     const gchar          *locale,
234 					     const gchar * const   list[],
235 					     gsize                 length);
236 GLIB_AVAILABLE_IN_ALL
237 gboolean *g_key_file_get_boolean_list       (GKeyFile             *key_file,
238 					     const gchar          *group_name,
239 					     const gchar          *key,
240 					     gsize                *length,
241 					     GError              **error) G_GNUC_MALLOC;
242 GLIB_AVAILABLE_IN_ALL
243 void      g_key_file_set_boolean_list       (GKeyFile             *key_file,
244 					     const gchar          *group_name,
245 					     const gchar          *key,
246 					     gboolean              list[],
247 					     gsize                 length);
248 GLIB_AVAILABLE_IN_ALL
249 gint     *g_key_file_get_integer_list       (GKeyFile             *key_file,
250 					     const gchar          *group_name,
251 					     const gchar          *key,
252 					     gsize                *length,
253 					     GError              **error) G_GNUC_MALLOC;
254 GLIB_AVAILABLE_IN_ALL
255 void      g_key_file_set_double_list        (GKeyFile             *key_file,
256                                              const gchar          *group_name,
257                                              const gchar          *key,
258                                              gdouble               list[],
259                                              gsize                 length);
260 GLIB_AVAILABLE_IN_ALL
261 gdouble  *g_key_file_get_double_list        (GKeyFile             *key_file,
262                                              const gchar          *group_name,
263                                              const gchar          *key,
264                                              gsize                *length,
265                                              GError              **error) G_GNUC_MALLOC;
266 GLIB_AVAILABLE_IN_ALL
267 void      g_key_file_set_integer_list       (GKeyFile             *key_file,
268 					     const gchar          *group_name,
269 					     const gchar          *key,
270 					     gint                  list[],
271 					     gsize                 length);
272 GLIB_AVAILABLE_IN_ALL
273 gboolean  g_key_file_set_comment            (GKeyFile             *key_file,
274                                              const gchar          *group_name,
275                                              const gchar          *key,
276                                              const gchar          *comment,
277                                              GError              **error);
278 GLIB_AVAILABLE_IN_ALL
279 gchar    *g_key_file_get_comment            (GKeyFile             *key_file,
280                                              const gchar          *group_name,
281                                              const gchar          *key,
282                                              GError              **error) G_GNUC_MALLOC;
283 
284 GLIB_AVAILABLE_IN_ALL
285 gboolean  g_key_file_remove_comment         (GKeyFile             *key_file,
286                                              const gchar          *group_name,
287                                              const gchar          *key,
288 					     GError              **error);
289 GLIB_AVAILABLE_IN_ALL
290 gboolean  g_key_file_remove_key             (GKeyFile             *key_file,
291 					     const gchar          *group_name,
292 					     const gchar          *key,
293 					     GError              **error);
294 GLIB_AVAILABLE_IN_ALL
295 gboolean  g_key_file_remove_group           (GKeyFile             *key_file,
296 					     const gchar          *group_name,
297 					     GError              **error);
298 
299 /* Defines for handling freedesktop.org Desktop files */
300 #define G_KEY_FILE_DESKTOP_GROUP                "Desktop Entry"
301 
302 #define G_KEY_FILE_DESKTOP_KEY_TYPE             "Type"
303 #define G_KEY_FILE_DESKTOP_KEY_VERSION          "Version"
304 #define G_KEY_FILE_DESKTOP_KEY_NAME             "Name"
305 #define G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME     "GenericName"
306 #define G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY       "NoDisplay"
307 #define G_KEY_FILE_DESKTOP_KEY_COMMENT          "Comment"
308 #define G_KEY_FILE_DESKTOP_KEY_ICON             "Icon"
309 #define G_KEY_FILE_DESKTOP_KEY_HIDDEN           "Hidden"
310 #define G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN     "OnlyShowIn"
311 #define G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN      "NotShowIn"
312 #define G_KEY_FILE_DESKTOP_KEY_TRY_EXEC         "TryExec"
313 #define G_KEY_FILE_DESKTOP_KEY_EXEC             "Exec"
314 #define G_KEY_FILE_DESKTOP_KEY_PATH             "Path"
315 #define G_KEY_FILE_DESKTOP_KEY_TERMINAL         "Terminal"
316 #define G_KEY_FILE_DESKTOP_KEY_MIME_TYPE        "MimeType"
317 #define G_KEY_FILE_DESKTOP_KEY_CATEGORIES       "Categories"
318 #define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY   "StartupNotify"
319 #define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass"
320 #define G_KEY_FILE_DESKTOP_KEY_URL              "URL"
321 #define G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE "DBusActivatable"
322 #define G_KEY_FILE_DESKTOP_KEY_ACTIONS          "Actions"
323 
324 #define G_KEY_FILE_DESKTOP_TYPE_APPLICATION     "Application"
325 #define G_KEY_FILE_DESKTOP_TYPE_LINK            "Link"
326 #define G_KEY_FILE_DESKTOP_TYPE_DIRECTORY       "Directory"
327 
328 G_END_DECLS
329 
330 #endif /* __G_KEY_FILE_H__ */
331