gkeyfile.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. /* gkeyfile.h - desktop entry file parser
  2. *
  3. * Copyright 2004 Red Hat, Inc.
  4. *
  5. * Ray Strode <halfline@hawaii.rr.com>
  6. *
  7. * GLib is free software; you can redistribute it and/or modify it
  8. * under the terms of the GNU Lesser General Public License as
  9. * published by the Free Software Foundation; either version 2 of the
  10. * License, or (at your option) any later version.
  11. *
  12. * GLib 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
  18. * License along with GLib; see the file COPYING.LIB. If not,
  19. * see <http://www.gnu.org/licenses/>.
  20. */
  21. #ifndef __G_KEY_FILE_H__
  22. #define __G_KEY_FILE_H__
  23. #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
  24. #error "Only <glib.h> can be included directly."
  25. #endif
  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_ALL
  70. gboolean g_key_file_load_from_dirs (GKeyFile *key_file,
  71. const gchar *file,
  72. const gchar **search_dirs,
  73. gchar **full_path,
  74. GKeyFileFlags flags,
  75. GError **error);
  76. GLIB_AVAILABLE_IN_ALL
  77. gboolean g_key_file_load_from_data_dirs (GKeyFile *key_file,
  78. const gchar *file,
  79. gchar **full_path,
  80. GKeyFileFlags flags,
  81. GError **error);
  82. GLIB_AVAILABLE_IN_ALL
  83. gchar *g_key_file_to_data (GKeyFile *key_file,
  84. gsize *length,
  85. GError **error) G_GNUC_MALLOC;
  86. GLIB_AVAILABLE_IN_2_40
  87. gboolean g_key_file_save_to_file (GKeyFile *key_file,
  88. const gchar *filename,
  89. GError **error);
  90. GLIB_AVAILABLE_IN_ALL
  91. gchar *g_key_file_get_start_group (GKeyFile *key_file) G_GNUC_MALLOC;
  92. GLIB_AVAILABLE_IN_ALL
  93. gchar **g_key_file_get_groups (GKeyFile *key_file,
  94. gsize *length) G_GNUC_MALLOC;
  95. GLIB_AVAILABLE_IN_ALL
  96. gchar **g_key_file_get_keys (GKeyFile *key_file,
  97. const gchar *group_name,
  98. gsize *length,
  99. GError **error) G_GNUC_MALLOC;
  100. GLIB_AVAILABLE_IN_ALL
  101. gboolean g_key_file_has_group (GKeyFile *key_file,
  102. const gchar *group_name);
  103. GLIB_AVAILABLE_IN_ALL
  104. gboolean g_key_file_has_key (GKeyFile *key_file,
  105. const gchar *group_name,
  106. const gchar *key,
  107. GError **error);
  108. GLIB_AVAILABLE_IN_ALL
  109. gchar *g_key_file_get_value (GKeyFile *key_file,
  110. const gchar *group_name,
  111. const gchar *key,
  112. GError **error) G_GNUC_MALLOC;
  113. GLIB_AVAILABLE_IN_ALL
  114. void g_key_file_set_value (GKeyFile *key_file,
  115. const gchar *group_name,
  116. const gchar *key,
  117. const gchar *value);
  118. GLIB_AVAILABLE_IN_ALL
  119. gchar *g_key_file_get_string (GKeyFile *key_file,
  120. const gchar *group_name,
  121. const gchar *key,
  122. GError **error) G_GNUC_MALLOC;
  123. GLIB_AVAILABLE_IN_ALL
  124. void g_key_file_set_string (GKeyFile *key_file,
  125. const gchar *group_name,
  126. const gchar *key,
  127. const gchar *string);
  128. GLIB_AVAILABLE_IN_ALL
  129. gchar *g_key_file_get_locale_string (GKeyFile *key_file,
  130. const gchar *group_name,
  131. const gchar *key,
  132. const gchar *locale,
  133. GError **error) G_GNUC_MALLOC;
  134. GLIB_AVAILABLE_IN_ALL
  135. void g_key_file_set_locale_string (GKeyFile *key_file,
  136. const gchar *group_name,
  137. const gchar *key,
  138. const gchar *locale,
  139. const gchar *string);
  140. GLIB_AVAILABLE_IN_ALL
  141. gboolean g_key_file_get_boolean (GKeyFile *key_file,
  142. const gchar *group_name,
  143. const gchar *key,
  144. GError **error);
  145. GLIB_AVAILABLE_IN_ALL
  146. void g_key_file_set_boolean (GKeyFile *key_file,
  147. const gchar *group_name,
  148. const gchar *key,
  149. gboolean value);
  150. GLIB_AVAILABLE_IN_ALL
  151. gint g_key_file_get_integer (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_integer (GKeyFile *key_file,
  157. const gchar *group_name,
  158. const gchar *key,
  159. gint value);
  160. GLIB_AVAILABLE_IN_ALL
  161. gint64 g_key_file_get_int64 (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_int64 (GKeyFile *key_file,
  167. const gchar *group_name,
  168. const gchar *key,
  169. gint64 value);
  170. GLIB_AVAILABLE_IN_ALL
  171. guint64 g_key_file_get_uint64 (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_uint64 (GKeyFile *key_file,
  177. const gchar *group_name,
  178. const gchar *key,
  179. guint64 value);
  180. GLIB_AVAILABLE_IN_ALL
  181. gdouble g_key_file_get_double (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_double (GKeyFile *key_file,
  187. const gchar *group_name,
  188. const gchar *key,
  189. gdouble value);
  190. GLIB_AVAILABLE_IN_ALL
  191. gchar **g_key_file_get_string_list (GKeyFile *key_file,
  192. const gchar *group_name,
  193. const gchar *key,
  194. gsize *length,
  195. GError **error) G_GNUC_MALLOC;
  196. GLIB_AVAILABLE_IN_ALL
  197. void g_key_file_set_string_list (GKeyFile *key_file,
  198. const gchar *group_name,
  199. const gchar *key,
  200. const gchar * const list[],
  201. gsize length);
  202. GLIB_AVAILABLE_IN_ALL
  203. gchar **g_key_file_get_locale_string_list (GKeyFile *key_file,
  204. const gchar *group_name,
  205. const gchar *key,
  206. const gchar *locale,
  207. gsize *length,
  208. GError **error) G_GNUC_MALLOC;
  209. GLIB_AVAILABLE_IN_ALL
  210. void g_key_file_set_locale_string_list (GKeyFile *key_file,
  211. const gchar *group_name,
  212. const gchar *key,
  213. const gchar *locale,
  214. const gchar * const list[],
  215. gsize length);
  216. GLIB_AVAILABLE_IN_ALL
  217. gboolean *g_key_file_get_boolean_list (GKeyFile *key_file,
  218. const gchar *group_name,
  219. const gchar *key,
  220. gsize *length,
  221. GError **error) G_GNUC_MALLOC;
  222. GLIB_AVAILABLE_IN_ALL
  223. void g_key_file_set_boolean_list (GKeyFile *key_file,
  224. const gchar *group_name,
  225. const gchar *key,
  226. gboolean list[],
  227. gsize length);
  228. GLIB_AVAILABLE_IN_ALL
  229. gint *g_key_file_get_integer_list (GKeyFile *key_file,
  230. const gchar *group_name,
  231. const gchar *key,
  232. gsize *length,
  233. GError **error) G_GNUC_MALLOC;
  234. GLIB_AVAILABLE_IN_ALL
  235. void g_key_file_set_double_list (GKeyFile *key_file,
  236. const gchar *group_name,
  237. const gchar *key,
  238. gdouble list[],
  239. gsize length);
  240. GLIB_AVAILABLE_IN_ALL
  241. gdouble *g_key_file_get_double_list (GKeyFile *key_file,
  242. const gchar *group_name,
  243. const gchar *key,
  244. gsize *length,
  245. GError **error) G_GNUC_MALLOC;
  246. GLIB_AVAILABLE_IN_ALL
  247. void g_key_file_set_integer_list (GKeyFile *key_file,
  248. const gchar *group_name,
  249. const gchar *key,
  250. gint list[],
  251. gsize length);
  252. GLIB_AVAILABLE_IN_ALL
  253. gboolean g_key_file_set_comment (GKeyFile *key_file,
  254. const gchar *group_name,
  255. const gchar *key,
  256. const gchar *comment,
  257. GError **error);
  258. GLIB_AVAILABLE_IN_ALL
  259. gchar *g_key_file_get_comment (GKeyFile *key_file,
  260. const gchar *group_name,
  261. const gchar *key,
  262. GError **error) G_GNUC_MALLOC;
  263. GLIB_AVAILABLE_IN_ALL
  264. gboolean g_key_file_remove_comment (GKeyFile *key_file,
  265. const gchar *group_name,
  266. const gchar *key,
  267. GError **error);
  268. GLIB_AVAILABLE_IN_ALL
  269. gboolean g_key_file_remove_key (GKeyFile *key_file,
  270. const gchar *group_name,
  271. const gchar *key,
  272. GError **error);
  273. GLIB_AVAILABLE_IN_ALL
  274. gboolean g_key_file_remove_group (GKeyFile *key_file,
  275. const gchar *group_name,
  276. GError **error);
  277. /* Defines for handling freedesktop.org Desktop files */
  278. #define G_KEY_FILE_DESKTOP_GROUP "Desktop Entry"
  279. #define G_KEY_FILE_DESKTOP_KEY_TYPE "Type"
  280. #define G_KEY_FILE_DESKTOP_KEY_VERSION "Version"
  281. #define G_KEY_FILE_DESKTOP_KEY_NAME "Name"
  282. #define G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME "GenericName"
  283. #define G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY "NoDisplay"
  284. #define G_KEY_FILE_DESKTOP_KEY_COMMENT "Comment"
  285. #define G_KEY_FILE_DESKTOP_KEY_ICON "Icon"
  286. #define G_KEY_FILE_DESKTOP_KEY_HIDDEN "Hidden"
  287. #define G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN "OnlyShowIn"
  288. #define G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN "NotShowIn"
  289. #define G_KEY_FILE_DESKTOP_KEY_TRY_EXEC "TryExec"
  290. #define G_KEY_FILE_DESKTOP_KEY_EXEC "Exec"
  291. #define G_KEY_FILE_DESKTOP_KEY_PATH "Path"
  292. #define G_KEY_FILE_DESKTOP_KEY_TERMINAL "Terminal"
  293. #define G_KEY_FILE_DESKTOP_KEY_MIME_TYPE "MimeType"
  294. #define G_KEY_FILE_DESKTOP_KEY_CATEGORIES "Categories"
  295. #define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY "StartupNotify"
  296. #define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass"
  297. #define G_KEY_FILE_DESKTOP_KEY_URL "URL"
  298. #define G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE "DBusActivatable"
  299. #define G_KEY_FILE_DESKTOP_KEY_ACTIONS "Actions"
  300. #define G_KEY_FILE_DESKTOP_TYPE_APPLICATION "Application"
  301. #define G_KEY_FILE_DESKTOP_TYPE_LINK "Link"
  302. #define G_KEY_FILE_DESKTOP_TYPE_DIRECTORY "Directory"
  303. G_END_DECLS
  304. #endif /* __G_KEY_FILE_H__ */