/*
- * Geeqie
- * (C) 2006 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
+ * Copyright (C) 2006 John Ellis
+ * Copyright (C) 2008 - 2016 The Geeqie Team
*
* Author: John Ellis
*
- * This software is released under the GNU General Public License (GNU GPL).
- * Please read the included file COPYING for more information.
- * This software comes with no warranty of any kind, use at your own risk!
+ * 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
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-
#include "main.h"
#include "collect.h"
log_printf("collection_info_load_thumb not implemented!\n(because an instant thumb loader not implemented)");
return FALSE;
-#if 0
- if (create_thumbnail(ci->fd->path, &ci->pixmap, &ci->mask) < 0) return FALSE;
-
- if (ci->pixmap) gdk_pixmap_ref(ci->pixmap);
- if (ci->mask) gdk_bitmap_ref(ci->mask);
-
- return TRUE;
-#endif
}
void collection_list_free(GList *list)
if (cia->fd->date > cib->fd->date) return 1;
return 0;
break;
+ case SORT_CTIME:
+ if (cia->fd->cdate < cib->fd->cdate) return -1;
+ if (cia->fd->cdate > cib->fd->cdate) return 1;
+ return 0;
+ break;
case SORT_PATH:
return utf8_compare(cia->fd->path, cib->fd->path, options->file_sort.case_sensitive);
break;
return NULL;
}
-#if 0
-static GList *collection_list_find_link(GList *list, gchar *path)
-{
- GList *work = list;
-
- while (work)
- {
- CollectInfo *ci = work->data;
- if (strcmp(ci->fd->path, path) == 0) return work;
- work = work->next;
- }
-
- return NULL;
-}
-
-static gint collection_list_find_index(GList *list, gchar *path)
-{
- gint c = 0;
- GList *work = list;
-
- while (work)
- {
- CollectInfo *ci = work->data;
- if (strcmp(ci->fd->path, path) == 0) return c;
- work = work->next;
- c++;
- }
-
- return -1;
-}
-#endif
-
GList *collection_list_to_filelist(GList *list)
{
GList *filelist = NULL;
collection_list = g_list_append(collection_list, cd);
-
+
return cd;
}
collection_load_stop(cd);
collection_list_free(cd->list);
-
+
file_data_unregister_notify_func(collection_notify_cb, cd);
collection_list = g_list_remove(collection_list, cd);
if (info_list) *info_list = NULL;
if (strncmp(data, "COLLECTION:", 11) != 0) return NULL;
-
+
ptr = data + 11;
-
+
collection_number = atoi(ptr);
cd = collection_from_number(collection_number);
if (!cd) return NULL;
if (!list && !info_list) return cd;
-
+
while (*ptr != '\0' && *ptr != '\n' ) ptr++;
if (*ptr == '\0') return cd;
ptr++;
{
guint item_number;
CollectInfo *info;
-
+
item_number = (guint) atoi(ptr);
while (*ptr != '\n' && *ptr != '\0') ptr++;
if (*ptr == '\0')
if (list) *list = g_list_append(*list, file_data_ref(info->fd));
if (info_list) *info_list = g_list_append(*info_list, info);
}
-
+
return cd;
}
work = work->next;
if (item_number < 0) continue;
-
+
text = g_strdup_printf("%d\n", item_number);
temp = g_list_prepend(temp, text);
*length += strlen(text);
struct stat st;
gboolean valid;
+ if (!fd) return FALSE;
+
+ g_assert(fd->magick == FD_MAGICK);
+
if (must_exist)
{
valid = (stat_utf8(fd->path, &st) && !S_ISDIR(st.st_mode));
if (!(type & NOTIFY_CHANGE) || !fd->change) return;
DEBUG_1("Notify collection: %s %04x", fd->path, type);
-
+
switch (fd->change->type)
{
case FILEDATA_CHANGE_MOVE:
{
CollectWindow *cw = data;
gboolean stop_signal = FALSE;
- gint edit_val = -1;
GList *list;
if (event->state & GDK_CONTROL_MASK)
switch (event->keyval)
{
case '1':
- edit_val = 0;
- break;
case '2':
- edit_val = 1;
- break;
case '3':
- edit_val = 2;
- break;
case '4':
- edit_val = 3;
- break;
case '5':
- edit_val = 4;
- break;
case '6':
- edit_val = 5;
- break;
case '7':
- edit_val = 6;
- break;
case '8':
- edit_val = 7;
- break;
case '9':
- edit_val = 8;
- break;
case '0':
- edit_val = 9;
break;
case 'A': case 'a':
if (event->state & GDK_SHIFT_MASK)
stop_signal = TRUE;
switch (event->keyval)
{
- case GDK_Return: case GDK_KP_Enter:
+ case GDK_KEY_Return: case GDK_KEY_KP_Enter:
layout_image_set_collection(NULL, cw->cd,
collection_table_get_focus_info(cw->table));
break;
collection_set_sort_method(cw->cd, SORT_PATH);
}
break;
- case GDK_Delete: case GDK_KP_Delete:
+ case 'R': case 'r':
+ if (event->state & GDK_MOD1_MASK)
+ {
+ options->collections.rectangular_selection = !(options->collections.rectangular_selection);
+ }
+ break;
+ case GDK_KEY_Delete: case GDK_KEY_KP_Delete:
list = g_list_copy(cw->table->selection);
if (list)
{
collection_remove_by_info(cw->cd, collection_table_get_focus_info(cw->table));
}
break;
+ case GDK_KEY_F1:
+ help_window_show("GuideReferenceKeyboardShortcuts.html#CollectionsKeyboardShortcuts");
+ break;
default:
stop_signal = FALSE;
break;
static void collection_window_get_geometry(CollectWindow *cw)
{
CollectionData *cd;
+ GdkWindow *window;
if (!cw) return;
cd = cw->cd;
- gdk_window_get_position(cw->window->window, &cd->window_x, &cd->window_y);
- gdk_drawable_get_size(cw->window->window, &cd->window_w, &cd->window_h);
+ window = gtk_widget_get_window(cw->window);
+ gdk_window_get_position(window, &cd->window_x, &cd->window_y);
+ cd->window_w = gdk_window_get_width(window);
+ cd->window_h = gdk_window_get_height(window);
cd->window_read = TRUE;
}
if (!cw) return;
}
-#if 0
-static void collection_window_move(CollectWindow *cw, CollectInfo *ci)
-{
- if (!cw) return;
-}
-#endif
-
static void collection_window_remove(CollectWindow *cw, CollectInfo *ci)
{
if (!cw) return;
if (options->save_window_positions && path && collection_load_only_geometry(cw->cd, path))
{
- /* FIXME: x, y is not implemented */
gtk_window_set_default_size(GTK_WINDOW(cw->window), cw->cd->window_w, cw->cd->window_h);
+ gtk_window_move(GTK_WINDOW(cw->window), cw->cd->window_x, cw->cd->window_y);
}
else
{
extra_label = gtk_progress_bar_new();
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(extra_label), 0.0);
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(extra_label), "");
+ gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(extra_label), TRUE);
+#endif
gtk_box_pack_start(GTK_BOX(cw->status_box), extra_label, TRUE, TRUE, 0);
gtk_widget_show(extra_label);