[Xfce4-commits] r23141 - in xarchiver/branches/xarchiver-psybsd: libxarchiver src

Stephan Arts stephan at xfce.org
Wed Sep 13 13:58:14 UTC 2006


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__ */



More information about the Xfce4-commits mailing list