Beispiel #1
0
            public AvnDragDropEffects DragEvent(AvnDragEventType type, AvnPoint position,
                                                AvnInputModifiers modifiers,
                                                AvnDragDropEffects effects,
                                                IAvnClipboard clipboard, IntPtr dataObjectHandle)
            {
                var device = AvaloniaLocator.Current.GetService <IDragDropDevice>();

                IDataObject dataObject = null;

                if (dataObjectHandle != IntPtr.Zero)
                {
                    dataObject = GCHandle.FromIntPtr(dataObjectHandle).Target as IDataObject;
                }

                using (var clipboardDataObject = new ClipboardDataObject(clipboard))
                {
                    if (dataObject == null)
                    {
                        dataObject = clipboardDataObject;
                    }

                    var args = new RawDragEvent(device, (RawDragEventType)type,
                                                _parent._inputRoot, position.ToAvaloniaPoint(), dataObject, (DragDropEffects)effects,
                                                (RawInputModifiers)modifiers);
                    _parent.Input(args);
                    return((AvnDragDropEffects)args.Effects);
                }
            }
Beispiel #2
0
        public ClipboardEntryLogic(Image ico)
        {
            _icoAppFrom = (Image)ico.Clone();

            ClipboardDataObject = Clipboard.GetDataObject();
            _svFormats          = ClipboardDataObject.GetFormats(true);
            if (_svFormats == null || _svFormats.Length == 0)
            {
                Thread.Sleep(100);
                ClipboardDataObject = Clipboard.GetDataObject();
                _svFormats          = ClipboardDataObject.GetFormats(true);
            }

            _desc = "[Clipboard data is not RTF or ASCII Text]";
            if (ClipboardDataObject.GetDataPresent(DataFormats.Rtf.ToString()))             // Clipboard.ContainsText(TextDataFormat.Rtf) )
            {
                _dataType    = DataFormats.Rtf;
                _data        = ClipboardDataObject.GetData(DataFormats.Rtf.ToString());         // Clipboard.GetText(TextDataFormat.Rtf);
                _icoItemType = 2;

                m_RtfBox.Rtf = (string)_data;
                _desc        = m_RtfBox.Text;
                if (_desc.Trim().Length == 0)
                {
                    _desc = "--Rtf Binary--";
                }

                //if there is 'international' string that cannot be translated
                if (_desc.IndexOf("???") >= 0 && ClipboardDataObject.GetDataPresent(DataFormats.UnicodeText.ToString()))
                {
                    UnicodeTextInit(ClipboardDataObject);
                }
            }                                                                                //end if
            else if (ClipboardDataObject.GetDataPresent(DataFormats.UnicodeText.ToString())) //Clipboard.ContainsText(TextDataFormat.UnicodeText) )
            {
                UnicodeTextInit(ClipboardDataObject);
            }                                                                         //end else if
            else if (ClipboardDataObject.GetDataPresent(DataFormats.Text.ToString())) // Clipboard.ContainsText(TextDataFormat.Text) )
            {
                _dataType    = DataFormats.Text;
                _data        = ClipboardDataObject.GetData(DataFormats.Text.ToString());         //  Clipboard.GetText(TextDataFormat.Text);
                _icoItemType = 0;

                _desc = (string)_data;
            }                                                                           //end else if
            else if (ClipboardDataObject.GetDataPresent(DataFormats.Bitmap.ToString())) //  Clipboard.ContainsImage() )
            {
                _dataType    = DataFormats.Bitmap;
                _data        = ClipboardDataObject.GetData(_dataType);         // Clipboard.GetImage();
                _icoItemType = 3;

                Image bmp = (Image)_data;
                if (bmp != null)
                {
                    _desc = "Bitmap: " + bmp.Width + "x" + bmp.Height;
                }
                else
                {
                    _desc = "Bitmap: Unknown";
                }
            }                                                                             //end else if
            else if (ClipboardDataObject.GetDataPresent(DataFormats.FileDrop.ToString())) //  Clipboard.ContainsFileDropList() )
            {
                DropEffect flag = DropEffect.DROPEFFECT_NONE;
                //MemoryStream streamType = (MemoryStream)Clipboard.GetData("Preferred DropEffect");
                MemoryStream streamType = (MemoryStream)ClipboardDataObject.GetData("Preferred DropEffect");
                if (streamType != null)
                {
                    flag = (DropEffect)streamType.ReadByte();
                }

                bool move = flag.HasFlag(DropEffect.DROPEFFECT_MOVE);
                bool copy = flag.HasFlag(DropEffect.DROPEFFECT_COPY);

                _dataType = DataFormats.FileDrop;
                _data     = ClipboardDataObject.GetData(DataFormats.FileDrop.ToString());            // Clipboard.GetData(DataFormats.FileDrop);

                string[] svFiles = (string[])_data;
                _icoItemType = 4;
                if (copy)
                {
                    _icoItemType = svFiles.Length == 1 ? 6 : 8;
                }
                else if (move)
                {
                    _icoItemType = svFiles.Length == 1 ? 7 : 9;
                }

                _desc = FileDropListDesc(svFiles);
            }            //end else if
            else         //Unsupported format or empty
            {
                _data        = null;
                _icoItemType = 5;

                if (_svFormats.Length > 0)
                {
                    _desc = "--Unsupported format: " + _svFormats[0] + "--";
                }
                else
                {
                    _desc = "--Empty--";
                }

                System.Diagnostics.Trace.WriteLine(
                    "ClipboardEntry::constructor - Unsupported clipboard format",
                    "ClipboardEntry");
            }    //end else
        }        //end constructor