[Xfce4-commits] r25122 - squeeze/trunk/src
Peter de Ridder
peter at xfce.org
Mon Mar 5 22:55:45 CET 2007
Author: peter
Date: 2007-03-05 21:55:45 +0000 (Mon, 05 Mar 2007)
New Revision: 25122
Modified:
squeeze/trunk/src/archive_store.c
squeeze/trunk/src/archive_store.h
squeeze/trunk/src/notebook.c
squeeze/trunk/src/path_bar.c
Log:
pathbar updated archive sort columns updates
Modified: squeeze/trunk/src/archive_store.c
===================================================================
--- squeeze/trunk/src/archive_store.c 2007-03-05 21:01:11 UTC (rev 25121)
+++ squeeze/trunk/src/archive_store.c 2007-03-05 21:55:45 UTC (rev 25122)
@@ -387,7 +387,7 @@
if(!archive)
return 0;
- return lsq_archive_n_entry_properties(archive) + 1;
+ return lsq_archive_n_entry_properties(archive) + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT;
}
static GType
@@ -402,12 +402,14 @@
if(!archive)
return G_TYPE_INVALID;
- index--;
-
- if(index == -1) /* icon */
- return G_TYPE_STRING;
-
- return lsq_archive_get_entry_property_type(archive, index);
+ switch(index)
+ {
+ case SQ_ARCHIVE_STORE_EXTRA_PROP_PATH:
+ case SQ_ARCHIVE_STORE_EXTRA_PROP_ICON:
+ return G_TYPE_STRING;
+ default:
+ return lsq_archive_get_entry_property_type(archive, index - SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT);
+ }
}
static gboolean
@@ -495,51 +497,62 @@
SQArchiveStore *store = SQ_ARCHIVE_STORE(tree_model);
LSQArchive *archive = store->archive;
- LSQArchiveIter *entry = iter->user_data;
+ LSQArchiveIter *parent, *entry = iter->user_data;
g_return_if_fail(archive);
- column--;
-
if(entry)
{
- if(column == -1)
+ switch(column)
{
- g_value_init(value, G_TYPE_STRING);
+ case SQ_ARCHIVE_STORE_EXTRA_PROP_PATH:
+ g_value_init(value, G_TYPE_STRING);
- if(store->props._show_icons)
- g_value_set_string(value, sq_archive_store_get_icon_name_for_iter(store, entry));
- }
- else
- {
- if(store->props._show_full_path && column == LSQ_ARCHIVE_PROP_FILENAME)
- {
+ parent = lsq_archive_iter_get_parent(entry);
+ g_value_take_string(value, lsq_archive_iter_get_path(parent));
+ lsq_archive_iter_unref(parent);
+ break;
+ case SQ_ARCHIVE_STORE_EXTRA_PROP_ICON:
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))
- g_value_take_string(value, g_convert(g_value_get_string(value), -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL));
+
+ if(store->props._show_icons)
+ g_value_set_string(value, sq_archive_store_get_icon_name_for_iter(store, entry));
+ break;
+ case LSQ_ARCHIVE_PROP_FILENAME + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT:
+ if(store->props._show_full_path)
+ {
+ g_value_init(value, G_TYPE_STRING);
+ g_value_take_string(value, lsq_archive_iter_get_path(entry));
+ if(!g_utf8_validate(g_value_get_string(value), -1, NULL))
+ g_value_take_string(value, g_convert(g_value_get_string(value), -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL));
+ break;
+ }
+ default:
+ column -= SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT;
+ 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))
+ g_value_take_string(value, g_convert(g_value_get_string(value), -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL));
+ break;
}
}
else
{
switch(column)
{
- case -1:
+ case SQ_ARCHIVE_STORE_EXTRA_PROP_ICON:
g_value_init(value, G_TYPE_STRING);
if(store->props._show_icons)
g_value_set_string(value, GTK_STOCK_GO_UP);
- break;
- case LSQ_ARCHIVE_PROP_FILENAME:
+ break;
+ case LSQ_ARCHIVE_PROP_FILENAME + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT:
g_value_init(value, G_TYPE_STRING);
g_value_set_string(value, "..");
- break;
+ break;
default:
- g_value_init(value, lsq_archive_get_entry_property_type(archive, column));
- break;
+ g_value_init(value, lsq_archive_get_entry_property_type(archive, column - SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT));
+ break;
}
}
}
@@ -738,7 +751,7 @@
if(store->sort_column == sort_col_id && store->sort_order == order)
return;
- if(sort_col_id == 0)
+ if(sort_col_id == SQ_ARCHIVE_STORE_EXTRA_PROP_PATH || sort_col_id == SQ_ARCHIVE_STORE_EXTRA_PROP_ICON)
return;
store->sort_column = sort_col_id;
@@ -765,7 +778,7 @@
static gboolean
sq_archive_store_has_default_sort_func(GtkTreeSortable *s)
{
- return SQ_ARCHIVE_STORE(s)->props._sort_folders_first?FALSE:TRUE;
+ return SQ_ARCHIVE_STORE(s)->props._sort_folders_first||!SQ_ARCHIVE_STORE(s)->props._sort_case_sensitive?FALSE:TRUE;
}
static gint
@@ -798,7 +811,7 @@
}
LSQArchive *archive = store->archive;
- column = store->sort_column - 1;
+ column = store->sort_column - SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT;
lsq_archive_iter_get_prop_value(a, column, &prop_a);
lsq_archive_iter_get_prop_value(b, column, &prop_b);
@@ -867,7 +880,7 @@
{
store->sort_list[i] = lsq_archive_iter_nth_child(pentry, i);
}
- if(psize && store->sort_column > 0)
+ if(psize && store->sort_column >= SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT)
{
sq_archive_quicksort(store, 0, psize-1);
sq_archive_insertionsort(store, 0, psize-1);
@@ -964,7 +977,7 @@
tree_model->icon_theme = icon_theme;
if(tree_model->props._sort_folders_first)
- tree_model->sort_column = 1;
+ tree_model->sort_column = SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT + LSQ_ARCHIVE_PROP_FILENAME;
sq_archive_store_set_archive(tree_model, archive);
@@ -1005,6 +1018,7 @@
/* 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);
@@ -1027,6 +1041,7 @@
/* notify the tree view that we have rows */
for(; i < new_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);
@@ -1048,6 +1063,7 @@
while(i > new_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);
@@ -1176,6 +1192,7 @@
while(i)
{
--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);
@@ -1234,6 +1251,7 @@
{
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);
@@ -1373,14 +1391,15 @@
if(store->props._sort_case_sensitive != sort)
{
store->props._sort_case_sensitive = sort;
- if(store->sort_column <= 0)
- store->sort_column = 1;
+ if(!sort && store->sort_column < SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT)
+ store->sort_column = SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT + LSQ_ARCHIVE_PROP_FILENAME;
if(store->archive)
{
sq_archive_store_sort(store);
sq_archive_store_refresh(store);
}
+ g_object_notify(G_OBJECT(store), "sort-case-sensitive");
}
}
@@ -1392,14 +1411,15 @@
if(store->props._sort_folders_first != sort)
{
store->props._sort_folders_first = sort;
- if(store->sort_column <= 0)
- store->sort_column = 1;
+ if(sort && store->sort_column < SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT)
+ store->sort_column = SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT + LSQ_ARCHIVE_PROP_FILENAME;
if(store->archive)
{
sq_archive_store_sort(store);
sq_archive_store_refresh(store);
}
+ g_object_notify(G_OBJECT(store), "sort-folders-first");
}
}
Modified: squeeze/trunk/src/archive_store.h
===================================================================
--- squeeze/trunk/src/archive_store.h 2007-03-05 21:01:11 UTC (rev 25121)
+++ squeeze/trunk/src/archive_store.h 2007-03-05 21:55:45 UTC (rev 25122)
@@ -72,6 +72,12 @@
GObjectClass parent_class;
};
+/* archive iter extra props columns */
+enum {
+ SQ_ARCHIVE_STORE_EXTRA_PROP_PATH = 0,
+ SQ_ARCHIVE_STORE_EXTRA_PROP_ICON,
+ SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT
+};
GType sq_archive_store_get_type();
GtkTreeModel * sq_archive_store_new(LSQArchive *archive, gboolean show_icons, gboolean show_up_dir, GtkIconTheme *icon_theme);
Modified: squeeze/trunk/src/notebook.c
===================================================================
--- squeeze/trunk/src/notebook.c 2007-03-05 21:01:11 UTC (rev 25121)
+++ squeeze/trunk/src/notebook.c 2007-03-05 21:55:45 UTC (rev 25122)
@@ -636,15 +636,15 @@
renderer = gtk_cell_renderer_pixbuf_new();
g_object_set(G_OBJECT(renderer), "stock-size", GTK_ICON_SIZE_SMALL_TOOLBAR, NULL);
gtk_tree_view_column_pack_start(column, renderer, FALSE);
- gtk_tree_view_column_set_attributes(column, renderer, "icon-name", 0, NULL);
+ gtk_tree_view_column_set_attributes(column, renderer, "icon-name", SQ_ARCHIVE_STORE_EXTRA_PROP_ICON, NULL);
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
- gtk_tree_view_column_set_attributes(column, renderer, "text", LSQ_ARCHIVE_PROP_FILENAME + 1, NULL);
+ gtk_tree_view_column_set_attributes(column, renderer, "text", LSQ_ARCHIVE_PROP_FILENAME + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT, NULL);
gtk_tree_view_column_set_resizable(column, TRUE);
gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_column_set_sort_column_id(column, LSQ_ARCHIVE_PROP_FILENAME + 1);
+ gtk_tree_view_column_set_sort_column_id(column, LSQ_ARCHIVE_PROP_FILENAME + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT);
gtk_tree_view_column_set_title(column, lsq_archive_get_entry_property_name(archive, LSQ_ARCHIVE_PROP_FILENAME));
gtk_tree_view_append_column(treeview, column);
@@ -657,15 +657,15 @@
case(G_TYPE_STRING):
case(G_TYPE_UINT64):
renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(lsq_archive_get_entry_property_name(archive, x), renderer, "text", x+1, NULL);
+ column = gtk_tree_view_column_new_with_attributes(lsq_archive_get_entry_property_name(archive, x), renderer, "text", x+SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT, NULL);
break;
}
gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_sort_column_id(column, x+1);
+ gtk_tree_view_column_set_sort_column_id(column, x+SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT);
gtk_tree_view_append_column(treeview, column);
}
}
- gtk_tree_view_set_search_column(treeview, 1);
+ gtk_tree_view_set_search_column(treeview, LSQ_ARCHIVE_PROP_FILENAME + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT);
}
void
Modified: squeeze/trunk/src/path_bar.c
===================================================================
--- squeeze/trunk/src/path_bar.c 2007-03-05 21:01:11 UTC (rev 25121)
+++ squeeze/trunk/src/path_bar.c 2007-03-05 21:55:45 UTC (rev 25122)
@@ -524,7 +524,7 @@
{
SQPathBar *path_bar = SQ_PATH_BAR(bar);
GSList *buttons = path_bar->path_button->next;
- LSQArchiveIter *iter, *parent;
+ LSQArchiveIter *iter;
GtkRadioButton *button;
SQ_PATH_BAR(bar)->updating = TRUE;
@@ -534,6 +534,7 @@
while(buttons)
{
gtk_container_remove(GTK_CONTAINER(path_bar), GTK_WIDGET(buttons->data));
+ lsq_archive_iter_unref(g_object_get_data(G_OBJECT(buttons->data), SQ_PATH_BAR_PATH_BUTTON_ITER));
gtk_widget_unref(GTK_WIDGET(buttons->data));
buttons = buttons->next;
}
@@ -541,6 +542,7 @@
path_bar->path_button->next = NULL;
gtk_widget_set_sensitive(GTK_WIDGET(path_bar->home_button), (store&&store->archive));
+ lsq_archive_iter_unref(g_object_get_data(G_OBJECT(path_bar->home_button), SQ_PATH_BAR_PATH_BUTTON_ITER));
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);
@@ -563,13 +565,10 @@
gtk_container_add(GTK_CONTAINER(path_bar), GTK_WIDGET(button));
gtk_widget_show(GTK_WIDGET(button));
- parent = lsq_archive_iter_get_parent(iter);
- lsq_archive_iter_unref(iter);
- iter = parent;
+ iter = lsq_archive_iter_get_parent(iter);
}
g_object_set_data(G_OBJECT(path_bar->home_button), SQ_PATH_BAR_PATH_BUTTON_ITER, iter);
- lsq_archive_iter_unref(iter);
}
}
@@ -581,15 +580,17 @@
{
SQPathBar *path_bar = SQ_PATH_BAR(bar);
LSQArchiveIter *iter = sq_archive_store_get_trailing(store);
- LSQArchiveIter *parent;
GSList *buttons = path_bar->path_button->next;
GtkRadioButton *button;
path_bar->updating = TRUE;
+ /* TODO: check if the trailings match, save making new buttons */
+
while(buttons)
{
gtk_container_remove(GTK_CONTAINER(path_bar), GTK_WIDGET(buttons->data));
+ lsq_archive_iter_unref(g_object_get_data(G_OBJECT(buttons->data), SQ_PATH_BAR_PATH_BUTTON_ITER));
gtk_widget_unref(GTK_WIDGET(buttons->data));
buttons = buttons->next;
}
@@ -597,6 +598,7 @@
path_bar->path_button->next = NULL;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(path_bar->home_button), TRUE);
+ lsq_archive_iter_unref(g_object_get_data(G_OBJECT(path_bar->home_button), SQ_PATH_BAR_PATH_BUTTON_ITER));
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);
@@ -620,13 +622,10 @@
gtk_container_add(GTK_CONTAINER(path_bar), GTK_WIDGET(button));
gtk_widget_show(GTK_WIDGET(button));
- parent = lsq_archive_iter_get_parent(iter);
- lsq_archive_iter_unref(iter);
- iter = parent;
+ iter = lsq_archive_iter_get_parent(iter);
}
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);
More information about the Xfce4-commits
mailing list