Пример #1
0
        internal static void Store(NSPasteboard pboard, object data, int id)
        {
            if (id == 0)
            {
                pboard.ClearContents();
                managed.Clear();
                providers.Clear();
                return;
            }
            if (data == null)
            {
                return;
            }

            var name = DataFormats.GetFormat(id)?.Name ?? String.Empty;

            if (name == Clipboard.IDataObjectFormat)
            {
                managed[name] = data;

                var provider = new DataObjectProvider((IDataObject)data);
                var item     = new NSPasteboardItem();
                item.SetDataProviderForTypes(provider, provider.Types);
                pboard.WriteObject(item);
                providers.Add(provider);

                // Set flag that clipboard contains our data
                // Do it as the last step, to avoid fooling the FileMaker (and possibly other apps).
                pboard.SetStringForType(name, name);
            }
        }
        public static void SetDataObject(object data, bool copy)
        {
            if (data is DataObject dataObject)
            {
                pasteboard.ClearContents();

                foreach (var item in dataObject.Items)
                {
                    switch (item.Data)
                    {
                    case string stringData:
                        pasteboard.SetStringForType(
                            stringData,
                            item.Format);
                        break;

                    case bool boolItem:
                        pasteboard.SetDataForType(
                            NSData.FromArray(new byte[] { boolItem ? (byte)1 : (byte)0 }),
                            item.Format);
                        break;
                    }
                }
            }
        }
Пример #3
0
        partial void OnButtonCopy(Foundation.NSObject sender)
        {
            NSPasteboard pb = NSPasteboard.GeneralPasteboard;

            pb.DeclareTypes(new string [] { NSPasteboard.NSStringType }, null);
            pb.SetStringForType(GuiGeneratedEmailField.StringValue, NSPasteboard.NSStringType);
        }
Пример #4
0
        // copy a string to the pasteboard
        public static void CopyString(string text)
        {
            if (text != null)
            {
                NSPasteboard clipboard = NSPasteboard.GeneralPasteboard;
                string[]     types     = { "NSStringPboardType" };

                clipboard.DeclareTypes(types, null);
                clipboard.SetStringForType(text, types[0]);
            }
        }
Пример #5
0
        public void WriteToPasteBoard(NSPasteboard pb)
        {
            // Copy data to the pasteboard
            pb.ClearContents();
            pb.DeclareTypes(pboardTypes, null);
            pb.SetStringForType(mLetter, pboardTypes[0]);
            CGRect r    = this.Bounds;
            NSData data = this.DataWithPdfInsideRect(r);

            pb.SetDataForType(data, pboardTypes[1]);
        }
Пример #6
0
 void InitPasteboard(NSPasteboard pb, TransferDataSource data)
 {
     pb.ClearContents();
     foreach (var t in data.DataTypes)
     {
         if (t == TransferDataType.Text)
         {
             pb.AddTypes(new string[] { NSPasteboard.NSStringType }, null);
             pb.SetStringForType((string)data.GetValue(t), NSPasteboard.NSStringType);
         }
     }
 }
Пример #7
0
        public void Copy(string data)
        {
            NSPasteboard glob = NSPasteboard.GeneralPasteboard;

            NSMutableArray types = new NSMutableArray();

            types.Add(NSPasteboard.NSStringPboardType);

            glob.DeclareTypesOwner(types, null);

            glob.SetStringForType(data, NSPasteboard.NSStringPboardType);
        }
Пример #8
0
        /// <summary>
        /// Copies to clipboard selected item password.
        /// </summary>
        private void CopyToClipboardSelectedItemPassword()
        {
            EntriesDataSource ds       = (EntriesTableView.DataSource as EntriesDataSource);
            EntryModel        selected = ds.Items[EntriesTableView.SelectedRow];

            string passwordToCopy = selected.Password;

            NSPasteboard pasteBoard = NSPasteboard.GeneralPasteboard;

            pasteBoard.DeclareTypes(new string[] { NSPasteboard.NSStringType }, null);
            pasteBoard.SetStringForType(passwordToCopy, NSPasteboard.NSStringType);

            //Console.WriteLine("Pasted: " + pasteBoard.GetStringForType(NSPasteboard.NSStringType));
        }
        partial void OnCopy(Foundation.NSObject sender)
        {
            int row = (int)GuiTableEmails.SelectedRow;

            if (row < 0)
            {
                return;
            }

            PrivateEmailInfo email = __Model.PrivateEmails [row];

            NSPasteboard pb = NSPasteboard.GeneralPasteboard;

            pb.DeclareTypes(new string [] { NSPasteboard.NSStringType }, null);
            pb.SetStringForType(email.Email, NSPasteboard.NSStringType);
        }
