Author: stephan Date: 2006-09-13 13:58:14 +0000 (Wed, 13 Sep 2006) New Revision: 23141
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h xarchiver/branches/xarchiver-psybsd/src/main_window.c xarchiver/branches/xarchiver-psybsd/src/main_window.h Log: Added treeview (why it doesn't work, beets me) Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c =================================================================== --- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c 2006-09-13 13:44:55 UTC (rev 23140) +++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c 2006-09-13 13:58:14 UTC (rev 23141) @@ -341,6 +341,11 @@ } else { + archive->column_number = 1; + archive->column_types = g_new0(GType, 1); + archive->column_types[0] = G_TYPE_STRING; + archive->column_names = g_new0(gchar *, 1); + archive->column_names[0] = g_strdup("filename"); //empty archive-tree /* use tvf once implementation of path recognition is stable */ gchar *command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " tf " , archive->path, NULL); @@ -354,7 +359,6 @@ { LXAArchive *archive = data; archive->child_pid = 0; - } void @@ -389,6 +393,7 @@ gint i = 0, n = 0; LXAEntry *entry; + if(cond & (G_IO_PRI | G_IO_IN)) { while(TRUE) Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h =================================================================== --- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-09-13 13:44:55 UTC (rev 23140) +++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-09-13 13:58:14 UTC (rev 23141) @@ -73,6 +73,9 @@ gchar *tmp_file; gchar *files; gboolean has_passwd; + gint column_number; + GType *column_types; + gchar **column_names; }; typedef struct _LXAArchiveClass LXAArchiveClass; Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c =================================================================== --- xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-09-13 13:44:55 UTC (rev 23140) +++ xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-09-13 13:58:14 UTC (rev 23141) @@ -173,14 +173,28 @@ gtk_container_add(GTK_CONTAINER(toolbar), GTK_WIDGET(window->toolbar.tool_item_remove)); gtk_container_add(GTK_CONTAINER(toolbar), GTK_WIDGET(tool_separator)); - gtk_box_pack_start(GTK_BOX(main_vbox), menubar, 0, FALSE, FALSE); - gtk_box_pack_start(GTK_BOX(main_vbox), toolbar, 0, FALSE, FALSE); - //gtk_box_pack_end(GTK_BOX(main_vbox), statusbar, 0, FALSE, FALSE); +/* main view */ + window->scrollwindow = gtk_scrolled_window_new(NULL, NULL); + window->treeview = gtk_tree_view_new(); + + gtk_container_add(GTK_CONTAINER(window->scrollwindow), window->treeview); + + gtk_widget_show(window->scrollwindow); + gtk_widget_show(window->treeview); +/* Statusbar */ + + statusbar = gtk_statusbar_new(); + + gtk_box_pack_start(GTK_BOX(main_vbox), menubar, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(main_vbox), toolbar, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(main_vbox), window->scrollwindow, TRUE, TRUE, 0); + gtk_box_pack_end(GTK_BOX(main_vbox), statusbar, FALSE, FALSE, 0); + gtk_widget_show(main_vbox); gtk_widget_show_all(menubar); gtk_widget_show_all(toolbar); - //gtk_widget_show_all(statusbar); + gtk_widget_show_all(statusbar); gtk_container_add(GTK_CONTAINER(window), main_vbox); } @@ -315,7 +329,7 @@ { LXAArchiveSupport *lpSupport = lxa_get_support_for_mime(archive->mime); GSList *items = lxa_archive_support_view(lpSupport, archive, "/"); - xa_main_window_set_contents(main_window, items, "/"); + xa_main_window_set_contents(main_window, archive, items, "/"); } } @@ -326,7 +340,26 @@ } void -xa_main_window_set_contents(XAMainWindow *main_window, GSList *items, gchar *path) +xa_main_window_set_contents(XAMainWindow *main_window, LXAArchive *archive, GSList *items, gchar *path) { + gint x; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + GtkListStore *liststore = gtk_list_store_newv(archive->column_number, archive->column_types); + for(x = 0; x < archive->column_number; x++) + { + switch(archive->column_types[x]) + { + case(G_TYPE_STRING): + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(archive->column_names[x], renderer, "text", x, NULL); + break; + } + gtk_tree_view_column_set_resizable(column, TRUE); + gtk_tree_view_column_set_sort_column_id(column, x); + gtk_tree_view_append_column(GTK_TREE_VIEW(main_window->treeview), column); + } + + gtk_tree_view_set_model(GTK_TREE_VIEW(main_window->treeview), GTK_TREE_MODEL(liststore)); } Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.h =================================================================== --- xarchiver/branches/xarchiver-psybsd/src/main_window.h 2006-09-13 13:44:55 UTC (rev 23140) +++ xarchiver/branches/xarchiver-psybsd/src/main_window.h 2006-09-13 13:58:14 UTC (rev 23141) @@ -51,6 +51,8 @@ struct _XAMainWindow { GtkWindow parent; + GtkWidget *treeview; + GtkWidget *scrollwindow; struct { GtkWidget *menu_item_archive; GtkWidget *menu_archive; @@ -103,7 +105,7 @@ void cb_xa_main_extract_archive(GtkWidget *widget, gpointer userdata); void xa_main_window_archive_status_changed(LXAArchive *archive, gpointer data); -void xa_main_window_set_contents(XAMainWindow *, GSList *, gchar *); +void xa_main_window_set_contents(XAMainWindow *, LXAArchive *, GSList *, gchar *); G_END_DECLS #endif /* __XARCHIVER_MAIN_WINDOW_H__ */ _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits