Linux浏览器libgtk-3,linux gtk treeview 怎样获得本地目录和文件想做一个文件浏览器...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

enum

{

ICON,

TEXT,

COLUMN,

NUM_COLS

};

void on_changed(GtkWidget * widget, gpointer statusbar)

{

GtkTreeIter iter;

GtkTreeModel *model;

char *value;

if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget), &model, &iter))

{

gtk_tree_model_get(model, &iter,COLUMN , &value, -1);

gtk_statusbar_push(GTK_STATUSBAR(statusbar), gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), value), value);

g_free(value);

}

}

static GtkTreeModel *create_and_fill_model(void)

{

GtkTreeStore *treestore;

GtkTreeIter *iter;

GtkTreeIter toplevel, child;

treestore = gtk_tree_store_new(2,GDK_TYPE_PIXBUF ,G_TYPE_STRING);

gtk_tree_store_append(treestore, &toplevel, NULL);

gtk_tree_store_set(treestore, &toplevel, ICON,NULL,-1);

gtk_tree_store_append(treestore, &child, &toplevel);

gtk_tree_store_set(treestore, &child,TEXT,"a.c", -1);

return GTK_TREE_MODEL(treestore);

}

static GtkWidget *create_view_and_model(void)

{

GtkTreeViewColumn *col;

GtkWidget *view;

GtkTreeModel *model;

GtkCellRenderer *renderer_icon; //用于解释图标

GtkCellRenderer *renderer_text; //用于解释文字

view = gtk_tree_view_new();

col = gtk_tree_view_column_new();

gtk_tree_view_column_set_title (col, "Products");

renderer_icon = gtk_cell_renderer_pixbuf_new();

gtk_tree_view_column_pack_start(col,renderer_icon,TRUE);

gtk_tree_view_column_set_attributes (col, renderer_icon, "pixbuf", ICON, NULL);

renderer_text = gtk_cell_renderer_text_new();

gtk_tree_view_column_pack_start(col,renderer_text,TRUE);

gtk_tree_view_column_set_attributes(col, renderer_text, "text",TEXT,NULL);

gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);

model = create_and_fill_model();

gtk_tree_view_set_model(GTK_TREE_VIEW(view), model);

g_object_unref(model);

return view;

}

int main(int argc, char **argv)

{

GtkWidget *window;

GtkWidget *view1,*view2;

GtkTreeSelection *selection;

GtkWidget *vbox;

GtkWidget *hbox1,*hbox2;

GtkWidget *label;

GtkWidget *button1,*button2;

GtkWidget *statusbar;

GtkWidget *textview1;

char txt[]="login sucess";

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);// window

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

gtk_window_set_title(GTK_WINDOW(window), "ftp server");

gtk_widget_set_size_request(window, 550, 300);

vbox = gtk_vbox_new(FALSE, 3); //vbox

gtk_container_add(GTK_CONTAINER(window), vbox);

label=gtk_label_new(txt); //label

gtk_container_add(GTK_CONTAINER(vbox),label);

hbox1 = gtk_hbox_new(2, FALSE);

gtk_container_add(GTK_CONTAINER(vbox), hbox1);

view1 = create_view_and_model();

selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view1));

gtk_box_pack_start(GTK_BOX(hbox1), view1, TRUE, TRUE, 1);

view2 = create_view_and_model();

selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view2));

gtk_box_pack_start(GTK_BOX(hbox1), view2, TRUE, TRUE, 1);

//hbox

hbox2 = gtk_hbox_new(2, FALSE);

gtk_container_add(GTK_CONTAINER(vbox), hbox2);

//button1

button1=gtk_button_new_with_label("up");

gtk_container_add(GTK_CONTAINER(hbox2),button1);

//button2

button2=gtk_button_new_with_label("down");

gtk_container_add(GTK_CONTAINER(hbox2),button2);

//statusbar

/*textview1= gtk_entry_new();

gtk_container_add(GTK_CONTAINER(vbox),textview1);

buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview1));

gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);*/

statusbar = gtk_statusbar_new();

gtk_box_pack_start(GTK_BOX(vbox), statusbar, FALSE, TRUE, 1);

//callbacak

g_signal_connect(selection, "changed", G_CALLBACK(on_changed), statusbar);

g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

gtk_widget_show_all(window);

gtk_main();

return 0;

}

// 本来就对gtk不熟,看了一周头都大了,希望找个人能帮忙指导一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值