static void ide_omni_search_display_result_removed (IdeOmniSearchDisplay *self, IdeSearchProvider *provider, IdeSearchResult *result, IdeSearchContext *context) { guint i; g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); g_return_if_fail (IDE_IS_SEARCH_RESULT (result)); g_return_if_fail (IDE_IS_SEARCH_CONTEXT (context)); for (i = 0; i < self->providers->len; i++) { ProviderEntry *ptr; ptr = g_ptr_array_index (self->providers, i); if (ptr->provider == provider) { if (ptr->group != NULL) ide_omni_search_group_remove_result (ptr->group, result); break; } } }
static void ide_omni_search_display_count_set (IdeOmniSearchDisplay *self, IdeSearchProvider *provider, guint64 count, IdeSearchContext *context) { #if 0 guint i; g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); g_return_if_fail (IDE_IS_SEARCH_CONTEXT (context)); for (i = 0; i < self->providers->len; i++) { ProviderEntry *ptr; ptr = g_ptr_array_index (self->providers, i); if (ptr->provider == provider) { if (ptr->group != NULL) ide_omni_search_group_set_count (ptr->group, count); break; } } #endif }
static void ide_omni_search_display_remove_provider (IdeOmniSearchDisplay *self, IdeSearchProvider *provider) { guint i; g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); for (i = 0; i < self->providers->len; i++) { ProviderEntry *ptr; ptr = g_ptr_array_index (self->providers, i); if (ptr->provider == provider) { IdeOmniSearchGroup *group = ptr->group; if (group) gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (group)); g_ptr_array_remove_index (self->providers, i); return; } } g_warning (_("The provider could not be found.")); }
/** * ide_search_provider_search_finish: * @self: a #IdeSearchProvider * @result: a #GAsyncResult * @error: a location for a #GError, or %NULL * * Completes a request to a search provider. * * Returns: (transfer full) (element-type IdeSearchResult): a #GPtrArray * of #IdeSearchResult elements. * * Since: 3.32 */ GPtrArray * ide_search_provider_search_finish (IdeSearchProvider *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (IDE_IS_SEARCH_PROVIDER (self), NULL); g_return_val_if_fail (G_IS_ASYNC_RESULT (result), NULL); return IDE_SEARCH_PROVIDER_GET_IFACE (self)->search_finish (self, result, error); }
static GPtrArray * ide_search_provider_real_search_finish (IdeSearchProvider *self, GAsyncResult *result, GError **error) { g_assert (IDE_IS_SEARCH_PROVIDER (self)); g_assert (IDE_IS_TASK (result)); return ide_task_propagate_pointer (IDE_TASK (result), error); }
void ide_search_context_set_provider_count (IdeSearchContext *self, IdeSearchProvider *provider, guint64 count) { g_return_if_fail (IDE_IS_SEARCH_CONTEXT (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); g_signal_emit (self, gSignals [COUNT_SET], 0, provider, count); }
void ide_search_context_remove_result (IdeSearchContext *self, IdeSearchProvider *provider, IdeSearchResult *result) { g_return_if_fail (IDE_IS_SEARCH_CONTEXT (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); g_return_if_fail (IDE_IS_SEARCH_RESULT (result)); g_signal_emit (self, gSignals [RESULT_REMOVED], 0, provider, result); }
void ide_search_context_provider_completed (IdeSearchContext *self, IdeSearchProvider *provider) { g_return_if_fail (IDE_IS_SEARCH_CONTEXT (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); g_return_if_fail (g_list_find (self->providers, provider)); if (--self->in_progress == 0) g_signal_emit (self, gSignals [COMPLETED], 0); }
void _ide_search_context_add_provider (IdeSearchContext *self, IdeSearchProvider *provider, gsize max_results) { g_return_if_fail (IDE_IS_SEARCH_CONTEXT (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); g_return_if_fail (!self->executed); self->providers = g_list_append (self->providers, g_object_ref (provider)); }
void ide_search_provider_search_async (IdeSearchProvider *self, const gchar *query, guint max_results, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IDE_IS_SEARCH_PROVIDER (self)); g_return_if_fail (query != NULL); g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable)); IDE_SEARCH_PROVIDER_GET_IFACE (self)->search_async (self, query, max_results, cancellable, callback, user_data); }
static void ide_search_provider_real_search_async (IdeSearchProvider *self, const gchar *query, guint max_results, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_autoptr(IdeTask) task = NULL; g_assert (IDE_IS_SEARCH_PROVIDER (self)); g_assert (query != NULL); task = ide_task_new (self, cancellable, callback, user_data); ide_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, "search not implemented"); }
static void ide_omni_search_display_result_added (IdeOmniSearchDisplay *self, IdeSearchProvider *provider, IdeSearchResult *result, IdeSearchContext *context) { guint i; g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); g_return_if_fail (IDE_IS_SEARCH_RESULT (result)); g_return_if_fail (IDE_IS_SEARCH_CONTEXT (context)); for (i = 0; i < self->providers->len; i++) { ProviderEntry *ptr; ptr = g_ptr_array_index (self->providers, i); if (ptr->provider == provider) { if (ptr->group != NULL) { ide_omni_search_group_add_result (ptr->group, result); gtk_widget_show (GTK_WIDGET (ptr->group)); /* * If this is the first group and we are still auto-selecting * the first row, we might need to update the selection. */ if ((i == 0) && self->do_autoselect) ide_omni_search_group_select_first (ptr->group); } break; } } }
static void ide_omni_search_display_add_provider (IdeOmniSearchDisplay *self, IdeSearchProvider *provider) { ProviderEntry *entry; guint i; g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self)); g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider)); /* * Make sure we don't add an item twice. Probably can assert here, but * warning will do for now. */ for (i = 0; i < self->providers->len; i++) { ProviderEntry *ptr; ptr = g_ptr_array_index (self->providers, i); if (ptr->provider == provider) { g_warning (_("Cannot add provider more than once.")); return; } } /* * Add the entry to our array and sort the array to determine our target * widget packing position. */ entry = g_new0 (ProviderEntry, 1); entry->provider = g_object_ref (provider); entry->group = g_object_new (IDE_TYPE_OMNI_SEARCH_GROUP, "provider", provider, "visible", FALSE, NULL); g_object_add_weak_pointer (G_OBJECT (entry->group), (gpointer *)&entry->group); g_signal_connect_object (entry->group, "result-activated", G_CALLBACK (ide_omni_search_display_result_activated), self, G_CONNECT_SWAPPED); g_signal_connect_object (entry->group, "result-selected", G_CALLBACK (ide_omni_search_display_result_selected), self, G_CONNECT_SWAPPED); g_ptr_array_add (self->providers, entry); g_ptr_array_sort (self->providers, provider_entry_sort); /* * Find the location of the entry and use the index to pack the display * group widget. */ for (i = 0; i < self->providers->len; i++) { ProviderEntry *ptr; ptr = g_ptr_array_index (self->providers, i); if (ptr->provider == provider) { gtk_container_add_with_properties (GTK_CONTAINER (self), GTK_WIDGET (entry->group), "position", i, NULL); break; } } }