Esempio n. 1
0
        static void FillDataStore(TransferDataStore store, IDataObject data)
        {
            store.DataRequestCallback = tdt => {
                var di = tdt.ToWpfDataFormat();
                if (data.GetDataPresent(di))
                {
                    return(data.GetData(di));
                }
                return(null);
            };

            foreach (var item in data.GetFormats())
            {
                var format = item.ToXwtTransferType();
                if (format == TransferDataType.Text)
                {
                    store.AddText((string)data.GetData(item));
                }
                else if (format == TransferDataType.Uri)
                {
                    var value = data.GetData(item);
                    var uris  = ((string[])value).Select(f => new Uri(f)).ToArray();
                    store.AddUris(uris);
                }
                else
                {
                    store.AddValue(format, (object)null);
                }
            }
        }
Esempio n. 2
0
        static bool PerformDragOperation(IntPtr sender, IntPtr sel, IntPtr dragInfo)
        {
            IViewObject <T> ob = Runtime.GetNSObject(sender) as IViewObject <T>;

            if (ob == null)
            {
                return(false);
            }

            var backend = (ViewBackend <T, S>)WidgetRegistry.GetBackend(ob.Frontend);

            NSDraggingInfo di  = new NSDraggingInfo(dragInfo);
            var            pos = new Point(di.DraggingLocation.X, di.DraggingLocation.Y);

            if ((backend.currentEvents & WidgetEvent.DragDrop) != 0)
            {
                TransferDataStore store = new TransferDataStore();
                FillDataStore(store, di.DraggingPasteboard, ob.View.RegisteredDragTypes());
                var args = new DragEventArgs(pos, store, ConvertAction(di.DraggingSourceOperationMask));
                Toolkit.Invoke(delegate {
                    backend.eventSink.OnDragDrop(args);
                });
                return(args.Success);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 3
0
        public static bool GetSelectionData(Gtk.SelectionData data, TransferDataStore target)
        {
            TransferDataType type = Util.AtomToType(data.Target.Name);

            if (type == null || data.Length <= 0)
            {
                return(false);
            }

            if (type == TransferDataType.Text)
            {
                target.AddText(data.Text);
            }
            else if (data.TargetsIncludeImage(false))
            {
                target.AddImage(WidgetRegistry.CreateFrontend <Xwt.Drawing.Image> (data.Pixbuf));
            }
            else if (type == TransferDataType.Uri)
            {
                var uris = System.Text.Encoding.UTF8.GetString(data.Data).Split('\n').Where(u => !string.IsNullOrEmpty(u)).Select(u => new Uri(u)).ToArray();
                target.AddUris(uris);
            }
            else
            {
                target.AddValue(type, data.Data);
            }
            return(true);
        }
Esempio n. 4
0
 void QueryDragData(Gdk.DragContext ctx, uint time, bool isMotionEvent)
 {
     dragDataForMotion = isMotionEvent;
     dragData          = new TransferDataStore();
     dragDataRequests  = validDropTypes.Length;
     foreach (var t in validDropTypes)
     {
         var at = Gdk.Atom.Intern(t.Target, true);
         Gtk.Drag.GetData(Widget, ctx, at, time);
     }
 }
Esempio n. 5
0
        static NSDragOperation DraggingUpdated(IntPtr sender, IntPtr sel, IntPtr dragInfo)
        {
            IViewObject <T> ob = Runtime.GetNSObject(sender) as IViewObject <T>;

            if (ob == null)
            {
                return(NSDragOperation.None);
            }
            var backend = (ViewBackend <T, S>)WidgetRegistry.GetBackend(ob.Frontend);

            NSDraggingInfo di    = new NSDraggingInfo(dragInfo);
            var            types = di.DraggingPasteboard.Types.Select(t => ToXwtDragType(t)).ToArray();
            var            pos   = new Point(di.DraggingLocation.X, di.DraggingLocation.Y);

            if ((backend.currentEvents & WidgetEvent.DragOverCheck) != 0)
            {
                var args = new DragOverCheckEventArgs(pos, types, ConvertAction(di.DraggingSourceOperationMask));
                Toolkit.Invoke(delegate {
                    backend.eventSink.OnDragOverCheck(args);
                });
                if (args.AllowedAction == DragDropAction.None)
                {
                    return(NSDragOperation.None);
                }
                if (args.AllowedAction != DragDropAction.Default)
                {
                    return(ConvertAction(args.AllowedAction));
                }
            }

            if ((backend.currentEvents & WidgetEvent.DragOver) != 0)
            {
                TransferDataStore store = new TransferDataStore();
                FillDataStore(store, di.DraggingPasteboard, ob.View.RegisteredDragTypes());
                var args = new DragOverEventArgs(pos, store, ConvertAction(di.DraggingSourceOperationMask));
                Toolkit.Invoke(delegate {
                    backend.eventSink.OnDragOver(args);
                });
                if (args.AllowedAction == DragDropAction.None)
                {
                    return(NSDragOperation.None);
                }
                if (args.AllowedAction != DragDropAction.Default)
                {
                    return(ConvertAction(args.AllowedAction));
                }
            }

            return(di.DraggingSourceOperationMask);
        }
Esempio n. 6
0
        void WidgetDropHandler(object sender, System.Windows.DragEventArgs e)
        {
            // Do a DragOverCheck before proceeding to the drop. This is required since in some cases the DragOver
            // handler may not be called.
            CheckDrop(sender, e);
            if (e.Effects == DragDropEffects.None)
            {
                return;
            }

            WidgetDragLeaveHandler(sender, e);

            var types        = e.Data.GetFormats().Select(DataConverter.ToXwtTransferType).ToArray();
            var pos          = e.GetPosition(Widget).ToXwtPoint();
            var actualEffect = currentDragEffect;

            e.Handled = true;             // Prevent default handlers from being used.
            e.Effects = DragDropEffects.None;

            if ((enabledEvents & WidgetEvent.DragDropCheck) > 0)
            {
                var  checkArgs = new DragCheckEventArgs(pos, types, actualEffect.ToXwtDropAction());
                bool res       = Context.InvokeUserCode(delegate {
                    eventSink.OnDragDropCheck(checkArgs);
                });

                if (checkArgs.Result == DragDropResult.Canceled || !res)
                {
                    e.Effects = DragDropEffects.None;
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragDrop) > 0)
            {
                var store = new TransferDataStore();
                FillDataStore(store, e.Data);                  //, DragDropInfo.TargetTypes);

                var args = new DragEventArgs(pos, store, actualEffect.ToXwtDropAction());
                Context.InvokeUserCode(delegate {
                    eventSink.OnDragDrop(args);
                });

                if (args.Success)
                {
                    e.Effects = actualEffect;
                }
            }
        }
Esempio n. 7
0
        public object GetData(TransferDataType type)
        {
            if (type == TransferDataType.Text)
                return clipboard.WaitForText ();
            if (type == TransferDataType.Text)
                return clipboard.WaitForImage ();

            TransferDataStore store = new TransferDataStore ();

            foreach (var at in GetAtomsForType (type)) {
                var data = clipboard.WaitForContents (at);
                Util.GetSelectionData (data, store);
            }
            return ((ITransferData)store).GetValue (type);
        }
Esempio n. 8
0
        void CheckDrop(object sender, System.Windows.DragEventArgs e)
        {
            var types          = e.Data.GetFormats().Select(DataConverter.ToXwtTransferType).ToArray();
            var pos            = e.GetPosition(Widget).ToXwtPoint();
            var proposedAction = DetectDragAction(e.KeyStates);

            e.Handled = true;             // Prevent default handlers from being used.

            if ((enabledEvents & WidgetEvent.DragOverCheck) > 0)
            {
                var checkArgs = new DragOverCheckEventArgs(pos, types, proposedAction);
                Context.InvokeUserCode(delegate {
                    eventSink.OnDragOverCheck(checkArgs);
                });
                if (checkArgs.AllowedAction == DragDropAction.None)
                {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (checkArgs.AllowedAction != DragDropAction.Default)
                {
                    e.Effects = currentDragEffect = checkArgs.AllowedAction.ToWpfDropEffect();
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragOver) > 0)
            {
                var store = new TransferDataStore();
                FillDataStore(store, e.Data);                  //, DragDropInfo.TargetTypes);

                var args = new DragOverEventArgs(pos, store, proposedAction);
                OnDragOver(sender, args);
                if (args.AllowedAction == DragDropAction.None)
                {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (args.AllowedAction != DragDropAction.Default)
                {
                    e.Effects = currentDragEffect = args.AllowedAction.ToWpfDropEffect();
                    return;
                }
            }

            e.Effects = currentDragEffect = proposedAction.ToWpfDropEffect();
        }
Esempio n. 9
0
File: Util.cs Progetto: chkn/xwt
        public static bool GetSelectionData(Gtk.SelectionData data, TransferDataStore target)
        {
            TransferDataType type = Util.AtomToType (data.Target.Name);
            if (type == null || data.Length <= 0)
                return false;

            if (type == TransferDataType.Text)
                target.AddText (data.Text);
            else if (data.TargetsIncludeImage (false))
                target.AddImage (WidgetRegistry.CreateFrontend<Xwt.Drawing.Image> (data.Pixbuf));
            else if (type == TransferDataType.Uri) {
                var uris = System.Text.Encoding.UTF8.GetString (data.Data).Split ('\n').Where (u => !string.IsNullOrEmpty(u)).Select (u => new Uri (u)).ToArray ();
                target.AddUris (uris);
            }
            else
                target.AddValue (type, data.Data);
            return true;
        }
Esempio n. 10
0
        public override object GetData(TransferDataType type)
        {
            if (type == TransferDataType.Text)
            {
                return(clipboard.WaitForText());
            }
            if (type == TransferDataType.Image)
            {
                return(ApplicationContext.Toolkit.WrapImage(new GtkImage(clipboard.WaitForImage())));
            }

            TransferDataStore store = new TransferDataStore();

            foreach (var at in GetAtomsForType(type))
            {
                var data = clipboard.WaitForContents(at);
                Util.GetSelectionData(ApplicationContext, data, store);
            }
            return(((ITransferData)store).GetValue(type));
        }
Esempio n. 11
0
        public object GetData(TransferDataType type)
        {
            if (type == TransferDataType.Text)
            {
                return(clipboard.WaitForText());
            }
            if (type == TransferDataType.Text)
            {
                return(clipboard.WaitForImage());
            }

            TransferDataStore store = new TransferDataStore();

            foreach (var at in GetAtomsForType(type))
            {
                var data = clipboard.WaitForContents(at);
                Util.GetSelectionData(data, store);
            }
            return(((ITransferData)store).GetValue(type));
        }
Esempio n. 12
0
        void WidgetDropHandler(object sender, System.Windows.DragEventArgs e)
        {
            WidgetDragLeaveHandler(sender, e);

            var types        = e.Data.GetFormats().Select(t => t.ToXwtTransferType()).ToArray();
            var pos          = e.GetPosition(Widget).ToXwtPoint();
            var actualEffect = currentDragEffect;

            e.Handled = true;             // Prevent default handlers from being used.
            e.Effects = DragDropEffects.None;

            if ((enabledEvents & WidgetEvent.DragDropCheck) > 0)
            {
                var  checkArgs = new DragCheckEventArgs(pos, types, actualEffect.ToXwtDropAction());
                bool res       = Context.InvokeUserCode(delegate {
                    eventSink.OnDragDropCheck(checkArgs);
                });

                if (checkArgs.Result == DragDropResult.Canceled || !res)
                {
                    e.Effects = DragDropEffects.None;
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragDrop) > 0)
            {
                var store = new TransferDataStore();
                FillDataStore(store, e.Data, DragDropInfo.TargetTypes);

                var args = new DragEventArgs(pos, store, actualEffect.ToXwtDropAction());
                Context.InvokeUserCode(delegate {
                    eventSink.OnDragDrop(args);
                });

                if (args.Success)
                {
                    e.Effects = actualEffect;
                }
            }
        }
Esempio n. 13
0
        void DataReceived(Gtk.Clipboard cb, Gtk.SelectionData data)
        {
            TransferDataStore store = new TransferDataStore();

            if (Util.GetSelectionData(data, store))
            {
                Result = ((ITransferData)store).GetValue(type);
                SetComplete();
            }
            else
            {
                if (++index < atoms.Length)
                {
                    RequestData();
                }
                else
                {
                    SetComplete();
                }
            }
        }
Esempio n. 14
0
 static void FillDataStore(TransferDataStore store, NSPasteboard pb, string[] types)
 {
     foreach (var t in types)
     {
         if (!pb.Types.Contains(t))
         {
             continue;
         }
         if (t == NSPasteboard.NSStringType)
         {
             store.AddText(pb.GetStringForType(t));
         }
         else if (t == NSPasteboard.NSFilenamesType)
         {
             string      data = pb.GetStringForType(t);
             XmlDocument doc  = new XmlDocument();
             doc.XmlResolver = null;                     // Avoid DTD validation
             doc.LoadXml(data);
             store.AddUris(doc.SelectNodes("/plist/array/string").Cast <XmlElement> ().Select(e => new Uri(e.InnerText)).ToArray());
         }
     }
 }
Esempio n. 15
0
        static void FillDataStore(TransferDataStore store, IDataObject data, TransferDataType [] types)
        {
            foreach (var type in types)
            {
                string format = type.ToWpfDataFormat();
                if (!data.GetDataPresent(format))
                {
                    // This is a workaround to support type names which don't include the assembly name.
                    // It eases integration with Windows DND.
                    format = NormalizeTypeName(format);
                    if (!data.GetDataPresent(format))
                    {
                        continue;
                    }
                }

                var value = data.GetData(format);
                if (type == TransferDataType.Text)
                {
                    store.AddText((string)value);
                }
                else if (type == TransferDataType.Uri)
                {
                    var uris = ((string [])value).Select(f => new Uri(f)).ToArray();
                    store.AddUris(uris);
                }
                else if (value is byte[])
                {
                    store.AddValue(type, (byte[])value);
                }
                else
                {
                    store.AddValue(type, value);
                }
            }
        }
Esempio n. 16
0
        static void FillDataStore(TransferDataStore store, IDataObject data, TransferDataType [] types)
        {
            foreach (var type in types) {
                string format = type.ToWpfDataFormat ();
                if (!data.GetDataPresent (format)) {
                    // This is a workaround to support type names which don't include the assembly name.
                    // It eases integration with Windows DND.
                    format = NormalizeTypeName (format);
                    if (!data.GetDataPresent (format))
                        continue;
                }

                var value = data.GetData (format);
                if (type == TransferDataType.Text)
                    store.AddText ((string)value);
                else if (type == TransferDataType.Uri) {
                    var uris = ((string [])value).Select (f => new Uri (f)).ToArray ();
                    store.AddUris (uris);
                } else if (value is byte[])
                    store.AddValue (type, (byte[]) value);
                else
                    store.AddValue (type, value);
            }
        }
Esempio n. 17
0
        void WidgetDragOverHandler(object sender, System.Windows.DragEventArgs e)
        {
            var types          = e.Data.GetFormats().Select(t => t.ToXwtTransferType()).ToArray();
            var pos            = e.GetPosition(Widget).ToXwtPoint();
            var proposedAction = DetectDragAction(e.KeyStates);

            e.Handled = true;             // Prevent default handlers from being used.

            if (Adorner != null)
            {
                var w = GetParentWindow();
                var v = (UIElement)w.Content;

                if (w != AdornedWindow)
                {
                    AdornedLayer.Remove(Adorner);

                    AdornedWindow.AllowDrop = false;
                    AdornedWindow.DragOver -= AdornedWindowOnDragOver;

                    AdornedWindow           = w;
                    AdornedWindow.AllowDrop = true;
                    AdornedWindow.DragOver += AdornedWindowOnDragOver;

                    AdornedLayer = AdornerLayer.GetAdornerLayer(v);
                    AdornedLayer.Add(Adorner);
                }

                Adorner.Offset = e.GetPosition(v);
            }

            if ((enabledEvents & WidgetEvent.DragOverCheck) > 0)
            {
                var checkArgs = new DragOverCheckEventArgs(pos, types, proposedAction);
                Context.InvokeUserCode(delegate {
                    eventSink.OnDragOverCheck(checkArgs);
                });
                if (checkArgs.AllowedAction == DragDropAction.None)
                {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (checkArgs.AllowedAction != DragDropAction.Default)
                {
                    e.Effects = currentDragEffect = checkArgs.AllowedAction.ToWpfDropEffect();
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragOver) > 0)
            {
                var store = new TransferDataStore();
                FillDataStore(store, e.Data, DragDropInfo.TargetTypes);

                var args = new DragOverEventArgs(pos, store, proposedAction);
                OnDragOver(sender, args);
                if (args.AllowedAction == DragDropAction.None)
                {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (args.AllowedAction != DragDropAction.Default)
                {
                    e.Effects = currentDragEffect = args.AllowedAction.ToWpfDropEffect();
                    return;
                }
            }

            e.Effects = currentDragEffect = proposedAction.ToWpfDropEffect();
        }
Esempio n. 18
0
File: Util.cs Progetto: mono/xwt
        public static bool GetSelectionData(ApplicationContext context, Gtk.SelectionData data, TransferDataStore target)
        {
            TransferDataType type = Util.AtomToType (data.Target.Name);
            if (type == null || data.Length <= 0)
                return false;

            if (type == TransferDataType.Text)
                target.AddText (data.Text);
            else if (data.TargetsIncludeImage (false))
                target.AddImage (context.Toolkit.WrapImage (data.Pixbuf));
            else if (type == TransferDataType.Uri)
                target.AddUris (data.GetUris().Where(u => !string.IsNullOrEmpty(u)).Select(u => new Uri(u)).ToArray());
            else
                target.AddValue (type, data.Data);
            return true;
        }
Esempio n. 19
0
 void QueryDragData(Gdk.DragContext ctx, uint time, bool isMotionEvent)
 {
     dragDataForMotion = isMotionEvent;
     dragData = new TransferDataStore ();
     dragDataRequests = validDropTypes.Length;
     foreach (var t in validDropTypes) {
         var at = Gdk.Atom.Intern (t.Target, true);
         Gtk.Drag.GetData (Widget, ctx, at, time);
     }
 }
Esempio n. 20
0
        void CheckDrop(object sender, System.Windows.DragEventArgs e)
        {
            var types = e.Data.GetFormats ().Select (t => t.ToXwtTransferType ()).ToArray ();
            var pos = e.GetPosition (Widget).ToXwtPoint ();
            var proposedAction = DetectDragAction (e.KeyStates);

            e.Handled = true; // Prevent default handlers from being used.

            if ((enabledEvents & WidgetEvent.DragOverCheck) > 0) {
                var checkArgs = new DragOverCheckEventArgs (pos, types, proposedAction);
                Context.InvokeUserCode (delegate {
                    eventSink.OnDragOverCheck (checkArgs);
                });
                if (checkArgs.AllowedAction == DragDropAction.None) {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (checkArgs.AllowedAction != DragDropAction.Default) {
                    e.Effects = currentDragEffect = checkArgs.AllowedAction.ToWpfDropEffect ();
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragOver) > 0) {
                var store = new TransferDataStore ();
                FillDataStore (store, e.Data, DragDropInfo.TargetTypes);

                var args = new DragOverEventArgs (pos, store, proposedAction);
                OnDragOver (sender, args);
                if (args.AllowedAction == DragDropAction.None) {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (args.AllowedAction != DragDropAction.Default) {
                    e.Effects = currentDragEffect = args.AllowedAction.ToWpfDropEffect ();
                    return;
                }
            }

            e.Effects = currentDragEffect = proposedAction.ToWpfDropEffect ();
        }
Esempio n. 21
0
 public DragEventArgs(Point position, TransferDataStore dataStore, DragDropAction action)
 {
     Data = dataStore;
     Position = position;
     Action = action;
     Success = false;
 }
Esempio n. 22
0
		public override object GetData (TransferDataType type)
		{
			if (type == TransferDataType.Text)
				return clipboard.WaitForText ();
			if (type == TransferDataType.Image)
				return ApplicationContext.Toolkit.WrapImage (new GtkImage (clipboard.WaitForImage()));
			
			TransferDataStore store = new TransferDataStore ();
			
			foreach (var at in GetAtomsForType (type)) {
				var data = clipboard.WaitForContents (at);
				Util.GetSelectionData (ApplicationContext, data, store);
			}
			return ((ITransferData)store).GetValue (type);
		}
Esempio n. 23
0
        void WidgetDragOverHandler(object sender, System.Windows.DragEventArgs e)
        {
            var types = e.Data.GetFormats ().Select (t => t.ToXwtTransferType ()).ToArray ();
            var pos = e.GetPosition (Widget).ToXwtPoint ();
            var proposedAction = DetectDragAction (e.KeyStates);

            e.Handled = true; // Prevent default handlers from being used.

            if (Adorner != null) {
                var w = GetParentWindow ();
                var v = (UIElement)w.Content;

                if (w != AdornedWindow) {
                    AdornedLayer.Remove (Adorner);

                    AdornedWindow.AllowDrop = false;
                    AdornedWindow.DragOver -= AdornedWindowOnDragOver;

                    AdornedWindow = w;
                    AdornedWindow.AllowDrop = true;
                    AdornedWindow.DragOver += AdornedWindowOnDragOver;

                    AdornedLayer = AdornerLayer.GetAdornerLayer (v);
                    AdornedLayer.Add (Adorner);
                }

                Adorner.Offset = e.GetPosition (v);
            }

            if ((enabledEvents & WidgetEvent.DragOverCheck) > 0) {
                var checkArgs = new DragOverCheckEventArgs (pos, types, proposedAction);
                Context.InvokeUserCode (delegate {
                    eventSink.OnDragOverCheck (checkArgs);
                });
                if (checkArgs.AllowedAction == DragDropAction.None) {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (checkArgs.AllowedAction != DragDropAction.Default) {
                    e.Effects = currentDragEffect = checkArgs.AllowedAction.ToWpfDropEffect ();
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragOver) > 0) {
                var store = new TransferDataStore ();
                FillDataStore (store, e.Data, DragDropInfo.TargetTypes);

                var args = new DragOverEventArgs (pos, store, proposedAction);
                OnDragOver (sender, args);
                if (args.AllowedAction == DragDropAction.None) {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (args.AllowedAction != DragDropAction.Default) {
                    e.Effects = currentDragEffect = args.AllowedAction.ToWpfDropEffect ();
                    return;
                }
            }

            e.Effects = currentDragEffect = proposedAction.ToWpfDropEffect ();
        }
Esempio n. 24
0
        public static bool GetSelectionData(ApplicationContext context, Gtk.SelectionData data, TransferDataStore target)
        {
            TransferDataType type = Util.AtomToType(data.Target.Name);

            if (type == null || data.Length <= 0)
            {
                return(false);
            }

            if (type == TransferDataType.Text)
            {
                target.AddText(data.Text);
            }
            else if (data.TargetsIncludeImage(false))
            {
                target.AddImage(context.Toolkit.WrapImage(data.Pixbuf));
            }
            else if (type == TransferDataType.Uri)
            {
                target.AddUris(data.GetUris().Where(u => !string.IsNullOrEmpty(u)).Select(u => new Uri(u)).ToArray());
            }
            else
            {
                target.AddValue(type, data.Data);
            }
            return(true);
        }
Esempio n. 25
0
        static void FillDataStore(TransferDataStore store, IDataObject data, TransferDataType [] types)
        {
            foreach (var type in types) {
                string format = type.ToWpfDataFormat ();
                if (!data.GetDataPresent (format))
                    continue;

                var value = data.GetData (format);
                if (type == TransferDataType.Text)
                    store.AddText ((string)value);
                else if (type == TransferDataType.Uri) {
                    var uris = ((string [])value).Select (f => new Uri (f)).ToArray ();
                    store.AddUris (uris);
                } else if (value is byte[])
                    store.AddValue (type, (byte[]) value);
                else
                    store.AddValue (type, value);
            }
        }
Esempio n. 26
0
        void WidgetDropHandler(object sender, System.Windows.DragEventArgs e)
        {
            WidgetDragLeaveHandler (sender, e);

            var types = e.Data.GetFormats ().Select (t => t.ToXwtTransferType ()).ToArray ();
            var pos = e.GetPosition (Widget).ToXwtPoint ();
            var actualEffect = currentDragEffect;

            e.Handled = true; // Prevent default handlers from being used.
            e.Effects = DragDropEffects.None;

            if ((enabledEvents & WidgetEvent.DragDropCheck) > 0) {
                var checkArgs = new DragCheckEventArgs (pos, types, actualEffect.ToXwtDropAction ());
                bool res = Context.InvokeUserCode (delegate {
                    eventSink.OnDragDropCheck (checkArgs);
                });

                if (checkArgs.Result == DragDropResult.Canceled || !res) {
                    e.Effects = DragDropEffects.None;
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragDrop) > 0) {
                var store = new TransferDataStore ();
                FillDataStore (store, e.Data, DragDropInfo.TargetTypes);

                var args = new DragEventArgs (pos, store, actualEffect.ToXwtDropAction ());
                Context.InvokeUserCode (delegate {
                    eventSink.OnDragDrop (args);
                });

                if (args.Success)
                    e.Effects = actualEffect;
            }
        }
Esempio n. 27
0
		void DataReceived (Gtk.Clipboard cb, Gtk.SelectionData data)
		{
			TransferDataStore store = new TransferDataStore ();
			if (Util.GetSelectionData (context, data, store)) {
				Result = ((ITransferData)store).GetValue (type);
				SetComplete ();
			} else {
				if (++index < atoms.Length)
					RequestData ();
				else
					SetComplete ();
			}
		}