Пример #10
0
 private void CreateShare(Account account, string path)
 {
     GettProvider.Instance.CreateShare(
         "test1",
         account.AccessToken,
         path,
         (url) => {
         BeginInvokeOnMainThread(() => {
             // placing link into clipboard
             NSPasteboard pb = NSPasteboard.GeneralPasteboard;
             pb.DeclareTypes(new string[] { NSPasteboard.NSStringType }, null);
             pb.SetStringForType(url, NSPasteboard.NSStringType);
             Console.WriteLine("File will be available for download from {0}", url);
         });
     }
         );
 }
Пример #11
0
 public void WriteToPasteBoard(NSPasteboard pb)
 {
     // Copy data to the pasteboard
     pb.ClearContents();
     pb.DeclareTypes(pboardTypes, null);
     pb.SetStringForType(mLetter, pboardTypes[0]);
     CGRect r = this.Bounds;
     NSData data = this.DataWithPdfInsideRect(r);
     pb.SetDataForType(data, pboardTypes[1]);
 }
Пример #12
0
        private static async Task SetToNativeAsync(DataPackage content, NSPasteboard pasteboard)
        {
            if (pasteboard is null)
            {
                throw new ArgumentException(nameof(pasteboard));
            }

            var    data          = content?.GetView();
            var    declaredTypes = new List <string>();
            string?uri           = null;

            /* Note that order is somewhat important here.
             *
             * According to the docs:
             *    "types should be ordered according to the preference of the source application,
             *     with the most preferred type coming first"
             * https://developer.apple.com/documentation/appkit/nspasteboard/1533561-declaretypes?language=objc
             *
             * This means we want to process certain types like HTML/RTF before general plain text
             * as they are more specific.
             *
             * Types are also declared before setting
             */

            // Declare types
            if (data?.Contains(StandardDataFormats.Html) ?? false)
            {
                declaredTypes.Add(NSPasteboard.NSPasteboardTypeHTML);
            }

            if (data?.Contains(StandardDataFormats.Rtf) ?? false)
            {
                // Use `NSPasteboardTypeRTF` instead of `NSPasteboardTypeRTFD` for max compatibility
                declaredTypes.Add(NSPasteboard.NSPasteboardTypeRTF);
            }

            if (data?.Contains(StandardDataFormats.Text) ?? false)
            {
                declaredTypes.Add(NSPasteboard.NSPasteboardTypeString);
            }

            if (data != null)
            {
                uri = DataPackage.CombineUri(
                    data.Contains(StandardDataFormats.WebLink) ? (await data.GetWebLinkAsync()).ToString() : null,
                    data.Contains(StandardDataFormats.ApplicationLink) ? (await data.GetApplicationLinkAsync()).ToString() : null,
                    data.Contains(StandardDataFormats.Uri) ? (await data.GetUriAsync()).ToString() : null);

                if (string.IsNullOrEmpty(uri) == false)
                {
                    declaredTypes.Add(NSPasteboard.NSPasteboardTypeUrl);
                }
            }

            pasteboard.DeclareTypes(declaredTypes.ToArray(), null);

            // Set content
            if (data?.Contains(StandardDataFormats.Html) ?? false)
            {
                var html = await data.GetHtmlFormatAsync();

                pasteboard.SetStringForType(html ?? string.Empty, NSPasteboard.NSPasteboardTypeHTML);
            }

            if (data?.Contains(StandardDataFormats.Rtf) ?? false)
            {
                var rtf = await data.GetRtfAsync();

                pasteboard.SetStringForType(rtf ?? string.Empty, NSPasteboard.NSPasteboardTypeRTF);
            }

            if (data?.Contains(StandardDataFormats.Text) ?? false)
            {
                var text = await data.GetTextAsync();

                pasteboard.SetStringForType(text ?? string.Empty, NSPasteboard.NSPasteboardTypeString);
            }

            if (string.IsNullOrEmpty(uri) == false)
            {
                pasteboard.SetStringForType(uri !.ToString(), NSPasteboard.NSPasteboardTypeUrl);
            }

            return;
        }
Пример #13
0
 public override void Apply(NSPasteboard pasteboard, string type) => pasteboard.SetStringForType(Value, type);
