Updating branch refs/heads/stephan/new-ui to 5618f356820490d680416df05800b9fb00950b9b (commit) from fa6c69492f5f027fad5f89c742686f9fcc7acaea (commit)
commit 5618f356820490d680416df05800b9fb00950b9b Author: Stephan Arts <step...@xfce.org> Date: Fri May 10 13:07:38 2013 +0200 Strip stuff from archive-store src/Makefile.am | 3 +- src/archive_store.c | 473 +++++---------------------------------------------- src/archive_store.h | 12 +- src/main_window.c | 76 ++++++++- 4 files changed, 119 insertions(+), 445 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 8c7cd67..43be2d0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,7 +2,8 @@ bin_PROGRAMS = squeeze squeeze_SOURCES = \ main.c main.h \ - main_window.c main_window.h + main_window.c main_window.h \ + archive_store.c archive_store.h squeeze_CFLAGS = \ -DDATADIR=\"$(datadir)\" \ diff --git a/src/archive_store.c b/src/archive_store.c index 63614de..8a14310 100644 --- a/src/archive_store.c +++ b/src/archive_store.c @@ -26,10 +26,6 @@ #include "archive_store.h" -#ifndef SQ_ARCHIVE_STORE_MAX_HISTORY -#define SQ_ARCHIVE_STORE_MAX_HISTORY 10 -#endif - static void sq_archive_store_class_init(SQArchiveStoreClass *as_class); @@ -47,9 +43,7 @@ sq_archive_store_dispose(GObject *object); /* properties */ enum { - SQ_ARCHIVE_STORE_SHOW_FULL_PATH = 1, - SQ_ARCHIVE_STORE_SHOW_ICONS, - SQ_ARCHIVE_STORE_SHOW_UP_DIR, + SQ_ARCHIVE_STORE_SHOW_ICONS = 1 SQ_ARCHIVE_STORE_SORT_FOLDERS_FIRST, SQ_ARCHIVE_STORE_SORT_CASE_SENSITIVE }; @@ -107,10 +101,6 @@ static gboolean sq_archive_store_get_sort_column_id(GtkTreeSortable *sortable, gint *sort_col_id, GtkSortType *order); static void sq_archive_store_set_sort_column_id(GtkTreeSortable *sortable, gint sort_col_id, GtkSortType order); -static void -sq_archive_store_set_sort_func(GtkTreeSortable *, gint, GtkTreeIterCompareFunc, gpointer, GtkDestroyNotify); -static void -sq_archive_store_set_default_sort_func(GtkTreeSortable *, GtkTreeIterCompareFunc, gpointer, GtkDestroyNotify); static gboolean sq_archive_store_has_default_sort_func(GtkTreeSortable *); @@ -128,9 +118,6 @@ static GIcon * sq_archive_store_get_icon_name_for_iter(SQArchiveStore *store, LSQArchiveIter *iter); static void -sq_archive_store_append_history(SQArchiveStore *store, LSQArchiveIter *entry); - -static void sq_archive_store_check_trailing(SQArchiveStore *store); static void @@ -138,8 +125,6 @@ sq_archive_store_refresh(SQArchiveStore *store); static void cb_sq_archive_store_archive_refreshed(LSQArchive *archive, gpointer user_data); -/* static void */ -/* cb_sq_archive_store_archive_path_changed(LSQArchive *archive, const gchar *path, gpointer user_data); */ GType sq_archive_store_get_type(void) @@ -209,8 +194,10 @@ sq_archive_tree_sortable_init(GtkTreeSortableIface *iface) { iface->get_sort_column_id = sq_archive_store_get_sort_column_id; iface->set_sort_column_id = sq_archive_store_set_sort_column_id; +#if 0 iface->set_sort_func = sq_archive_store_set_sort_func; /*NOT SUPPORTED*/ iface->set_default_sort_func = sq_archive_store_set_default_sort_func; /*NOT SUPPORTED*/ +#endif iface->has_default_sort_func = sq_archive_store_has_default_sort_func; } @@ -222,16 +209,9 @@ sq_archive_store_init(SQArchiveStore *as) as->sort_column = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID; 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; as->props._sort_case_sensitive = 1; - as->navigation.history = NULL; - as->navigation.present = NULL; - as->navigation.maxhistory = SQ_ARCHIVE_STORE_MAX_HISTORY; - as->navigation.trailing = NULL; } static void @@ -244,14 +224,7 @@ sq_archive_store_class_init(SQArchiveStoreClass *as_class) object_class->get_property = sq_archive_store_get_property; object_class->dispose = sq_archive_store_dispose; - 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); + parent_class = g_type_class_peek_parent(as_class); pspec = g_param_spec_boolean("show-icons", _("Show mime icons"), @@ -260,13 +233,6 @@ sq_archive_store_class_init(SQArchiveStoreClass *as_class) G_PARAM_READWRITE); g_object_class_install_property(object_class, SQ_ARCHIVE_STORE_SHOW_ICONS, pspec); - pspec = g_param_spec_boolean("show-up-dir", - _("Show up dir entry"), - _("Show \'..\' to go to the parent directory"), - TRUE, - G_PARAM_READWRITE); - g_object_class_install_property(object_class, SQ_ARCHIVE_STORE_SHOW_UP_DIR, pspec); - pspec = g_param_spec_boolean("sort-folders-first", _("Sort folders before files"), _("The folders will be put at the top of the list"), @@ -280,41 +246,6 @@ sq_archive_store_class_init(SQArchiveStoreClass *as_class) TRUE, G_PARAM_READWRITE); g_object_class_install_property(object_class, SQ_ARCHIVE_STORE_SORT_CASE_SENSITIVE, pspec); - - sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED] = g_signal_new("sq-pwd-changed", - G_TYPE_FROM_CLASS(as_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - 0, - NULL, - NULL, - g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, - 1, - G_TYPE_POINTER, - NULL); - - sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_NEW_ARCHIVE] = g_signal_new("sq-new-archive", - G_TYPE_FROM_CLASS(as_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - 0, - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0, - NULL); - - sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_FILE_ACTIVATED] = g_signal_new("file-activated", - G_TYPE_FROM_CLASS(as_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - 0, - NULL, - NULL, - g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, - 1, - G_TYPE_POINTER, - NULL); } static void @@ -323,19 +254,9 @@ sq_archive_store_set_property(GObject *object, guint prop_id, const GValue *valu 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; - case SQ_ARCHIVE_STORE_SHOW_UP_DIR: - if(store->props._show_up_dir != g_value_get_boolean(value)?1:0) - { - store->props._show_up_dir = g_value_get_boolean(value)?1:0; - sq_archive_store_refresh(store); - } - break; case SQ_ARCHIVE_STORE_SORT_FOLDERS_FIRST: sq_archive_store_set_sort_folders_first(store, g_value_get_boolean(value)); break; @@ -350,15 +271,9 @@ sq_archive_store_get_property(GObject *object, guint prop_id, GValue *value, GPa { 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; - case SQ_ARCHIVE_STORE_SHOW_UP_DIR: - g_value_set_boolean(value, SQ_ARCHIVE_STORE(object)->props._show_up_dir?TRUE:FALSE); - break; case SQ_ARCHIVE_STORE_SORT_FOLDERS_FIRST: g_value_set_boolean(value, SQ_ARCHIVE_STORE(object)->props._sort_folders_first?TRUE:FALSE); break; @@ -381,6 +296,7 @@ sq_archive_store_get_n_columns(GtkTreeModel *tree_model) { SQArchiveStore *store; LSQArchive *archive; + g_debug("%s\n", __FUNCTION__); g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(tree_model), 0); @@ -398,6 +314,7 @@ sq_archive_store_get_column_type(GtkTreeModel *tree_model, gint index_) { SQArchiveStore *store; LSQArchive *archive; + g_debug("%s\n", __FUNCTION__); g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(tree_model), G_TYPE_INVALID); @@ -428,6 +345,8 @@ sq_archive_store_get_iter(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePa gint depth; gint index_; + g_debug("%s\n", __FUNCTION__); + #ifdef DEBUG g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(tree_model), FALSE); @@ -435,15 +354,6 @@ sq_archive_store_get_iter(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePa store = SQ_ARCHIVE_STORE(tree_model); - if(!store->navigation.present) - return FALSE; -#ifdef DEBUG - g_return_val_if_fail(store->navigation.present->data, FALSE); -#endif - - /* get the present history */ - entry = store->navigation.present->data; - indices = gtk_tree_path_get_indices(path); depth = gtk_tree_path_get_depth(path) - 1; @@ -452,26 +362,14 @@ sq_archive_store_get_iter(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePa index_ = indices[depth]; - /* if this is the root entry we don't need the ".." */ - if(store->props._show_up_dir && lsq_archive_iter_has_parent(entry)) - index_--; + /* as long as it is a list depth is 0 other wise current_entry should be synced ? */ + if(store->sort_list) + entry = store->sort_list[index_]; + else + entry = NULL; - if(index_ == -1) - { - /* it is the ".." */ - entry = NULL; - } - else - { - /* as long as it is a list depth is 0 other wise current_entry should be synced ? */ - if(store->sort_list) - entry = store->sort_list[index_]; - else - entry = NULL; - - if(!entry) - return FALSE; - } + if(!entry) + return FALSE; iter->stamp = store->stamp; iter->user_data = entry; @@ -516,6 +414,7 @@ sq_archive_store_get_value (GtkTreeModel *tree_model, GtkTreeIter *iter, gint co SQArchiveStore *store; LSQArchive *archive; LSQArchiveIter *parent, *entry; + g_debug("%s\n", __FUNCTION__); g_return_if_fail (SQ_IS_ARCHIVE_STORE (tree_model)); @@ -587,6 +486,7 @@ sq_archive_store_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter) SQArchiveStore *store; LSQArchiveIter *entry; gint pos; + g_debug("%s\n", __FUNCTION__); g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(tree_model), FALSE); @@ -619,6 +519,7 @@ sq_archive_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, Gtk SQArchiveStore *store; LSQArchive *archive; LSQArchiveIter *entry; + g_debug("%s\n", __FUNCTION__); #ifdef DEBUG g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(tree_model), FALSE); @@ -628,13 +529,6 @@ sq_archive_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, Gtk archive = store->archive; #ifdef DEBUG - g_return_val_if_fail(store->navigation.present, FALSE); - g_return_val_if_fail(store->navigation.present->data, FALSE); -#endif - - entry = store->navigation.present->data; - -#ifdef DEBUG g_return_val_if_fail(archive, FALSE); g_return_val_if_fail(entry, FALSE); #endif @@ -668,6 +562,7 @@ sq_archive_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, Gtk static gboolean sq_archive_store_iter_has_child (GtkTreeModel *tree_model, GtkTreeIter *iter) { + g_debug("%s\n", __FUNCTION__); return FALSE; } @@ -678,6 +573,8 @@ sq_archive_store_iter_n_children (GtkTreeModel *tree_model, GtkTreeIter *iter) LSQArchive *archive; LSQArchiveIter *entry; + g_debug("%s\n", __FUNCTION__); + #ifdef DEBUG g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(tree_model), 0); #endif @@ -686,13 +583,6 @@ sq_archive_store_iter_n_children (GtkTreeModel *tree_model, GtkTreeIter *iter) archive = store->archive; #ifdef DEBUG - g_return_val_if_fail(store->navigation.present, 0); - g_return_val_if_fail(store->navigation.present->data, 0); -#endif - - entry = store->navigation.present->data; - -#ifdef DEBUG g_return_val_if_fail(archive, 0); g_return_val_if_fail(entry, 0); #endif @@ -700,7 +590,7 @@ sq_archive_store_iter_n_children (GtkTreeModel *tree_model, GtkTreeIter *iter) /* only support lists: iter is always NULL */ g_return_val_if_fail(iter == NULL, FALSE); - return store->list_size + (lsq_archive_iter_has_parent(entry)?1:0); + return store->list_size; } static gboolean @@ -709,6 +599,7 @@ sq_archive_store_iter_nth_child (GtkTreeModel *tree_model, GtkTreeIter *iter, Gt SQArchiveStore *store; LSQArchive *archive; LSQArchiveIter *entry; + g_debug("%s\n", __FUNCTION__); #ifdef DEBUG g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(tree_model), FALSE); @@ -718,13 +609,6 @@ sq_archive_store_iter_nth_child (GtkTreeModel *tree_model, GtkTreeIter *iter, Gt archive = store->archive; #ifdef DEBUG - g_return_val_if_fail(store->navigation.present, FALSE); - g_return_val_if_fail(store->navigation.present->data, FALSE); -#endif - - entry = store->navigation.present->data; - -#ifdef DEBUG g_return_val_if_fail(archive, FALSE); g_return_val_if_fail(entry, FALSE); g_return_val_if_fail(iter, FALSE); @@ -761,6 +645,7 @@ sq_archive_store_iter_nth_child (GtkTreeModel *tree_model, GtkTreeIter *iter, Gt static gboolean sq_archive_store_iter_parent (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *child) { + g_debug("%s\n", __FUNCTION__); return FALSE; } @@ -769,6 +654,7 @@ static gboolean sq_archive_store_get_sort_column_id(GtkTreeSortable *sortable, gint *sort_col_id, GtkSortType *order) { SQArchiveStore *store; + g_debug("%s\n", __FUNCTION__); g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(sortable), FALSE); @@ -787,6 +673,7 @@ static void sq_archive_store_set_sort_column_id(GtkTreeSortable *sortable, gint sort_col_id, GtkSortType order) { SQArchiveStore *store; + g_debug("%s\n", __FUNCTION__); g_return_if_fail(SQ_IS_ARCHIVE_STORE(sortable)); @@ -807,6 +694,7 @@ sq_archive_store_set_sort_column_id(GtkTreeSortable *sortable, gint sort_col_id, gtk_tree_sortable_sort_column_changed(sortable); } +#if 0 static void sq_archive_store_set_sort_func(GtkTreeSortable *s, gint i, GtkTreeIterCompareFunc f, gpointer p, GtkDestroyNotify d) { @@ -818,6 +706,7 @@ sq_archive_store_set_default_sort_func(GtkTreeSortable *s, GtkTreeIterCompareFun { g_warning("%s is not supported by the SQArchiveStore model", __FUNCTION__); } +#endif static gboolean sq_archive_store_has_default_sort_func(GtkTreeSortable *s) @@ -922,14 +811,6 @@ sq_archive_store_sort(SQArchiveStore *store) store->sort_list = NULL; } -#ifdef DEBUG - g_return_if_fail(store->navigation.present); - g_return_if_fail(store->navigation.present->data); -#endif - - pentry = store->navigation.present->data; - psize = lsq_archive_iter_n_children(pentry); - store->sort_list = g_new(LSQArchiveIter *, psize+1); for(i = 0; i < psize; ++i) @@ -1018,7 +899,7 @@ sq_archive_store_get_icon_name_for_iter(SQArchiveStore *store, LSQArchiveIter *i } GtkTreeModel * -sq_archive_store_new(LSQArchive *archive, gboolean show_icons, gboolean show_up_dir, GtkIconTheme *icon_theme) +sq_archive_store_new(gboolean show_icons, gboolean show_up_dir) { SQArchiveStore *tree_model; @@ -1026,13 +907,10 @@ sq_archive_store_new(LSQArchive *archive, gboolean show_icons, gboolean show_up_ tree_model->props._show_icons = show_icons?1:0; tree_model->props._show_up_dir = show_up_dir?1:0; - tree_model->icon_theme = icon_theme; if(tree_model->props._sort_folders_first) tree_model->sort_column = SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT + LSQ_ARCHIVE_PROP_FILENAME; - sq_archive_store_set_archive(tree_model, archive); - return GTK_TREE_MODEL(tree_model); } @@ -1054,13 +932,7 @@ sq_archive_store_refresh(SQArchiveStore *store) GtkTreePath *path_ = NULL; GtkTreeIter iter; - if(!store->navigation.present) - return; -#ifdef DEBUG - g_return_if_fail(store->navigation.present->data); -#endif - - entry = store->navigation.present->data; + entry = lsq_archive_get_iter( archive, NULL ); g_return_if_fail(archive); g_return_if_fail(entry); @@ -1070,27 +942,6 @@ sq_archive_store_refresh(SQArchiveStore *store) /* if(store->treeview) */ { - /* we need to add up dir .. */ - if(store->props._show_up_dir && lsq_archive_iter_has_parent(entry)) - { - /* use a hack like in thunar-list-model to prevent re-allocating */ - path_ = gtk_tree_path_new(); - gtk_tree_path_append_index(path_, 0); - - iter.stamp = store->stamp; - iter.user_data = NULL; - iter.user_data3 = GINT_TO_POINTER(-1); - - if(0 < prev_size) - gtk_tree_model_row_changed(GTK_TREE_MODEL(store), path_, &iter); - else - gtk_tree_model_row_inserted(GTK_TREE_MODEL(store), path_, &iter); - - gtk_tree_path_free(path_); - i=1; - new_size++; - } - if(store->sort_list) { /* notify the tree view that we have rows */ @@ -1129,6 +980,9 @@ sq_archive_store_refresh(SQArchiveStore *store) } store->list_size = new_size; + + printf("> %d\n", new_size); + } static void @@ -1146,11 +1000,7 @@ sq_archive_store_file_activated(SQArchiveStore *store, GtkTreePath *path) gint depth; gint index_; - g_return_if_fail(store->navigation.present); - g_return_if_fail(store->navigation.present->data); - archive = store->archive; - entry = store->navigation.present->data; g_return_if_fail(archive); g_return_if_fail(entry); @@ -1169,7 +1019,6 @@ sq_archive_store_file_activated(SQArchiveStore *store, GtkTreePath *path) if(index_ == -1) { entry = lsq_archive_iter_get_parent(entry); - sq_archive_store_append_history(store, entry); } else { @@ -1189,13 +1038,11 @@ sq_archive_store_file_activated(SQArchiveStore *store, GtkTreePath *path) g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_FILE_ACTIVATED], 0, entry, NULL); return; } - - sq_archive_store_append_history(store, lsq_archive_iter_ref(entry)); } 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, entry, NULL); + //g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, entry, NULL); } void @@ -1204,23 +1051,14 @@ sq_archive_store_go_up(SQArchiveStore *store) LSQArchive *archive = store->archive; LSQArchiveIter *entry; -#ifdef DEBUG - g_return_if_fail(store->navigation.present); - g_return_if_fail(store->navigation.present->data); -#endif - - entry = store->navigation.present->data; - g_return_if_fail(archive); g_return_if_fail(entry); g_return_if_fail((entry = lsq_archive_iter_get_parent(entry))); - sq_archive_store_append_history(store, entry); - 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, entry, NULL); + //g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, entry, NULL); } void @@ -1265,18 +1103,6 @@ sq_archive_store_set_archive(SQArchiveStore *store, LSQArchive *archive) store->list_size = 0; - /* clear the history */ - for(list_iter = store->navigation.history; list_iter; list_iter = list_iter->next) - lsq_archive_iter_unref(list_iter->data); - - g_list_free(store->navigation.history); - if(store->navigation.trailing) - lsq_archive_iter_unref(store->navigation.trailing); - - store->navigation.history = NULL; - store->navigation.present = NULL; - store->navigation.trailing = NULL; - /* disconnect from the archive */ if(store->archive) { @@ -1289,48 +1115,18 @@ sq_archive_store_set_archive(SQArchiveStore *store, LSQArchive *archive) /* notify all that we have a new NULL archive */ if(!archive) { - g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_NEW_ARCHIVE], 0, NULL); + //g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_NEW_ARCHIVE], 0, NULL); return; } /* take a ownership of the archive */ g_object_ref(archive); store->archive = archive; + store->entry = lsq_archive_get_iter(archive, NULL); - /* only update if we are not busy */ - /* if(lsq_archive_get_status(archive) == NULL) */ - { - root_entry = lsq_archive_get_iter(archive, NULL); - - sq_archive_store_append_history(store, root_entry); - - sq_archive_store_sort(store); - - /* lets notify the tree view we have new rows */ - store->list_size = lsq_archive_iter_n_children(root_entry); - - if(store->sort_list) - { - for(i = 0; i < store->list_size; ++i) - { - /* use a hack like in thunar-list-model to prevent re-allocating */ - path_ = gtk_tree_path_new(); - gtk_tree_path_append_index(path_, i); - - iter.stamp = store->stamp; - iter.user_data = store->sort_list[i]; - iter.user_data3 = GINT_TO_POINTER(i); - - gtk_tree_model_row_inserted(GTK_TREE_MODEL(store), path_, &iter); - - gtk_tree_path_free(path_); - } - } - } - - /* notify all we have a new archive and connect with the archive */ - g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_NEW_ARCHIVE], 0, NULL); g_signal_connect(store->archive, "refreshed", G_CALLBACK(cb_sq_archive_store_archive_refreshed), store); + lsq_archive_operate( store->archive, LSQ_COMMAND_TYPE_REFRESH, NULL, NULL, NULL, NULL ); + } LSQArchiveIter * @@ -1343,12 +1139,7 @@ sq_archive_store_get_pwd(SQArchiveStore *store) g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(store), NULL); #endif - if(!store->navigation.present) - return NULL; - - iter = store->navigation.present->data; - - return lsq_archive_iter_ref(iter); + return NULL; } gboolean @@ -1361,15 +1152,8 @@ sq_archive_store_set_pwd(SQArchiveStore *store, LSQArchiveIter *path) if(!store->archive) return FALSE; -#ifdef DEBUG - g_return_val_if_fail(store->navigation.present, FALSE); - g_return_val_if_fail(store->navigation.present->data, FALSE); -#endif - if(lsq_archive_iter_is_directory(path)) { - sq_archive_store_append_history(store, lsq_archive_iter_ref(path)); - sq_archive_store_sort(store); sq_archive_store_refresh(store); @@ -1387,19 +1171,6 @@ sq_archive_store_set_pwd(SQArchiveStore *store, LSQArchiveIter *path) return FALSE; } -void -sq_archive_store_set_icon_theme(SQArchiveStore *store, GtkIconTheme *icon_theme) -{ - if(store) - store->icon_theme = icon_theme; -} - -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) { @@ -1419,20 +1190,6 @@ sq_archive_store_get_sort_folders_first(SQArchiveStore *store) } 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; @@ -1486,149 +1243,6 @@ sq_archive_store_set_sort_folders_first(SQArchiveStore *store, gboolean sort) } } -gboolean -sq_archive_store_has_history(SQArchiveStore *store) -{ - if(!store->navigation.present) - return FALSE; - return store->navigation.present->prev?TRUE:FALSE; -} - -gboolean -sq_archive_store_has_future(SQArchiveStore *store) -{ - if(!store->navigation.present) - return FALSE; - return store->navigation.present->next?TRUE:FALSE; -} - -void -sq_archive_store_go_back(SQArchiveStore *store) -{ - LSQArchive *archive = store->archive; - -#ifdef DEBUG - g_return_if_fail(store->navigation.present); - g_return_if_fail(store->navigation.present->data); -#endif - - g_return_if_fail(archive); - - if(sq_archive_store_has_history(store)) - store->navigation.present = store->navigation.present->prev; - - sq_archive_store_sort(store); - sq_archive_store_refresh(store); - - sq_archive_store_check_trailing(store); - - g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, store->navigation.present->data, NULL); -} - -void -sq_archive_store_go_forward(SQArchiveStore *store) -{ - LSQArchive *archive = store->archive; - -#ifdef DEBUG - g_return_if_fail(store->navigation.present); - g_return_if_fail(store->navigation.present->data); -#endif - - g_return_if_fail(archive); - - if(sq_archive_store_has_future(store)) - store->navigation.present = store->navigation.present->next; - - sq_archive_store_sort(store); - sq_archive_store_refresh(store); - - sq_archive_store_check_trailing(store); - - g_signal_emit(store, sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0, store->navigation.present->data, NULL); -} - -static void -sq_archive_store_append_history(SQArchiveStore *store, LSQArchiveIter *entry) -{ - /* - if(lsq_archive_get_status(store->archive) != NULL) - return; - */ - - GList *iter = store->navigation.present; - - if(store->navigation.present) - { - if(store->navigation.present->next) - store->navigation.present->next->prev = NULL; - - while((iter = iter->next)) - lsq_archive_iter_unref(iter->data); - - g_list_free(store->navigation.present->next); - - store->navigation.present->next = NULL; - } - - store->navigation.history = g_list_append(store->navigation.history, entry); - store->navigation.present = g_list_last(store->navigation.history); - - while(g_list_length(store->navigation.history) > store->navigation.maxhistory) - { - lsq_archive_iter_unref(g_list_first(store->navigation.history)->data); - store->navigation.history = g_list_delete_link(store->navigation.history, g_list_first(store->navigation.history)); - } - - sq_archive_store_check_trailing(store); -} - -static void -sq_archive_store_check_trailing(SQArchiveStore *store) -{ - LSQArchiveIter *piter = store->navigation.present->data; - LSQArchiveIter *titer = store->navigation.trailing; - LSQArchiveIter *child = NULL; - - if(titer) - { - while(titer) - { - if(titer == piter) - { - if(child) - lsq_archive_iter_unref(child); - return; - } - - titer = lsq_archive_iter_get_parent(titer); - if(child) - lsq_archive_iter_unref(child); - child = titer; - } - if(child) - lsq_archive_iter_unref(child); - - lsq_archive_iter_unref(store->navigation.trailing); - } - store->navigation.trailing = lsq_archive_iter_ref(piter); -} - -LSQArchiveIter * -sq_archive_store_get_trailing(SQArchiveStore *store) -{ - LSQArchiveIter *iter; - -#ifdef DEBUG - g_return_val_if_fail(store, NULL); - g_return_val_if_fail(SQ_IS_ARCHIVE_STORE(store), NULL); -#endif - - iter = store->navigation.trailing; - - return lsq_archive_iter_ref(iter); -} - LSQArchive * sq_archive_store_get_archive(SQArchiveStore *archive_store) { @@ -1656,16 +1270,9 @@ cb_sq_archive_store_archive_refreshed(LSQArchive *archive, gpointer user_data) GList *iter; LSQArchiveIter *aIter; - for(iter = store->navigation.history; iter; iter = g_list_next(iter)) - { - aIter = lsq_archive_iter_get_real_parent(iter->data); - lsq_archive_iter_unref(iter->data); - iter->data = aIter; - } 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); } diff --git a/src/archive_store.h b/src/archive_store.h index 9770373..191e626 100644 --- a/src/archive_store.h +++ b/src/archive_store.h @@ -43,11 +43,12 @@ struct _SQArchiveStore GObject parent; gint stamp; LSQArchive *archive; + LSQArchiveIter *entry; + gint sort_column; GtkSortType sort_order; LSQArchiveIter **sort_list; guint list_size; - GtkIconTheme *icon_theme; GtkTreeView *treeview; struct { guint _show_full_path :1; @@ -56,12 +57,6 @@ struct _SQArchiveStore guint _sort_folders_first : 1; guint _sort_case_sensitive : 1; } props; - struct { - GList *history; - GList *present; - guint maxhistory; - LSQArchiveIter *trailing; - } navigation; }; typedef struct _SQArchiveStoreClass SQArchiveStoreClass; @@ -79,7 +74,8 @@ enum { }; GType sq_archive_store_get_type(); -GtkTreeModel * sq_archive_store_new(LSQArchive *archive, gboolean show_icons, gboolean show_up_dir, GtkIconTheme *icon_theme); +GtkTreeModel * +sq_archive_store_new (gboolean show_icons, gboolean show_up_dir); 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); diff --git a/src/main_window.c b/src/main_window.c index 25375b9..52ca797 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -1,6 +1,4 @@ /* - * Copyright (c) 2006 Stephan Arts <step...@xfce.org> - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -29,6 +27,8 @@ #include "main_window.h" #include "main_window_ui.h" +#include "archive_store.h" + #ifndef SQUEEZE_APP_TITLE #define SQUEEZE_APP_TITLE _("Archive Manager") #endif @@ -172,6 +172,8 @@ struct _SQMainWindowPriv GtkActionGroup *action_group; GtkUIManager *ui_manager; GtkRecentManager *recent_manager; + + GtkTreeModel *archive_store; }; GType @@ -233,7 +235,11 @@ static void sq_main_window_init(SQMainWindow *window) { GtkAccelGroup *accel_group; - GtkWidget *main_vbox = gtk_vbox_new (FALSE, 0); + GtkWidget *main_vbox; + GtkWidget *scrolled_window; + GtkWidget *tree_view; + + main_vbox = gtk_vbox_new (FALSE, 0); gtk_window_set_title (GTK_WINDOW (window), SQUEEZE_APP_TITLE); @@ -269,6 +275,26 @@ sq_main_window_init(SQMainWindow *window) gtk_container_add (GTK_CONTAINER (window), main_vbox); gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->menubar, FALSE, FALSE, 0); + + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy ( + GTK_SCROLLED_WINDOW (scrolled_window), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type ( + GTK_SCROLLED_WINDOW (scrolled_window), + GTK_SHADOW_IN); + + gtk_box_pack_start(GTK_BOX(main_vbox), scrolled_window, FALSE, FALSE, 0); + tree_view = gtk_tree_view_new (); + + window->priv->archive_store = sq_archive_store_new (TRUE, TRUE); + + gtk_tree_view_set_model ( + GTK_TREE_VIEW (tree_view), + GTK_TREE_MODEL (window->priv->archive_store)); + + gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view); } GtkWidget * @@ -296,6 +322,50 @@ cb_sq_main_window_open_archive ( gpointer user_data ) { + SQMainWindow *window = SQ_MAIN_WINDOW (user_data); + + GtkWidget *dialog, *err_dialog; + GtkFileFilter *filter; + GFile *file; + LSQArchive *archive; + + gint response; + + filter = gtk_file_filter_new(); + + dialog = gtk_file_chooser_dialog_new(_("Open archive"), + GTK_WINDOW(window), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_OK, + NULL); + + gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dialog), FALSE); + + response = gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_hide (dialog); + if(response == GTK_RESPONSE_OK) + { + file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog)); + if ( file != NULL ) + { + archive = lsq_open_archive (file, NULL); + if (archive == NULL) + { + err_dialog = gtk_message_dialog_new(GTK_WINDOW(window), + GTK_DIALOG_MODAL, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + _("Could not open file")); + gtk_dialog_run(GTK_DIALOG(err_dialog)); + gtk_widget_destroy(err_dialog); + return; + } + + /** Set tree-store with archive */ + sq_archive_store_set_archive (window->priv->archive_store, archive); + } + } return; } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits