示例#1
0
        public bool Copy(bool run = true)
        {
            if (_selectedShapes.Count == 0)
            {
                return(false);
            }
            if (run)
            {
                var buf  = SerializeSelected();
                var data = new DataObject();

                data.SetData("DiagramDocument", buf.ToArray());

                var sortedShapes = _selectedShapes.OrderBy(s =>
                {
                    var c = s.BBox.Center();
                    return(c.Y + c.X / 10);
                });
                var text = StringExt.Join("\n\n", sortedShapes
                                          .Select(s => s.PlainText()).Where(t => !string.IsNullOrEmpty(t)));
                if (!string.IsNullOrEmpty(text))
                {
                    data.SetText(text);
                }

                // Crazy Clipboard deletes data by default on app exit!
                // need 'true' parameter to prevent loss of data on exit
                Clipboard.SetDataObject(data, true);
            }
            return(true);
        }