Exemplo n.º 1
0
        private void PasteNote(object obj)
        {
            Notebook notebook = obj as Notebook;

            if (notebook != null)
            {
                DataFormat format = DataFormats.GetDataFormat(typeof(NoteClipboardData).FullName);
                if (!Clipboard.ContainsData(format.Name))
                {
                    return;
                }

                NoteClipboardData data = Clipboard.GetData(format.Name) as NoteClipboardData;
                if (data != null)
                {
                    int  index = Hub.Instance.Storage.GetNoteCount(notebook);
                    Note note  = ViewModelLocator.Instance.NoteMenu.CreateNewNote(data.Name, notebook, false, index, data.Text);
                    if (data.Files != null && data.Files.Any())
                    {
                        foreach (ClipboardFile file in data.Files)
                        {
                            NoteFile nf = NoteFile.Create(file.Name, file.MimeType, file.Data, note);
                            note.Text = note.Text.Replace(file.FileName, nf.FileName);
                        }
                        note.Save();
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void Drop(IDropInfo dropInfo)
        {
            if (dropInfo.Data is NoteFile)
            {
                TextBox box = dropInfo.VisualTarget as TextBox;
                if (box != null)
                {
                    AddFilesToTextBox(box, dropInfo, new List <NoteFile> {
                        (NoteFile)dropInfo.Data
                    });
                }
            }
            else if (dropInfo.Data is DataObject)
            {
                DataObject dataObject = (DataObject)dropInfo.Data;
                if (dataObject.ContainsFileDropList())
                {
                    var             fileList     = dataObject.GetFileDropList();
                    List <NoteFile> createdFiles = new List <NoteFile>();
                    foreach (string filePath in fileList)
                    {
                        if (File.Exists(filePath))
                        {
                            FileInfo fi   = new FileInfo(filePath);
                            var      file = File.ReadAllBytes(filePath);

                            string ext = Path.GetExtension(filePath);
                            if (!string.IsNullOrWhiteSpace(ext))
                            {
                                ext = ext.ToLower();
                            }

                            string noteFileName = NoteFile.ProposeNoteFileName(fi.Name, Note);

                            string mime = MimeTypes.MimeTypeMap.GetMimeType(ext);
                            var    nf   = NoteFile.Create(noteFileName, mime, file, Note, ext);
                            createdFiles.Add(nf);
                        }
                    }
                    if (dropInfo.VisualTarget is TextBox)
                    {
                        AddFilesToTextBox((TextBox)dropInfo.VisualTarget, dropInfo, createdFiles);
                    }
                }
            }
        }
Exemplo n.º 3
0
        void MarkdownText_OnFilePasted(FileInfo fi)
        {
            byte[]   bytes = File.ReadAllBytes(fi.FullName);
            string   mime  = MimeType.GetMimeType(bytes);
            NoteFile nf    = NoteFile.Create(fi.Name, mime, bytes, EditedNote, fi.Extension);

            _newFiles.Add(nf);

            if (MimeType.IsImageExtension(fi.Extension))
            {
                InsertImage(nf, MdImageFormat);
            }
            else
            {
                MarkdownText.SelectedText = string.Format("[{0}](file:///{1})", nf.Name, nf.FullName);
            }
        }
Exemplo n.º 4
0
        private void AddImageAsFileToNote_OnClick(object sender, RoutedEventArgs e)
        {
            string mime = null;

            byte[] bytes = null;
            if (MarkdownText.SelectedText.StartsWith("data:image"))
            {
                string[] chunks = MarkdownText.SelectedText.Split(',');
                if (chunks.Length == 2)
                {
                    bytes = Convert.FromBase64String(chunks[1]);
                    mime  = chunks[0].Replace("data:", string.Empty).Replace(";base64", string.Empty);
                }
            }
            else
            {
                Uri uri;
                if (Uri.TryCreate(MarkdownText.SelectedText, UriKind.Absolute, out uri))
                {
                    try
                    {
                        WebClient webClient = new WebClient();
                        bytes = webClient.DownloadData(uri);
                        mime  = MimeType.GetMimeType(bytes);
                    }
                    catch (Exception)
                    {
                        // ignored
                    }
                }
            }

            if (bytes != null && bytes.Length > 0 && mime != null)
            {
                NoteFile nf = NoteFile.Create(null, mime, bytes, EditedNote);
                MarkdownText.SelectedText = nf.Name;

                _newFiles.Add(nf);
            }
            else
            {
                ShowMessage("Unable to load image.");
            }
        }
Exemplo n.º 5
0
        void MarkdownText_OnImagePasted(System.Drawing.Image image, string fileName)
        {
            if (image == null)
            {
                return;
            }

            using (var ms = new MemoryStream())
            {
                image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                byte[] bytes = ms.ToArray();
                string mime  = MimeType.GetMimeType(bytes);
                if (bytes.Length > 0 && mime != null)
                {
                    NoteFile nf = NoteFile.Create(fileName, mime, bytes, EditedNote);
                    _newFiles.Add(nf);

                    InsertImage(nf, MdImageFormat);
                }
            }
        }
Exemplo n.º 6
0
        private void AddFiles(string[] files)
        {
            StringBuilder builder = new StringBuilder();

            foreach (string file in files)
            {
                FileInfo fi = new FileInfo(file);
                if (!fi.Exists)
                {
                    continue;
                }

                byte[]   bytes = File.ReadAllBytes(file);
                string   mime  = MimeTypeMap.GetMimeType(fi.Extension);
                NoteFile nf    = NoteFile.Create(null, mime, bytes, EditedNote);
                builder.AppendFormat(MdImageFormat, nf.FileName, nf.Name);
                _newFiles.Add(nf);
            }

            MarkdownText.SelectedText = builder.ToString();
        }