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

Reply via email to