- 论坛徽章:
- 0
|
想做一个类似资源管理器的东西,当然功能不会像我们平常使用的这么丰富呵呵。刚开始就遇到一个问题,想请教各位高手
我的代码如下:
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <gtk/gtk.h>
#include <stdio.h>
void closeApp(GtkWidget *window, gpointer data)
{
gtk_main_quit();
}
int main(int argc, char *argv[])
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
GtkWidget *window;
GtkTreeStore *store;
GtkWidget *view;
GtkTreeIter parent_iter, child_iter;
GtkCellRenderer *renderer;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
g_signal_connect(GTK_OBJECT(window), "destroy",
GTK_SIGNAL_FUNC(closeApp), NULL);
store = gtk_tree_store_new(1, G_TYPE_STRING);
gtk_tree_store_append(store, &parent_iter, NULL);
gtk_tree_store_set(store, &parent_iter, 0, "/", -1);
if((dp = opendir("/")) == NULL)
{
fprintf(stderr, "Cannot open directory: /\n");
return 1;
}
while((entry = readdir(dp)) != NULL)
{
lstat(entry->d_name, &statbuf);
if(S_ISDIR(statbuf.st_mode))
{
if(strcmp(".", entry->d_name) == 0 || strcmp("..", entry->d_name) == 0)
continue;
gtk_tree_store_append(store, &child_iter, &parent_iter);
gtk_tree_store_set(store, &child_iter, 0, entry->d_name, -1);
}
}
view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view), 0, "Tree",
renderer, "text", 0, NULL);
gtk_container_add(GTK_CONTAINER(window), view);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
但是奇怪的问题发生了,自己不知道是怎么回事。
此时我在的目录为
/home/aprilava/graduation_project/
$./manager
郁闷第一次需要贴图,没找到贴图的方法
在这而执行的时候,不仅仅是目录,连根目录下的文件都显示出来了。
无意中切换到根目录/下
.//home/aprilava/graduation_prodect/manager
只显示目录了!
不知道是怎样一会儿事,请各位高手指点下小弟
[ 本帖最后由 doublelittlexgp 于 2009-5-27 23:57 编辑 ] |
|