[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