From afaf42ee70bb886b6ec21d3f9ecc1452cd7fdfda Mon Sep 17 00:00:00 2001 From: Brent Hull Date: Thu, 3 Jan 2013 14:18:46 -0500 Subject: Port mate-search-tool to gsettings (based on GNOME patch, but restoring caja date-format preference) --- gsearchtool/Makefile.am | 42 +- gsearchtool/gsearchtool-callbacks.c | 55 ++- gsearchtool/gsearchtool-callbacks.h | 5 +- gsearchtool/gsearchtool-support.c | 480 ++++++--------------- gsearchtool/gsearchtool-support.h | 36 +- gsearchtool/gsearchtool.c | 218 ++++++---- gsearchtool/gsearchtool.h | 27 +- gsearchtool/help/C/mate-search-tool.xml | 18 +- gsearchtool/libmateui-deprecated/Makefile.am | 25 +- .../libmateui-deprecated/gsearchtool-entry.c | 143 +++--- gsearchtool/mate-search-tool.convert | 27 ++ gsearchtool/org.mate.search-tool.gschema.xml.in | 117 +++++ 12 files changed, 590 insertions(+), 603 deletions(-) create mode 100644 gsearchtool/mate-search-tool.convert create mode 100644 gsearchtool/org.mate.search-tool.gschema.xml.in (limited to 'gsearchtool') diff --git a/gsearchtool/Makefile.am b/gsearchtool/Makefile.am index 77c66581..4431cb02 100644 --- a/gsearchtool/Makefile.am +++ b/gsearchtool/Makefile.am @@ -3,8 +3,6 @@ Utilitiesdir = $(datadir)/applications SUBDIRS = data help libmateui-deprecated INCLUDES = \ - $(MATE_UTILS_CFLAGS) \ - $(GIO_UNIX_CFLAGS) \ -I$(srcdir)/libmateui-deprecated \ -I$(top_srcdir)/libeggsmclient \ -DG_DISABLE_DEPRECATED \ @@ -18,10 +16,16 @@ libeggsmclient_LIB = $(top_builddir)/libeggsmclient/libeggsmclient.la bin_PROGRAMS = mate-search-tool -schemadir = $(MATECONF_SCHEMA_FILE_DIR) -schema_in_file = mate-search-tool.schemas.in -schema_DATA = $(schema_in_file:.schemas.in=.schemas) -@INTLTOOL_SCHEMAS_RULE@ +gsettingsschema_in_files = org.mate.search-tool.gschema.xml.in +gsettings_SCHEMAS = $(gsettingsschema_in_files:.xml.in=.xml) +.PRECIOUS: $(gsettings_SCHEMAS) + +@INTLTOOL_XML_NOMERGE_RULE@ + +@GSETTINGS_RULES@ + +convertdir = $(datadir)/MateConf/gsettings +convert_DATA = mate-search-tool.convert mate_search_tool_SOURCES = \ gsearchtool-support.c \ @@ -31,9 +35,17 @@ mate_search_tool_SOURCES = \ gsearchtool.c \ gsearchtool.h +mate_search_tool_CFLAGS = \ + $(GLIB_CFLAGS) \ + $(GIO_CFLAGS) \ + $(GIO_UNIX_CFLAGS) \ + $(GTK_CFLAGS) + mate_search_tool_LDADD = \ - $(MATE_UTILS_LIBS) \ - $(GIO_UNIX_LIBS) \ + $(GLIB_LIBS) \ + $(GIO_LIBS) \ + $(GIO_UNIX_LIBS) \ + $(GTK_LIBS) \ $(libmateui_deprecated_LIB) \ $(libeggsmclient_LIB) @@ -46,21 +58,13 @@ Utilities_DATA = $(Utilities_in_files:.desktop.in=.desktop) EXTRA_DIST = \ $(Utilities_in_files) \ $(Utilities_DATA) \ - $(schema_in_file) \ + $(gsettingsschema_in_files) \ $(man_MANS) -if MATECONF_SCHEMAS_INSTALL -install-data-local: - if test -z "$(DESTDIR)" ; then \ - MATECONF_CONFIG_SOURCE=$(MATECONF_SCHEMA_CONFIG_SOURCE) $(MATECONFTOOL) --makefile-install-rule $(top_builddir)/gsearchtool/$(schema_DATA) ; \ - fi -else -install-data-local: -endif - CLEANFILES = \ mate-search-tool.desktop \ - $(schema_DATA) + $(convert_DATA) \ + $(gsettings_SCHEMAS) disthook: cd $(distdir) ; rm -f $(CLEANFILES) diff --git a/gsearchtool/gsearchtool-callbacks.c b/gsearchtool/gsearchtool-callbacks.c index 7dc270a7..cbaea560 100644 --- a/gsearchtool/gsearchtool-callbacks.c +++ b/gsearchtool/gsearchtool-callbacks.c @@ -58,12 +58,15 @@ store_window_state_and_geometry (GSearchWindow *gsearch) gsearch->window_width = MAX (gsearch->window_width, MINIMUM_WINDOW_WIDTH); gsearch->window_height = MAX (gsearch->window_height, MINIMUM_WINDOW_HEIGHT); - gsearchtool_mateconf_set_int ("/apps/mate-search-tool/default_window_width", - gsearch->window_width); - gsearchtool_mateconf_set_int ("/apps/mate-search-tool/default_window_height", - gsearch->window_height); - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/default_window_maximized", - gsearch->is_window_maximized); + g_settings_set_int (gsearch->mate_search_tool_settings, + "default-window-width", + gsearch->window_width); + g_settings_set_int (gsearch->mate_search_tool_settings, + "default-window-height", + gsearch->window_height); + g_settings_set_boolean (gsearch->mate_search_tool_settings, + "default-window-maximized", + gsearch->is_window_maximized); } static void @@ -270,13 +273,13 @@ remove_constraint_cb (GtkWidget * widget, &gsearch->window_geometry, GDK_HINT_MIN_SIZE); - gtk_container_remove (GTK_CONTAINER (gsearch->available_options_vbox), widget->parent); + gtk_container_remove (GTK_CONTAINER (gsearch->available_options_vbox), gtk_widget_get_parent (widget)); gsearch->available_options_selected_list = g_list_remove (gsearch->available_options_selected_list, constraint); set_constraint_selected_state (gsearch, constraint->constraint_id, FALSE); - set_constraint_mateconf_boolean (constraint->constraint_id, FALSE); + set_constraint_gsettings_boolean (constraint->constraint_id, FALSE); g_slice_free (GSearchConstraint, constraint); g_list_free (list); } @@ -326,7 +329,7 @@ look_in_folder_changed_cb (GtkWidget * widget, value = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (gsearch->look_in_folder_button)); if (value != NULL) { - gsearchtool_mateconf_set_string ("/apps/mate-search-tool/look_in_folder", value); + g_settings_set_string (gsearch->mate_search_tool_settings, "look-in-folder", value); } g_free (value); } @@ -493,7 +496,7 @@ open_file_cb (GtkMenuItem * action, if (!no_files_found) { GAppInfo * app = NULL; - if (GTK_IS_OBJECT (action)) { + if (GTK_IS_MENU_ITEM (action)) { app = g_object_get_data (G_OBJECT (action), "app"); } @@ -1073,6 +1076,7 @@ build_popup_menu_for_file (GSearchWindow * gsearch, /* Popup menu item: Open with (default) */ str = g_strdup_printf (_("_Open with %s"), g_app_info_get_name (list->data)); new1 = gtk_image_menu_item_new_with_mnemonic (str); + g_free (str); gtk_widget_show (new1); g_object_set_data_full (G_OBJECT (new1), "app", (GAppInfo *)list->data, @@ -1112,6 +1116,7 @@ build_popup_menu_for_file (GSearchWindow * gsearch, } new1 = gtk_image_menu_item_new_with_mnemonic (str); + g_free (str); gtk_widget_show (new1); g_object_set_data_full (G_OBJECT (new1), "app", (GAppInfo *)list->data, @@ -1579,7 +1584,7 @@ drag_file_cb (GtkWidget * widget, uri_list = g_strconcat (uri_list, "\n", tmp_uri, NULL); } gtk_selection_data_set (selection_data, - selection_data->target, + gtk_selection_data_get_target (selection_data), 8, (guchar *) uri_list, strlen (uri_list)); @@ -1889,40 +1894,48 @@ disable_quick_search_cb (GtkWidget * dialog, gint response, gpointer data) { + GSearchWindow * gsearch = data; + gtk_widget_destroy (GTK_WIDGET (dialog)); if (response == GTK_RESPONSE_OK) { - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/disable_quick_search", TRUE); + g_settings_set_boolean (gsearch->mate_search_tool_settings, "disable-quick-search", TRUE); } } void -single_click_to_activate_key_changed_cb (MateConfClient * client, - guint cnxn_id, - MateConfEntry * entry, +single_click_to_activate_key_changed_cb (GSettings * settings, + gchar * key, gpointer user_data) { GSearchWindow * gsearch = user_data; - MateConfValue * value; - - value = mateconf_entry_get_value (entry); + gchar * value; - g_return_if_fail (value->type == MATECONF_VALUE_STRING); + value = g_settings_get_string (settings, key); gsearch->is_search_results_single_click_to_activate = - (strncmp (mateconf_value_get_string (value), "single", 6) == 0) ? TRUE : FALSE; + (strncmp (value, "single", 6) == 0) ? TRUE : FALSE; + + g_free (value); } void columns_changed_cb (GtkTreeView * treeview, gpointer user_data) { + GVariantBuilder array_builder; + GSearchWindow * gsearch = user_data; GSList * order; + GSList * iter; order = gsearchtool_get_columns_order (treeview); + g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("ai")); + for (iter = order; iter; iter = iter->next) + g_variant_builder_add (&array_builder, "i", GPOINTER_TO_INT (iter->data)); + if (g_slist_length (order) == NUM_VISIBLE_COLUMNS) { - gsearchtool_mateconf_set_list ("/apps/mate-search-tool/columns_order", order, MATECONF_VALUE_INT); + g_settings_set_value (gsearch->mate_search_tool_settings, "columns-order", g_variant_new ("ai", &array_builder)); } g_slist_free (order); } diff --git a/gsearchtool/gsearchtool-callbacks.h b/gsearchtool/gsearchtool-callbacks.h index 42b9abb3..b3adfcb3 100644 --- a/gsearchtool/gsearchtool-callbacks.h +++ b/gsearchtool/gsearchtool-callbacks.h @@ -162,9 +162,8 @@ disable_quick_search_cb (GtkWidget * dialog, gint response, gpointer data); void -single_click_to_activate_key_changed_cb (MateConfClient * client, - guint cnxn_id, - MateConfEntry * entry, +single_click_to_activate_key_changed_cb (GSettings * settings, + gchar * key, gpointer user_data); void columns_changed_cb (GtkTreeView * treeview, diff --git a/gsearchtool/gsearchtool-support.c b/gsearchtool/gsearchtool-support.c index 95a8599f..6d368a2d 100644 --- a/gsearchtool/gsearchtool-support.c +++ b/gsearchtool/gsearchtool-support.c @@ -46,259 +46,11 @@ #define C_STANDARD_NUMERIC_STRFTIME_CHARACTERS "dHIjmMSUwWyY" #define SUS_EXTENDED_STRFTIME_MODIFIERS "EO" #define BINARY_EXEC_MIME_TYPE "application/x-executable" -#define GSEARCH_DATE_FORMAT_LOCALE "locale" -#define GSEARCH_DATE_FORMAT_ISO "iso" GtkTreeViewColumn * gsearchtool_gtk_tree_view_get_column_with_sort_column_id (GtkTreeView * treeview, gint id); -/* START OF THE MATECONF FUNCTIONS */ - -static gboolean -gsearchtool_mateconf_handle_error (GError ** error) -{ - if (error != NULL) { - if (*error != NULL) { - g_warning (_("MateConf error:\n %s"), (*error)->message); - g_error_free (*error); - *error = NULL; - return TRUE; - } - } - return FALSE; -} - -static MateConfClient * -gsearchtool_mateconf_client_get_global (void) -{ - static MateConfClient * global_mateconf_client = NULL; - - /* Initialize mateconf if needed */ - if (!mateconf_is_initialized ()) { - char *argv[] = { "gsearchtool-preferences", NULL }; - GError *error = NULL; - - if (!mateconf_init (1, argv, &error)) { - if (gsearchtool_mateconf_handle_error (&error)) { - return NULL; - } - } - } - - if (global_mateconf_client == NULL) { - global_mateconf_client = mateconf_client_get_default (); - } - - return global_mateconf_client; -} - -char * -gsearchtool_mateconf_get_string (const gchar * key) -{ - MateConfClient * client; - GError * error = NULL; - gchar * result; - - g_return_val_if_fail (key != NULL, NULL); - - client = gsearchtool_mateconf_client_get_global (); - g_return_val_if_fail (client != NULL, NULL); - - result = mateconf_client_get_string (client, key, &error); - - if (gsearchtool_mateconf_handle_error (&error)) { - result = g_strdup (""); - } - - return result; -} - -void -gsearchtool_mateconf_set_string (const gchar * key, - const gchar * value) -{ - MateConfClient * client; - GError * error = NULL; - - g_return_if_fail (key != NULL); - - client = gsearchtool_mateconf_client_get_global (); - g_return_if_fail (client != NULL); - - mateconf_client_set_string (client, key, value, &error); - - gsearchtool_mateconf_handle_error (&error); - -} - -GSList * -gsearchtool_mateconf_get_list (const gchar * key, - MateConfValueType list_type) -{ - MateConfClient * client; - GError * error = NULL; - GSList * result; - - g_return_val_if_fail (key != NULL, FALSE); - - client = gsearchtool_mateconf_client_get_global (); - g_return_val_if_fail (client != NULL, NULL); - - result = mateconf_client_get_list (client, key, list_type, &error); - - if (gsearchtool_mateconf_handle_error (&error)) { - result = NULL; - } - - return result; -} - -void -gsearchtool_mateconf_set_list (const gchar * key, - GSList * list, - MateConfValueType list_type) -{ - MateConfClient * client; - GError * error = NULL; - - g_return_if_fail (key != NULL); - - client = gsearchtool_mateconf_client_get_global (); - g_return_if_fail (client != NULL); - - mateconf_client_set_list (client, key, list_type, list, &error); - - gsearchtool_mateconf_handle_error (&error); -} - -gint -gsearchtool_mateconf_get_int (const gchar * key) -{ - MateConfClient * client; - GError * error = NULL; - gint result; - - g_return_val_if_fail (key != NULL, FALSE); - - client = gsearchtool_mateconf_client_get_global (); - g_return_val_if_fail (client != NULL, FALSE); - - result = mateconf_client_get_int (client, key, &error); - - if (gsearchtool_mateconf_handle_error (&error)) { - result = 0; - } - - return result; -} - -void -gsearchtool_mateconf_set_int (const gchar * key, - const gint value) -{ - MateConfClient * client; - GError * error = NULL; - - g_return_if_fail (key != NULL); - - client = gsearchtool_mateconf_client_get_global (); - g_return_if_fail (client != NULL); - - mateconf_client_set_int (client, key, value, &error); - - gsearchtool_mateconf_handle_error (&error); -} - -gboolean -gsearchtool_mateconf_get_boolean (const gchar * key) -{ - MateConfClient * client; - GError * error = NULL; - gboolean result; - - g_return_val_if_fail (key != NULL, FALSE); - - client = gsearchtool_mateconf_client_get_global (); - g_return_val_if_fail (client != NULL, FALSE); - - result = mateconf_client_get_bool (client, key, &error); - - if (gsearchtool_mateconf_handle_error (&error)) { - result = FALSE; - } - - return result; -} - -void -gsearchtool_mateconf_set_boolean (const gchar * key, - const gboolean flag) -{ - MateConfClient * client; - GError * error = NULL; - - g_return_if_fail (key != NULL); - - client = gsearchtool_mateconf_client_get_global (); - g_return_if_fail (client != NULL); - - mateconf_client_set_bool (client, key, flag, &error); - - gsearchtool_mateconf_handle_error (&error); -} - -void -gsearchtool_mateconf_add_dir (const gchar * dir) -{ - MateConfClient * client; - GError * error = NULL; - - g_return_if_fail (dir != NULL); - - client = gsearchtool_mateconf_client_get_global (); - g_return_if_fail (client != NULL); - - mateconf_client_add_dir (client, - dir, - MATECONF_CLIENT_PRELOAD_RECURSIVE, - &error); - - gsearchtool_mateconf_handle_error (&error); -} - -void -gsearchtool_mateconf_watch_key (const gchar * dir, - const gchar * key, - MateConfClientNotifyFunc callback, - gpointer user_data) -{ - MateConfClient * client; - GError * error = NULL; - - g_return_if_fail (key != NULL); - g_return_if_fail (dir != NULL); - - client = gsearchtool_mateconf_client_get_global (); - g_return_if_fail (client != NULL); - - mateconf_client_add_dir (client, - dir, - MATECONF_CLIENT_PRELOAD_NONE, - &error); - - gsearchtool_mateconf_handle_error (&error); - - mateconf_client_notify_add (client, - key, - callback, - user_data, - NULL, - &error); - - gsearchtool_mateconf_handle_error (&error); -} - /* START OF GENERIC MATE-SEARCH-TOOL FUNCTIONS */ gboolean @@ -334,10 +86,13 @@ is_path_hidden (const gchar * path) gboolean is_quick_search_excluded_path (const gchar * path) { - GSList * exclude_path_list; - GSList * tmp_list; + GSettings * settings; + gchar ** exclude_path_list; gchar * dir; gboolean results = FALSE; + gint i; + + settings = g_settings_new ("org.mate.search-tool"); dir = g_strdup (path); @@ -355,65 +110,66 @@ is_quick_search_excluded_path (const gchar * path) g_free (dir); /* Check path against the Quick-Search-Excluded-Paths list. */ - exclude_path_list = gsearchtool_mateconf_get_list ("/apps/mate-search-tool/quick_search_excluded_paths", - MATECONF_VALUE_STRING); + exclude_path_list = g_settings_get_strv (settings, "quick-search-excluded-paths"); - for (tmp_list = exclude_path_list; tmp_list; tmp_list = tmp_list->next) { + if (exclude_path_list) { + for (i = 0; exclude_path_list[i]; i++) { - /* Skip empty or null values. */ - if ((tmp_list->data == NULL) || (strlen (tmp_list->data) == 0)) { - continue; - } + /* Skip empty or null values. */ + if (strlen (exclude_path_list[i]) == 0) { + continue; + } - dir = g_strdup (tmp_list->data); + dir = g_strdup (exclude_path_list[i]); - /* Wild-card comparisons. */ - if (g_strstr_len (dir, strlen (dir), "*") != NULL) { + /* Wild-card comparisons. */ + if (g_strstr_len (dir, strlen (dir), "*") != NULL) { - if (g_pattern_match_simple (dir, path) == TRUE) { + if (g_pattern_match_simple (dir, path) == TRUE) { - results = TRUE; - g_free (dir); - break; + results = TRUE; + g_free (dir); + break; + } } - } - /* Non-wild-card comparisons. */ - else { - /* Add a trailing G_DIR_SEPARATOR. */ - if (g_str_has_suffix (dir, G_DIR_SEPARATOR_S) == FALSE) { + /* Non-wild-card comparisons. */ + else { + /* Add a trailing G_DIR_SEPARATOR. */ + if (g_str_has_suffix (dir, G_DIR_SEPARATOR_S) == FALSE) { - gchar *tmp; + gchar *tmp; - tmp = dir; - dir = g_strconcat (dir, G_DIR_SEPARATOR_S, NULL); - g_free (tmp); - } + tmp = dir; + dir = g_strconcat (dir, G_DIR_SEPARATOR_S, NULL); + g_free (tmp); + } - if (strcmp (path, dir) == 0) { + if (strcmp (path, dir) == 0) { - results = TRUE; - g_free (dir); - break; + results = TRUE; + g_free (dir); + break; + } } + g_free (dir); } - g_free (dir); + g_strfreev (exclude_path_list); } - for (tmp_list = exclude_path_list; tmp_list; tmp_list = tmp_list->next) { - g_free (tmp_list->data); - } - g_slist_free (exclude_path_list); - + g_object_unref (settings); return results; } gboolean is_second_scan_excluded_path (const gchar * path) { - GSList * exclude_path_list; - GSList * tmp_list; + GSettings * settings; + gchar ** exclude_path_list; gchar * dir; gboolean results = FALSE; + gint i; + + settings = g_settings_new ("org.mate.search-tool"); dir = g_strdup (path); @@ -431,55 +187,53 @@ is_second_scan_excluded_path (const gchar * path) g_free (dir); /* Check path against the Quick-Search-Excluded-Paths list. */ - exclude_path_list = gsearchtool_mateconf_get_list ("/apps/mate-search-tool/quick_search_second_scan_excluded_paths", - MATECONF_VALUE_STRING); + exclude_path_list = g_settings_get_strv (settings, "quick-search-second-scan-excluded-paths"); - for (tmp_list = exclude_path_list; tmp_list; tmp_list = tmp_list->next) { + if (exclude_path_list) { + for (i = 0; exclude_path_list[i]; i++) { - /* Skip empty or null values. */ - if ((tmp_list->data == NULL) || (strlen (tmp_list->data) == 0)) { - continue; - } + /* Skip empty or null values. */ + if (strlen (exclude_path_list[i]) == 0) { + continue; + } - dir = g_strdup (tmp_list->data); + dir = g_strdup (exclude_path_list[i]); - /* Wild-card comparisons. */ - if (g_strstr_len (dir, strlen (dir), "*") != NULL) { + /* Wild-card comparisons. */ + if (g_strstr_len (dir, strlen (dir), "*") != NULL) { - if (g_pattern_match_simple (dir, path) == TRUE) { + if (g_pattern_match_simple (dir, path) == TRUE) { - results = TRUE; - g_free (dir); - break; + results = TRUE; + g_free (dir); + break; + } } - } - /* Non-wild-card comparisons. */ - else { - /* Add a trailing G_DIR_SEPARATOR. */ - if (g_str_has_suffix (dir, G_DIR_SEPARATOR_S) == FALSE) { + /* Non-wild-card comparisons. */ + else { + /* Add a trailing G_DIR_SEPARATOR. */ + if (g_str_has_suffix (dir, G_DIR_SEPARATOR_S) == FALSE) { - gchar *tmp; + gchar *tmp; - tmp = dir; - dir = g_strconcat (dir, G_DIR_SEPARATOR_S, NULL); - g_free (tmp); - } + tmp = dir; + dir = g_strconcat (dir, G_DIR_SEPARATOR_S, NULL); + g_free (tmp); + } - if (strcmp (path, dir) == 0) { + if (strcmp (path, dir) == 0) { - results = TRUE; - g_free (dir); - break; + results = TRUE; + g_free (dir); + break; + } } + g_free (dir); } - g_free (dir); + g_strfreev (exclude_path_list); } - for (tmp_list = exclude_path_list; tmp_list; tmp_list = tmp_list->next) { - g_free (tmp_list->data); - } - g_slist_free (exclude_path_list); - + g_object_unref (settings); return results; } @@ -622,7 +376,7 @@ backslash_special_characters (const gchar * string) if (*string == '\\') { g_string_append(gs, "\\\\"); } - if (*string == '-') { + else if (*string == '-') { g_string_append(gs, "\\-"); } else { @@ -654,7 +408,7 @@ remove_mnemonic_character (const gchar * string) } gchar * -get_readable_date (const gchar * format_string, +get_readable_date (const CajaDateFormat date_format_enum, const time_t file_time_raw) { struct tm * file_time; @@ -666,13 +420,11 @@ get_readable_date (const gchar * format_string, file_time = localtime (&file_time_raw); - /* Base format of date column on caja date_format key */ - if (format_string != NULL) { - if (strcmp(format_string, GSEARCH_DATE_FORMAT_LOCALE) == 0) { - return gsearchtool_strdup_strftime ("%c", file_time); - } else if (strcmp (format_string, GSEARCH_DATE_FORMAT_ISO) == 0) { - return gsearchtool_strdup_strftime ("%Y-%m-%d %H:%M:%S", file_time); - } + /* Base format of date column on caja date-format key */ + if (date_format_enum == CAJA_DATE_FORMAT_LOCALE) { + return gsearchtool_strdup_strftime ("%c", file_time); + } else if (date_format_enum == CAJA_DATE_FORMAT_ISO) { + return gsearchtool_strdup_strftime ("%Y-%m-%d %H:%M:%S", file_time); } file_date = g_date_new_dmy (file_time->tm_mday, @@ -898,36 +650,31 @@ get_file_type_description (const gchar * file, return desc; } -static gchar* gsearchtool_pixmap_file(const gchar* partial_path) +static gchar * +gsearchtool_pixmap_file (const gchar * partial_path) { - gchar* path; + gchar * path; path = g_build_filename(DATADIR "/pixmaps/mate-search-tool", partial_path, NULL); - - if (g_file_test(path, G_FILE_TEST_EXISTS)) - { + if (g_file_test(path, G_FILE_TEST_EXISTS)){ return path; } - - g_free(path); - + g_free (path); return NULL; } -static GdkPixbuf* gsearchtool_load_thumbnail_frame(void) +static GdkPixbuf * +gsearchtool_load_thumbnail_frame (void) { - GdkPixbuf* pixbuf = NULL; - gchar* image_path; + GdkPixbuf * pixbuf = NULL; + gchar * image_path; image_path = gsearchtool_pixmap_file("thumbnail_frame.png"); - if (image_path != NULL) - { + if (image_path != NULL){ pixbuf = gdk_pixbuf_new_from_file(image_path, NULL); } - g_free(image_path); - return pixbuf; } @@ -1433,35 +1180,47 @@ void gsearchtool_set_columns_order (GtkTreeView * treeview) { GtkTreeViewColumn * last = NULL; - GSList * order; - GSList * it; + GSettings * settings; + GVariant * value; - order = gsearchtool_mateconf_get_list ("/apps/mate-search-tool/columns_order", MATECONF_VALUE_INT); + settings = g_settings_new ("org.mate.search-tool"); - for (it = order; it; it = it->next) { + value = g_settings_get_value (settings, "columns-order"); - GtkTreeViewColumn * cur; - gint id; + if (value) { + GVariantIter *iter; + GVariant *item; + + g_variant_get (value, "ai", &iter); + + while ((item = g_variant_iter_next_value (iter))) { + GtkTreeViewColumn * cur; + gint id; - id = GPOINTER_TO_INT (it->data); + g_variant_get (item, "i", &id); - if (id >= 0 && id < NUM_COLUMNS) { + if (id >= 0 && id < NUM_COLUMNS) { - cur = gsearchtool_gtk_tree_view_get_column_with_sort_column_id (treeview, id); + cur = gsearchtool_gtk_tree_view_get_column_with_sort_column_id (treeview, id); - if (cur && cur != last) { - gtk_tree_view_move_column_after (treeview, cur, last); - last = cur; + if (cur && cur != last) { + gtk_tree_view_move_column_after (treeview, cur, last); + last = cur; + } } + g_variant_unref (item); } + g_variant_iter_free (iter); + g_variant_unref (value); } - g_slist_free (order); + g_object_unref (settings); } void gsearchtool_get_stored_window_geometry (gint * width, gint * height) { + GSettings * settings; gint saved_width; gint saved_height; @@ -1469,8 +1228,10 @@ gsearchtool_get_stored_window_geometry (gint * width, return; } - saved_width = gsearchtool_mateconf_get_int ("/apps/mate-search-tool/default_window_width"); - saved_height = gsearchtool_mateconf_get_int ("/apps/mate-search-tool/default_window_height"); + settings = g_settings_new ("org.mate.search-tool"); + + saved_width = g_settings_get_int (settings, "default-window-width"); + saved_height = g_settings_get_int (settings, "default-window-height"); if (saved_width == -1) { saved_width = DEFAULT_WINDOW_WIDTH; @@ -1482,6 +1243,7 @@ gsearchtool_get_stored_window_geometry (gint * width, *width = MAX (saved_width, MINIMUM_WINDOW_WIDTH); *height = MAX (saved_height, MINIMUM_WINDOW_HEIGHT); + g_object_unref (settings); } /* START OF CAJA/EEL FUNCTIONS: USED FOR HANDLING OF DUPLICATE FILENAMES */ diff --git a/gsearchtool/gsearchtool-support.h b/gsearchtool/gsearchtool-support.h index 68c19cab..ce22e38c 100644 --- a/gsearchtool/gsearchtool-support.h +++ b/gsearchtool/gsearchtool-support.h @@ -37,40 +37,6 @@ extern "C" { #define ICON_SIZE 24 -gboolean -gsearchtool_mateconf_get_boolean (const gchar * key); - -void -gsearchtool_mateconf_set_boolean (const gchar * key, - const gboolean flag); -gint -gsearchtool_mateconf_get_int (const gchar * key); - -void -gsearchtool_mateconf_set_int (const gchar * key, - const gint value); -char * -gsearchtool_mateconf_get_string (const gchar * key); - -void -gsearchtool_mateconf_set_string (const gchar * key, - const gchar * value); - -GSList * -gsearchtool_mateconf_get_list (const gchar * key, - MateConfValueType list_type); -void -gsearchtool_mateconf_set_list (const gchar * key, - GSList * list, - MateConfValueType list_type); -void -gsearchtool_mateconf_add_dir (const gchar * dir); - -void -gsearchtool_mateconf_watch_key (const gchar * dir, - const gchar * key, - MateConfClientNotifyFunc callback, - gpointer user_data); gboolean is_path_hidden (const gchar * path); @@ -102,7 +68,7 @@ gchar * remove_mnemonic_character (const gchar * string); gchar * -get_readable_date (const gchar * format_string, +get_readable_date (const CajaDateFormat date_format_enum, const time_t file_time_raw); gchar * gsearchtool_strdup_strftime (const gchar * format, diff --git a/gsearchtool/gsearchtool.c b/gsearchtool/gsearchtool.c index f67f4538..24a11810 100644 --- a/gsearchtool/gsearchtool.c +++ b/gsearchtool/gsearchtool.c @@ -44,6 +44,7 @@ #include #include #include +#include #include "gsearchtool.h" #include "gsearchtool-callbacks.h" @@ -511,7 +512,7 @@ start_animation (GSearchWindow * gsearch, gboolean first_pass) gtk_window_set_title (GTK_WINDOW (gsearch->window), title); gtk_label_set_text (GTK_LABEL (gsearch->files_found_label), ""); - if (gsearchtool_mateconf_get_boolean ("/desktop/mate/interface/enable_animations")) { + if (g_settings_get_boolean (gsearch->mate_desktop_interface_settings, "enable-animations")) { gtk_spinner_start (GTK_SPINNER (gsearch->progress_spinner)); gtk_widget_show (gsearch->progress_spinner); } @@ -636,7 +637,6 @@ build_search_command (GSearchWindow * gsearch, command = g_string_new (""); gsearch->command_details->is_command_show_hidden_files_enabled = FALSE; gsearch->command_details->name_contains_regex_string = NULL; - gsearch->search_results_date_format_string = NULL; gsearch->command_details->name_contains_pattern_string = NULL; gsearch->command_details->is_command_first_pass = first_pass; @@ -654,19 +654,35 @@ build_search_command (GSearchWindow * gsearch, if (gsearch->command_details->is_command_first_pass == TRUE) { gchar * locate; - gchar * show_thumbnails_string; + CajaSpeedTradeoff show_thumbnails_enum; gboolean disable_quick_search; locate = g_find_program_in_path ("locate"); - disable_quick_search = gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/disable_quick_search"); - gsearch->command_details->is_command_second_pass_enabled = !gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/disable_quick_search_second_scan"); - - show_thumbnails_string = gsearchtool_mateconf_get_string ("/apps/caja/preferences/show_image_thumbnails"); - if ((show_thumbnails_string != NULL) && - ((strcmp (show_thumbnails_string, "always") == 0) || - (strcmp (show_thumbnails_string, "local_only") == 0))) { - gsearch->show_thumbnails = TRUE; - gsearch->show_thumbnails_file_size_limit = gsearchtool_mateconf_get_int ("/apps/caja/preferences/thumbnail_limit"); + disable_quick_search = g_settings_get_boolean (gsearch->mate_search_tool_settings, "disable-quick-search"); + gsearch->command_details->is_command_second_pass_enabled = !g_settings_get_boolean (gsearch->mate_search_tool_settings, "disable-quick-search-second-scan"); + + /* Use caja settings for thumbnails if caja is installed, else fall back to the caja default */ + if (gsearch->caja_schema_exists) { + show_thumbnails_enum = g_settings_get_enum (gsearch->caja_settings, "show-image-thumbnails"); + } else { + show_thumbnails_enum = SPEED_TRADEOFF_LOCAL_ONLY; + } + + if (show_thumbnails_enum == SPEED_TRADEOFF_ALWAYS || + show_thumbnails_enum == SPEED_TRADEOFF_LOCAL_ONLY) { + GVariant * value; + guint64 size_limit = 10485760; + + if (gsearch->caja_schema_exists) { + value = g_settings_get_value (gsearch->caja_settings, "thumbnail-limit"); + if (value) { + size_limit = g_variant_get_uint64 (value); + g_variant_unref (value); + } + } + + gsearch->show_thumbnails = TRUE; + gsearch->show_thumbnails_file_size_limit = size_limit; } else { gsearch->show_thumbnails = FALSE; @@ -692,7 +708,6 @@ build_search_command (GSearchWindow * gsearch, file_is_named_escaped); } g_free (locate); - g_free (show_thumbnails_string); } else { g_string_append_printf (command, "find \"%s\" %s \"%s\" -print", @@ -865,7 +880,7 @@ add_file_to_search_results (const gchar * file, #endif g_file_info_get_modification_time (file_info, &time_val); - readable_date = get_readable_date (gsearch->search_results_date_format_string, time_val.tv_sec); + readable_date = get_readable_date (gsearch->search_results_date_format, time_val.tv_sec); base_name = g_path_get_basename (file); dir_name = g_path_get_dirname (file); @@ -1158,71 +1173,76 @@ set_constraint_selected_state (GSearchWindow * gsearch, } void -set_constraint_mateconf_boolean (gint constraint_id, - gboolean flag) +set_constraint_gsettings_boolean (gint constraint_id, + gboolean flag) { + GSettings * select_settings; + + select_settings = g_settings_new ("org.mate.search-tool.select"); + switch (constraint_id) { case SEARCH_CONSTRAINT_CONTAINS_THE_TEXT: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/contains_the_text", - flag); + g_settings_set_boolean (select_settings, "contains-the-text", + flag); break; case SEARCH_CONSTRAINT_DATE_MODIFIED_BEFORE: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/date_modified_less_than", - flag); + g_settings_set_boolean (select_settings, "date-modified-less-than", + flag); break; case SEARCH_CONSTRAINT_DATE_MODIFIED_AFTER: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/date_modified_more_than", - flag); + g_settings_set_boolean (select_settings, "date-modified-more-than", + flag); break; case SEARCH_CONSTRAINT_SIZE_IS_MORE_THAN: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/size_at_least", - flag); + g_settings_set_boolean (select_settings, "size-at-least", + flag); break; case SEARCH_CONSTRAINT_SIZE_IS_LESS_THAN: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/size_at_most", - flag); + g_settings_set_boolean (select_settings, "size-at-most", + flag); break; case SEARCH_CONSTRAINT_FILE_IS_EMPTY: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/file_is_empty", - flag); + g_settings_set_boolean (select_settings, "file-is-empty", + flag); break; case SEARCH_CONSTRAINT_OWNED_BY_USER: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/owned_by_user", - flag); + g_settings_set_boolean (select_settings, "owned-by-user", + flag); break; case SEARCH_CONSTRAINT_OWNED_BY_GROUP: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/owned_by_group", - flag); + g_settings_set_boolean (select_settings, "owned-by-group", + flag); break; case SEARCH_CONSTRAINT_OWNER_IS_UNRECOGNIZED: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/owner_is_unrecognized", - flag); + g_settings_set_boolean (select_settings, "owner-is-unrecognized", + flag); break; case SEARCH_CONSTRAINT_FILE_IS_NOT_NAMED: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/name_does_not_contain", - flag); + g_settings_set_boolean (select_settings, "name-does-not-contain", + flag); break; case SEARCH_CONSTRAINT_FILE_MATCHES_REGULAR_EXPRESSION: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/name_matches_regular_expression", - flag); + g_settings_set_boolean (select_settings, "name-matches-regular-expression", + flag); break; case SEARCH_CONSTRAINT_SHOW_HIDDEN_FILES_AND_FOLDERS: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/show_hidden_files_and_folders", - flag); + g_settings_set_boolean (select_settings, "show-hidden-files-and-folders", + flag); break; case SEARCH_CONSTRAINT_FOLLOW_SYMBOLIC_LINKS: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/follow_symbolic_links", - flag); + g_settings_set_boolean (select_settings, "follow-symbolic-links", + flag); break; case SEARCH_CONSTRAINT_SEARCH_OTHER_FILESYSTEMS: - gsearchtool_mateconf_set_boolean ("/apps/mate-search-tool/select/exclude_other_filesystems", - flag); + g_settings_set_boolean (select_settings, "exclude-other-filesystems", + flag); break; default: break; } + g_object_unref (select_settings); } /* @@ -1297,12 +1317,12 @@ gsearch_setup_goption_descriptions (void) for (j = 0; GSearchOptionTemplates[j].type != SEARCH_CONSTRAINT_TYPE_NONE; j++) { if (GSearchOptionTemplates[j].type != SEARCH_CONSTRAINT_TYPE_SEPARATOR) { - gchar *text = remove_mnemonic_character (GSearchOptionTemplates[j].desc); + gchar *text = remove_mnemonic_character (_(GSearchOptionTemplates[j].desc)); if (GSearchOptionTemplates[j].type == SEARCH_CONSTRAINT_TYPE_BOOLEAN) { - GSearchGOptionEntries[i++].description = g_strdup_printf (_("Select the \"%s\" search option"), _(text)); + GSearchGOptionEntries[i++].description = g_strdup_printf (_("Select the \"%s\" search option"), text); } else { - GSearchGOptionEntries[i++].description = g_strdup_printf (_("Select and set the \"%s\" search option"), _(text)); + GSearchGOptionEntries[i++].description = g_strdup_printf (_("Select and set the \"%s\" search option"), text); } g_free (text); } @@ -1587,7 +1607,6 @@ handle_search_command_stdout_io (GIOChannel * ioc, /* Free these strings now because they are reassign values during the second pass. */ g_free (gsearch->command_details->name_contains_pattern_string); g_free (gsearch->command_details->name_contains_regex_string); - g_free (gsearch->search_results_date_format_string); command = build_search_command (gsearch, FALSE); if (command != NULL) { @@ -1608,7 +1627,6 @@ handle_search_command_stdout_io (GIOChannel * ioc, /* Free the gchar fields of search_command structure. */ g_free (gsearch->command_details->name_contains_pattern_string); g_free (gsearch->command_details->name_contains_regex_string); - g_free (gsearch->search_results_date_format_string); } return FALSE; @@ -1737,7 +1755,7 @@ handle_search_command_stderr_io (GIOChannel * ioc, label = gtk_label_new (error_msgs->str); gtk_container_add (GTK_CONTAINER (expander), label); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox, FALSE, FALSE, 0); gtk_widget_show_all (hbox); g_signal_connect (G_OBJECT (dialog), @@ -1781,11 +1799,11 @@ handle_search_command_stderr_io (GIOChannel * ioc, label = gtk_label_new (error_msgs->str); gtk_container_add (GTK_CONTAINER (expander), label); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox, FALSE, FALSE, 0); gtk_widget_show_all (hbox); button = gsearchtool_button_new_with_stock_icon (_("Disable _Quick Search"), GTK_STOCK_OK); - gtk_widget_set_can_default (button, TRUE); + gtk_widget_set_can_default (button, TRUE); gtk_widget_show (button); gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_OK); @@ -1853,7 +1871,6 @@ spawn_search_command (GSearchWindow * gsearch, g_free (gsearch->command_details->look_in_folder_string); g_free (gsearch->command_details->name_contains_pattern_string); g_free (gsearch->command_details->name_contains_regex_string); - g_free (gsearch->search_results_date_format_string); return; } @@ -1886,7 +1903,6 @@ spawn_search_command (GSearchWindow * gsearch, g_free (gsearch->command_details->look_in_folder_string); g_free (gsearch->command_details->name_contains_pattern_string); g_free (gsearch->command_details->name_contains_regex_string); - g_free (gsearch->search_results_date_format_string); return; } @@ -1896,8 +1912,12 @@ spawn_search_command (GSearchWindow * gsearch, gsearch->search_results_pixbuf_hash_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); gsearch->search_results_filename_hash_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - /* Get value of caja date_format key */ - gsearch->search_results_date_format_string = gsearchtool_mateconf_get_string ("/apps/caja/preferences/date_format"); + /* Get the value of the caja date-format key if available. */ + if (gsearch->caja_schema_exists) { + gsearch->search_results_date_format = g_settings_get_enum (gsearch->caja_settings, "date-format"); + } else { + gsearch->search_results_date_format = CAJA_DATE_FORMAT_LOCALE; + } gtk_tree_view_scroll_to_point (GTK_TREE_VIEW (gsearch->search_results_tree_view), 0, 0); gtk_tree_model_foreach (GTK_TREE_MODEL (gsearch->search_results_list_store), @@ -2091,7 +2111,7 @@ add_constraint (GSearchWindow * gsearch, constraint->constraint_id = constraint_id; set_constraint_info_defaults (constraint); - set_constraint_mateconf_boolean (constraint->constraint_id, TRUE); + set_constraint_gsettings_boolean (constraint->constraint_id, TRUE); widget = create_constraint_box (gsearch, constraint, value); gtk_box_pack_start (GTK_BOX (gsearch->available_options_vbox), widget, FALSE, FALSE, 0); @@ -2635,70 +2655,68 @@ set_clone_command (GSearchWindow * gsearch, } static void -handle_mateconf_settings (GSearchWindow * gsearch) +handle_gsettings_settings (GSearchWindow * gsearch) { - gsearchtool_mateconf_add_dir ("/apps/mate-search-tool"); - - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/show_additional_options")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_settings, "show-additional-options")) { if (gtk_widget_get_visible (gsearch->available_options_vbox) == FALSE) { gtk_expander_set_expanded (GTK_EXPANDER (gsearch->show_more_options_expander), TRUE); gtk_widget_show (gsearch->available_options_vbox); } } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/contains_the_text")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "contains-the-text")) { add_constraint (gsearch, SEARCH_CONSTRAINT_CONTAINS_THE_TEXT, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/date_modified_less_than")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "date-modified-less-than")) { add_constraint (gsearch, SEARCH_CONSTRAINT_DATE_MODIFIED_BEFORE, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/date_modified_more_than")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "date-modified-more-than")) { add_constraint (gsearch, SEARCH_CONSTRAINT_DATE_MODIFIED_AFTER, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/size_at_least")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "size-at-least")) { add_constraint (gsearch, SEARCH_CONSTRAINT_SIZE_IS_MORE_THAN, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/size_at_most")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "size-at-most")) { add_constraint (gsearch, SEARCH_CONSTRAINT_SIZE_IS_LESS_THAN, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/file_is_empty")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "file-is-empty")) { add_constraint (gsearch, SEARCH_CONSTRAINT_FILE_IS_EMPTY, NULL, FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/owned_by_user")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "owned-by-user")) { add_constraint (gsearch, SEARCH_CONSTRAINT_OWNED_BY_USER, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/owned_by_group")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "owned-by-group")) { add_constraint (gsearch, SEARCH_CONSTRAINT_OWNED_BY_GROUP, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/owner_is_unrecognized")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "owner-is-unrecognized")) { add_constraint (gsearch, SEARCH_CONSTRAINT_OWNER_IS_UNRECOGNIZED, NULL, FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/name_does_not_contain")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "name-does-not-contain")) { add_constraint (gsearch, SEARCH_CONSTRAINT_FILE_IS_NOT_NAMED, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/name_matches_regular_expression")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "name-matches-regular-expression")) { add_constraint (gsearch, SEARCH_CONSTRAINT_FILE_MATCHES_REGULAR_EXPRESSION, "", FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/show_hidden_files_and_folders")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "show-hidden-files-and-folders")) { add_constraint (gsearch, SEARCH_CONSTRAINT_SHOW_HIDDEN_FILES_AND_FOLDERS, NULL, FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/follow_symbolic_links")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "follow-symbolic-links")) { add_constraint (gsearch, SEARCH_CONSTRAINT_FOLLOW_SYMBOLIC_LINKS, NULL, FALSE); } - if (gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/select/exclude_other_filesystems")) { + if (g_settings_get_boolean (gsearch->mate_search_tool_select_settings, "exclude-other-filesystems")) { add_constraint (gsearch, SEARCH_CONSTRAINT_SEARCH_OTHER_FILESYSTEMS, NULL, FALSE); } } @@ -2725,9 +2743,31 @@ gsearch_app_create (GSearchWindow * gsearch) GtkWidget * label; GtkWidget * button; GtkWidget * container; + const char * const *schemas; + gint i; + + gsearch->mate_search_tool_settings = g_settings_new ("org.mate.search-tool"); + gsearch->mate_search_tool_select_settings = g_settings_new ("org.mate.search-tool.select"); + gsearch->mate_desktop_interface_settings = g_settings_new ("org.mate.interface"); + + /* Check if caja schema is installed before trying to read caja settings */ + gsearch->caja_schema_exists = FALSE; + schemas = g_settings_list_schemas (); + for (i = 0; schemas[i] != NULL; i++) { + if (g_strcmp0 (schemas[i], CAJA_PREFERENCES_SCHEMA) == 0) { + gsearch->caja_schema_exists = TRUE; + break; + } + } + + if (gsearch->caja_schema_exists) { + gsearch->caja_settings = g_settings_new (CAJA_PREFERENCES_SCHEMA); + } else { + gsearch->caja_settings = NULL; + } gsearch->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gsearch->is_window_maximized = gsearchtool_mateconf_get_boolean ("/apps/mate-search-tool/default_window_maximized"); + gsearch->is_window_maximized = g_settings_get_boolean (gsearch->mate_search_tool_settings, "default-window-maximized"); g_signal_connect (G_OBJECT (gsearch->window), "size-allocate", G_CALLBACK (gsearch_window_size_allocate), gsearch); @@ -2800,7 +2840,7 @@ gsearch_app_create (GSearchWindow * gsearch) add_atk_namedesc (GTK_WIDGET (gsearch->look_in_folder_button), _("Look in folder"), _("Select the folder or device from which you want to begin the search.")); } - locale_string = gsearchtool_mateconf_get_string ("/apps/mate-search-tool/look_in_folder"); + locale_string = g_settings_get_string (gsearch->mate_search_tool_settings, "look-in-folder"); if ((g_file_test (locale_string, G_FILE_TEST_EXISTS) == FALSE) || (g_file_test (locale_string, G_FILE_TEST_IS_DIR) == FALSE)) { @@ -2937,26 +2977,27 @@ gsearch_window_get_type (void) } static void -gsearchtool_setup_mateconf_notifications (GSearchWindow * gsearch) +gsearchtool_setup_gsettings_notifications (GSearchWindow * gsearch) { gchar * click_to_activate_pref; - /* Get value of caja click behavior (single or double click to activate items) */ - click_to_activate_pref = gsearchtool_mateconf_get_string ("/apps/caja/preferences/click_policy"); - - if (click_to_activate_pref == NULL) { + /* Use the default double click behavior if caja isn't installed */ + if (gsearch->caja_schema_exists == FALSE) { gsearch->is_search_results_single_click_to_activate = FALSE; return; } + /* Get value of caja click behavior (single or double click to activate items) */ + click_to_activate_pref = g_settings_get_string (gsearch->caja_settings, "click-policy"); + gsearch->is_search_results_single_click_to_activate = (strncmp (click_to_activate_pref, "single", 6) == 0) ? TRUE : FALSE; - gsearchtool_mateconf_watch_key ("/apps/caja/preferences", - "/apps/caja/preferences/click_policy", - (MateConfClientNotifyFunc) single_click_to_activate_key_changed_cb, - gsearch); + g_signal_connect (gsearch->caja_settings, + "changed::click-policy", + G_CALLBACK (single_click_to_activate_key_changed_cb), + gsearch); g_free (click_to_activate_pref); } @@ -2971,6 +3012,7 @@ main (int argc, GError * error = NULL; EggSMClient * client; + setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); @@ -3022,10 +3064,10 @@ main (int argc, gtk_widget_show (gsearch->window); - gsearchtool_setup_mateconf_notifications (gsearch); + gsearchtool_setup_gsettings_notifications (gsearch); if (handle_goption_args (gsearch) == FALSE) { - handle_mateconf_settings (gsearch); + handle_gsettings_settings (gsearch); } gtk_main (); diff --git a/gsearchtool/gsearchtool.h b/gsearchtool/gsearchtool.h index 6ed4e784..573bbe67 100644 --- a/gsearchtool/gsearchtool.h +++ b/gsearchtool/gsearchtool.h @@ -34,8 +34,6 @@ extern "C" { #endif #include -#include -#include #define GSEARCH_TYPE_WINDOW gsearch_window_get_type() #define GSEARCH_WINDOW(obj) \ @@ -56,6 +54,7 @@ extern "C" { #define DEFAULT_WINDOW_HEIGHT 350 #define WINDOW_HEIGHT_STEP 35 #define NUM_VISIBLE_COLUMNS 5 +#define CAJA_PREFERENCES_SCHEMA "org.mate.caja.preferences" typedef enum { STOPPED, @@ -65,6 +64,18 @@ typedef enum { MAKE_IT_QUIT } GSearchCommandStatus; +typedef enum { + SPEED_TRADEOFF_ALWAYS = 0, + SPEED_TRADEOFF_LOCAL_ONLY, + SPEED_TRADEOFF_NEVER +} CajaSpeedTradeoff; + +typedef enum { + CAJA_DATE_FORMAT_LOCALE = 0, + CAJA_DATE_FORMAT_ISO, + CAJA_DATE_FORMAT_INFORMAL +} CajaDateFormat; + typedef enum { COLUMN_ICON, COLUMN_NAME, @@ -130,7 +141,7 @@ struct _GSearchWindow { GtkTreePath * search_results_hover_path; GHashTable * search_results_filename_hash_table; GHashTable * search_results_pixbuf_hash_table; - gchar * search_results_date_format_string; + CajaDateFormat search_results_date_format; gint show_thumbnails_file_size_limit; gboolean show_thumbnails; gboolean is_search_results_single_click_to_activate; @@ -139,6 +150,12 @@ struct _GSearchWindow { gchar * save_results_as_default_filename; + GSettings * mate_search_tool_settings; + GSettings * mate_search_tool_select_settings; + GSettings * mate_desktop_interface_settings; + GSettings * caja_settings; + gboolean caja_schema_exists; + GSearchCommandDetails * command_details; }; @@ -198,8 +215,8 @@ void remove_constraint (gint constraint_id); void -set_constraint_mateconf_boolean (gint constraint_id, - gboolean flag); +set_constraint_gsettings_boolean (gint constraint_id, + gboolean flag); void set_constraint_selected_state (GSearchWindow * gsearch, gint constraint_id, diff --git a/gsearchtool/help/C/mate-search-tool.xml b/gsearchtool/help/C/mate-search-tool.xml index a1516616..d1b94d7d 100644 --- a/gsearchtool/help/C/mate-search-tool.xml +++ b/gsearchtool/help/C/mate-search-tool.xml @@ -476,57 +476,57 @@ - + Settings - &app; provides mateconf keys to modify some of its behavior. The mateconf values can be changed by starting the Configuration Editor in the following ways: + &app; provides gsettings keys to modify some of its behavior. The gsettings values can be changed by starting the Configuration Editor in the following ways: Applications menu - Choose System ToolsConfiguration Editor. + Choose System Toolsdconf Editor. Command line - Execute the following command: mateconf-editor + Execute the following command: dconf-editor Disable Quick Search - Key name: /apps/mate-search-tool/disable_quick_search + Key name: org.mate.search-tool.disable-quick-search Default value: false &app; speeds up file name searches by using the locate command. Locate provides a secure way to index and quickly search for file names. Because locate relies on a file index, the Search results list may not always be up to date. Disable Quick Search Second Scan - Key name: /apps/mate-search-tool/disable_quick_search_second_scan + Key name: org.mate.search-tool.disable-quick-search-second-scan Default value: false After completing a quick search, &app; will perform a thorough search using the find command. The purpose of this second scan is to find files that have not been indexed. Files that match the search criteria are added to the Search results list keeping the list up to date. Quick Search Excluded Paths - Key name: /apps/mate-search-tool/quick_search_excluded_paths + Key name: org.mate.search-tool.quick-search-excluded-paths Default values: [/mnt/*,/media/*,/dev/*,/tmp/*,/proc/*,/var/*] &app; will not perform a quick search for paths defined by this key. File name searches in the defined paths will use the find command. The wildcards '*' and '?' are supported. Quick Search Second Scan Excluded Paths - Key name: /apps/mate-search-tool/quick_search_second_scan_excluded_paths + Key name: org.mate.search-tool.quick-search-second-scan-excluded-paths Default values: [/] &app; will not perform a second scan after a quick search for the paths defined by this key. Quick searches in the defined paths will not be followed by a thorough search using the find command. The wildcards '*' and '?' are supported. Show Additional Options - Key name: /apps/mate-search-tool/show_additional_options + Key name: org.mate.search-tool.show-additional-options Default value: false This key determines if the Select more options section is expanded when &app; is started. diff --git a/gsearchtool/libmateui-deprecated/Makefile.am b/gsearchtool/libmateui-deprecated/Makefile.am index 7a01c3c9..024e4277 100644 --- a/gsearchtool/libmateui-deprecated/Makefile.am +++ b/gsearchtool/libmateui-deprecated/Makefile.am @@ -1,12 +1,19 @@ -INCLUDES = -DGTK_DISABLE_DEPRECATED \ - -DGDK_DISABLE_DEPRECATED \ - -DG_DISABLE_DEPRECATED - +INCLUDES = \ + -DGTK_DISABLE_DEPRECATED \ + -DGDK_DISABLE_DEPRECATED \ + -DG_DISABLE_DEPRECATED noinst_LTLIBRARIES = libmateui-deprecated.la -libmateui_deprecated_la_LIBADD = $(MATE_UTILS_LIBS) -libmateui_deprecated_la_CFLAGS = $(MATE_UTILS_CFLAGS) \ - $(WARN_CFLAGS) -libmateui_deprecated_la_SOURCES = gsearchtool-entry.h \ - gsearchtool-entry.c +libmateui_deprecated_la_CFLAGS = \ + $(GLIB_CFLAGS) \ + $(GTK_CFLAGS) \ + $(WARN_CFLAGS) + +libmateui_deprecated_la_LIBADD = \ + $(GLIB_LIBS) \ + $(GTK_LIBS) + +libmateui_deprecated_la_SOURCES = \ + gsearchtool-entry.h \ + gsearchtool-entry.c diff --git a/gsearchtool/libmateui-deprecated/gsearchtool-entry.c b/gsearchtool/libmateui-deprecated/gsearchtool-entry.c index 25a1e612..9d39b4ba 100644 --- a/gsearchtool/libmateui-deprecated/gsearchtool-entry.c +++ b/gsearchtool/libmateui-deprecated/gsearchtool-entry.c @@ -34,7 +34,6 @@ #include #include #include -#include #include "gsearchtool-entry.h" @@ -57,7 +56,7 @@ struct _GsearchHistoryEntryPrivate GtkEntryCompletion *completion; - MateConfClient *mateconf_client; + GSettings *settings; }; G_DEFINE_TYPE (GsearchHistoryEntry, gsearch_history_entry, GTK_TYPE_COMBO_BOX) @@ -129,10 +128,10 @@ gsearch_history_entry_finalize (GObject *object) g_free (priv->history_id); - if (priv->mateconf_client != NULL) + if (priv->settings != NULL) { - g_object_unref (G_OBJECT (priv->mateconf_client)); - priv->mateconf_client = NULL; + g_object_unref (G_OBJECT (priv->settings)); + priv->settings = NULL; } G_OBJECT_CLASS (gsearch_history_entry_parent_class)->finalize (object); @@ -188,23 +187,7 @@ get_history_store (GsearchHistoryEntry *entry) static char * get_history_key (GsearchHistoryEntry *entry) { - gchar *tmp; - gchar *key; - - /* - * Store the data under /apps/mate-settings/ - * like the old MateEntry did - */ - - tmp = mateconf_escape_key (entry->priv->history_id, -1); - key = g_strconcat ("/apps/mate-settings/", - "mate-search-tool", - "/history-", - tmp, - NULL); - g_free (tmp); - - return key; + return g_strdup (entry->priv->history_id); } static GSList * @@ -241,22 +224,52 @@ get_history_list (GsearchHistoryEntry *entry) static void gsearch_history_entry_save_history (GsearchHistoryEntry *entry) { - GSList *mateconf_items; + GVariant *history; + GSList *items; gchar *key; + GVariantBuilder item_builder; + GVariantBuilder history_builder; + GVariantIter *iter; + GVariant *item; + GVariant *history_list; + GSList *list_iter; + gchar *history_key; g_return_if_fail (GSEARCH_IS_HISTORY_ENTRY (entry)); - mateconf_items = get_history_list (entry); + items = get_history_list (entry); key = get_history_key (entry); - mateconf_client_set_list (entry->priv->mateconf_client, - key, - MATECONF_VALUE_STRING, - mateconf_items, - NULL); - - g_slist_foreach (mateconf_items, (GFunc) g_free, NULL); - g_slist_free (mateconf_items); + history = g_settings_get_value (entry->priv->settings, + "search-history"); + + g_variant_builder_init (&item_builder, G_VARIANT_TYPE ("as")); + for (list_iter = items; list_iter; list_iter = list_iter->next) + g_variant_builder_add (&item_builder, "s", (gchar *) list_iter->data); + + g_variant_builder_init (&history_builder, G_VARIANT_TYPE ("a{sas}")); + g_variant_builder_add (&history_builder, "{sas}", key, &item_builder); + + if (history) { + g_variant_get (history, "a{sas}", &iter); + while ((item = g_variant_iter_next_value (iter))) { + g_variant_get (item, "{s@as}", &history_key, &history_list); + if (g_strcmp0 (history_key, key) != 0) + g_variant_builder_add (&history_builder, "{s@as}", history_key, history_list); + g_free (history_key); + g_variant_unref (history_list); + g_variant_unref (item); + } + g_variant_iter_free (iter); + g_variant_unref (history); + } + + g_settings_set_value (entry->priv->settings, + "search-history", + g_variant_new ("a{sas}", &history_builder)); + + g_slist_foreach (items, (GFunc) g_free, NULL); + g_slist_free (items); g_free (key); } @@ -377,9 +390,9 @@ gsearch_history_entry_append_text (GsearchHistoryEntry *entry, static void gsearch_history_entry_load_history (GsearchHistoryEntry *entry) { - GSList *mateconf_items, *l; GtkListStore *store; GtkTreeIter iter; + GVariant *history; gchar *key; gint i; @@ -388,27 +401,45 @@ gsearch_history_entry_load_history (GsearchHistoryEntry *entry) store = get_history_store (entry); key = get_history_key (entry); - mateconf_items = mateconf_client_get_list (entry->priv->mateconf_client, - key, - MATECONF_VALUE_STRING, - NULL); + history = g_settings_get_value (entry->priv->settings, + "search-history"); gtk_list_store_clear (store); - for (l = mateconf_items, i = 0; - l != NULL && i < entry->priv->history_length; - l = l->next, i++) - { - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, - &iter, - 0, - l->data, - -1); - } - - g_slist_foreach (mateconf_items, (GFunc) g_free, NULL); - g_slist_free (mateconf_items); + if (history) { + GVariantIter *history_iter, *history_subiter; + GVariant *history_item, *history_subitem; + gchar *history_key; + gchar *text; + + g_variant_get (history, "a{sas}", &history_iter); + + while ((history_item = g_variant_iter_next_value (history_iter))) { + i = 0; + g_variant_get (history_item, "{sas}", &history_key, &history_subiter); + + if (g_strcmp0 (history_key, key) == 0) { + while ((history_subitem = g_variant_iter_next_value (history_subiter)) && + i < entry->priv->history_length) { + g_variant_get (history_subitem, "s", &text); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, + &iter, + 0, + text, + -1); + g_free (text); + g_variant_unref (history_subitem); + i++; + } + } + g_free (history_key); + g_variant_iter_free (history_subiter); + g_variant_unref (history_item); + } + g_variant_iter_free (history_iter); + g_variant_unref (history); + } g_free (key); } @@ -438,7 +469,7 @@ gsearch_history_entry_init (GsearchHistoryEntry *entry) priv->completion = NULL; - priv->mateconf_client = mateconf_client_get_default (); + priv->settings = g_settings_new ("org.mate.search-tool"); } void @@ -519,10 +550,12 @@ gsearch_history_entry_get_enable_completion (GsearchHistoryEntry *entry) return entry->priv->completion != NULL; } -GtkWidget* gsearch_history_entry_new(const gchar *history_id, gboolean enable_completion) +GtkWidget * +gsearch_history_entry_new (const gchar *history_id, + gboolean enable_completion) { - GtkWidget* ret; - GtkListStore* store; + GtkWidget *ret; + GtkListStore *store; g_return_val_if_fail(history_id != NULL, NULL); diff --git a/gsearchtool/mate-search-tool.convert b/gsearchtool/mate-search-tool.convert new file mode 100644 index 00000000..44156425 --- /dev/null +++ b/gsearchtool/mate-search-tool.convert @@ -0,0 +1,27 @@ +[org.mate.search-tool] +show-additional-options=/apps/mate-search-tool/show_additional_options +disable-quick-search=/apps/mate-search-tool/disable_quick_search +quick-search-excluded-paths=/apps/mate-search-tool/quick_search_excluded_paths +disable-quick-search-second-scan=/apps/mate-search-tool/disable_quick_search_second-scan +quick-search-second-scan-excluded-paths=/apps/mate-search-tool/quick_search_second_scan_excluded_paths +columns-order=/apps/mate-search-tool/columns_order +default-window-width=/apps/mate-search-tool/default_window_width +default-window-height=/apps/mate-search-tool/default_window_height +default-window-maximized=/apps/mate-search-tool/default_window_maximized +look-in-folder=/apps/mate-search-tool/look_in_folder + +[org.mate.search-tool.select] +contains-the-text=/apps/mate-search-tool/select/contains_the_text +date-modified-less-than=/apps/mate-search-tool/select/date_modified_less_than +date-modified-more-than=/apps/mate-search-tool/select/date_modified_more_than +size-at-least=/apps/mate-search-tool/select/size_at_least +size-at-most=/apps/mate-search-tool/select/size_at_most +file-is-empty=/apps/mate-search-tool/select/file_is_empty +owned-by-user=/apps/mate-search-tool/select/owned_by_user +owned-by-group=/apps/mate-search-tool/select/owned_by_group +owner-is-unrecognized=/apps/mate-search-tool/select/owner_is_unrecognized +name-does-not-contain=/apps/mate-search-tool/select/name_does_not_contain +name-matches-regular-expression=/apps/mate-search-tool/select/name_matches_regular_expression +show-hidden-files-and-folders=/apps/mate-search-tool/select/show_hidden_files_and_folders +follow-symbolic-links=/apps/mate-search-tool/select/follow_symbolic_links +exclude-other-filesystems=/apps/mate-search-tool/select/exclude_other_filesystems diff --git a/gsearchtool/org.mate.search-tool.gschema.xml.in b/gsearchtool/org.mate.search-tool.gschema.xml.in new file mode 100644 index 00000000..b6a532c4 --- /dev/null +++ b/gsearchtool/org.mate.search-tool.gschema.xml.in @@ -0,0 +1,117 @@ + + + + [ ] + <_summary>Search history + <_description>This key defines the items which were searched for in the past. + + + false + <_summary>Show Additional Options + + + false + <_summary>Disable Quick Search + <_description>This key determines if the search tool disables the use of the locate command when performing simple file name searches. + + + [ '/mnt/*', '/media/*', '/dev/*', '/tmp/*', '/proc/*', '/var/*' ] + <_summary>Quick Search Excluded Paths + <_description>This key defines the paths the search tool will exclude from a quick search. The wildcards '*' and '?' are supported. The default values are /mnt/*, /media/*, /dev/*, /tmp/*, /proc/*, and /var/*. + + + false + <_summary>Disable Quick Search Second Scan + <_description>This key determines if the search tool disables the use of the find command after performing a quick search. + + + [ '/' ] + <_summary>Quick Search Second Scan Excluded Paths + <_description>This key defines the paths the search tool will exclude from a second scan when performing a quick search. The second scan uses the find command to search for files. The purpose of the second scan is to find files that have not been indexed. The wildcards '*' and '?' are supported. The default value is /. + + + [ 0 ] + <_summary>Search Result Columns Order + <_description>This key defines the order of the columns in the search results. This key should not be modified by the user. + + + -1 + <_summary>Default Window Width + <_description>This key defines the window width, and it's used to remember the size of the search tool between sessions. Setting it to -1 will make the search tool use the default width. + + + -1 + <_summary>Default Window Height + <_description>This key defines the window height, and it's used to remember the size of the search tool between sessions. Setting it to -1 will make the search tool use the default height. + + + false + <_summary>Default Window Maximized + <_description>This key determines if the search tool window starts in a maximized state. + + + '' + <_summary>Look in Folder + <_description>This key defines the default value of the "Look in Folder" widget. + + + + + + true + <_description>This key determines if the "Contains the text" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Date modified less than" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Date modified more than" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Size at least" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Size at most" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "File is empty" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Owned by user" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Owned by group" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Owner is unrecognized" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Name does not contain" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Name matches regular expression" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Show hidden files and folders" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Follow symbolic links" search option is selected when the search tool is started. + + + false + <_description>This key determines if the "Exclude other filesystems" search option is selected when the search tool is started. + + + -- cgit v1.2.1