Ejemplo MonoDevelop: GtkDragAndDrop

Drag and drop en MonoDevelop

Hace tiempo estuve buscando pero no encontré documentación en español acerca del Drag And Drop (arrastrar y soltar) en Gtk-Sharp. Al final, consiente de los ejemplo que trae Gtk-Sharp no había encontrado uno que tratase el Drag And Drop, pero después de un tiempo lo volví a revisar y existe un ejemplo que esta en: /usr/share/gtk-sharp2-examples/TestDnd.cs (teniendo instalado Gtk-Sharp). La verdad es que me considero novato en el mundo de Mono y encontré que el ejemplo era demasiado complejo para mi asi que lo acorte, rescate las partes mas importantes del código y elimine lo no tan importante, lo adapte para que funcione en MonoDevelop. Si han leido mi blog sabrán de mi filosofía de los ejemplos, creo que estos deben ser cortos para explicar cosas esenciales.

En el ejemplo GtkDragAndDrop hay solo una ventana que contiene un botón con un label, para mostrar como se arrastra un botón a un label.

Lo mas importante:

Table table;

Label label;

Button button;

table = new Table (1, 2, false);

this.Add (table);

label = new Label (“Drop Here\n”);

// Prototipo: static void DestSet (Widget widget,

// DestDefaults flags, TargetEntry[] targets,

// Gdk.DragAction actions)

Gtk.Drag.DestSet (label, DestDefaults.All, target_table,

DragAction.Copy | DragAction.Move);

// Evento que recibe el boton “button”, para arrastrarlo hacia

// el label “label”

label.DragDataReceived += new DragDataReceivedHandler

(HandleLabelDragDataReceived);

// Posicionar a “label”

table.Attach (label, 0, 1, 0, 1, AttachOptions.Expand |

AttachOptions.Fill, AttachOptions.Expand |

AttachOptions.Fill, 0, 0);

button = new Button (“Drag Here\n”);

// Prototipo: SourceSet(Widget, Gdk.ModifierType, TargetEntry[], Gdk.DragAction)

Gtk.Drag.SourceSet (button, Gdk.ModifierType.Button1Mask |

Gdk.ModifierType.Button3Mask, Table table;

Label label;

Button button;

table = new Table (1, 2, false);

this.Add (table);

label = new Label (“Drop Here\n”);

// Prototipo: static void DestSet (Widget widget,

// DestDefaults flags, TargetEntry[] targets,

// Gdk.DragAction actions)

Gtk.Drag.DestSet (label, DestDefaults.All, target_table,

DragAction.Copy | DragAction.Move);

// Evento que recibe el boton “button”, para arrastrarlo hacia

// el label “label”

label.DragDataReceived += new DragDataReceivedHandler

(HandleLabelDragDataReceived);

// Posicionar a “label”

table.Attach (label, 0, 1, 0, 1, AttachOptions.Expand |

AttachOptions.Fill, AttachOptions.Expand |

AttachOptions.Fill, 0, 0);

button = new Button (“Drag Here\n”);

// Prototipo: SourceSet(Widget, Gdk.ModifierType, TargetEntry[], Gdk.DragAction)

Gtk.Drag.SourceSet (button, Gdk.ModifierType.Button1Mask |

Gdk.ModifierType.Button3Mask,

target_table, DragAction.Copy | DragAction.Move);

// Posiciona a “buton”

table.Attach (button, 0, 1, 1, 2,

AttachOptions.Expand | AttachOptions.Fill,

AttachOptions.Expand | AttachOptions.Fill, 0, 0);

// Conecta el evento que envia un dato desde “button”

button.DragDataGet += new DragDataGetHandler (HandleSourceDragDataGet);

this.ShowAll();

Build ();

target_table, DragAction.Copy | DragAction.Move);

// Posiciona a “buton”

table.Attach (button, 0, 1, 1, 2,

AttachOptions.Expand | AttachOptions.Fill,

AttachOptions.Expand | AttachOptions.Fill, 0, 0);

// Conecta el evento que envia un dato desde “button”

button.DragDataGet += new DragDataGetHandler (HandleSourceDragDataGet);

this.ShowAll();

Build ();

Acá el ejemplo de GtkDragAndDrop y el de tesdnd que viene con los ejemplos de Gtk-Sharp

GtkDragAndDrop
TestDnd
This entry was posted in Todos and tagged , , by Matías Muñoz Espinoza. Bookmark the permalink.

About Matías Muñoz Espinoza

Mi nombre es Matías Muñoz Espinoza, vivo en Chile. Este blog trata de temas de reflexión y pensar. También me gusta la informática, pero para eso tengo una web con algunos amigos http://elementalcode.net en la cual me dedico a la creación de videos tutoriales y algunos artículos relacionados con informática en general.

2 thoughts on “Ejemplo MonoDevelop: GtkDragAndDrop

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s