Revision: 1312
http://geeqie.svn.sourceforge.net/geeqie/?rev=1312&view=rev
Author: nadvornik
Date: 2008-12-23 19:13:48 +0000 (Tue, 23 Dec 2008)
Log Message:
-----------
write changes immediately, the necessary buffering is done on lower
level in metadata.c
Modified Paths:
--------------
trunk/src/bar_info.c
Modified: trunk/src/bar_info.c
===================================================================
--- trunk/src/bar_info.c 2008-12-22 23:25:15 UTC (rev 1311)
+++ trunk/src/bar_info.c 2008-12-23 19:13:48 UTC (rev 1312)
@@ -24,9 +24,6 @@
#include "ui_utildlg.h"
#include "utilops.h"
-#define BAR_KEYWORD_AUTOSAVE_TIME 10000
-
-
static const gchar *keyword_favorite_defaults[] = {
N_("Favorite"),
N_("Todo"),
@@ -40,6 +37,7 @@
static void bar_info_keyword_update_all(void);
+static void bar_info_changed(GtkTextBuffer *buffer, gpointer data);
/*
*-------------------------------------------------------------------
@@ -377,7 +375,9 @@
GtkWidget *comment_view;
+#if 0
GtkWidget *button_save;
+#endif
GtkWidget *button_set_keywords_add;
GtkWidget *button_set_keywords_replace;
GtkWidget *button_set_comment_add;
@@ -385,9 +385,6 @@
FileData *fd;
- gint changed;
- gint save_timeout_id;
-
GList *(*list_func)(gpointer);
gpointer list_data;
};
@@ -410,35 +407,8 @@
string_list_free(list);
g_free(comment);
-
- bd->changed = FALSE;
- gtk_widget_set_sensitive(bd->button_save, FALSE);
}
-static gint bar_info_autosave(gpointer data)
-{
- BarInfoData *bd = data;
-
- bar_info_write(bd);
-
- bd->save_timeout_id = -1;
-
- return FALSE;
-}
-
-static void bar_info_save_update(BarInfoData *bd, gint enable)
-{
- if (bd->save_timeout_id != -1)
- {
- g_source_remove(bd->save_timeout_id);
- bd->save_timeout_id = -1;
- }
- if (enable)
- {
- bd->save_timeout_id = g_timeout_add(BAR_KEYWORD_AUTOSAVE_TIME,
bar_info_autosave, bd);
- }
-}
-
static void bar_keyword_list_sync(BarInfoData *bd, GList *keywords)
{
GList *list;
@@ -501,7 +471,12 @@
{
GList *keywords = NULL;
gchar *comment = NULL;
+ GtkTextBuffer *keyword_buffer =
gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->keyword_view));
+ GtkTextBuffer *comment_buffer =
gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->comment_view));
+ g_signal_handlers_block_by_func(keyword_buffer, bar_info_changed, bd);
+ g_signal_handlers_block_by_func(comment_buffer, bar_info_changed, bd);
+
if (bd->label_file_name)
{
gtk_label_set_text(GTK_LABEL(bd->label_file_name), (bd->fd) ?
bd->fd->name : "");
@@ -514,7 +489,7 @@
if (metadata_read(bd->fd, &keywords, &comment))
{
keyword_list_push(bd->keyword_view, keywords);
-
gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->comment_view)),
+ gtk_text_buffer_set_text(comment_buffer,
(comment) ? comment : "", -1);
bar_keyword_list_sync(bd, keywords);
@@ -524,15 +499,14 @@
}
else
{
-
gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->keyword_view)),
"", -1);
-
gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->comment_view)),
"", -1);
+ gtk_text_buffer_set_text(keyword_buffer, "", -1);
+ gtk_text_buffer_set_text(comment_buffer, "", -1);
bar_keyword_list_sync(bd, NULL);
}
- bar_info_save_update(bd, FALSE);
- bd->changed = FALSE;
- gtk_widget_set_sensitive(bd->button_save, FALSE);
+ g_signal_handlers_unblock_by_func(keyword_buffer, bar_info_changed, bd);
+ g_signal_handlers_unblock_by_func(comment_buffer, bar_info_changed, bd);
gtk_widget_set_sensitive(bd->group_box, (bd->fd != NULL));
}
@@ -544,8 +518,6 @@
bd = g_object_get_data(G_OBJECT(bar), "bar_info_data");
if (!bd) return;
- if (bd->changed) bar_info_write(bd);
-
file_data_unref(bd->fd);
bd->fd = file_data_ref(fd);
@@ -644,14 +616,6 @@
g_free(key);
}
-static void bar_info_save(GtkWidget *button, gpointer data)
-{
- BarInfoData *bd = data;
-
- bar_info_save_update(bd, FALSE);
- bar_info_write(bd);
-}
-
static void bar_info_set_selection(BarInfoData *bd, gboolean set_keywords,
gboolean set_comment, gboolean append)
{
GList *keywords = NULL;
@@ -720,10 +684,7 @@
{
BarInfoData *bd = data;
- bd->changed = TRUE;
- gtk_widget_set_sensitive(bd->button_save, TRUE);
-
- bar_info_save_update(bd, TRUE);
+ bar_info_write(bd);
}
void bar_info_close(GtkWidget *bar)
@@ -740,9 +701,6 @@
{
BarInfoData *bd = data;
- if (bd->changed) bar_info_write(bd);
- bar_info_save_update(bd, FALSE);
-
bar_list = g_list_remove(bar_list, bd);
file_data_unref(bd->fd);
@@ -925,13 +883,13 @@
_("Add comment to selected files, replacing existing
one"),
G_CALLBACK(bar_info_set_comment_replace), bd);
+#if 0
pref_toolbar_spacer(tbar);
bd->button_save = pref_toolbar_button(tbar, GTK_STOCK_SAVE, NULL, FALSE,
_("Save comment now"),
G_CALLBACK(bar_info_save), bd);
+#endif
- bd->save_timeout_id = -1;
-
bd->fd = file_data_ref(fd);
bar_info_update(bd);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn