class Gdk::ContentProvider


A Gdk::ContentProvider is used to provide content for the clipboard or for drag-and-drop operations in a number of formats.

To create a Gdk::ContentProvider, use Gdk::ContentProvider#new_for_value or Gdk::ContentProvider#new_for_bytes.

GDK knows how to handle common text and image formats out-of-the-box. See Gdk::ContentSerializer and Gdk::ContentDeserializer if you want to add support for application-specific data formats.

Defined in:



Class Method Summary

Instance Method Summary

Instance methods inherited from class GObject::Object

bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding bind_property, bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding bind_property_full, data(key : String) : Pointer(Void)? data, finalize finalize, freeze_notify : Nil freeze_notify, getv(names : Enumerable(String), values : Enumerable(_)) : Nil getv, notify(property_name : String) : Nil notify, notify_by_pspec(pspec : GObject::ParamSpec) : Nil notify_by_pspec, notify_signal notify_signal, property(property_name : String, value : _) : Nil property, qdata(quark : UInt32) : Pointer(Void)? qdata, ref_count : UInt32 ref_count, run_dispose : Nil run_dispose, set_data(key : String, data : Pointer(Void)?) : Nil set_data, set_property(property_name : String, value : _) : Nil set_property, steal_data(key : String) : Pointer(Void)? steal_data, steal_qdata(quark : UInt32) : Pointer(Void)? steal_qdata, thaw_notify : Nil thaw_notify, to_unsafe : Pointer(Void) to_unsafe, watch_closure(closure : GObject::Closure) : Nil watch_closure

Constructor methods inherited from class GObject::Object

cast(obj : GObject::Object) : self cast, cast?(obj : GObject::Object) : self? cast?, new(pointer : Pointer(Void), transfer : GICrystal::Transfer)
, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv

Class methods inherited from class GObject::Object

compat_control(what : UInt64, data : Pointer(Void)?) : UInt64 compat_control, g_type : UInt64 g_type, interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec interface_find_property, interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec) interface_list_properties

Constructor Detail

def #

Initialize a new ContentProvider.

def*, formats : Gdk::ContentFormats? = nil, storable_formats : Gdk::ContentFormats? = nil) #

def self.new_for_bytes(mime_type : String, bytes : GLib::Bytes) : self #

Create a content provider that provides the given @bytes as data for the given @mime_type.

def self.new_for_value(value : _) : self #

Create a content provider that provides the given @value.

def self.new_union(providers : Enumerable(Gdk::ContentProvider)?) : self #

Creates a content provider that represents all the given @providers.

Whenever data needs to be written, the union provider will try the given @providers in the given order and the first one supporting a format will be chosen to provide it.

This allows an easy way to support providing data in different formats. For example, an image may be provided by its file and by the image contents with a call such as

WARNING ⚠️ The following code is in c ⚠️

gdk_content_provider_new_union ((Gdk::ContentProvider *[2]) {
                                  gdk_content_provider_new_typed (G_TYPE_FILE, file),
                                  gdk_content_provider_new_typed (G_TYPE_TEXTURE, texture)
                                }, 2);

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.

def self.new_union(*providers : Gdk::ContentProvider) #

Instance Method Detail

def content_changed : Nil #

Emits the ::content-changed signal.

def content_changed_signal #

def formats : Gdk::ContentFormats? #

def ref_formats : Gdk::ContentFormats #

Gets the formats that the provider can provide its current contents in.

def ref_storable_formats : Gdk::ContentFormats #

Gets the formats that the provider suggests other applications to store the data in.

An example of such an application would be a clipboard manager.

This can be assumed to be a subset of Gdk::ContentProvider#ref_formats.

def storable_formats : Gdk::ContentFormats? #

def value : GObject::Value #

Gets the contents of @provider stored in @value.

The @value will have been initialized to the GType the value should be provided in. This given GType does not need to be listed in the formats returned by Gdk::ContentProvider#ref_formats. However, if the given GType is not supported, this operation can fail and G_IO_ERROR_NOT_SUPPORTED will be reported.

def write_mime_type_async(mime_type : String, stream : Gio::OutputStream, io_priority : Int32, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil #

Asynchronously writes the contents of @provider to @stream in the given @mime_type.

When the operation is finished @callback will be called. You must then call Gdk::ContentProvider#write_mime_type_finish to get the result of the operation.

The given mime type does not need to be listed in the formats returned by Gdk::ContentProvider#ref_formats. However, if the given GType is not supported, G_IO_ERROR_NOT_SUPPORTED will be reported.

The given @stream will not be closed.

def write_mime_type_finish(result : Gio::AsyncResult) : Bool #

Finishes an asynchronous write operation.

See Gdk::ContentProvider#write_mime_type_async.