Exemple #1
0
/*
 *  Add a sub-menu showing the sub-directories in the current directory.
 */
static GtkWidget*
fm__make_subdir_menu(AyyiFilemanager* fm)
{
	GtkWidget* submenu = gtk_menu_new();

	if (fm->real_path) {

		//TODO we should use existing data instead of recanning the directory.
		//     Why are there no directories in the hashtable?
#if 0
		GPtrArray* array = g_ptr_array_new();
		g_hash_table_foreach(filer.directory->known_items, temp, array);
#endif

		GDir* dir = g_dir_open((char*)fm->real_path, 0, NULL);
		const char* leaf;
		char escaped[256];
		if (dir) {
			GList* items = NULL;
			while ((leaf = g_dir_read_name(dir))) {
				if (leaf[0] == '.') continue;
				gchar* filename = g_build_filename(fm->real_path, leaf, NULL);
				if (g_file_test(filename, G_FILE_TEST_IS_DIR)) {
					strncpy(escaped, leaf, 255);
					fm__escape_for_menu(escaped);

					items = g_list_append(items, g_strdup(escaped));
				}
				g_free(filename);
			}

			g_dir_close(dir);

			items = g_list_sort(items, (GCompareFunc)g_ascii_strcasecmp);

			GList* l = items;
			for(;l;l=l->next){
				gchar* name = l->data;
				GtkWidget* item = gtk_image_menu_item_new_with_mnemonic(name);
				GtkWidget* ico = gtk_image_new_from_pixbuf(mime_type_get_pixbuf(inode_directory));
				gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), ico);
				gtk_container_add(GTK_CONTAINER(submenu), item);
				g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(menu__go_down_dir), NULL);
				g_free(name);
			}
			g_list_free(items);
		}
	}
	return submenu;
}
Exemple #2
0
static void
book_tree_create_pixbufs (DhBookTree *tree)
{
	g_return_if_fail (DH_IS_BOOK_TREE (tree));
	
 	DhBookTreePixbufs *pixbufs = g_new0 (DhBookTreePixbufs, 1);

	GdkPixbuf* iconbuf = mime_type_get_pixbuf(inode_directory);

	pixbufs->pixbuf_closed = iconbuf;//gdk_pixbuf_new_from_file (DATA_DIR "/devhelp/images/book_closed.png", NULL);
	pixbufs->pixbuf_opened = gdk_pixbuf_new_from_file (DATA_DIR "/devhelp/images/book_open.png", NULL);
	pixbufs->pixbuf_helpdoc = iconbuf;//gdk_pixbuf_new_from_file (DATA_DIR "/devhelp/images/helpdoc.png", NULL);

	tree->priv->pixbufs = pixbufs;
}