Exemplo n.º 1
0
static gboolean
parse_link (EggDesktopFile  *desktop_file,
	    EggDesktopFile **app_desktop_file,
	    GSList         **documents,
	    GError         **error)
{
  char *url;
  GKeyFile *key_file;

  url = g_key_file_get_string (desktop_file->key_file,
			       EGG_DESKTOP_FILE_GROUP,
			       EGG_DESKTOP_FILE_KEY_URL,
			       error);
  if (!url)
    return FALSE;
  *documents = g_slist_prepend (NULL, url);

  /* FIXME: use gvfs */
  key_file = g_key_file_new ();
  g_key_file_set_string (key_file, EGG_DESKTOP_FILE_GROUP,
			 EGG_DESKTOP_FILE_KEY_NAME,
			 "xdg-open");
  g_key_file_set_string (key_file, EGG_DESKTOP_FILE_GROUP,
			 EGG_DESKTOP_FILE_KEY_TYPE,
			 "Application");
  g_key_file_set_string (key_file, EGG_DESKTOP_FILE_GROUP,
			 EGG_DESKTOP_FILE_KEY_EXEC,
			 "xdg-open %u");
  *app_desktop_file = egg_desktop_file_new_from_key_file (key_file, NULL, NULL);
  return TRUE;
}
Exemplo n.º 2
0
/**
 * egg_desktop_file_new:
 * @desktop_file_path: path to a Freedesktop-style Desktop file
 * @error: error pointer
 *
 * Creates a new #EggDesktopFile for @desktop_file.
 *
 * Return value: the new #EggDesktopFile, or %NULL on error.
 **/
EggDesktopFile* egg_desktop_file_new(const char* desktop_file_path, GError** error)
{
	GKeyFile* key_file;

	key_file = g_key_file_new();

	if (!g_key_file_load_from_file(key_file, desktop_file_path, 0, error))
    {
		g_key_file_free(key_file);
		return NULL;
    }

	return egg_desktop_file_new_from_key_file(key_file, desktop_file_path, error);
}
Exemplo n.º 3
0
/**
 * egg_desktop_file_new_from_data_dirs:
 * @desktop_file_path: relative path to a Freedesktop-style Desktop file
 * @error: error pointer
 *
 * Looks for @desktop_file_path in the paths returned from
 * g_get_user_data_dir() and g_get_system_data_dirs(), and creates
 * a new #EggDesktopFile from it.
 *
 * Return value: the new #EggDesktopFile, or %NULL on error.
 **/
EggDesktopFile* egg_desktop_file_new_from_data_dirs(const char* desktop_file_path, GError** error)
{
	EggDesktopFile* desktop_file;
	GKeyFile* key_file;
	char* full_path;

	key_file = g_key_file_new();

	if (!g_key_file_load_from_data_dirs(key_file, desktop_file_path, &full_path, 0, error))
	{
		g_key_file_free(key_file);
		return NULL;
	}

	desktop_file = egg_desktop_file_new_from_key_file(key_file, full_path, error);
	g_free(full_path);
	return desktop_file;
}