Пример #14
0
        void ItemDropped(string item)
        {
            Console.WriteLine("Item dropped: {0}", item);

            //var provider = ProviderFactory.GetInstance();
            //if (provider.IsAuthenticated) {

            //}

            var provider = new FtpProvider();

            if (provider.Authenticated)
            {
                Console.WriteLine("Uploading...");
                provider.Upload(item, "asdf", (url) => {
                    Console.WriteLine("very nice => " + url);
                });
            }
            else
            {
                Console.WriteLine("authenticating...");
                var username = ConfigurationSettings.AppSettings["FtpUsername"];
                var password = ConfigurationSettings.AppSettings["FtpPassword"];
                provider.Authenticate(username, password, account => {
                    Console.WriteLine("cool. got: " + account);
                    var fileInfo = new System.IO.FileInfo(item);
                    provider.Upload(item, fileInfo.Name, (url) => {
                        Console.WriteLine("very nice => " + url);
                        BeginInvokeOnMainThread(() => {
                            // placing link into clipboard
                            NSPasteboard pb = NSPasteboard.GeneralPasteboard;
                            pb.DeclareTypes(new string[] { NSPasteboard.NSStringType }, null);
                            pb.SetStringForType(url, NSPasteboard.NSStringType);
                            Console.WriteLine("File will be available for download from {0}", url);

                            var sound = NSSound.FromName("Pop");
                            sound.Play();
                        });
                    });
                }, err => {
                    Console.WriteLine("not cool -- failed with: " + err);
                });
            }


            //if (Account.IsAuthenticated) {
            //	CreateShare(Account, item.Replace("file://localhost", "").Replace("%20", " "));
            //}
            //else {
            //	GettProvider.Instance.Authenticate(Account.Email, Account.Password, (account) => {
            //		// user is logged in

            //		// store retrieved access token for future requests
            //		Account.AccessToken = account.AccessToken;

            //		CreateShare(account, item.Replace("file://localhost", "").Replace("%20", " "));
            //	}, (error) => {
            //		// TODO: handle error message when uploading
            //		Console.WriteLine("Got an error: {0}", error);
            //	});
            //}
        }
Пример #15
0
        private static async Task SetToNativeAsync(DataPackage content, NSPasteboard pasteboard)
        {
            if (pasteboard is null)
            {
                throw new ArgumentException(nameof(pasteboard));
            }

            var data          = content?.GetView();
            var declaredTypes = new List <string>();

            // Note that order is somewhat important here.
            //
            // According to the docs:
            //    "types should be ordered according to the preference of the source application,
            //     with the most preferred type coming first"
            // https://developer.apple.com/documentation/appkit/nspasteboard/1533561-declaretypes?language=objc
            //
            // This means we want to process certain types like HTML/RTF before general plain text
            // as they are more specific.
            // Types are also declared before setting

            // Declare types
            if (data?.Contains(StandardDataFormats.Html) ?? false)
            {
                declaredTypes.Add(NSPasteboard.NSPasteboardTypeHTML);
            }

            if (data?.Contains(StandardDataFormats.Rtf) ?? false)
            {
                // Use `NSPasteboardTypeRTF` instead of `NSPasteboardTypeRTFD` for max compatiblity
                declaredTypes.Add(NSPasteboard.NSPasteboardTypeRTF);
            }

            if (data?.Contains(StandardDataFormats.Text) ?? false)
            {
                declaredTypes.Add(NSPasteboard.NSPasteboardTypeString);
            }

            pasteboard.DeclareTypes(declaredTypes.ToArray(), null);

            // Set content
            if (data?.Contains(StandardDataFormats.Html) ?? false)
            {
                var html = await data.GetHtmlFormatAsync();

                pasteboard.SetStringForType(html ?? string.Empty, NSPasteboard.NSPasteboardTypeHTML);
            }

            if (data?.Contains(StandardDataFormats.Rtf) ?? false)
            {
                var rtf = await data.GetRtfAsync();

                pasteboard.SetStringForType(rtf ?? string.Empty, NSPasteboard.NSPasteboardTypeRTF);
            }

            if (data?.Contains(StandardDataFormats.Text) ?? false)
            {
                var text = await data.GetTextAsync();

                pasteboard.SetStringForType(text ?? string.Empty, NSPasteboard.NSPasteboardTypeString);
            }
        }
Пример #16
0
 public override void Apply(NSPasteboard pasteboard, string type)
 {
     //pasteboard.DeclareTypes(new[] { type }, null);
     pasteboard.SetStringForType(Value, type);
 }