Ejemplo n.º 1
0
static void remmina_main_expand_group_traverse(RemminaMain *remminamain, GtkTreeIter *iter)
{
	GtkTreeModel *tree;
	gboolean ret;
	gchar *group, *filename;
	GtkTreeIter child;
	GtkTreePath *path;

	tree = remminamain->priv->file_model_sort;
	ret = TRUE;
	while (ret)
	{
		gtk_tree_model_get(tree, iter, GROUP_COLUMN, &group, FILENAME_COLUMN, &filename, -1);
		if (filename == NULL)
		{
			if (remmina_string_array_find(remminamain->priv->expanded_group, group) >= 0)
			{
				path = gtk_tree_model_get_path(tree, iter);
				gtk_tree_view_expand_row(GTK_TREE_VIEW(remminamain->priv->file_list), path, FALSE);
				gtk_tree_path_free(path);
			}
			if (gtk_tree_model_iter_children(tree, &child, iter))
			{
				remmina_main_expand_group_traverse(remminamain, &child);
			}
		}
		g_free(group);
		g_free(filename);

		ret = gtk_tree_model_iter_next(tree, iter);
	}
}
Ejemplo n.º 2
0
void remmina_string_array_remove(RemminaStringArray* array, const gchar *str)
{
	gint i;

	i = remmina_string_array_find(array, str);
	if (i >= 0)
	{
		remmina_string_array_remove_index(array, i);
	}
}
Ejemplo n.º 3
0
void remmina_string_array_intersect(RemminaStringArray* array, const gchar *dest_strs)
{
	RemminaStringArray *dest_array;
	gint i, j;

	dest_array = remmina_string_array_new_from_string(dest_strs);

	i = 0;
	while (i < array->len)
	{
		j = remmina_string_array_find(dest_array, remmina_string_array_index(array, i));
		if (j < 0)
		{
			remmina_string_array_remove_index(array, i);
			continue;
		}
		i++;
	}

	remmina_string_array_free(dest_array);
}
Ejemplo n.º 4
0
gchar* remmina_file_manager_get_groups(void)
{
	gchar dirname[MAX_PATH_LEN];
	gchar filename[MAX_PATH_LEN];
	GDir* dir;
	const gchar* name;
	RemminaFile* remminafile;
	RemminaStringArray* array;
	const gchar* group;
	gchar* groups;

	array = remmina_string_array_new();

	g_snprintf(dirname, MAX_PATH_LEN, "%s/.remmina", g_get_home_dir());
	dir = g_dir_open(dirname, 0, NULL);
	if (dir == NULL)
		return 0;
	while ((name = g_dir_read_name(dir)) != NULL)
	{
		if (!g_str_has_suffix(name, ".remmina"))
			continue;
		g_snprintf(filename, MAX_PATH_LEN, "%s/%s", dirname, name);
		remminafile = remmina_file_load(filename);
		group = remmina_file_get_string(remminafile, "group");
		if (group && remmina_string_array_find(array, group) < 0)
		{
			remmina_string_array_add(array, group);
		}
		remmina_file_free(remminafile);
	}
	g_dir_close(dir);
	remmina_string_array_sort(array);
	groups = remmina_string_array_to_string(array);
	remmina_string_array_free(array);
	return groups;
}