static PanelAppletInfo * _panel_applets_manager_get_applet_info (GKeyFile *applet_file, const gchar *group, const gchar *factory_id) { PanelAppletInfo *info; char *iid; char *name; char *comment; char *icon; char **old_ids; iid = g_strdup_printf ("%s::%s", factory_id, group); name = g_key_file_get_locale_string (applet_file, group, "Name", NULL, NULL); comment = g_key_file_get_locale_string (applet_file, group, "Description", NULL, NULL); icon = g_key_file_get_string (applet_file, group, "Icon", NULL); /* Bonobo compatibility */ old_ids = g_key_file_get_string_list (applet_file, group, "BonoboId", NULL, NULL); info = panel_applet_info_new (iid, name, comment, icon, (const char **) old_ids); g_free (iid); g_free (name); g_free (comment); g_free (icon); g_strfreev (old_ids); return info; }
static gboolean crawler_check_file_cb (TrackerCrawler *crawler, GFile *file, gpointer user_data) { TrackerMinerManager *manager; TrackerMinerManagerPrivate *priv; GKeyFile *key_file; gchar *path, *dbus_path, *dbus_name, *display_name, *description; GError *error = NULL; MinerData *data; manager = user_data; path = g_file_get_path (file); priv = TRACKER_MINER_MANAGER_GET_PRIVATE (manager); if (!g_str_has_suffix (path, ".desktop")) { return FALSE; } key_file = g_key_file_new (); g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, &error); if (error) { g_warning ("Error parsing miner .desktop file: %s", error->message); g_error_free (error); g_key_file_free (key_file); return FALSE; } dbus_path = g_key_file_get_string (key_file, DESKTOP_ENTRY_GROUP, DBUS_PATH_KEY, NULL); dbus_name = g_key_file_get_string (key_file, DESKTOP_ENTRY_GROUP, DBUS_NAME_KEY, NULL); display_name = g_key_file_get_locale_string (key_file, DESKTOP_ENTRY_GROUP, DISPLAY_NAME_KEY, NULL, NULL); if (!dbus_path || !dbus_name || !display_name) { g_warning ("Essential data (DBusPath, DBusName or Name) are missing in miner .desktop file"); g_key_file_free (key_file); g_free (dbus_path); g_free (display_name); g_free (dbus_name); return FALSE; } description = g_key_file_get_locale_string (key_file, DESKTOP_ENTRY_GROUP, DESCRIPTION_KEY, NULL, NULL); data = g_slice_new0 (MinerData); data->dbus_path = dbus_path; data->dbus_name = dbus_name; data->display_name = display_name; data->description = description; priv->miners = g_list_prepend (priv->miners, data); g_key_file_free (key_file); g_free (path); return TRUE; }
void test_setlocale() { GKeyFile *keyfile; gchar *value; gchar **list; gchar *input_list[2] = {"test2","test3"}; gsize length = 2; const gchar *data = "[1]\n" "key1=123\n" "key2=456\n"; keyfile = load_data (data, 0); g_key_file_set_locale_string(keyfile,"1","key3","C","test"); value = g_key_file_get_locale_string(keyfile,"1","key3","C",NULL); g_assert(!strcmp(value,"test")); g_free(value); value = g_key_file_get_locale_string(keyfile,"1","key3","de",NULL); g_assert(value == NULL); g_key_file_set_locale_string_list(keyfile,"1","key4","C",input_list,2); list = g_key_file_get_locale_string_list(keyfile,"1","key4","C",&length,NULL); g_assert(!strcmp(list[0],"test2")); g_assert(!strcmp(list[1],"test3")); }
static void insert_data_from_desktop_file (TrackerSparqlBuilder *sparql, const gchar *subject, const gchar *metadata_key, GKeyFile *desktop_file, const gchar *key, const gchar *locale) { gchar *str; if (locale) { /* Try to get the key with our desired LANG locale... */ str = g_key_file_get_locale_string (desktop_file, GROUP_DESKTOP_ENTRY, key, locale, NULL); /* If our desired locale failed, use the list of LANG locales prepared by GLib * (will return untranslated string if none of the locales available) */ if (!str) { str = g_key_file_get_locale_string (desktop_file, GROUP_DESKTOP_ENTRY, key, NULL, NULL); } } else { str = g_key_file_get_string (desktop_file, GROUP_DESKTOP_ENTRY, key, NULL); } if (str) { tracker_sparql_builder_subject_iri (sparql, subject); tracker_sparql_builder_predicate_iri (sparql, metadata_key); tracker_sparql_builder_object_string (sparql, str); g_free (str); } }
/** * This function absorbs/freeÅ› path, so this is no longer available afterwards. */ static void read_desktop_file ( DRunModePrivateData *pd, char *path, const char *filename ) { for ( unsigned int index = 0; index < pd->history_length; index++ ) { if ( g_strcmp0 ( path, pd->entry_list[index].path ) == 0 ) { g_free ( path ); return; } } GKeyFile *kf = g_key_file_new (); GError *error = NULL; g_key_file_load_from_file ( kf, path, 0, &error ); // If error, skip to next entry if ( error != NULL ) { g_error_free ( error ); g_key_file_free ( kf ); g_free ( path ); return; } // Skip hidden entries. if ( g_key_file_has_key ( kf, "Desktop Entry", "Hidden", NULL ) ) { if ( g_key_file_get_boolean ( kf, "Desktop Entry", "Hidden", NULL ) ) { g_key_file_free ( kf ); g_free ( path ); return; } } // Skip entries that have NoDisplay set. if ( g_key_file_has_key ( kf, "Desktop Entry", "NoDisplay", NULL ) ) { if ( g_key_file_get_boolean ( kf, "Desktop Entry", "NoDisplay", NULL ) ) { g_key_file_free ( kf ); g_free ( path ); return; } } if ( g_key_file_has_key ( kf, "Desktop Entry", "Exec", NULL ) ) { size_t nl = ( ( pd->cmd_list_length ) + 1 ); pd->entry_list = g_realloc ( pd->entry_list, nl * sizeof ( *( pd->entry_list ) ) ); pd->entry_list[pd->cmd_list_length].path = path; pd->entry_list[pd->cmd_list_length].terminal = FALSE; if ( g_key_file_has_key ( kf, "Desktop Entry", "Name", NULL ) ) { gchar *n = g_key_file_get_locale_string ( kf, "Desktop Entry", "Name", NULL, NULL ); gchar *gn = g_key_file_get_locale_string ( kf, "Desktop Entry", "GenericName", NULL, NULL ); pd->entry_list[pd->cmd_list_length].name = n; pd->entry_list[pd->cmd_list_length].generic_name = gn; } else { pd->entry_list[pd->cmd_list_length].name = g_filename_display_name ( filename ); pd->entry_list[pd->cmd_list_length].generic_name = NULL; } pd->entry_list[pd->cmd_list_length].exec = g_key_file_get_string ( kf, "Desktop Entry", "Exec", NULL ); if ( g_key_file_has_key ( kf, "Desktop Entry", "Terminal", NULL ) ) { pd->entry_list[pd->cmd_list_length].terminal = g_key_file_get_boolean ( kf, "Desktop Entry", "Terminal", NULL ); } ( pd->cmd_list_length )++; } g_key_file_free ( kf ); }
static ActionProxy * make_action_proxy (const gchar *filename, const gchar *fullpath) { GKeyFile *key_file = g_key_file_new(); g_key_file_load_from_file (key_file, fullpath, G_KEY_FILE_NONE, NULL); if (g_key_file_has_key (key_file, ACTION_FILE_GROUP, KEY_ACTIVE, NULL)) { if (!g_key_file_get_boolean (key_file, ACTION_FILE_GROUP, KEY_ACTIVE, NULL)) { g_key_file_free (key_file); return NULL; } } ActionProxy *proxy = g_slice_new0 (ActionProxy); gchar *name = g_key_file_get_locale_string (key_file, ACTION_FILE_GROUP, KEY_NAME, NULL, NULL); if (name != NULL) proxy->name = g_strdup (name); gchar *comment = g_key_file_get_locale_string (key_file, ACTION_FILE_GROUP, KEY_COMMENT, NULL, NULL); if (comment != NULL) proxy->comment = g_strdup (comment); gchar *icon_name = g_key_file_get_string (key_file, ACTION_FILE_GROUP, KEY_ICON_NAME, NULL); if (icon_name != NULL) proxy->icon_name = g_strdup (icon_name); gchar *stock_id = g_key_file_get_string (key_file, ACTION_FILE_GROUP, KEY_STOCK_ID, NULL); if (stock_id != NULL) proxy->stock_id = g_strdup (stock_id); proxy->filename = g_strdup (filename); g_free (name); g_free (icon_name); g_free (stock_id); g_key_file_free (key_file); return proxy; }
/* * If file_name is not a full path, this function searches default paths * for the desktop file. */ VFSAppDesktop* vfs_app_desktop_new( const char* file_name ) { GKeyFile* file; gboolean load; char* relative_path; VFSAppDesktop* app = g_slice_new0( VFSAppDesktop ); app->n_ref = 1; file = g_key_file_new(); if( !file_name ) { g_key_file_free( file ); return app; } if( g_path_is_absolute( file_name ) ) { app->file_name = g_path_get_basename( file_name ); load = g_key_file_load_from_file( file, file_name, G_KEY_FILE_NONE, NULL ); } else { app->file_name = g_strdup( file_name ); relative_path = g_build_filename( "applications", app->file_name, NULL ); load = g_key_file_load_from_data_dirs( file, relative_path, NULL, G_KEY_FILE_NONE, NULL ); g_free( relative_path ); } if( load ) { app->disp_name = g_key_file_get_locale_string ( file, desktop_entry_name, "Name", NULL, NULL); app->comment = g_key_file_get_locale_string ( file, desktop_entry_name, "Comment", NULL, NULL); app->exec = g_key_file_get_string ( file, desktop_entry_name, "Exec", NULL); app->icon_name = g_key_file_get_string ( file, desktop_entry_name, "Icon", NULL); app->terminal = g_key_file_get_boolean( file, desktop_entry_name, "Terminal", NULL ); app->hidden = g_key_file_get_boolean( file, desktop_entry_name, "NoDisplay", NULL ); app->path = g_key_file_get_string ( file, desktop_entry_name, "Path", NULL); } g_key_file_free( file ); return app; }
static void load_session_file (const char *id, const char *path) { GKeyFile *key_file; GError *error; gboolean res; GdmSessionFile *session; key_file = g_key_file_new (); error = NULL; res = g_key_file_load_from_file (key_file, path, 0, &error); if (!res) { g_debug ("Failed to load \"%s\": %s\n", path, error->message); g_error_free (error); goto out; } if (! g_key_file_has_group (key_file, G_KEY_FILE_DESKTOP_GROUP)) { goto out; } res = g_key_file_has_key (key_file, G_KEY_FILE_DESKTOP_GROUP, "Name", NULL); if (! res) { g_debug ("\"%s\" contains no \"Name\" key\n", path); goto out; } if (!key_file_is_relevant (key_file)) { g_debug ("\"%s\" is hidden or contains non-executable TryExec program\n", path); goto out; } session = g_new0 (GdmSessionFile, 1); session->id = g_strdup (id); session->path = g_strdup (path); session->translated_name = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "Name", NULL, NULL); session->translated_comment = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "Comment", NULL, NULL); g_hash_table_insert (gdm_available_sessions_map, g_strdup (id), session); out: g_key_file_free (key_file); }
/** * shell_app_info_get_icon: * @info: A #ShellAppInfo * * Get the #GIcon associated with this app; for apps "faked" from a #MetaWindow, * return %NULL. * * Returns: (transfer full): The icon for @info, or %NULL */ GIcon * shell_app_info_get_icon (ShellAppInfo *info) { char *iconname = NULL; GIcon *icon; /* This code adapted from gdesktopappinfo.c * Copyright (C) 2006-2007 Red Hat, Inc. * Copyright © 2007 Ryan Lortie * LGPL */ switch (info->type) { case SHELL_APP_INFO_TYPE_ENTRY: return themed_icon_from_name (gmenu_tree_entry_get_icon ((GMenuTreeEntry*)info->entry)); case SHELL_APP_INFO_TYPE_DESKTOP_FILE: iconname = g_key_file_get_locale_string (info->keyfile, DESKTOP_ENTRY_GROUP, "Icon", NULL, NULL); icon = themed_icon_from_name (iconname); g_free (iconname); return icon; break; case SHELL_APP_INFO_TYPE_WINDOW: return NULL; } g_assert_not_reached (); return NULL; }
void set_description_from_desktop (GksuContext *context, gchar *file_name) { GKeyFile *desktop; GError *error = NULL; gchar *buffer = NULL; desktop = g_key_file_new (); g_key_file_load_from_file (desktop, file_name, G_KEY_FILE_NONE, &error); if (error) { g_warning ("Could not load desktop file: %s", error->message); g_error_free (error); g_key_file_free (desktop); return; } buffer = g_key_file_get_locale_string (desktop, "Desktop Entry", "Name", NULL, NULL); if (buffer) { gksu_context_set_description (context, buffer); g_free (buffer); } g_key_file_free (desktop); }
static GIcon * key_file_get_icon (GKeyFile *key_file) { GIcon *icon = NULL; gchar *icon_name; icon_name = g_key_file_get_locale_string (key_file, DESKTOP_ENTRY_GROUP, "Icon", NULL, NULL); if (!icon_name) return NULL; if (g_path_is_absolute (icon_name)) { GFile *file; file = g_file_new_for_path (icon_name); icon = g_file_icon_new (file); g_object_unref (file); } else { char *p; /* Work around a common mistake in desktop files */ if ((p = strrchr (icon_name, '.')) != NULL && (strcmp (p, ".png") == 0 || strcmp (p, ".xpm") == 0 || strcmp (p, ".svg") == 0)) *p = 0; icon = g_themed_icon_new (icon_name); } g_free (icon_name); return icon; }
static struct Action* _get_action(GKeyFile* file, const char* group_name) { GError* error = NULL; gchar* name = g_key_file_get_locale_string(file, group_name, G_KEY_FILE_DESKTOP_KEY_NAME, NULL, &error); if (error != NULL) { g_warning("[%s] %s", __func__, error->message); g_error_free(error); return NULL; } gchar* exec = g_key_file_get_string(file, group_name, G_KEY_FILE_DESKTOP_KEY_EXEC, &error); if (error != NULL) { g_warning("[%s] %s", __func__, error->message); g_error_free(error); g_free(name); return NULL; } /* g_debug("[%s] name: %s, exec: %s", __func__, name, exec); */ struct Action* action = action_new(name, exec); g_free(name); g_free(exec); return action; }
static void check_locale_string_value (GKeyFile *keyfile, const gchar *group, const gchar *key, const gchar *locale, const gchar *expected) { GError *error = NULL; gchar *value; value = g_key_file_get_locale_string (keyfile, group, key, locale, &error); check_no_error (&error); g_assert (value != NULL); if (strcmp (value, expected) != 0) { g_print ("Group %s key %s locale %s: " "expected string value '%s', actual value '%s'\n", group, key, locale, expected, value); g_assert(FALSE && "keyfile_test failed"); #ifdef SYMBIAN testResultXml("keyfile_test"); #endif /* EMULATOR */ exit (1); } g_free (value); }
/** * as_app_parse_file_key_fallback_comment: **/ static gboolean as_app_parse_file_key_fallback_comment (AsApp *app, GKeyFile *kf, const gchar *key, GError **error) { g_autofree gchar *locale = NULL; g_autofree gchar *tmp = NULL; /* GenericName */ if (g_strcmp0 (key, G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME) == 0 || g_strcmp0 (key, "_GenericName") == 0) { tmp = g_key_file_get_string (kf, G_KEY_FILE_DESKTOP_GROUP, key, NULL); if (tmp != NULL && tmp[0] != '\0') as_app_set_comment (app, "C", tmp); /* GenericName[] */ } else if (g_str_has_prefix (key, G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME)) { locale = as_app_desktop_key_get_locale (key); tmp = g_key_file_get_locale_string (kf, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME, locale, NULL); if (tmp != NULL && tmp[0] != '\0') as_app_set_comment (app, locale, tmp); } return TRUE; }
static char * load_index_theme_name (const char *index, char **parent) { GKeyFile *file; char *indexname = NULL; gboolean hidden; file = g_key_file_new (); if (g_key_file_load_from_file (file, index, G_KEY_FILE_KEEP_TRANSLATIONS, NULL) == FALSE) { g_key_file_free (file); return NULL; } /* Don't add hidden themes to the list */ hidden = g_key_file_get_boolean (file, "Sound Theme", "Hidden", NULL); if (!hidden) { indexname = g_key_file_get_locale_string (file, "Sound Theme", "Name", NULL, NULL); /* Save the parent theme, if there's one */ if (parent != NULL) { *parent = g_key_file_get_string (file, "Sound Theme", "Inherits", NULL); } } g_key_file_free (file); return indexname; }
/** * ethos_plugin_info_load_from_key_file: * @plugin_info: An #EthosPluginInfo * @group: the name of the group to load * @key_file: A #GKeyFile * @error: A location for a #GError or %NULL * * Loads the plugin information from @key_file. The information is loaded from the group named * @group within the keyfile. Therfore, if @group where "Sample Plugin" then the keyfile should * have a group header such as "[Sample Plugin]" within it. * * Upon failure, @error is set and %FALSE is returned. * * Return value: %TRUE on success */ gboolean ethos_plugin_info_load_from_key_file (EthosPluginInfo *plugin_info, const gchar *group, GKeyFile *key_file, GError **error) { EthosPluginInfoPrivate *priv; g_return_val_if_fail (ETHOS_IS_PLUGIN_INFO (plugin_info), FALSE); g_return_val_if_fail (key_file != NULL, FALSE); priv = plugin_info->priv; ethos_plugin_info_clear (plugin_info); if (!g_key_file_has_group (key_file, group)) { g_set_error (error, ETHOS_ERROR, ETHOS_ERROR_INVALID_KEY_FILE, "Could not find group %s in key file", group); return FALSE; } priv->loader = g_key_file_get_string (key_file, group, "Loader", NULL); priv->authors = g_key_file_get_string_list (key_file, group, "Authors", NULL, NULL); priv->desc = g_key_file_get_locale_string (key_file, group, "Description", NULL, NULL); priv->copyright = g_key_file_get_string (key_file, group, "Copyright", NULL); priv->website = g_key_file_get_string (key_file, group, "Website", NULL); priv->deps = g_key_file_get_string (key_file, group, "Dependencies", NULL); priv->name = g_key_file_get_locale_string (key_file, group, "Name", NULL, NULL); priv->module = g_key_file_get_string (key_file, group, "Module", NULL); priv->icon = g_key_file_get_string (key_file, group, "Icon", NULL); priv->version = g_key_file_get_string (key_file, group, "Version", NULL); priv->iage = g_key_file_get_integer (key_file, group, "IAge", NULL); if (!priv->name) { g_set_error (error, ETHOS_ERROR, ETHOS_ERROR_INVALID_KEY_FILE, "No \"Name\" in key file"); return FALSE; } else if (!priv->module) { g_set_error (error, ETHOS_ERROR, ETHOS_ERROR_INVALID_KEY_FILE, "No \"Module\" in key file"); return FALSE; } return TRUE; }
static EvBackendInfo * ev_backends_manager_load_backend (const gchar *file) { EvBackendInfo *info; GKeyFile *backend_file = NULL; GError *error = NULL; backend_file = g_key_file_new (); if (!g_key_file_load_from_file (backend_file, file, G_KEY_FILE_NONE, &error)) { g_warning ("Error opening backend file %s: %s", file, error->message); g_error_free (error); g_key_file_free (backend_file); return NULL; } info = g_new0 (EvBackendInfo, 1); info->module_name = g_key_file_get_string (backend_file, EV_BACKENDS_GROUP, "Module", NULL); if (!info->module_name) { g_warning ("Bad atril backend file %s: Could not find 'Module'", file); ev_backend_info_free (info); g_key_file_free (backend_file); return NULL; } info->resident = g_key_file_get_boolean (backend_file, EV_BACKENDS_GROUP, "Resident", NULL); info->type_desc = g_key_file_get_locale_string (backend_file, EV_BACKENDS_GROUP, "TypeDescription", NULL, NULL); if (!info->type_desc) { g_warning ("Bad atril backend file %s: Could not find 'TypeDescription'", file); ev_backend_info_free (info); g_key_file_free (backend_file); return NULL; } info->mime_types = g_key_file_get_string_list (backend_file, EV_BACKENDS_GROUP, "MimeType", NULL, NULL); if (!info->mime_types) { g_warning ("Bad atril backend file %s: Could not find 'MimeType'", file); ev_backend_info_free (info); g_key_file_free (backend_file); return NULL; } g_key_file_free (backend_file); return info; }
static ArCardThemeInfo * ar_card_theme_kde_class_get_theme_info (ArCardThemeClass *klass, const char *path, const char *filename) { ArCardThemeInfo *info = NULL; char *base_path = NULL, *key_file_path = NULL; char *back_name; GKeyFile *key_file = NULL; char *svg_filename = NULL, *name = NULL, *display_name, *pref_name; if (get_is_blacklisted (filename)) { ar_debug_print (AR_DEBUG_CARD_THEME, "KDE card theme %s is blacklisted\n", filename); return NULL; } base_path = g_build_filename (path, filename, NULL); if (!g_file_test (path, G_FILE_TEST_IS_DIR)) goto out; key_file_path = g_build_filename (base_path, KDE_BACKDECK_FILENAME, NULL); key_file = g_key_file_new (); if (!g_key_file_load_from_file (key_file, key_file_path, 0, NULL)) goto out; if (!g_key_file_has_group (key_file, KDE_BACKDECK_GROUP)) goto out; name = g_key_file_get_locale_string (key_file, KDE_BACKDECK_GROUP, KDE_BACKDECK_NAME_KEY, NULL, NULL); svg_filename = g_key_file_get_string (key_file, KDE_BACKDECK_GROUP, KDE_BACKDECK_SVG_KEY, NULL); if (!name || !name[0] || !svg_filename || !svg_filename[0]) goto out; back_name = g_key_file_get_string (key_file, KDE_BACKDECK_GROUP, KDE_BACKDECK_BACK_KEY, NULL); display_name = g_strdup_printf ("%s (KDE)", name); pref_name = g_strdup_printf ("kde:%s", filename); info = _ar_card_theme_info_new (G_OBJECT_CLASS_TYPE (klass), base_path, svg_filename, display_name /* adopts */, pref_name /* adopts */, TRUE /* scalable */, back_name, g_free); out: g_free (base_path); g_free (key_file_path); g_free (name); g_free (svg_filename); if (key_file) { g_key_file_free (key_file); } return info; }
char * egg_desktop_file_get_locale_string (EggDesktopFile * desktop_file, const char *key, const char *locale, GError ** error) { return g_key_file_get_locale_string (desktop_file->key_file, EGG_DESKTOP_FILE_GROUP, key, locale, error); }
EVENTD_EXPORT gint8 evhelpers_config_key_file_get_locale_string(GKeyFile *config_file, const gchar *group, const gchar *key, const gchar *locale, gchar **value) { GError *error = NULL; *value = g_key_file_get_locale_string(config_file, group, key, locale, &error); return _evhelpers_config_key_file_error(&error, group, key); }
static gboolean desktop_entry_load_directory (DesktopEntry *entry, GKeyFile *key_file, GError **error) { DesktopEntryDirectory *entry_directory = (DesktopEntryDirectory*)entry; char *type_str; type_str = g_key_file_get_string (key_file, DESKTOP_ENTRY_GROUP, "Type", error); if (!type_str) return FALSE; if (strcmp (type_str, "Directory") != 0) { g_set_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE, "\"%s\" does not contain the correct \"Type\" value\n", entry->path); g_free (type_str); return FALSE; } g_free (type_str); entry_directory->name = g_key_file_get_locale_string (key_file, DESKTOP_ENTRY_GROUP, "Name", NULL, error); if (entry_directory->name == NULL) return FALSE; entry_directory->generic_name = g_key_file_get_locale_string (key_file, DESKTOP_ENTRY_GROUP, "GenericName", NULL, NULL); entry_directory->comment = g_key_file_get_locale_string (key_file, DESKTOP_ENTRY_GROUP, "Comment", NULL, NULL); entry_directory->icon = key_file_get_icon (key_file); entry_directory->nodisplay = g_key_file_get_boolean (key_file, DESKTOP_ENTRY_GROUP, "NoDisplay", NULL); entry_directory->hidden = g_key_file_get_boolean (key_file, DESKTOP_ENTRY_GROUP, "Hidden", NULL); entry_directory->showin = key_file_get_show_in (key_file); return TRUE; }
gchar * ccm_config_schema_get_description (CCMConfigSchema * self, gchar * locale, gchar * key) { g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (key != NULL, NULL); return g_key_file_get_locale_string (self->priv->file, key, CCM_CONFIG_SCHEMA_ENTRY_DESCRIPTION, locale, NULL); }
void add_autostart_file(char* desktop_id, char* file, GKeyFile* kf) { GtkTreeIter it; const char* session_name_local = NULL; session_name_local = g_getenv("XDG_CURRENT_DESKTOP"); if(!session_name_local) { session_name_local = g_getenv("DESKTOP_SESSION"); if( G_UNLIKELY(!session_name_local) ) session_name_local = "LXDE"; } if( g_key_file_load_from_file( kf, file, 0, NULL ) ) { if( is_desktop_file_valid(kf) ) { char* name = g_key_file_get_locale_string(kf, grp, "Name", NULL, NULL); char* icon = g_key_file_get_locale_string(kf, grp, "Icon", NULL, NULL); char* comment = g_key_file_get_locale_string(kf, grp, "Comment", NULL, NULL); int flags; gboolean enabled = is_desktop_file_enabled(kf, &flags, session_name_local); if( enabled ) flags |= ORIGINALLY_ENABLED; gtk_list_store_append(autostart_list, &it); gtk_list_store_set( autostart_list, &it, COL_ENABLED, enabled, COL_NAME, name, /* COL_ICON, pix, */ COL_COMMENT, comment, COL_DESKTOP_ID, desktop_id, COL_SRC_FILE, file, COL_FLAGS, flags, -1 ); g_free(name); g_free(icon); g_free(comment); } } }
GSList *do_scan_xsessions(void) { GSList *xsessions = NULL; GDir *d; const char *basename; GKeyFile *f; d = g_dir_open(XSESSIONS_DIR, 0, NULL); if( !d ) return NULL; f = g_key_file_new(); while( ( basename = g_dir_read_name(d) ) != NULL ) { char *file_path; gboolean loaded; if(!g_str_has_suffix(basename, ".desktop")) continue; file_path = g_build_filename(XSESSIONS_DIR, basename, NULL); loaded = g_key_file_load_from_file(f, file_path, G_KEY_FILE_NONE, NULL); g_free(file_path); if( loaded ) { char *name = g_key_file_get_locale_string(f, "Desktop Entry", "Name", NULL, NULL); if( name ) { char *exec = g_key_file_get_string(f, "Desktop Entry", "Exec", NULL); if(exec) { Session* sess = g_new( Session, 1 ); sess->name = name; sess->exec = exec; sess->desktop_file = g_strdup(basename); if( !strcmp(name, "LXDE") ) xsessions = g_slist_prepend(xsessions, sess); else xsessions = g_slist_append(xsessions, sess); continue; /* load next file */ g_free(exec); } g_free(name); } } } g_dir_close(d); g_key_file_free(f); return xsessions; }
static void config_from_file() { const gchar* user_config = g_get_user_config_dir(); GString* path = g_string_new (user_config); g_string_append(path, "/eyerest.conf"); g_message("Load config file: %s", path->str); GKeyFile* key_file = g_key_file_new(); if(g_key_file_load_from_file (key_file, path->str, G_KEY_FILE_NONE, NULL)) { GET_DEFAULT_VALUE(g_config.interval, g_key_file_get_integer (key_file, "Config", "interval", NULL)); GET_DEFAULT_VALUE(g_config.rest_time, g_key_file_get_integer (key_file, "Config", "rest_time", NULL)); GET_DEFAULT_VALUE(g_config.max_idle_time, g_key_file_get_integer (key_file, "Config", "max_idle_time", NULL)); GError *error; gchar* font = g_key_file_get_locale_string(key_file, "Display", "font", NULL, NULL); gchar* color = g_key_file_get_locale_string(key_file, "Display", "color", NULL, NULL); gchar* format = g_key_file_get_locale_string(key_file, "Display", "format", NULL, &error); if(format == NULL) { g_print ("get format failed: %s\n", error->message); } SET_DEFAULT_VALUE_CPYSTR(g_config.font, font); SET_DEFAULT_VALUE_CPYSTR(g_config.color, color); SET_DEFAULT_VALUE_CPYSTR(g_config.format, format); g_free(font); g_free(color); GET_DEFAULT_VALUE(g_config.x_coordinate, g_key_file_get_integer (key_file, "Display", "x-coordinate", NULL)); GET_DEFAULT_VALUE(g_config.y_coordinate, g_key_file_get_integer (key_file, "Display", "y-coordinate", NULL)); } g_key_file_free(key_file); g_string_free(path, TRUE); }
char * shell_app_info_get_description (ShellAppInfo *info) { switch (info->type) { case SHELL_APP_INFO_TYPE_ENTRY: return g_strdup (gmenu_tree_entry_get_comment ((GMenuTreeEntry*)info->entry)); case SHELL_APP_INFO_TYPE_DESKTOP_FILE: return g_key_file_get_locale_string (info->keyfile, DESKTOP_ENTRY_GROUP, "Comment", NULL, NULL); case SHELL_APP_INFO_TYPE_WINDOW: return NULL; } g_assert_not_reached (); return NULL; }
/* g_key_file_get_locale_string is too much limited so implement replacement */ static char *_get_language_string(GKeyFile *kf, const char *key) { char **lang; char *try_key, *str; for (lang = languages; lang[0] != NULL; lang++) { try_key = g_strdup_printf("%s[%s]", key, lang[0]); str = _get_string(kf, try_key); g_free(try_key); if (str != NULL) return str; } return _escape_lf(g_key_file_get_locale_string(kf, G_KEY_FILE_DESKTOP_GROUP, key, languages[0], NULL)); }
void ToolbarData::load(GKeyFile* config, const char* group) { XOJ_CHECK_TYPE(ToolbarData); gsize length = 0; gchar** keys = g_key_file_get_keys(config, group, &length, NULL); if (keys == NULL) { return; } gchar* name = g_key_file_get_locale_string(config, group, "name", NULL, NULL); if (name != NULL) { this->name = name; g_free(name); } for (gsize i = 0; i < length; i++) { if (strcmp(keys[i], "name") == 0 || strncmp(keys[i], "name[", 5) == 0) { continue; } ToolbarEntry e; gsize keyLen = 0; e.setName(keys[i]); gchar** list = g_key_file_get_string_list(config, group, keys[i], &keyLen, NULL); for (gsize x = 0; x < keyLen; x++) { String s = list[x]; e.addItem(s.trim()); } this->contents.push_back(e); g_strfreev(list); } g_strfreev(keys); }
static void check_locale_string_value (GKeyFile *keyfile, const gchar *group, const gchar *key, const gchar *locale, const gchar *expected) { GError *error = NULL; gchar *value; value = g_key_file_get_locale_string (keyfile, group, key, locale, &error); check_no_error (error); cut_assert (value); cut_assert_equal_string (expected, value, cut_message ("Group %s key %s locale %s: " "expected string value '%s', " "actual value '%s'", group, key, locale, expected, value)); g_free (value); }
static gchar * get_customer_support_email (void) { g_autoptr(GKeyFile) key_file = g_key_file_new (); const gchar * const *path_iter; g_autofree gchar *support_email = NULL; g_autoptr(GError) error = NULL; for (path_iter = customer_support_paths; *path_iter != NULL; path_iter++) { if (!g_key_file_load_from_file (key_file, *path_iter, G_KEY_FILE_NONE, &error)) { if (!g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) g_warning ("%s: %s", *path_iter, error->message); g_clear_error (&error); continue; } support_email = g_key_file_get_locale_string (key_file, CUSTOMER_SUPPORT_GROUP_NAME, CUSTOMER_SUPPORT_KEY_EMAIL, NULL, &error); if (support_email == NULL) { g_warning ("[%s] %s key not found in %s: %s", CUSTOMER_SUPPORT_GROUP_NAME, CUSTOMER_SUPPORT_KEY_EMAIL, *path_iter, error->message); g_clear_error (&error); } else { return g_steal_pointer (&support_email); } } g_warning ("[%s] %s key not found in any %s, using default", CUSTOMER_SUPPORT_GROUP_NAME, CUSTOMER_SUPPORT_KEY_EMAIL, CUSTOMER_SUPPORT_FILENAME); return g_strdup (CUSTOMER_SUPPORT_EMAIL_FALLBACK); }