/// <summary> /// Handles the drag data received. /// See the EnableDrag and HandleDragDataGet in the ComponentLibraryPad where the drag /// has started and drag source is set /// </summary> /// <param name='o'> /// O. /// </param> /// <param name='args'> /// Arguments. /// </param> private void HandleDragDataReceived(object o, DragDataReceivedArgs args) { Widget source = Drag.GetSourceWidget(args.Context); TreeView treeView = source as TreeView; TreeIter selectedItem; if (treeView != null && treeView.Selection.GetSelected(out selectedItem)) { ComponentsLibraryNode selectedNode = treeView.Model.GetValue(selectedItem, 0) as ComponentsLibraryNode; Cairo.PointD translation = m_experimentCanvasWidget.ExperimentCanvas.View.ViewToDrawing(args.X, args.Y); ExperimentNode node = m_applicationViewModel.Experiment.AddComponentFromDefinition(selectedNode.Data, translation.X, translation.Y); m_experimentDrawer.DrawComponent(node, true); } Drag.Finish(args.Context, true, false, args.Time); }