Author: colossus
Date: 2007-10-20 17:22:23 +0000 (Sat, 20 Oct 2007)
New Revision: 26156
Modified:
xarchiver/trunk/src/archive.c
xarchiver/trunk/src/archive.h
xarchiver/trunk/src/interface.c
xarchiver/trunk/src/window.c
Log:
Fixed behaviour of up and home buttons.
Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c 2007-10-20 16:47:57 UTC (rev 26155)
+++ xarchiver/trunk/src/archive.c 2007-10-20 17:22:23 UTC (rev 26156)
@@ -450,6 +450,8 @@
{
entry = archive->root_entry->child;
gtk_entry_set_text(GTK_ENTRY(location_entry),"\0");
+ gtk_widget_set_sensitive(up_button,FALSE);
+ gtk_widget_set_sensitive(home_button,FALSE);
}
else if (entry->child == NULL)
return;
@@ -508,6 +510,23 @@
}
}
+XEntry* xa_find_entry_from_path (XEntry *root_entry,const gchar *fullpathname)
+{
+ gchar **components = NULL;
+ unsigned short int x = 0;
+ XEntry *new_entry = NULL;
+
+ components = g_strsplit(fullpathname,"/",-1);
+ while (components[x] && strlen(components[x]) > 0)
+ {
+ new_entry =
xa_find_child_entry(root_entry->child,components[x]);
+ root_entry = new_entry;
+ x++;
+ }
+ g_strfreev(components);
+ return new_entry;
+}
+
gchar *xa_build_full_path_name_from_entry(XEntry *entry)
{
GString *dummy = g_string_new('\0');
Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h 2007-10-20 16:47:57 UTC (rev 26155)
+++ xarchiver/trunk/src/archive.h 2007-10-20 17:22:23 UTC (rev 26156)
@@ -130,6 +130,7 @@
XEntry *xa_set_archive_entries_for_each_row (XArchive *archive,gchar
*filename,gboolean encrypted,gpointer *items);
gpointer *xa_fill_archive_entry_columns_for_each_row (XArchive *archive,XEntry
*entry,gpointer *items);
void xa_update_window_with_archive_entries (XArchive *archive,XEntry *entry);
+XEntry* xa_find_entry_from_path (XEntry *root_entry,const gchar *fullpathname);
gchar *xa_build_full_path_name_from_entry(XEntry *entry);
void xa_entries_to_filelist(XEntry *, GSList **, gchar *);
void xa_destroy_filelist(GSList *file_list);
Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c 2007-10-20 16:47:57 UTC (rev 26155)
+++ xarchiver/trunk/src/interface.c 2007-10-20 17:22:23 UTC (rev 26156)
@@ -296,7 +296,7 @@
tmp_image = gtk_image_new_from_stock ("gtk-go-up",
tmp_toolbar_icon_size);
gtk_widget_show (tmp_image);
up_button = (GtkWidget*) gtk_tool_button_new (tmp_image, _("Up"));
- gtk_widget_set_sensitive(up_button,TRUE);
+ gtk_widget_set_sensitive(up_button,FALSE);
gtk_widget_show (up_button);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (up_button), FALSE);
gtk_container_add (GTK_CONTAINER (toolbar1), up_button);
@@ -902,13 +902,10 @@
unsigned short int bp = GPOINTER_TO_UINT(user_data);
gint current_page;
gint idx;
- gchar **components = NULL;
- unsigned short int x = 0;
XEntry *new_entry = NULL;
current_page = gtk_notebook_get_current_page (notebook);
idx = xa_find_archive_index (current_page);
- XEntry *last_entry = archive[idx]->root_entry;
switch (bp)
{
@@ -919,20 +916,12 @@
g_free(archive[idx]->location_entry_path);
archive[idx]->location_entry_path = NULL;
}
- archive[idx]->location_entry_path = NULL;
xa_update_window_with_archive_entries(archive[idx],NULL);
break;
/* Up */
case 2:
- components =
g_strsplit(gtk_entry_get_text(GTK_ENTRY(location_entry)),"/",-1);
- while (components[x] && strlen(components[x]) > 0)
- {
- new_entry =
xa_find_child_entry(last_entry->child,components[x]);
- last_entry = new_entry;
- x++;
- }
- g_strfreev(components);
+ new_entry =
xa_find_entry_from_path(archive[idx]->root_entry,gtk_entry_get_text(GTK_ENTRY(location_entry)));
if (new_entry->prev->prev == NULL)
{
xa_update_window_with_archive_entries(archive[idx],NULL);
Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c 2007-10-20 16:47:57 UTC (rev 26155)
+++ xarchiver/trunk/src/window.c 2007-10-20 17:22:23 UTC (rev 26156)
@@ -176,7 +176,6 @@
gtk_widget_set_sensitive ( password_entry , TRUE);
}
xa_set_button_state
(1,1,1,archive->can_add,archive->can_extract,archive->has_sfx,archive->has_test,archive->has_properties);
- gtk_widget_set_sensitive(home_button,TRUE);
Update_StatusBar ( _("Operation completed."));
if (archive->status == XA_ARCHIVESTATUS_TEST)
@@ -2021,16 +2020,19 @@
void xa_location_entry_activated (GtkEntry *entry, gpointer user_data)
{
- gchar *parent = NULL;
+ XEntry *new_entry = NULL;
gint current_page;
gint idx;
- parent = xa_get_parent_dir (gtk_entry_get_text(entry));
- current_page = gtk_notebook_get_current_page(notebook);
+ current_page = gtk_notebook_get_current_page (notebook);
idx = xa_find_archive_index (current_page);
- g_print ("parent: %s\t loc.entry:
%s\n",parent,archive[idx]->location_entry_path);
- //xa_update_window_with_archive_entries(archive[idx],parent);
- g_free (parent);
+ new_entry =
xa_find_entry_from_path(archive[idx]->root_entry,gtk_entry_get_text(GTK_ENTRY(location_entry)));
+ xa_update_window_with_archive_entries(archive[idx],new_entry);
+ if (new_entry != NULL && new_entry->prev != NULL)
+ {
+ gtk_widget_set_sensitive(up_button,TRUE);
+ gtk_widget_set_sensitive(home_button,TRUE);
+ }
}
void xa_treeview_row_activated(GtkTreeView *tree_view,GtkTreePath
*path,GtkTreeViewColumn *column,gpointer user_data)
@@ -2047,5 +2049,10 @@
return;
gtk_tree_model_get (GTK_TREE_MODEL
(archive[idx]->liststore),&iter,archive[idx]->nc+1,&entry, -1);
+ if (entry->is_dir)
+ {
+ gtk_widget_set_sensitive(up_button,TRUE);
+ gtk_widget_set_sensitive(home_button,TRUE);
+ }
xa_update_window_with_archive_entries(archive[idx],entry);
}
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits