From e063c0f3c39ed15265f94086dde3ee0c54d0cae2 Mon Sep 17 00:00:00 2001 From: Cristian Henzel Date: Wed, 10 Nov 2010 09:49:29 +0200 Subject: [PATCH] ClipIt-v1.2.0-10112010001 + Added: Option to save URIs (they were actually saved by default before, but now you have the option to disable this behaviour). + Fixed: Copying files and folders now works again. + Fixed: Changed some of the default configuration values. --- ChangeLog | 6 ++++++ TODO | 1 - configure.in | 2 +- src/history.c | 54 +++++++++++++++++++++++++++++------------------ src/history.h | 3 +++ src/main.c | 26 +++++++++++++---------- src/main.h | 1 + src/preferences.c | 7 ++++++ src/preferences.h | 5 +++-- 9 files changed, 69 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 31ab179..c65c92a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +ClipIt-v1.2.0-10112010001 - 10 Nov. 2010 + + Added: Option to save URIs (they were actually saved by default before, but + now you have the option to disable this behaviour). + + Fixed: Copying files and folders now works again. + + Fixed: Changed some of the default configuration values. + ClipIt-v1.1.0-09112010001 - 09 Nov. 2010 + Added: Option to show index numbers in history. + Fixed: Search window now gets properly focused when launched with the hotkey. diff --git a/TODO b/TODO index a15eeeb..be80c4f 100644 --- a/TODO +++ b/TODO @@ -5,7 +5,6 @@ actually use that return value to display an error if there was one. + Redo Preferences dialog. + Clean up the code and indent it properly. -+ Fix conflict with copying of multimedia content. + Add "Edit" and "Remove" buttons to the search window and rename it to "Manage Clipboard". + Move all pop-up and menu functions from main.c to menus.c. diff --git a/configure.in b/configure.in index f661b13..92d51ab 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ # Autoconf/automake. # ------------------------------------------------------------------------------- AC_PREREQ([2.5]) -AC_INIT([clipit], [1.1.0], [oss@web-tm.com]) +AC_INIT([clipit], [1.2.0], [oss@web-tm.com]) AM_INIT_AUTOMAKE([AC_PACKAGE_TARNAME()], [AC_PACKAGE_VERSION()]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/src/history.c b/src/history.c index e902d5e..9491ed3 100644 --- a/src/history.c +++ b/src/history.c @@ -101,33 +101,45 @@ save_history() } } +/* Checks if item should be included in history and calls append */ +void +check_and_append(gchar* item) +{ + if (item) + { + GtkClipboard* clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); + /* Prepend new item */ + /* Check if we have URIs */ + gchar **arr = gtk_clipboard_wait_for_uris(clip); + if(arr != NULL) { + /* We have URIs */ + if(!prefs.save_uris) + return; + } + g_strfreev(arr); + if(!is_excluded(item)) + { + append_item(item); + } + } +} + /* Adds item to the end of history */ void append_item(gchar* item) { - if (item) + history = g_slist_prepend(history, g_strdup(item)); + /* Shorten history if necessary */ + GSList* last_possible_element = g_slist_nth(history, prefs.history_limit - 1); + if (last_possible_element) { - /* Prepend new item */ - if(!is_excluded(item)) - { - history = g_slist_prepend(history, g_strdup(item)); - /* Shorten history if necessary */ - GSList* last_possible_element = g_slist_nth(history, prefs.history_limit - 1); - if (last_possible_element) - { - /* Free last posible element and subsequent elements */ - g_slist_free(last_possible_element->next); - last_possible_element->next = NULL; - } - /* Save changes */ - if (prefs.save_history) - save_history(); - /* This is to fix the wrong behaviour when cuting text instead of copying */ - GSList* element = g_slist_nth(history, 0); - GtkClipboard* clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); - gtk_clipboard_set_text(clip, (gchar*)element->data, -1); - } + /* Free last posible element and subsequent elements */ + g_slist_free(last_possible_element->next); + last_possible_element->next = NULL; } + /* Save changes */ + if (prefs.save_history) + save_history(); } /* Truncates history to history_limit items */ diff --git a/src/history.h b/src/history.h index 64c0b74..01b0fc3 100644 --- a/src/history.h +++ b/src/history.h @@ -34,6 +34,9 @@ read_history(); void save_history(); +void +check_and_append(gchar* item); + void append_item(gchar* item); diff --git a/src/main.c b/src/main.c index 7246614..a12c589 100644 --- a/src/main.c +++ b/src/main.c @@ -77,13 +77,17 @@ item_check(gpointer data) /* Only recover lost contents if there isn't any other type of content in the clipboard */ if (!contents) { - gtk_clipboard_set_text(primary, primary_text, -1); - /* - * in a future version... - * GSList* element = g_slist_nth(history, 0); - * gtk_clipboard_set_text(clipboard, (gchar*)element->data, -1); - * gtk_clipboard_set_text(primary, (gchar*)element->data, -1); - */ + if(prefs.use_primary) + { + /* if use_primary is enabled, we restore from primary */ + gtk_clipboard_set_text(primary, primary_text, -1); + } + else + { + /* else, we restore from history */ + GSList* element = g_slist_nth(history, 0); + gtk_clipboard_set_text(primary, (gchar*)element->data, -1); + } } } else @@ -106,12 +110,12 @@ item_check(gpointer data) if (prefs.hyperlinks_only && is_hyperlink(primary_text)) { delete_duplicate(primary_text); - append_item(primary_text); + check_and_append(primary_text); } else { delete_duplicate(primary_text); - append_item(primary_text); + check_and_append(primary_text); } } } @@ -148,12 +152,12 @@ item_check(gpointer data) if (prefs.hyperlinks_only && is_hyperlink(clipboard_text)) { delete_duplicate(clipboard_text); - append_item(clipboard_text); + check_and_append(clipboard_text); } else { delete_duplicate(clipboard_text); - append_item(clipboard_text); + check_and_append(clipboard_text); } } } diff --git a/src/main.h b/src/main.h index 4413853..9c63584 100644 --- a/src/main.h +++ b/src/main.h @@ -36,6 +36,7 @@ typedef struct gboolean use_primary; /* Use primary */ gboolean synchronize; /* Synchronize copy and primary */ gboolean show_indexes; /* Show index numbers in history menu */ + gboolean save_uris; /* Save URIs in history */ gboolean save_history; /* Save history */ gint history_limit; /* Items in history */ diff --git a/src/preferences.c b/src/preferences.c index f9367d1..b9df3e6 100644 --- a/src/preferences.c +++ b/src/preferences.c @@ -33,6 +33,7 @@ GtkWidget *copy_check, *primary_check, *synchronize_check, *show_indexes_check, + *save_uris_check, *full_hist_check, *history_spin, *history_small, @@ -77,6 +78,7 @@ apply_preferences() prefs.use_primary = gtk_toggle_button_get_active((GtkToggleButton*)primary_check); prefs.synchronize = gtk_toggle_button_get_active((GtkToggleButton*)synchronize_check); prefs.show_indexes = gtk_toggle_button_get_active((GtkToggleButton*)show_indexes_check); + prefs.save_uris = gtk_toggle_button_get_active((GtkToggleButton*)save_uris_check); prefs.save_history = gtk_toggle_button_get_active((GtkToggleButton*)save_check); prefs.history_limit = gtk_spin_button_get_value_as_int((GtkSpinButton*)history_spin); prefs.small_history = gtk_toggle_button_get_active((GtkToggleButton*)small_check); @@ -113,6 +115,7 @@ save_preferences() g_key_file_set_boolean(rc_key, "rc", "use_primary", prefs.use_primary); g_key_file_set_boolean(rc_key, "rc", "synchronize", prefs.synchronize); g_key_file_set_boolean(rc_key, "rc", "show_indexes", prefs.show_indexes); + g_key_file_set_boolean(rc_key, "rc", "save_uris", prefs.save_uris); g_key_file_set_boolean(rc_key, "rc", "save_history", prefs.save_history); g_key_file_set_integer(rc_key, "rc", "history_limit", prefs.history_limit); g_key_file_set_boolean(rc_key, "rc", "small_history", prefs.small_history); @@ -152,6 +155,7 @@ read_preferences() prefs.use_primary = g_key_file_get_boolean(rc_key, "rc", "use_primary", NULL); prefs.synchronize = g_key_file_get_boolean(rc_key, "rc", "synchronize", NULL); prefs.show_indexes = g_key_file_get_boolean(rc_key, "rc", "show_indexes", NULL); + prefs.save_uris = g_key_file_get_boolean(rc_key, "rc", "save_uris", NULL); prefs.save_history = g_key_file_get_boolean(rc_key, "rc", "save_history", NULL); prefs.history_limit = g_key_file_get_integer(rc_key, "rc", "history_limit", NULL); prefs.small_history = g_key_file_get_boolean(rc_key, "rc", "small_history", NULL); @@ -609,6 +613,8 @@ show_preferences(gint tab) gtk_box_pack_start((GtkBox*)vbox, synchronize_check, FALSE, FALSE, 0); show_indexes_check = gtk_check_button_new_with_mnemonic(_("S_how indexes in history menu")); gtk_box_pack_start((GtkBox*)vbox, show_indexes_check, FALSE, FALSE, 0); + save_uris_check = gtk_check_button_new_with_mnemonic(_("S_ave URIs")); + gtk_box_pack_start((GtkBox*)vbox, save_uris_check, FALSE, FALSE, 0); gtk_box_pack_start((GtkBox*)vbox_behavior, frame, FALSE, FALSE, 0); /* Build the history frame */ @@ -917,6 +923,7 @@ show_preferences(gint tab) gtk_toggle_button_set_active((GtkToggleButton*)primary_check, prefs.use_primary); gtk_toggle_button_set_active((GtkToggleButton*)synchronize_check, prefs.synchronize); gtk_toggle_button_set_active((GtkToggleButton*)show_indexes_check, prefs.show_indexes); + gtk_toggle_button_set_active((GtkToggleButton*)save_uris_check, prefs.save_uris); gtk_toggle_button_set_active((GtkToggleButton*)save_check, prefs.save_history); gtk_spin_button_set_value((GtkSpinButton*)history_spin, (gdouble)prefs.history_limit); gtk_toggle_button_set_active((GtkToggleButton*)small_check, prefs.small_history); diff --git a/src/preferences.h b/src/preferences.h index bb423e6..a0573ee 100644 --- a/src/preferences.h +++ b/src/preferences.h @@ -33,10 +33,11 @@ G_BEGIN_DECLS #define DEF_USE_PRIMARY FALSE #define DEF_SYNCHRONIZE FALSE #define DEF_SHOW_INDEXES FALSE +#define DEF_SAVE_URIS TRUE #define DEF_SAVE_HISTORY TRUE -#define DEF_HISTORY_LIMIT 25 +#define DEF_HISTORY_LIMIT 50 #define DEF_SMALL_HISTORY TRUE -#define DEF_HISTORY_SMALL 25 +#define DEF_HISTORY_SMALL 20 #define DEF_HYPERLINKS_ONLY FALSE #define DEF_CONFIRM_CLEAR FALSE #define DEF_FULL_HIST_BUTTON FALSE