[Xfce4-commits] r23340 - xarchiver/branches/xarchiver-psybsd/src
Stephan Arts
stephan at xfce.org
Tue Oct 10 19:47:52 UTC 2006
Author: stephan
Date: 2006-10-10 19:47:50 +0000 (Tue, 10 Oct 2006)
New Revision: 23340
Modified:
xarchiver/branches/xarchiver-psybsd/src/archive_store.c
xarchiver/branches/xarchiver-psybsd/src/archive_store.h
xarchiver/branches/xarchiver-psybsd/src/main_window.c
xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c
xarchiver/branches/xarchiver-psybsd/src/navigation_bar.h
xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
Log:
Implemented toolbar history.
Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.c 2006-10-10 16:04:09 UTC (rev 23339)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.c 2006-10-10 19:47:50 UTC (rev 23340)
@@ -23,6 +23,8 @@
#include <libxarchiver/libxarchiver.h>
#include "archive_store.h"
+static LXAEntry xa_archive_store_up_entry;
+
static void
xa_archive_store_class_init(XAArchiveStoreClass *as_class);
@@ -184,10 +186,6 @@
as->current_entry = NULL;
as->props._show_icons = FALSE;
as->props._show_up_dir = TRUE;
- as->up_entry.filename = "..";
- as->up_entry.props = NULL;
- as->up_entry.children = NULL;
- as->up_entry.buffer = NULL;
as->sort_column = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID;
as->sort_order = GTK_SORT_ASCENDING;
as->sort_list = NULL;
@@ -226,6 +224,11 @@
G_TYPE_NONE,
0,
NULL);
+
+ xa_archive_store_up_entry.filename = "..";
+ xa_archive_store_up_entry.props = NULL;
+ xa_archive_store_up_entry.children = NULL;
+ xa_archive_store_up_entry.buffer = NULL;
}
static void
@@ -275,7 +278,7 @@
if(!archive)
return 0;
- return archive->column_number + store->props._show_icons?1:0;
+ return archive->column_number + 1;
}
static GType
@@ -289,12 +292,9 @@
if(!archive)
return G_TYPE_INVALID;
- if(store->props._show_icons)
- {
- if(index == 0)
- return G_TYPE_STRING;
- index--;
- }
+ if(index == 0)
+ return G_TYPE_STRING;
+ index--;
g_return_val_if_fail(index < archive->column_number, G_TYPE_INVALID);
@@ -329,7 +329,7 @@
if(index == -1)
{
- entry = &store->up_entry;
+ entry = &xa_archive_store_up_entry;
}
else
{
@@ -386,8 +386,7 @@
g_return_if_fail(archive);
- if(store->props._show_icons)
- column--;
+ column--;
g_return_if_fail (column < (gint)archive->column_number);
@@ -405,25 +404,28 @@
{
g_value_init(value, G_TYPE_STRING);
- if(strcmp(entry->filename, ".."))
+ if(store->props._show_icons)
{
- if(store->icon_theme)
+ if(entry == &xa_archive_store_up_entry)
{
- mime_base = thunar_vfs_mime_database_get_default();
- mime_info = thunar_vfs_mime_database_get_info(mime_base, entry->mime_type);
- icon_name = thunar_vfs_mime_info_lookup_icon_name(mime_info, store->icon_theme);
+ g_value_set_string(value, "gtk-go-up");
+ }
+ else
+ {
+ if(store->icon_theme)
+ {
+ mime_base = thunar_vfs_mime_database_get_default();
+ mime_info = thunar_vfs_mime_database_get_info(mime_base, entry->mime_type);
+ icon_name = thunar_vfs_mime_info_lookup_icon_name(mime_info, store->icon_theme);
- if(gtk_icon_theme_has_icon(store->icon_theme, icon_name))
- g_value_set_string(value, icon_name);
+ if(gtk_icon_theme_has_icon(store->icon_theme, icon_name))
+ g_value_set_string(value, icon_name);
- thunar_vfs_mime_info_unref(mime_info);
- g_object_unref(mime_base);
+ thunar_vfs_mime_info_unref(mime_info);
+ g_object_unref(mime_base);
+ }
}
}
- else
- {
- g_value_set_string(value, "gtk-go-up");
- }
}
else if(column == 0)
{
@@ -507,7 +509,7 @@
if(store->props._show_up_dir && &archive->root_entry != entry)
{
- entry = &store->up_entry;
+ entry = &xa_archive_store_up_entry;
iter->user_data3 = GINT_TO_POINTER(-1);
}
else
@@ -573,7 +575,7 @@
if(n == -1)
{
- entry = &store->up_entry;
+ entry = &xa_archive_store_up_entry;
}
else
{
@@ -626,7 +628,7 @@
if(store->sort_column == sort_col_id && store->sort_order == order)
return;
- if(store->props._show_icons && sort_col_id == 0)
+ if(sort_col_id == 0)
return;
store->sort_column = sort_col_id;
@@ -671,8 +673,7 @@
gpointer props_b = b->props;
gint i = 0;
- if(store->props._show_icons)
- column--;
+ column--;
if(column < 0)
return;
@@ -859,7 +860,7 @@
gtk_tree_path_append_index(path_, 0);
iter.stamp = store->stamp;
- iter.user_data = &store->up_entry;
+ iter.user_data = &xa_archive_store_up_entry;
iter.user_data2 = entry;
iter.user_data3 = GINT_TO_POINTER(-1);
@@ -956,8 +957,8 @@
xa_archive_store_sort(store);
+ xa_archive_store_refresh(store, prev_size);
g_signal_emit(store, xa_archive_store_signals[0], 0,NULL);
- xa_archive_store_refresh(store, prev_size);
}
void
@@ -984,8 +985,8 @@
xa_archive_store_sort(store);
+ xa_archive_store_refresh(store, prev_size);
g_signal_emit(store, xa_archive_store_signals[0], 0,NULL);
- xa_archive_store_refresh(store, prev_size);
}
void
@@ -1007,7 +1008,8 @@
if(store->props._show_up_dir && &store->archive->root_entry != entry)
prev_size++;
-
+
+ g_slist_free(store->current_entry);
}
for(i = prev_size - 1; i >= 0; i--)
@@ -1107,10 +1109,11 @@
if(!i)
return NULL;
- if(i==1)
+// if(i==1)
i++;
buf = g_new(gchar*, i);
+ buf[0] = "";
i--;
buf[i] = NULL;
@@ -1124,6 +1127,8 @@
}
i--;
+ buf[i] = lastfile;
+
iter = iter->next;
if(iter)
{
@@ -1163,22 +1168,35 @@
return g_strdup(((LXAEntry*)store->current_entry->data)->filename);
}
-gint
+gboolean
xa_archive_store_set_pwd(XAArchiveStore *store, gchar *path)
{
+ gint result = xa_archive_store_set_pwd_silent(store, path);
+
+ g_signal_emit(store, xa_archive_store_signals[0], 0,NULL);
+ return result;
+}
+
+gboolean
+xa_archive_store_set_pwd_silent(XAArchiveStore *store, gchar *path)
+{
g_return_val_if_fail(store, -1);
if(!store->archive)
- return -1;
+ return FALSE;
- gchar **buf = g_strsplit(path, "/", 0);
+ gchar **buf = g_strsplit_set(path, "/\n", -1);
gchar **iter = buf;
LXAEntry *entry = &store->archive->root_entry;
- GSList *stack = NULL;
+ GSList *stack = g_slist_prepend(NULL, entry);
+ gint prev_size = lxa_entry_children_length(((LXAEntry*)store->current_entry->data));
- while(iter)
+ if(store->props._show_up_dir && &store->archive->root_entry != store->current_entry->data)
+ prev_size++;
+
+ while(*iter)
{
- if(*iter && iter[0])
+ if((*iter)[0])
{
entry = lxa_entry_get_child(entry, *iter);
if(!entry)
@@ -1197,8 +1215,15 @@
g_slist_free(store->current_entry);
store->current_entry = stack;
- g_signal_emit(store, xa_archive_store_signals[0], 0,NULL);
+ xa_archive_store_refresh(store, prev_size);
- return 0;
+ return TRUE;
}
+void
+xa_archive_store_set_icon_theme(XAArchiveStore *store, GtkIconTheme *icon_theme)
+{
+ if(store)
+ store->icon_theme = icon_theme;
+}
+
Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.h 2006-10-10 16:04:09 UTC (rev 23339)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.h 2006-10-10 19:47:50 UTC (rev 23340)
@@ -46,7 +46,6 @@
gint stamp;
LXAArchive *archive;
GSList *current_entry;
- LXAEntry up_entry;
gint sort_column;
GtkSortType sort_order;
LXAEntry **sort_list;
@@ -81,7 +80,11 @@
xa_archive_store_get_pwd_list(XAArchiveStore *store);
gchar *
xa_archive_store_get_basename(XAArchiveStore *store);
-gint
+gboolean
xa_archive_store_set_pwd(XAArchiveStore *store, gchar *path);
+gboolean
+xa_archive_store_set_pwd_silent(XAArchiveStore *store, gchar *path);
+void
+xa_archive_store_set_icon_theme(XAArchiveStore *store, GtkIconTheme *icon_theme);
#endif /* __XARCHIVER_ARCHIVE_STORE_H__ */
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-10-10 16:04:09 UTC (rev 23339)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-10-10 19:47:50 UTC (rev 23340)
@@ -253,7 +253,7 @@
g_signal_connect(G_OBJECT(window->toolbar.tool_item_stop), "clicked", G_CALLBACK(cb_xa_main_stop_archive), window);
- /*window->navigationbar = xa_tool_bar_new(NULL);*/
+/* window->navigationbar = xa_tool_bar_new(NULL); */
/* main view */
window->scrollwindow = gtk_scrolled_window_new(NULL, NULL);
@@ -287,6 +287,11 @@
gtk_widget_show_all(window->statusbar);
gtk_container_add(GTK_CONTAINER(window), main_vbox);
+
+ /* archive model */
+ window->treemodel = xa_archive_store_new(NULL, TRUE, TRUE, window->icon_theme);
+ xa_archive_store_connect_treeview(XA_ARCHIVE_STORE(window->treemodel), GTK_TREE_VIEW(window->treeview));
+ gtk_tree_view_set_model(GTK_TREE_VIEW(window->treeview), GTK_TREE_MODEL(window->treemodel));
}
GtkWidget *
@@ -306,6 +311,8 @@
gtk_window_set_icon(GTK_WINDOW(window), icon);
+ xa_archive_store_set_icon_theme(XA_ARCHIVE_STORE(XA_MAIN_WINDOW(window)->treemodel), icon_theme);
+
return window;
}
@@ -468,8 +475,6 @@
gtk_dialog_run(GTK_DIALOG(dialog));
}
-
-
gtk_widget_destroy (GTK_WIDGET (dialog) );
}
@@ -684,7 +689,7 @@
{
GtkCellRenderer *renderer = NULL;
GtkTreeViewColumn *column = NULL;
- GtkTreeModel *liststore = NULL;
+ GtkTreeModel *liststore = window->treemodel;
LXAArchive *archive = window->lp_xa_archive;
gint x = 0;
GList *columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(window->treeview));
@@ -696,69 +701,39 @@
}
g_list_free(columns);
- if(window->props._show_icons)
- {
- liststore = xa_archive_store_new(archive, TRUE, TRUE, window->icon_theme);
-/* liststore = xa_archive_tree_store_new(archive, TRUE, show_only_filenames, FALSE, window->icon_theme); */
+ column = gtk_tree_view_column_new();
+ renderer = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer, "icon-name", 0, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes(column, renderer, "text", 1, NULL);
- column = gtk_tree_view_column_new();
- renderer = gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_column_pack_start(column, renderer, FALSE);
- gtk_tree_view_column_set_attributes(column, renderer, "icon-name", 0, NULL);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_column_set_sort_column_id(column, 1);
+ gtk_tree_view_column_set_title(column, archive->column_names[0]);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, renderer, TRUE);
- gtk_tree_view_column_set_attributes(column, renderer, "text", 1, NULL);
-
- gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_column_set_sort_column_id(column, 1);
- gtk_tree_view_column_set_title(column, archive->column_names[0]);
- gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
-
- if(!show_only_filenames)
- {
- for(x = 1; x < archive->column_number; x++)
- {
- switch(archive->column_types[x])
- {
- case(G_TYPE_STRING):
- case(G_TYPE_UINT64):
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(archive->column_names[x], renderer, "text", x+1, NULL);
- break;
- }
- gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_sort_column_id(column, x+1);
- gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
- }
- }
- gtk_tree_view_set_search_column(GTK_TREE_VIEW(window->treeview), 1);
- } else
+ if(!show_only_filenames)
{
- liststore = xa_archive_store_new(archive, FALSE, TRUE, window->icon_theme);
-/* liststore = xa_archive_tree_store_new(archive, FALSE, FALSE, FALSE, window->icon_theme); */
- for(x = 0; x < archive->column_number; x++)
+ for(x = 1; x < archive->column_number; x++)
{
switch(archive->column_types[x])
{
case(G_TYPE_STRING):
case(G_TYPE_UINT64):
renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(archive->column_names[x], renderer, "text", x, NULL);
+ column = gtk_tree_view_column_new_with_attributes(archive->column_names[x], renderer, "text", x+1, NULL);
break;
}
gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_sort_column_id(column, x);
+ gtk_tree_view_column_set_sort_column_id(column, x+1);
gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
}
- gtk_tree_view_set_search_column(GTK_TREE_VIEW(window->treeview), 0);
}
- gtk_tree_view_set_model(GTK_TREE_VIEW(window->treeview), GTK_TREE_MODEL(liststore));
- window->treemodel = GTK_TREE_MODEL(liststore);
- xa_archive_store_connect_treeview(XA_ARCHIVE_STORE(liststore), GTK_TREE_VIEW(window->treeview));
+ gtk_tree_view_set_search_column(GTK_TREE_VIEW(window->treeview), 1);
xa_navigation_bar_set_store(window->navigationbar, XA_ARCHIVE_STORE(liststore));
-/* xa_archive_tree_store_connect_treeview(XA_ARCHIVE_TREE_STORE(liststore), GTK_TREE_VIEW(window->treeview)); */
}
void
Modified: xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c 2006-10-10 16:04:09 UTC (rev 23339)
+++ xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c 2006-10-10 19:47:50 UTC (rev 23340)
@@ -110,7 +110,26 @@
void
xa_navigation_bar_history_push(XANavigationBar *nav_bar, gchar *path)
{
- nav_bar->history = g_list_prepend(nav_bar->history, g_strdup(path));
+ nav_bar->history = g_list_insert_before(nav_bar->history, nav_bar->pwd, g_strdup(path));
+ if(!nav_bar->pwd)
+ nav_bar->pwd = nav_bar->history;
+
+ if(g_list_previous(nav_bar->pwd))
+ nav_bar->pwd = g_list_previous(nav_bar->pwd);
+ if(nav_bar->pwd)
+ nav_bar->history = nav_bar->pwd;
+
+ GList *temp_list = g_list_previous(nav_bar->pwd);
+
+ if(nav_bar->history)
+ nav_bar->history->prev = NULL;
+ if(temp_list)
+ {
+ temp_list->next = NULL;
+ temp_list = g_list_first(temp_list);
+ g_list_foreach(temp_list, (GFunc)g_free, NULL);
+ g_list_free(temp_list);
+ }
if(g_list_length(nav_bar->history) > nav_bar->max_history)
{
GList *last = g_list_last(nav_bar->history);
@@ -123,3 +142,37 @@
{
return g_list_length(nav_bar->history);
}
+
+gboolean
+xa_navigation_bar_history_back(XANavigationBar *nav_bar)
+{
+ if(!g_list_next(nav_bar->pwd))
+ return FALSE;
+ nav_bar->pwd = g_list_next(nav_bar->pwd);
+ xa_archive_store_set_pwd_silent(nav_bar->store, nav_bar->pwd->data);
+ return TRUE;
+}
+
+gboolean
+xa_navigation_bar_history_forward(XANavigationBar *nav_bar)
+{
+ if(!g_list_previous(nav_bar->pwd))
+ return FALSE;
+ nav_bar->pwd = g_list_previous(nav_bar->pwd);
+ xa_archive_store_set_pwd_silent(nav_bar->store, nav_bar->pwd->data);
+ return TRUE;
+}
+
+/* This *is* correct!!! */
+gboolean
+xa_navigation_bar_history_has_next(XANavigationBar *nav_bar)
+{
+ return (g_list_previous(nav_bar->pwd)?1:0);
+}
+
+/* idem */
+gboolean
+xa_navigation_bar_history_has_previous(XANavigationBar *nav_bar)
+{
+ return (g_list_next(nav_bar->pwd)?1:0);
+}
Modified: xarchiver/branches/xarchiver-psybsd/src/navigation_bar.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/navigation_bar.h 2006-10-10 16:04:09 UTC (rev 23339)
+++ xarchiver/branches/xarchiver-psybsd/src/navigation_bar.h 2006-10-10 19:47:50 UTC (rev 23340)
@@ -64,6 +64,10 @@
void xa_navigation_bar_history_push(XANavigationBar *nav_bar, gchar *path);
void xa_navigation_bar_set_store(XANavigationBar *navigation_bar, XAArchiveStore *store);
gint xa_navigation_bar_history_get_length(XANavigationBar *nav_bar);
+gboolean xa_navigation_bar_history_back(XANavigationBar *nav_bar);
+gboolean xa_navigation_bar_history_forward(XANavigationBar *nav_bar);
+gboolean xa_navigation_bar_history_has_next(XANavigationBar *nav_bar);
+gboolean xa_navigation_bar_history_has_previous(XANavigationBar *nav_bar);
G_END_DECLS
#endif /* __XARCHIVER_NAVIGATION_BAR_H__*/
Modified: xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/tool_bar.c 2006-10-10 16:04:09 UTC (rev 23339)
+++ xarchiver/branches/xarchiver-psybsd/src/tool_bar.c 2006-10-10 19:47:50 UTC (rev 23340)
@@ -35,6 +35,14 @@
static void
cb_xa_tool_bar_pwd_changed(XAArchiveStore *store, XAToolBar *bar);
+static void
+cb_xa_tool_bar_history_back(GtkWidget *button, XAToolBar *nav_bar);
+static void
+cb_xa_tool_bar_history_forward(GtkWidget *forward_button, XAToolBar *nav_bar);
+
+static void
+cb_xa_tool_bar_up(GtkWidget *forward_button, XANavigationBar *nav_bar);
+
GType
xa_tool_bar_get_type ()
{
@@ -75,15 +83,22 @@
tool_bar->back_button = gtk_tool_button_new_from_stock("gtk-go-back");
gtk_toolbar_insert(GTK_TOOLBAR(tool_bar), tool_bar->back_button, 0);
+ g_signal_connect(G_OBJECT(tool_bar->back_button), "clicked", (GCallback)cb_xa_tool_bar_history_back, XA_NAVIGATION_BAR(tool_bar));
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), 0);
tool_bar->forward_button = gtk_tool_button_new_from_stock("gtk-go-forward");
gtk_toolbar_insert(GTK_TOOLBAR(tool_bar), tool_bar->forward_button, 1);
+ g_signal_connect(G_OBJECT(tool_bar->forward_button), "clicked", (GCallback)cb_xa_tool_bar_history_forward, XA_NAVIGATION_BAR(tool_bar));
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 0);
tool_bar->up_button = gtk_tool_button_new_from_stock("gtk-go-up");
gtk_toolbar_insert(GTK_TOOLBAR(tool_bar), tool_bar->up_button, 2);
+ g_signal_connect(G_OBJECT(tool_bar->up_button), "clicked", (GCallback)cb_xa_tool_bar_up, XA_NAVIGATION_BAR(tool_bar));
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 0);
button = gtk_tool_button_new_from_stock("gtk-home");
gtk_toolbar_insert(GTK_TOOLBAR(tool_bar), button, 3);
+ gtk_widget_set_sensitive(GTK_WIDGET(button), 0);
button = gtk_separator_tool_item_new();
gtk_toolbar_insert(GTK_TOOLBAR(tool_bar), button, 4);
@@ -115,14 +130,11 @@
}
static void
-cb_xa_tool_bar_pwd_changed(XAArchiveStore *store, XAToolBar *tool_bar)
+xa_tool_bar_refresh(XAToolBar *tool_bar, gchar *path)
{
- gchar *path= xa_archive_store_get_pwd(store);
- xa_navigation_bar_history_push(XA_NAVIGATION_BAR(tool_bar), path);
- g_free(path);
+ gtk_entry_set_text(GTK_ENTRY(tool_bar->path_field), path);
- GSList *path_list = xa_archive_store_get_pwd_list(store);
- if(g_slist_length(path_list) == 1)
+ if(strlen(path) < 1 || (strlen(path) == 1 && path[0] == '/'))
gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 0);
else
gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 1);
@@ -133,7 +145,50 @@
}
else
{
+ if(xa_navigation_bar_history_has_next(XA_NAVIGATION_BAR(tool_bar)))
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 1);
+ else
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 0);
+ if(xa_navigation_bar_history_has_previous(XA_NAVIGATION_BAR(tool_bar)))
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), 1);
+ else
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), 0);
}
}
+static void
+cb_xa_tool_bar_pwd_changed(XAArchiveStore *store, XAToolBar *tool_bar)
+{
+ gchar *path= xa_archive_store_get_pwd(store);
+ xa_navigation_bar_history_push(XA_NAVIGATION_BAR(tool_bar), path);
+ xa_tool_bar_refresh(tool_bar, path);
+ g_debug("Pushing path '%s'\n", path);
+ g_free(path);
+}
+
+static void
+cb_xa_tool_bar_history_back(GtkWidget *back_button, XAToolBar *tool_bar)
+{
+ g_debug("back");
+ xa_navigation_bar_history_back(XA_NAVIGATION_BAR(tool_bar));
+ gchar *path= xa_archive_store_get_pwd(XA_NAVIGATION_BAR(tool_bar)->store);
+ xa_tool_bar_refresh(tool_bar, path);
+ g_free(path);
+}
+
+static void
+cb_xa_tool_bar_history_forward(GtkWidget *forward_button, XAToolBar *tool_bar)
+{
+ g_debug("forward");
+ xa_navigation_bar_history_forward(XA_NAVIGATION_BAR(tool_bar));
+ gchar *path= xa_archive_store_get_pwd(XA_NAVIGATION_BAR(tool_bar)->store);
+ xa_tool_bar_refresh(tool_bar, path);
+ g_free(path);
+}
+
+static void
+cb_xa_tool_bar_up(GtkWidget *forward_button, XANavigationBar *nav_bar)
+{
+ xa_archive_store_go_up(nav_bar->store);
+}
More information about the Xfce4-commits
mailing list