static void
create_tree (FMTreeView *view)
{
GtkCellRenderer *cell;
GtkTreeViewColumn *column;
GnomeVFSVolumeMonitor *volume_monitor;
char *home_uri;
GList *volumes, *l;
/* adding some var */
FILE *hack_fd = NULL;
char *hack_homepath = NULL;
char *hack_filename = NULL;
char *hack_line = NULL;
char *hack_dir = NULL;
char *hack_name = NULL;
char *hack_icon = NULL;
size_t hack_len = 0;
size_t hack_read = 0;
view->details->child_model = fm_tree_model_new ();
view->details->sort_model = GTK_TREE_MODEL_SORT
(gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (view->details->child_model)));
view->details->tree_widget = GTK_TREE_VIEW
(gtk_tree_view_new_with_model (GTK_TREE_MODEL (view->details->sort_model)));
g_object_unref (view->details->sort_model);
g_signal_connect_object
(view->details->child_model, "row_loaded",
G_CALLBACK (row_loaded_callback),
view, G_CONNECT_AFTER);
home_uri = gnome_vfs_get_uri_from_local_path (g_get_home_dir ());
fm_tree_model_add_root_uri (view->details->child_model, home_uri, _("Home Folder"), "gnome-home");
g_free (home_uri);
/* hack start */
/* getting user environement */
hack_homepath = (char*)getenv("HOME");
/* malloc for the config filename */
hack_filename = (char*)malloc(sizeof(char) * (strlen(hack_homepath) + strlen("/.nautilus_tree"))+1);
memset(hack_filename,0,sizeof(char) * (strlen(hack_homepath) + strlen("/.nautilus_tree"))+1);
/* filename is the string containing the full path for config file */
hack_filename = strcat(hack_filename, hack_homepath);
hack_filename = strcat(hack_filename, "/.nautilus_tree");
/* opening filename in read mode */
hack_fd = fopen(hack_filename, "r");
/* check that filename is open(able) */
if (hack_fd != NULL)
{
/* reading filename while EOF */
while ((hack_read = getline(&hack_line, &hack_len, hack_fd)) != -1)
{
/* stripping line return */
hack_line[strlen(hack_line)-1] = 0;
/* split of the line */
hack_dir = (char*)strsep(&hack_line,"|");
hack_name = (char*)strsep(&hack_line,"|");
hack_icon = (char*)strsep(&hack_line,"|");
/* if we have three things */
if (hack_dir && hack_name && hack_icon)
{
/* check that the directory is open(able) */
if (opendir(hack_dir))
{
/* if it's ok we had to nautilus tree with option*/
fm_tree_model_add_root_uri (view->details->child_model, hack_dir, _(hack_name), hack_icon);
}
}
}
}
/* cleaning memory */
if (hack_line) free(hack_line);
if (hack_filename) free (hack_filename);
/* close filename */
fclose(hack_fd);
/* hack end */
fm_tree_model_add_root_uri (view->details->child_model, "file:///", _("Filesystem"), "gnome-folder");
#ifdef NOT_YET_USABLE
fm_tree_model_add_root_uri (view->details->child_model, "network:///", _("Network Neighbourhood"), "gnome-fs-network");
#endif
[...]