gkeyfile.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  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. #ifndef __G_KEY_FILE_H__
  21. #define __G_KEY_FILE_H__
  22. #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
  23. #error "Only <glib.h> can be included directly."
  24. #endif
  25. #include <glib/gbytes.h>
  26. #include <glib/gerror.h>
  27. G_BEGIN_DECLS
  28. typedef enum
  29. {
  30. G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
  31. G_KEY_FILE_ERROR_PARSE,
  32. G_KEY_FILE_ERROR_NOT_FOUND,
  33. G_KEY_FILE_ERROR_KEY_NOT_FOUND,
  34. G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
  35. G_KEY_FILE_ERROR_INVALID_VALUE
  36. } GKeyFileError;
  37. #define G_KEY_FILE_ERROR g_key_file_error_quark()
  38. GLIB_AVAILABLE_IN_ALL
  39. GQuark g_key_file_error_quark (void);
  40. typedef struct _GKeyFile GKeyFile;
  41. typedef enum
  42. {
  43. G_KEY_FILE_NONE = 0,
  44. G_KEY_FILE_KEEP_COMMENTS = 1 << 0,
  45. G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
  46. } GKeyFileFlags;
  47. GLIB_AVAILABLE_IN_ALL
  48. GKeyFile *g_key_file_new (void);
  49. GLIB_AVAILABLE_IN_ALL
  50. GKeyFile *g_key_file_ref (GKeyFile *key_file);
  51. GLIB_AVAILABLE_IN_ALL
  52. void g_key_file_unref (GKeyFile *key_file);
  53. GLIB_AVAILABLE_IN_ALL
  54. void g_key_file_free (GKeyFile *key_file);
  55. GLIB_AVAILABLE_IN_ALL
  56. void g_key_file_set_list_separator (GKeyFile *key_file,
  57. gchar separator);
  58. GLIB_AVAILABLE_IN_ALL
  59. gboolean g_key_file_load_from_file (GKeyFile *key_file,
  60. const gchar *file,
  61. GKeyFileFlags flags,
  62. GError **error);
  63. GLIB_AVAILABLE_IN_ALL
  64. gboolean g_key_file_load_from_data (GKeyFile *key_file,
  65. const gchar *data,
  66. gsize length,
  67. GKeyFileFlags flags,
  68. GError **error);
  69. GLIB_AVAILABLE_IN_2_50
  70. gboolean g_key_file_load_from_bytes (GKeyFile *key_file,
  71. GBytes *bytes,
  72. GKeyFileFlags flags,
  73. GError **error);
  74. GLIB_AVAILABLE_IN_ALL
  75. gboolean g_key_file_load_from_dirs (GKeyFile *key_file,
  76. const gchar *file,
  77. const gchar **search_dirs,
  78. gchar **full_path,
  79. GKeyFileFlags flags,
  80. GError **error);
  81. GLIB_AVAILABLE_IN_ALL
  82. gboolean g_key_file_load_from_data_dirs (GKeyFile *key_file,
  83. const gchar *file,
  84. gchar **full_path,
  85. GKeyFileFlags flags,
  86. GError **error);
  87. GLIB_AVAILABLE_IN_ALL
  88. gchar *g_key_file_to_data (GKeyFile *key_file,
  89. gsize *length,
  90. GError **error) G_GNUC_MALLOC;
  91. GLIB_AVAILABLE_IN_2_40
  92. gboolean g_key_file_save_to_file (GKeyFile *key_file,
  93. const gchar *filename,
  94. GError **error);
  95. GLIB_AVAILABLE_IN_ALL
  96. gchar *g_key_file_get_start_group (GKeyFile *key_file) G_GNUC_MALLOC;
  97. GLIB_AVAILABLE_IN_ALL
  98. gchar **g_key_file_get_groups (GKeyFile *key_file,
  99. gsize *length);
  100. GLIB_AVAILABLE_IN_ALL
  101. gchar **g_key_file_get_keys (GKeyFile *key_file,
  102. const gchar *group_name,
  103. gsize *length,
  104. GError **error);
  105. GLIB_AVAILABLE_IN_ALL
  106. gboolean g_key_file_has_group (GKeyFile *key_file,
  107. const gchar *group_name);
  108. GLIB_AVAILABLE_IN_ALL
  109. gboolean g_key_file_has_key (GKeyFile *key_file,
  110. const gchar *group_name,
  111. const gchar *key,
  112. GError **error);
  113. GLIB_AVAILABLE_IN_ALL
  114. gchar *g_key_file_get_value (GKeyFile *key_file,
  115. const gchar *group_name,
  116. const gchar *key,
  117. GError **error) G_GNUC_MALLOC;
  118. GLIB_AVAILABLE_IN_ALL
  119. void g_key_file_set_value (GKeyFile *key_file,
  120. const gchar *group_name,
  121. const gchar *key,
  122. const gchar *value);
  123. GLIB_AVAILABLE_IN_ALL
  124. gchar *g_key_file_get_string (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_string (GKeyFile *key_file,
  130. const gchar *group_name,
  131. const gchar *key,
  132. const gchar *string);
  133. GLIB_AVAILABLE_IN_ALL
  134. gchar *g_key_file_get_locale_string (GKeyFile *key_file,
  135. const gchar *group_name,
  136. const gchar *key,
  137. const gchar *locale,
  138. GError **error) G_GNUC_MALLOC;
  139. GLIB_AVAILABLE_IN_2_56
  140. gchar *g_key_file_get_locale_for_key (GKeyFile *key_file,
  141. const gchar *group_name,
  142. const gchar *key,
  143. const gchar *locale) G_GNUC_MALLOC;
  144. GLIB_AVAILABLE_IN_ALL
  145. void g_key_file_set_locale_string (GKeyFile *key_file,
  146. const gchar *group_name,
  147. const gchar *key,
  148. const gchar *locale,
  149. const gchar *string);
  150. GLIB_AVAILABLE_IN_ALL
  151. gboolean g_key_file_get_boolean (GKeyFile *key_file,
  152. const gchar *group_name,
  153. const gchar *key,
  154. GError **error);
  155. GLIB_AVAILABLE_IN_ALL
  156. void g_key_file_set_boolean (GKeyFile *key_file,
  157. const gchar *group_name,
  158. const gchar *key,
  159. gboolean value);
  160. GLIB_AVAILABLE_IN_ALL
  161. gint g_key_file_get_integer (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_integer (GKeyFile *key_file,
  167. const gchar *group_name,
  168. const gchar *key,
  169. gint value);
  170. GLIB_AVAILABLE_IN_ALL
  171. gint64 g_key_file_get_int64 (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_int64 (GKeyFile *key_file,
  177. const gchar *group_name,
  178. const gchar *key,
  179. gint64 value);
  180. GLIB_AVAILABLE_IN_ALL
  181. guint64 g_key_file_get_uint64 (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_uint64 (GKeyFile *key_file,
  187. const gchar *group_name,
  188. const gchar *key,
  189. guint64 value);
  190. GLIB_AVAILABLE_IN_ALL
  191. gdouble g_key_file_get_double (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_double (GKeyFile *key_file,
  197. const gchar *group_name,
  198. const gchar *key,
  199. gdouble value);
  200. GLIB_AVAILABLE_IN_ALL
  201. gchar **g_key_file_get_string_list (GKeyFile *key_file,
  202. const gchar *group_name,
  203. const gchar *key,
  204. gsize *length,
  205. GError **error);
  206. GLIB_AVAILABLE_IN_ALL
  207. void g_key_file_set_string_list (GKeyFile *key_file,
  208. const gchar *group_name,
  209. const gchar *key,
  210. const gchar * const list[],
  211. gsize length);
  212. GLIB_AVAILABLE_IN_ALL
  213. gchar **g_key_file_get_locale_string_list (GKeyFile *key_file,
  214. const gchar *group_name,
  215. const gchar *key,
  216. const gchar *locale,
  217. gsize *length,
  218. GError **error);
  219. GLIB_AVAILABLE_IN_ALL
  220. void g_key_file_set_locale_string_list (GKeyFile *key_file,
  221. const gchar *group_name,
  222. const gchar *key,
  223. const gchar *locale,
  224. const gchar * const list[],
  225. gsize length);
  226. GLIB_AVAILABLE_IN_ALL
  227. gboolean *g_key_file_get_boolean_list (GKeyFile *key_file,
  228. const gchar *group_name,
  229. const gchar *key,
  230. gsize *length,
  231. GError **error) G_GNUC_MALLOC;
  232. GLIB_AVAILABLE_IN_ALL
  233. void g_key_file_set_boolean_list (GKeyFile *key_file,
  234. const gchar *group_name,
  235. const gchar *key,
  236. gboolean list[],
  237. gsize length);
  238. GLIB_AVAILABLE_IN_ALL
  239. gint *g_key_file_get_integer_list (GKeyFile *key_file,
  240. const gchar *group_name,
  241. const gchar *key,
  242. gsize *length,
  243. GError **error) G_GNUC_MALLOC;
  244. GLIB_AVAILABLE_IN_ALL
  245. void g_key_file_set_double_list (GKeyFile *key_file,
  246. const gchar *group_name,
  247. const gchar *key,
  248. gdouble list[],
  249. gsize length);
  250. GLIB_AVAILABLE_IN_ALL
  251. gdouble *g_key_file_get_double_list (GKeyFile *key_file,
  252. const gchar *group_name,
  253. const gchar *key,
  254. gsize *length,
  255. GError **error) G_GNUC_MALLOC;
  256. GLIB_AVAILABLE_IN_ALL
  257. void g_key_file_set_integer_list (GKeyFile *key_file,
  258. const gchar *group_name,
  259. const gchar *key,
  260. gint list[],
  261. gsize length);
  262. GLIB_AVAILABLE_IN_ALL
  263. gboolean g_key_file_set_comment (GKeyFile *key_file,
  264. const gchar *group_name,
  265. const gchar *key,
  266. const gchar *comment,
  267. GError **error);
  268. GLIB_AVAILABLE_IN_ALL
  269. gchar *g_key_file_get_comment (GKeyFile *key_file,
  270. const gchar *group_name,
  271. const gchar *key,
  272. GError **error) G_GNUC_MALLOC;
  273. GLIB_AVAILABLE_IN_ALL
  274. gboolean g_key_file_remove_comment (GKeyFile *key_file,
  275. const gchar *group_name,
  276. const gchar *key,
  277. GError **error);
  278. GLIB_AVAILABLE_IN_ALL
  279. gboolean g_key_file_remove_key (GKeyFile *key_file,
  280. const gchar *group_name,
  281. const gchar *key,
  282. GError **error);
  283. GLIB_AVAILABLE_IN_ALL
  284. gboolean g_key_file_remove_group (GKeyFile *key_file,
  285. const gchar *group_name,
  286. GError **error);
  287. /* Defines for handling freedesktop.org Desktop files */
  288. #define G_KEY_FILE_DESKTOP_GROUP "Desktop Entry"
  289. #define G_KEY_FILE_DESKTOP_KEY_TYPE "Type"
  290. #define G_KEY_FILE_DESKTOP_KEY_VERSION "Version"
  291. #define G_KEY_FILE_DESKTOP_KEY_NAME "Name"
  292. #define G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME "GenericName"
  293. #define G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY "NoDisplay"
  294. #define G_KEY_FILE_DESKTOP_KEY_COMMENT "Comment"
  295. #define G_KEY_FILE_DESKTOP_KEY_ICON "Icon"
  296. #define G_KEY_FILE_DESKTOP_KEY_HIDDEN "Hidden"
  297. #define G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN "OnlyShowIn"
  298. #define G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN "NotShowIn"
  299. #define G_KEY_FILE_DESKTOP_KEY_TRY_EXEC "TryExec"
  300. #define G_KEY_FILE_DESKTOP_KEY_EXEC "Exec"
  301. #define G_KEY_FILE_DESKTOP_KEY_PATH "Path"
  302. #define G_KEY_FILE_DESKTOP_KEY_TERMINAL "Terminal"
  303. #define G_KEY_FILE_DESKTOP_KEY_MIME_TYPE "MimeType"
  304. #define G_KEY_FILE_DESKTOP_KEY_CATEGORIES "Categories"
  305. #define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY "StartupNotify"
  306. #define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass"
  307. #define G_KEY_FILE_DESKTOP_KEY_URL "URL"
  308. #define G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE "DBusActivatable"
  309. #define G_KEY_FILE_DESKTOP_KEY_ACTIONS "Actions"
  310. #define G_KEY_FILE_DESKTOP_TYPE_APPLICATION "Application"
  311. #define G_KEY_FILE_DESKTOP_TYPE_LINK "Link"
  312. #define G_KEY_FILE_DESKTOP_TYPE_DIRECTORY "Directory"
  313. G_END_DECLS
  314. #endif /* __G_KEY_FILE_H__ */