Форум — Development gtktreeview directory tree Си c, gtk, widgets 0 2 Добрый день.понемногу разбираюсь в gtk. возник вопрос - как вывести directory tree в gtktreeview? по самому gtktreeview информации много,а вот как его заставить отображать дерево каталогов и файлов на С, я так и не понял.хочется как тут Ссылка
при помощи opendir/readdir обходишь файловую систему, и заполняешь GtkTreeStore, привязанный к твоему GtkTreeView ananas ★★★★★ (29.06.13 18:24:57 MSK) Показать ответы Ссылка
Ответ на: комментарий от ananas 29.06.13 18:24:57 MSK спасибо, а не подскажете где пример посмотреть можно? kalter (29.06.13 18:42:09 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от kalter 29.06.13 18:42:09 MSK лентяй, да?#include <sys/types.h> #include <dirent.h> #include <gtk/gtk.h> void load_dir_tree (GtkTreeStore *s, GtkTreeIter *pit, gchar *path) { DIR *d; d = opendir (path); if (d) { struct dirent *ent; while ((ent = readdir (d)) != NULL) { if (ent->d_type == DT_DIR && ent->d_name[0] != '.') { GtkTreeIter it; gchar *fpath; gtk_tree_store_append (s, &it, pit); gtk_tree_store_set (s, &it, 0, ent->d_name, -1); fpath = g_strdup_printf ("%s/%s", path, ent->d_name); load_dir_tree (s, &it, fpath); g_free (fpath); } } closedir (d); } else perror ("opendir"); return; } int main (int argc, char *argv[]) { GtkWidget *w, *sw, *tw; GtkCellRenderer *r; GtkTreeStore *store; gtk_init (&argc, &argv); w = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (w), "delete-event", G_CALLBACK (gtk_main_quit), NULL); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (w), sw); store = gtk_tree_store_new (1, G_TYPE_STRING); tw = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); gtk_container_add (GTK_CONTAINER (sw), tw); r = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tw), -1, "Directory", r, "text", 0, NULL); load_dir_tree (store, NULL, "/"); gtk_widget_show_all (w); gtk_main (); return 0; } с тебя магарыч ananas ★★★★★ (29.06.13 19:05:09 MSK) Показать ответ Ссылка
Ответ на: комментарий от ananas 29.06.13 19:05:09 MSK О, спасибо большое! куда высылать магарыч?:} kalter (29.06.13 19:36:09 MSK) автор топика Ссылка
Ответ на: комментарий от ananas 29.06.13 18:24:57 MSK Ну, на самом деле, чтобы было совсем уж по фен-шую, нужно самому реализовать GtkTreeModel, чтобы унутре у ней были opendir/readdir thesame ★★★★ (29.06.13 19:53:12 MSK) Показать ответ Ссылка
Ответ на: комментарий от thesame 29.06.13 19:53:12 MSK внутре достаточно неонки. по феншую будет свой виджет, какой-нить GtkDirView создать ananas ★★★★★ (29.06.13 19:57:16 MSK) Ссылка
Ответ на: комментарий от RisuX3 20.02.14 00:00:58 MSK Что, уведомление получил? ☺Я и сам в пару тем ступил — снекропостил. Eddy_Em ☆☆☆☆☆ (20.02.14 00:02:30 MSK) Показать ответ Ссылка
Ответ на: комментарий от Eddy_Em 20.02.14 00:02:30 MSK Лор взял пример с почты россии? Что за дела такие RisuX3 ★ (20.02.14 00:16:24 MSK) Показать ответ Ссылка
Ответ на: комментарий от RisuX3 20.02.14 00:16:24 MSK Смотри внимательно в текст темы: kalter29.06.2013 18:15:08 Последнее исправление: cetjs2 19.02.2014 23:47:59 (всего исправлений: 1) Ужик теги правит. Eddy_Em ☆☆☆☆☆ (20.02.14 00:18:32 MSK) Ссылка