[Xfce4-commits] r25109 - in squeeze/trunk: libsqueeze src
Peter de Ridder
peter at xfce.org
Sun Mar 4 16:23:21 CET 2007
Author: peter
Date: 2007-03-04 15:23:21 +0000 (Sun, 04 Mar 2007)
New Revision: 25109
Modified:
squeeze/trunk/libsqueeze/archive-iter.c
squeeze/trunk/src/archive_store.c
squeeze/trunk/src/archive_store.h
squeeze/trunk/src/main_window.c
squeeze/trunk/src/navigation_bar.c
squeeze/trunk/src/navigation_bar.h
squeeze/trunk/src/notebook.c
squeeze/trunk/src/notebook.h
squeeze/trunk/src/path_bar.c
squeeze/trunk/src/path_bar.h
squeeze/trunk/src/tool_bar.c
Log:
archive store uses archiveiter on the outside now too
Modified: squeeze/trunk/libsqueeze/archive-iter.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-iter.c 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/libsqueeze/archive-iter.c 2007-03-04 15:23:21 UTC (rev 25109)
@@ -466,7 +466,7 @@
back_iter = g_slist_next(back_iter);
if(!back_iter)
break;
- if(!lsq_archive_entry_get_child(parent->entry, ((LSQArchiveIter*)back_iter->data)->entry->filename))
+ if(!lsq_archive_entry_get_child(parent->entry, lsq_archive_entry_get_filename(((LSQArchiveIter*)back_iter->data)->entry)))
{
g_slist_free(back_stack);
return FALSE;
@@ -505,7 +505,7 @@
back_iter = g_slist_next(back_iter);
if(!back_iter)
break;
- if(!lsq_archive_entry_get_child(parent->entry, iter->entry->filename))
+ if(!lsq_archive_entry_get_child(parent->entry, lsq_archive_entry_get_filename(((LSQArchiveIter*)back_iter->data)->entry)))
{
iter = parent;
break;
@@ -621,7 +621,7 @@
iter = iter->parent;
}
- gboolean result = lsq_archive_entry_remove_child(iter->entry, prev_iter->entry->filename);
+ gboolean result = lsq_archive_entry_remove_child(iter->entry, lsq_archive_entry_get_filename(prev_iter->entry));
if(result && !lsq_archive_iter_pool_find_iter(prev_iter->archive->pool, prev_iter->entry, NULL, NULL))
{
lsq_archive_entry_free(prev_iter->archive, prev_iter->entry);
@@ -631,7 +631,7 @@
guint
lsq_archive_iter_get_depth(const LSQArchiveIter *iter)
{
-#ifdef debug
+#ifdef DEBUG
g_return_val_if_fail(iter, 0);
#endif
guint depth = 0;
@@ -643,7 +643,7 @@
gchar*
lsq_archive_iter_get_path(const LSQArchiveIter *iter)
{
-#ifdef debug
+#ifdef DEBUG
g_return_val_if_fail(iter, NULL);
#endif
const gchar **list;
@@ -679,7 +679,7 @@
const gchar*
lsq_archive_iter_get_filename(const LSQArchiveIter *iter)
{
-#ifdef debug
+#ifdef DEBUG
g_return_val_if_fail(iter, NULL);
#endif
return lsq_archive_entry_get_filename(iter->entry);
@@ -688,7 +688,7 @@
const gchar*
lsq_archive_iter_get_mime(const LSQArchiveIter *iter)
{
-#ifdef debug
+#ifdef DEBUG
g_return_val_if_fail(iter, FALSE);
#endif
return lsq_archive_entry_get_mimetype(iter->entry);
@@ -697,7 +697,7 @@
gboolean
lsq_archive_iter_get_prop_value(const LSQArchiveIter *iter, guint n, GValue *value)
{
-#ifdef debug
+#ifdef DEBUG
g_return_val_if_fail(iter, FALSE);
g_return_val_if_fail(n < lsq_archive_n_entry_properties(iter->archive), FALSE);
#endif
@@ -943,7 +943,7 @@
entry = archive->root_entry;
}
- gboolean result = lsq_archive_entry_remove_child(entry, ((LSQArchiveEntry*)prev_iter->data)->filename);
+ gboolean result = lsq_archive_entry_remove_child(entry, lsq_archive_entry_get_filename((LSQArchiveEntry*)prev_iter->data));
if(result && !lsq_archive_iter_pool_find_iter(archive->pool, prev_iter->data, NULL, NULL))
{
lsq_archive_entry_free(archive, entry);
Modified: squeeze/trunk/src/archive_store.c
===================================================================
--- squeeze/trunk/src/archive_store.c 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/archive_store.c 2007-03-04 15:23:21 UTC (rev 25109)
@@ -45,7 +45,8 @@
/* properties */
enum {
- SQ_ARCHIVE_STORE_SHOW_ICONS = 1,
+ SQ_ARCHIVE_STORE_SHOW_FULL_PATH = 1,
+ SQ_ARCHIVE_STORE_SHOW_ICONS,
SQ_ARCHIVE_STORE_SHOW_UP_DIR,
SQ_ARCHIVE_STORE_SORT_FOLDERS_FIRST,
SQ_ARCHIVE_STORE_SORT_CASE_SENSITIVE
@@ -222,6 +223,7 @@
as->sort_order = GTK_SORT_ASCENDING;
as->sort_list = NULL;
as->icon_theme = NULL;
+ as->props._show_full_path = 0;
as->props._show_icons = 0;
as->props._show_up_dir = 1;
as->props._sort_folders_first = 1;
@@ -244,6 +246,13 @@
parent_class = gtk_type_class (G_TYPE_OBJECT);
+ pspec = g_param_spec_boolean("show-full-path",
+ _("Show full path"),
+ _("Show the full path strings for each entry"),
+ FALSE,
+ G_PARAM_READWRITE);
+ g_object_class_install_property(object_class, SQ_ARCHIVE_STORE_SHOW_ICONS, pspec);
+
pspec = g_param_spec_boolean("show-icons",
_("Show mime icons"),
_("Show the mime type icons for each entry"),
@@ -278,9 +287,10 @@
0,
NULL,
NULL,
- g_cclosure_marshal_VOID__VOID,
+ g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE,
- 0,
+ 1,
+ G_TYPE_POINTER,
NULL);
sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_NEW_ARCHIVE] = g_signal_new("sq-new-archive",
@@ -313,6 +323,9 @@
SQArchiveStore *store = SQ_ARCHIVE_STORE(object);
switch(prop_id)
{
+ case SQ_ARCHIVE_STORE_SHOW_FULL_PATH:
+ sq_archive_store_set_show_full_path(store, g_value_get_boolean(value));
+ break;
case SQ_ARCHIVE_STORE_SHOW_ICONS:
sq_archive_store_set_show_icons(store, g_value_get_boolean(value));
break;
@@ -337,6 +350,9 @@
{
switch(prop_id)
{
+ case SQ_ARCHIVE_STORE_SHOW_FULL_PATH:
+ g_value_set_boolean(value, SQ_ARCHIVE_STORE(object)->props._show_full_path?TRUE:FALSE);
+ break;
case SQ_ARCHIVE_STORE_SHOW_ICONS:
g_value_set_boolean(value, SQ_ARCHIVE_STORE(object)->props._show_icons?TRUE:FALSE);
break;
@@ -496,7 +512,12 @@
}
else
{
- if(column < (gint)lsq_archive_n_entry_properties(archive))
+ if(store->props._show_full_path && column == LSQ_ARCHIVE_PROP_FILENAME)
+ {
+ g_value_init(value, G_TYPE_STRING);
+ g_value_take_string(value, lsq_archive_iter_get_path(entry));
+ }
+ else if(column < (gint)lsq_archive_n_entry_properties(archive))
lsq_archive_iter_get_prop_value(entry, column, value);
/* what if it isn't utf-8 */
if(G_VALUE_HOLDS_STRING(value) && g_value_get_string(value) && !g_utf8_validate(g_value_get_string(value), -1, NULL))
@@ -1097,7 +1118,7 @@
sq_archive_store_sort(store);
sq_archive_store_refresh(store);
- g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
+ g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, entry, NULL);
}
void
@@ -1121,7 +1142,7 @@
sq_archive_store_sort(store);
sq_archive_store_refresh(store);
- g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
+ g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, entry, NULL);
}
void
@@ -1233,7 +1254,7 @@
/* g_signal_connect(store->archive, "lsq_path_changed", G_CALLBACK(cb_sq_archive_store_archive_path_changed), store); */
}
-gchar *
+LSQArchiveIter *
sq_archive_store_get_pwd(SQArchiveStore *store)
{
#ifdef DEBUG
@@ -1246,45 +1267,14 @@
LSQArchiveIter *iter = store->navigation.present->data;
- return lsq_archive_iter_get_path(iter);
+ return lsq_archive_iter_ref(iter);
}
-GSList *
-sq_archive_store_get_pwd_list(SQArchiveStore *store)
-{
-#ifdef DEBUG
- g_return_val_if_fail(store, NULL);
-#endif
-
- if(!store->navigation.present)
- return NULL;
-
- const gchar *basename;
- LSQArchiveIter *child = NULL, *iter = store->navigation.present->data;
- GSList *path = NULL;
-
- if(!iter)
- return NULL;
-
- /* we don't want to include de archive rootentry */
- while(lsq_archive_iter_has_parent(iter))
- {
- basename = lsq_archive_iter_get_filename(iter);
- path = g_slist_prepend(path, g_strdup(basename));
- iter = lsq_archive_iter_get_parent(iter);
- if(child)
- lsq_archive_iter_unref(child);
- child = iter;
- }
- if(child)
- lsq_archive_iter_unref(child);
-
- return path;
-}
-
gboolean
-sq_archive_store_set_pwd(SQArchiveStore *store, const gchar *path)
+sq_archive_store_set_pwd(SQArchiveStore *store, LSQArchiveIter *path)
{
+ /* should check if the iter is of the current archive */
+
g_return_val_if_fail(store, FALSE);
if(!store->archive)
@@ -1295,18 +1285,23 @@
g_return_val_if_fail(store->navigation.present->data, FALSE);
#endif
- LSQArchiveIter *iter = lsq_archive_get_iter(store->archive, path);
-
- if(lsq_archive_iter_is_directory(iter))
+ if(lsq_archive_iter_is_directory(path))
{
- sq_archive_store_append_history(store, iter);
+ sq_archive_store_append_history(store, lsq_archive_iter_ref(path));
sq_archive_store_sort(store);
sq_archive_store_refresh(store);
- g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
+ g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, path, NULL);
return TRUE;
}
+ else
+ {
+#ifdef DEBUG
+ g_debug("file activated");
+#endif
+ g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_FILE_ACTIVATED], 0, lsq_archive_iter_get_filename(path), NULL);
+ }
return FALSE;
}
@@ -1319,6 +1314,12 @@
}
gboolean
+sq_archive_store_get_show_full_path(SQArchiveStore *store)
+{
+ return store->props._show_full_path;
+}
+
+gboolean
sq_archive_store_get_show_icons(SQArchiveStore *store)
{
return store->props._show_icons;
@@ -1337,6 +1338,20 @@
}
void
+sq_archive_store_set_show_full_path(SQArchiveStore *store, gboolean show)
+{
+ show = show?1:0;
+
+ if(store->props._show_full_path != show)
+ {
+ store->props._show_full_path = show;
+ if(store->archive)
+ sq_archive_store_refresh(store);
+ g_object_notify(G_OBJECT(store), "show-full-path");
+ }
+}
+
+void
sq_archive_store_set_show_icons(SQArchiveStore *store, gboolean show)
{
show = show?1:0;
@@ -1424,7 +1439,7 @@
sq_archive_store_check_trailing(store);
- g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
+ g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, store->navigation.present->data, NULL);
}
void
@@ -1447,7 +1462,7 @@
sq_archive_store_check_trailing(store);
- g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
+ g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, store->navigation.present->data, NULL);
}
static void
@@ -1514,34 +1529,17 @@
store->navigation.trailing = lsq_archive_iter_ref(piter);
}
-GSList *
+LSQArchiveIter *
sq_archive_store_get_trailing(SQArchiveStore *store)
{
#ifdef DEBUG
g_return_val_if_fail(store, NULL);
+ g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(store), NULL);
#endif
- const gchar *basename;
- LSQArchiveIter *child = NULL, *iter = store->navigation.trailing;
- GSList *path = NULL;
+ LSQArchiveIter *iter = store->navigation.trailing;
- if(!iter)
- return NULL;
-
- /* we don't want to include de archive rootentry */
- while(lsq_archive_iter_has_parent(iter))
- {
- basename = lsq_archive_iter_get_filename(iter);
- path = g_slist_prepend(path, &basename);
- iter = lsq_archive_iter_get_parent(iter);
- if(child)
- lsq_archive_iter_unref(child);
- child = iter;
- }
- if(child)
- lsq_archive_iter_unref(child);
-
- return path;
+ return lsq_archive_iter_ref(iter);
}
LSQArchive *
@@ -1590,5 +1588,6 @@
sq_archive_store_sort(store);
sq_archive_store_refresh(store);
+ g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, store->navigation.present->data, NULL);
}
Modified: squeeze/trunk/src/archive_store.h
===================================================================
--- squeeze/trunk/src/archive_store.h 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/archive_store.h 2007-03-04 15:23:21 UTC (rev 25109)
@@ -51,6 +51,7 @@
GtkIconTheme *icon_theme;
GtkTreeView *treeview;
struct {
+ guint _show_full_path :1;
guint _show_icons : 1;
guint _show_up_dir : 1;
guint _sort_folders_first : 1;
@@ -77,16 +78,16 @@
void sq_archive_store_connect_treeview(SQArchiveStore *store, GtkTreeView *treeview);
void sq_archive_store_connect_iconview(SQArchiveStore *store, GtkIconView *iconview);
void sq_archive_store_go_up(SQArchiveStore *store);
-gchar * sq_archive_store_get_pwd(SQArchiveStore *store);
-GSList * sq_archive_store_get_pwd_list(SQArchiveStore *store);
-gchar * sq_archive_store_get_basename(SQArchiveStore *store);
-gboolean sq_archive_store_set_pwd(SQArchiveStore *store, const gchar *path);
+LSQArchiveIter * sq_archive_store_get_pwd(SQArchiveStore *store);
+gboolean sq_archive_store_set_pwd(SQArchiveStore *store, LSQArchiveIter *path);
void sq_archive_store_set_icon_theme(SQArchiveStore *store, GtkIconTheme *icon_theme);
+gboolean sq_archive_store_get_show_full_path(SQArchiveStore *);
gboolean sq_archive_store_get_show_icons(SQArchiveStore *store);
gboolean sq_archive_store_get_sort_case_sensitive(SQArchiveStore *store);
gboolean sq_archive_store_get_sort_folders_first(SQArchiveStore *store);
+void sq_archive_store_set_show_full_path(SQArchiveStore *, gboolean);
void sq_archive_store_set_show_icons(SQArchiveStore *, gboolean);
void sq_archive_store_set_sort_case_sensitive(SQArchiveStore *, gboolean);
void sq_archive_store_set_sort_folders_first(SQArchiveStore *, gboolean);
@@ -99,7 +100,7 @@
sq_archive_store_go_back(SQArchiveStore *store);
void
sq_archive_store_go_forward(SQArchiveStore *store);
-GSList *
+LSQArchiveIter *
sq_archive_store_get_trailing(SQArchiveStore *store);
LSQArchive *
Modified: squeeze/trunk/src/main_window.c
===================================================================
--- squeeze/trunk/src/main_window.c 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/main_window.c 2007-03-04 15:23:21 UTC (rev 25109)
@@ -257,9 +257,6 @@
const gchar *nav_bar;
GSList *list, *iter;
gboolean up_dir = TRUE;
- gboolean show_icons = TRUE;
- gboolean sort_case = TRUE;
- gboolean sort_folders = TRUE;
gboolean use_tabs = TRUE;
gboolean show_menubar = TRUE;
@@ -467,9 +464,6 @@
g_object_notify(G_OBJECT(window), "navigation-style");
- show_icons = sq_settings_read_bool_entry(window->settings, "ShowIcons", TRUE);
- sort_case = sq_settings_read_bool_entry(window->settings, "SortCaseSensitive", TRUE);
- sort_folders = sq_settings_read_bool_entry(window->settings, "SortFoldersFirst", TRUE);
use_tabs = sq_settings_read_bool_entry(window->settings, "UseTabs", TRUE);
/* main view */
@@ -481,6 +475,12 @@
/* menu item */
if(show_menubar)
{
+ list = sq_widget_factory_create_property_menu(window->widget_factory, G_OBJECT(window->notebook), "show-full-path");
+ for(iter = list; iter; iter = iter->next)
+ {
+ gtk_container_add(GTK_CONTAINER(window->menubar.menu_view), iter->data);
+ gtk_widget_show(iter->data);
+ }
list = sq_widget_factory_create_property_menu(window->widget_factory, G_OBJECT(window->notebook), "show-icons");
for(iter = list; iter; iter = iter->next)
{
Modified: squeeze/trunk/src/navigation_bar.c
===================================================================
--- squeeze/trunk/src/navigation_bar.c 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/navigation_bar.c 2007-03-04 15:23:21 UTC (rev 25109)
@@ -33,7 +33,7 @@
sq_navigation_bar_dispose(GObject *object);
static void
-cb_sq_navigation_bar_pwd_changed(SQArchiveStore *store, SQNavigationBar *bar);
+cb_sq_navigation_bar_pwd_changed(SQArchiveStore *store, LSQArchiveIter *, SQNavigationBar *bar);
static void
cb_sq_navigation_bar_new_archive(SQArchiveStore *store, SQNavigationBar *bar);
@@ -154,7 +154,7 @@
}
static void
-cb_sq_navigation_bar_pwd_changed(SQArchiveStore *store, SQNavigationBar *bar)
+cb_sq_navigation_bar_pwd_changed(SQArchiveStore *store, LSQArchiveIter *path, SQNavigationBar *bar)
{
}
Modified: squeeze/trunk/src/navigation_bar.h
===================================================================
--- squeeze/trunk/src/navigation_bar.h 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/navigation_bar.h 2007-03-04 15:23:21 UTC (rev 25109)
@@ -44,7 +44,7 @@
{
GtkContainer parent;
SQArchiveStore *store;
- void (*_cb_pwd_changed)(SQArchiveStore *, SQNavigationBar *);
+ void (*_cb_pwd_changed)(SQArchiveStore *, LSQArchiveIter *, SQNavigationBar *);
void (*_cb_new_archive)(SQArchiveStore *, SQNavigationBar *);
void (*_cb_store_set)(SQNavigationBar *);
};
Modified: squeeze/trunk/src/notebook.c
===================================================================
--- squeeze/trunk/src/notebook.c 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/notebook.c 2007-03-04 15:23:21 UTC (rev 25109)
@@ -66,6 +66,7 @@
enum {
SQ_NOTEBOOK_MULTI_TAB = 1,
+ SQ_NOTEBOOK_STORE_SHOW_FULL_PATH,
SQ_NOTEBOOK_STORE_SHOW_ICONS,
SQ_NOTEBOOK_STORE_SORT_FOLDERS_FIRST,
SQ_NOTEBOOK_STORE_SORT_CASE_SENSITIVE,
@@ -162,6 +163,13 @@
TRUE,
G_PARAM_READWRITE); g_object_class_install_property(object_class, SQ_NOTEBOOK_MULTI_TAB, pspec);
+ pspec = g_param_spec_boolean("show-full-path",
+ _("Show full path"),
+ _("Show the full path strings for each entry"),
+ FALSE,
+ G_PARAM_READWRITE);
+ g_object_class_install_property(object_class, SQ_NOTEBOOK_STORE_SHOW_FULL_PATH, pspec);
+
pspec = g_param_spec_boolean("show-icons",
_("Show mime icons"),
_("Show the mime type icons for each entry"),
@@ -204,6 +212,7 @@
notebook->current_page_fix = 0;
notebook->props._rules_hint = sq_settings_read_bool_entry(notebook->settings, "RulesHint", FALSE);
+ notebook->props._show_full_path = sq_settings_read_bool_entry(notebook->settings, "ShowFullPath", FALSE);
notebook->props._show_icons = sq_settings_read_bool_entry(notebook->settings, "ShowIcons", TRUE);
notebook->props._sort_folders_first = sq_settings_read_bool_entry(notebook->settings, "SortFoldersFirst", TRUE);
notebook->props._sort_case_sensitive = sq_settings_read_bool_entry(notebook->settings, "SortCaseSensitive", TRUE);
@@ -227,6 +236,7 @@
if(sq_notebook->settings)
{
sq_settings_write_bool_entry(sq_notebook->settings, "RulesHint", sq_notebook->props._rules_hint);
+ sq_settings_write_bool_entry(sq_notebook->settings, "ShowFullPath", sq_notebook->props._show_full_path);
sq_settings_write_bool_entry(sq_notebook->settings, "ShowIcons", sq_notebook->props._show_icons);
sq_settings_write_bool_entry(sq_notebook->settings, "SortFoldersFirst", sq_notebook->props._sort_folders_first);
sq_settings_write_bool_entry(sq_notebook->settings, "SortCaseSensitive", sq_notebook->props._sort_case_sensitive);
@@ -288,6 +298,14 @@
case SQ_NOTEBOOK_MULTI_TAB:
SQ_NOTEBOOK(object)->multi_tab = g_value_get_boolean(value);
break;
+ case SQ_NOTEBOOK_STORE_SHOW_FULL_PATH:
+ {
+ SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
+ if(store)
+ sq_archive_store_set_show_full_path(store, g_value_get_boolean(value));
+ SQ_NOTEBOOK(object)->props._show_full_path = g_value_get_boolean(value);
+ break;
+ }
case SQ_NOTEBOOK_STORE_SHOW_ICONS:
{
SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
@@ -331,6 +349,15 @@
case SQ_NOTEBOOK_MULTI_TAB:
g_value_set_boolean(value, SQ_NOTEBOOK(object)->multi_tab);
break;
+ case SQ_NOTEBOOK_STORE_SHOW_FULL_PATH:
+ {
+ SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
+ if(store)
+ g_value_set_boolean(value, sq_archive_store_get_show_full_path(store));
+ else
+ g_value_set_boolean(value, SQ_NOTEBOOK(object)->props._show_full_path);
+ break;
+ }
case SQ_NOTEBOOK_STORE_SHOW_ICONS:
{
SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
@@ -481,6 +508,7 @@
gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
GtkTreeModel *tree_model = sq_archive_store_new(archive, notebook->props._show_icons, notebook->props._up_dir, notebook->icon_theme);
+ sq_archive_store_set_show_full_path(SQ_ARCHIVE_STORE(tree_model), notebook->props._show_full_path);
sq_archive_store_set_sort_folders_first(SQ_ARCHIVE_STORE(tree_model), notebook->props._sort_folders_first);
sq_archive_store_set_sort_case_sensitive(SQ_ARCHIVE_STORE(tree_model), notebook->props._sort_case_sensitive);
g_signal_connect(G_OBJECT(tree_model), "notify", G_CALLBACK(cb_sq_notebook_notify_proxy), notebook);
@@ -678,9 +706,9 @@
static void
cb_notebook_file_activated(SQArchiveStore *store, gchar *filename, SQNotebook *notebook)
{
- gchar *pwd = sq_archive_store_get_pwd(store);
- gchar *path = g_strconcat(pwd, filename, NULL);
- g_signal_emit(G_OBJECT(notebook), sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_FILE_ACTIVATED], 0, path, NULL);
+ //gchar *pwd = sq_archive_store_get_pwd(store);
+ //gchar *path = g_strconcat(pwd, filename, NULL);
+ //g_signal_emit(G_OBJECT(notebook), sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_FILE_ACTIVATED], 0, path, NULL);
}
gboolean
@@ -747,7 +775,7 @@
GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
- gchar *pwd = sq_archive_store_get_pwd(SQ_ARCHIVE_STORE(store));
+ //gchar *pwd = sq_archive_store_get_pwd(SQ_ARCHIVE_STORE(store));
GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(treeview));
GList *rows = gtk_tree_selection_get_selected_rows(selection, &store);
GList *_rows = rows;
@@ -756,13 +784,13 @@
gtk_tree_model_get_iter(store, &iter, _rows->data);
gtk_tree_model_get_value(store, &iter, 1, &value);
- filenames = g_slist_prepend(filenames, g_strconcat(pwd, g_value_get_string(&value), NULL));
+ //filenames = g_slist_prepend(filenames, g_strconcat(pwd, g_value_get_string(&value), NULL));
g_value_unset((GValue*)&value);
_rows = _rows->next;
}
g_list_free(rows);
- g_free(pwd);
+ //g_free(pwd);
return filenames;
}
@@ -791,7 +819,7 @@
sq_notebook_treeview_reset_columns(sq_archive_store_get_archive(store), treeview);
}
- if(strcmp(g_param_spec_get_name(pspec), "sort-folders-first") == 0 || strcmp(g_param_spec_get_name(pspec), "sort-case-sensitive") == 0)
+ if(strcmp(g_param_spec_get_name(pspec), "show-full-path") == 0 || strcmp(g_param_spec_get_name(pspec), "sort-folders-first") == 0 || strcmp(g_param_spec_get_name(pspec), "sort-case-sensitive") == 0)
{
g_object_notify(user_data, g_param_spec_get_name(pspec));
}
Modified: squeeze/trunk/src/notebook.h
===================================================================
--- squeeze/trunk/src/notebook.h 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/notebook.h 2007-03-04 15:23:21 UTC (rev 25109)
@@ -48,6 +48,7 @@
SQSettings *settings;
struct
{
+ gboolean _show_full_path;
gboolean _show_icons;
gboolean _up_dir;
gboolean _sort_folders_first;
Modified: squeeze/trunk/src/path_bar.c
===================================================================
--- squeeze/trunk/src/path_bar.c 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/path_bar.c 2007-03-04 15:23:21 UTC (rev 25109)
@@ -39,6 +39,8 @@
#define SQ_SCROLL_LEFT 1
#define SQ_SCROLL_RIGHT 2
+#define SQ_PATH_BAR_PATH_BUTTON_ITER "sq-path-bar-path-iter"
+
static void
sq_path_bar_class_init(SQPathBarClass *archive_class);
@@ -60,7 +62,7 @@
sq_path_bar_forall(GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data);
static void
-cb_sq_path_bar_pwd_changed(SQArchiveStore *store, SQNavigationBar *bar);
+cb_sq_path_bar_pwd_changed(SQArchiveStore *store, LSQArchiveIter *, SQNavigationBar *bar);
static void
cb_sq_path_bar_new_archive(SQArchiveStore *store, SQNavigationBar *bar);
static void
@@ -191,6 +193,7 @@
path_bar->path_button = g_slist_prepend(NULL, path_bar->home_button);
path_bar->first_button = NULL;
+ path_bar->trailing = NULL;
path_bar->scroll_timeout = 0;
path_bar->scroll_dir = SQ_SCROLL_NONE;
path_bar->scroll_click = TRUE;
@@ -258,10 +261,13 @@
g_slist_foreach(path_bar->path_button, (GFunc)callback, callback_data);
- if(path_bar->left_button)
- (*callback)(GTK_WIDGET(path_bar->left_button), callback_data);
- if(path_bar->right_button)
- (*callback)(GTK_WIDGET(path_bar->right_button), callback_data);
+ if(include_internals)
+ {
+ if(path_bar->left_button)
+ (*callback)(GTK_WIDGET(path_bar->left_button), callback_data);
+ if(path_bar->right_button)
+ (*callback)(GTK_WIDGET(path_bar->right_button), callback_data);
+ }
}
static void
@@ -518,7 +524,7 @@
{
SQPathBar *path_bar = SQ_PATH_BAR(bar);
GSList *buttons = path_bar->path_button->next;
- GSList *path, *iter;
+ LSQArchiveIter *iter, *parent;
GtkRadioButton *button;
SQ_PATH_BAR(bar)->updating = TRUE;
@@ -535,98 +541,93 @@
path_bar->path_button->next = NULL;
gtk_widget_set_sensitive(GTK_WIDGET(path_bar->home_button), (store&&store->archive));
+ g_object_set_data(G_OBJECT(path_bar->home_button), SQ_PATH_BAR_PATH_BUTTON_ITER, NULL);
+ if(path_bar->trailing)
+ lsq_archive_iter_unref(path_bar->trailing);
if(store)
{
- iter = path = sq_archive_store_get_trailing(store);
- while(iter)
+ path_bar->trailing = iter = lsq_archive_iter_ref(sq_archive_store_get_trailing(store));
+ if(iter)
{
- button = GTK_RADIO_BUTTON(gtk_radio_button_new_with_label(path_bar->path_button, (const gchar*)iter->data));
- gtk_widget_ref(GTK_WIDGET(button));
- gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(button), FALSE);
- path_bar->path_button = g_slist_append(path_bar->path_button, button);
+ while(lsq_archive_iter_has_parent(iter))
+ {
+ button = GTK_RADIO_BUTTON(gtk_radio_button_new_with_label(path_bar->path_button, lsq_archive_iter_get_filename(iter)));
+ gtk_widget_ref(GTK_WIDGET(button));
+ gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(button), FALSE);
+ path_bar->path_button = g_slist_prepend(path_bar->path_button->next, button);
- g_signal_connect(G_OBJECT(button), "clicked", (GCallback)cb_sq_path_bar_path_button_clicked, path_bar);
+ g_object_set_data(G_OBJECT(button), SQ_PATH_BAR_PATH_BUTTON_ITER, iter);
+ g_signal_connect(G_OBJECT(button), "clicked", (GCallback)cb_sq_path_bar_path_button_clicked, path_bar);
- gtk_container_add(GTK_CONTAINER(path_bar), GTK_WIDGET(button));
- gtk_widget_show(GTK_WIDGET(button));
+ gtk_container_add(GTK_CONTAINER(path_bar), GTK_WIDGET(button));
+ gtk_widget_show(GTK_WIDGET(button));
- g_free(iter->data);
- iter = iter->next;
+ parent = lsq_archive_iter_get_parent(iter);
+ lsq_archive_iter_unref(iter);
+ iter = parent;
+ }
+
+ g_object_set_data(G_OBJECT(path_bar->home_button), SQ_PATH_BAR_PATH_BUTTON_ITER, iter);
+ lsq_archive_iter_unref(iter);
}
- g_slist_free(path);
}
SQ_PATH_BAR(bar)->updating = FALSE;
}
static void
-cb_sq_path_bar_pwd_changed(SQArchiveStore *store, SQNavigationBar *bar)
+cb_sq_path_bar_pwd_changed(SQArchiveStore *store, LSQArchiveIter *path, SQNavigationBar *bar)
{
SQPathBar *path_bar = SQ_PATH_BAR(bar);
- GSList *path = sq_archive_store_get_pwd_list(store);
- GSList *iter = path;
+ LSQArchiveIter *iter = sq_archive_store_get_trailing(store);
+ LSQArchiveIter *parent;
GSList *buttons = path_bar->path_button->next;
- GSList *lastbutton = path_bar->path_button;
- GtkRadioButton *button = GTK_RADIO_BUTTON(path_bar->home_button);
- const gchar *label;
- gint cmp = 0;
+ GtkRadioButton *button;
path_bar->updating = TRUE;
- while(iter && buttons)
+ while(buttons)
{
- button = GTK_RADIO_BUTTON(buttons->data);
- label = gtk_button_get_label(GTK_BUTTON(button));
- cmp = strcmp(label, (gchar*)iter->data);
- if(cmp != 0)
- {
- /* Remove wrong trailing buttons */
- while(buttons)
- {
- gtk_container_remove(GTK_CONTAINER(path_bar), GTK_WIDGET(buttons->data));
- gtk_widget_unref(GTK_WIDGET(buttons->data));
- buttons = buttons->next;
- }
- if(lastbutton)
- {
- g_slist_free(lastbutton->next);
- lastbutton->next = NULL;
- }
- else
- {
- g_slist_free(path_bar->path_button);
- path_bar->path_button = NULL;
- }
- break;
- }
-
- lastbutton = buttons;
+ gtk_container_remove(GTK_CONTAINER(path_bar), GTK_WIDGET(buttons->data));
+ gtk_widget_unref(GTK_WIDGET(buttons->data));
buttons = buttons->next;
-
- g_free(iter->data);
- iter = iter->next;
}
+ g_slist_free(path_bar->path_button->next);
+ path_bar->path_button->next = NULL;
- while(iter)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(path_bar->home_button), TRUE);
+ g_object_set_data(G_OBJECT(path_bar->home_button), SQ_PATH_BAR_PATH_BUTTON_ITER, NULL);
+ if(path_bar->trailing)
+ lsq_archive_iter_unref(path_bar->trailing);
+ path_bar->trailing = lsq_archive_iter_ref(iter);
+
+ if(iter)
{
- button = GTK_RADIO_BUTTON(gtk_radio_button_new_with_label(path_bar->path_button, (const gchar*)iter->data));
- gtk_widget_ref(GTK_WIDGET(button));
- gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(button), FALSE);
- path_bar->path_button = g_slist_append(path_bar->path_button, button);
+ while(lsq_archive_iter_has_parent(iter))
+ {
+ button = GTK_RADIO_BUTTON(gtk_radio_button_new_with_label(path_bar->path_button, lsq_archive_iter_get_filename(iter)));
+ gtk_widget_ref(GTK_WIDGET(button));
+ gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(button), FALSE);
+ path_bar->path_button->next = g_slist_prepend(path_bar->path_button->next, button);
- g_signal_connect(G_OBJECT(button), "clicked", (GCallback)cb_sq_path_bar_path_button_clicked, path_bar);
+ if(iter == path)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
- gtk_container_add(GTK_CONTAINER(path_bar), GTK_WIDGET(button));
- gtk_widget_show(GTK_WIDGET(button));
+ g_object_set_data(G_OBJECT(button), SQ_PATH_BAR_PATH_BUTTON_ITER, iter);
+ g_signal_connect(G_OBJECT(button), "clicked", (GCallback)cb_sq_path_bar_path_button_clicked, path_bar);
- g_free(iter->data);
- iter = iter->next;
- }
+ gtk_container_add(GTK_CONTAINER(path_bar), GTK_WIDGET(button));
+ gtk_widget_show(GTK_WIDGET(button));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
+ parent = lsq_archive_iter_get_parent(iter);
+ lsq_archive_iter_unref(iter);
+ iter = parent;
+ }
- g_slist_free(path);
+ g_object_set_data(G_OBJECT(path_bar->home_button), SQ_PATH_BAR_PATH_BUTTON_ITER, iter);
+ lsq_archive_iter_unref(iter);
+ }
path_bar->first_button = g_slist_last(path_bar->path_button);
@@ -638,26 +639,10 @@
{
if(path_bar->updating)
return;
- gchar *path = g_strdup("");
- gchar *prev = NULL;
- const gchar *folder = NULL;
- GSList *iter = path_bar->path_button;
- while(iter->data != (gpointer)button)
- {
- iter = iter->next;
- prev = path;
- folder = gtk_button_get_label(GTK_BUTTON(iter->data));
- if(folder[0] == '/')
- path = g_strconcat(path, folder, NULL);
- else
- path = g_strconcat(path, folder, "/", NULL);
- g_free(prev);
- }
+ LSQArchiveIter *path = g_object_get_data(G_OBJECT(button), SQ_PATH_BAR_PATH_BUTTON_ITER);
sq_archive_store_set_pwd(SQ_NAVIGATION_BAR(path_bar)->store, path);
-
- g_free(path);
}
static void
@@ -772,6 +757,6 @@
cb_sq_path_bar_new_archive(bar->store, bar);
if(bar->store)
- cb_sq_path_bar_pwd_changed(bar->store, bar);
+ cb_sq_path_bar_pwd_changed(bar->store, sq_archive_store_get_pwd(bar->store), bar);
}
Modified: squeeze/trunk/src/path_bar.h
===================================================================
--- squeeze/trunk/src/path_bar.h 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/path_bar.h 2007-03-04 15:23:21 UTC (rev 25109)
@@ -48,6 +48,7 @@
GtkButton *home_button;
GSList *path_button;
GSList *first_button;
+ LSQArchiveIter *trailing;
guint scroll_timeout;
guint scroll_dir;
gboolean scroll_click;
Modified: squeeze/trunk/src/tool_bar.c
===================================================================
--- squeeze/trunk/src/tool_bar.c 2007-03-04 15:15:21 UTC (rev 25108)
+++ squeeze/trunk/src/tool_bar.c 2007-03-04 15:23:21 UTC (rev 25109)
@@ -47,7 +47,7 @@
sq_tool_bar_forall(GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data);
static void
-cb_sq_tool_bar_pwd_changed(SQArchiveStore *store, SQNavigationBar *bar);
+cb_sq_tool_bar_pwd_changed(SQArchiveStore *store, LSQArchiveIter*, SQNavigationBar *bar);
static void
cb_sq_tool_bar_new_archive(SQArchiveStore *store, SQNavigationBar *bar);
static void
@@ -193,24 +193,26 @@
}
static void
-sq_tool_bar_refresh(SQToolBar *tool_bar, gchar *path)
+sq_tool_bar_refresh(SQToolBar *tool_bar, LSQArchiveIter *path)
{
- gtk_entry_set_text(GTK_ENTRY(tool_bar->path_field), path);
- gtk_editable_set_position(GTK_EDITABLE(tool_bar->path_field), -1);
-
- /* FIXME: the part about path[0] '/' could be bugged */
- if(strlen(path) < 1 || (strlen(path) == 1 && path[0] == '/'))
+ if(SQ_NAVIGATION_BAR(tool_bar)->store && path)
{
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 0);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->home_button), 0);
- }
- else
- {
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 1);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->home_button), 1);
- }
- if(SQ_NAVIGATION_BAR(tool_bar)->store)
- {
+ gchar *text = lsq_archive_iter_get_path(path);
+ gtk_entry_set_text(GTK_ENTRY(tool_bar->path_field), text);
+ gtk_editable_set_position(GTK_EDITABLE(tool_bar->path_field), -1);
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), 1);
+ g_free(text);
+
+ if(lsq_archive_iter_has_parent(path))
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 1);
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->home_button), 1);
+ }
+ else
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 0);
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->home_button), 0);
+ }
if(sq_archive_store_has_future(SQ_NAVIGATION_BAR(tool_bar)->store))
gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 1);
else
@@ -225,8 +227,14 @@
}
else
{
+ gtk_entry_set_text(GTK_ENTRY(tool_bar->path_field), "");
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), 0);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 0);
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->home_button), 0);
gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), 0);
gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 0);
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->refresh_button), 0);
}
}
@@ -310,54 +318,31 @@
}
static void
-cb_sq_tool_bar_pwd_changed(SQArchiveStore *store, SQNavigationBar *bar)
+cb_sq_tool_bar_pwd_changed(SQArchiveStore *store, LSQArchiveIter *path, SQNavigationBar *bar)
{
SQToolBar *tool_bar = SQ_TOOL_BAR(bar);
- gchar *path= sq_archive_store_get_pwd(store);
- if(!path)
- path = g_strdup("");
sq_tool_bar_refresh(tool_bar, path);
- g_free(path);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), TRUE);
}
static void
cb_sq_tool_bar_new_archive(SQArchiveStore *store, SQNavigationBar *bar)
{
SQToolBar *tool_bar = SQ_TOOL_BAR(bar);
-
- LSQArchive *lp_archive = sq_archive_store_get_archive(store);
-
- if(!lp_archive)
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), TRUE);
-
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->home_button), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->refresh_button), TRUE);
+ LSQArchiveIter *path = sq_archive_store_get_pwd(bar->store);
+ sq_tool_bar_refresh(tool_bar, path);
+ lsq_archive_iter_unref(path);
}
static void
cb_sq_tool_bar_history_back(GtkWidget *back_button, SQToolBar *tool_bar)
{
sq_archive_store_go_back(SQ_NAVIGATION_BAR(tool_bar)->store);
- gchar *path= sq_archive_store_get_pwd(SQ_NAVIGATION_BAR(tool_bar)->store);
- if(!path)
- path = g_strdup("");
- sq_tool_bar_refresh(tool_bar, path);
- g_free(path);
}
static void
cb_sq_tool_bar_history_forward(GtkWidget *forward_button, SQToolBar *tool_bar)
{
sq_archive_store_go_forward(SQ_NAVIGATION_BAR(tool_bar)->store);
- gchar *path= sq_archive_store_get_pwd(SQ_NAVIGATION_BAR(tool_bar)->store);
- if(!path)
- path = g_strdup("");
- sq_tool_bar_refresh(tool_bar, path);
- g_free(path);
}
static void
@@ -369,8 +354,10 @@
static void
cb_sq_tool_bar_home(GtkWidget *home_button, SQToolBar *tool_bar)
{
- /* FIXME: the part about "/" could be bugged */
- sq_archive_store_set_pwd(SQ_NAVIGATION_BAR(tool_bar)->store, "");
+ LSQArchive *archive = sq_archive_store_get_archive(SQ_NAVIGATION_BAR(tool_bar)->store);
+ LSQArchiveIter *path = lsq_archive_get_iter(archive, NULL);
+ sq_archive_store_set_pwd(SQ_NAVIGATION_BAR(tool_bar)->store, path);
+ lsq_archive_iter_unref(path);
}
static void
@@ -384,8 +371,14 @@
static void
cb_sq_tool_bar_path_field_activated(GtkWidget *entry, SQToolBar *tool_bar)
{
+ LSQArchive *archive = sq_archive_store_get_archive(SQ_NAVIGATION_BAR(tool_bar)->store);
const gchar *path = gtk_entry_get_text(GTK_ENTRY(entry));
- sq_archive_store_set_pwd(SQ_ARCHIVE_STORE(SQ_NAVIGATION_BAR(tool_bar)->store), path);
+ LSQArchiveIter *iter = lsq_archive_get_iter(archive, path);
+ if(iter)
+ {
+ sq_archive_store_set_pwd(SQ_NAVIGATION_BAR(tool_bar)->store, iter);
+ lsq_archive_iter_unref(iter);
+ }
}
static void
@@ -394,15 +387,12 @@
SQToolBar *tool_bar = SQ_TOOL_BAR(bar);
if(bar->store)
{
- gchar *path = sq_archive_store_get_pwd(bar->store);
- if(!path)
- path = g_strdup("");
+ LSQArchiveIter *path = sq_archive_store_get_pwd(bar->store);
sq_tool_bar_refresh(tool_bar, path);
- g_free(path);
+ lsq_archive_iter_unref(path);
}
else
{
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), FALSE);
- sq_tool_bar_refresh(tool_bar, "");
+ sq_tool_bar_refresh(tool_bar, NULL);
}
}
More information about the Xfce4-commits
mailing list