コード例 #1
0
ファイル: ExperimentCanvasPad.cs プロジェクト: thbin/TraceLab
        /// <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);
        }