Example #1
0
        // ========================================
        // property
        // ========================================

        // ========================================
        // method
        // ========================================
        private void HandleWatcherCreated(object sender, FileSystemEventArgs e)
        {
            if (!File.Exists(e.FullPath))
            {
                return;
            }

            Logger.Info("File Created: " + e.FullPath);
            var app = MemopadApplication.Instance;

            Action act = () => {
                var form       = app.MainForm;
                var canvas     = default(EditorCanvas);
                var createNote = form.CurrentEditorCanvas == null;
                if (createNote)
                {
                    var info = app.CreateMemo(Path.GetFileNameWithoutExtension(e.Name) + "のノート");
                    var page = app.MainForm.FindPageContent(info);
                    canvas = page.EditorCanvas;
                }
                else
                {
                    canvas = form.CurrentEditorCanvas;
                }

                var memo = canvas.RootEditor.Content;
                MemoEditorHelper.AddFileDrops(memo, MemopadConsts.DefaultCaretPosition, new [] { e.FullPath }, true, !createNote, true);
                try {
                    File.Delete(e.FullPath);
                } catch (Exception ex) {
                    Logger.Warn("Can't delete auto imported file: " + e.FullPath, ex);
                }
                app.ShowMainForm();
                app.ActivateMainForm();
            };

            //app.MainForm.Invoke(act);
            _dummy.Invoke(act);
        }
Example #2
0
        // ------------------------------
        // private
        // ------------------------------
        private IDragTarget CreateDragTarget()
        {
            var ret = MouseOperatableFactory.CreateDragTarget();

            var app = MemopadApplication.Instance;

            ret.DragOver += (sender, e) => {
                e.Effect = DragDropEffects.None;

                var data = e.Data;

                if (data.GetDataPresent(typeof(MemoInfo[])))
                {
                    if (DragDropUtil.IsLinkAllowed(e))
                    {
                        e.Effect = DragDropEffects.Link;
                    }
                }
                else if (data.GetDataPresent(DataFormats.FileDrop))
                {
                    if (DragDropUtil.IsControlPressed(e))
                    {
                        if (DragDropUtil.IsCopyAllowed(e))
                        {
                            e.Effect = DragDropEffects.Copy;
                        }
                    }
                    else
                    {
                        if (DragDropUtil.IsLinkAllowed(e))
                        {
                            e.Effect = DragDropEffects.Link;
                        }
                    }
                }
                else if (data.GetDataPresent(StyledTextConsts.BlocksAndInlinesFormat.Name))
                {
                    if (DragDropUtil.IsControlPressed(e))
                    {
                        if (DragDropUtil.IsCopyAllowed(e))
                        {
                            e.Effect = DragDropEffects.Copy;
                        }
                        else if (DragDropUtil.IsMoveAllowed(e))
                        {
                            e.Effect = DragDropEffects.Move;
                        }
                    }
                    else
                    {
                        if (DragDropUtil.IsMoveAllowed(e))
                        {
                            e.Effect = DragDropEffects.Move;
                        }
                        else if (DragDropUtil.IsCopyAllowed(e))
                        {
                            e.Effect = DragDropEffects.Copy;
                        }
                    }
                }
                else if (data.GetDataPresent(DataFormats.Html))
                {
                    if (DragDropUtil.IsControlPressed(e))
                    {
                        if (DragDropUtil.IsCopyAllowed(e))
                        {
                            e.Effect = DragDropEffects.Copy;
                        }
                        else if (DragDropUtil.IsMoveAllowed(e))
                        {
                            e.Effect = DragDropEffects.Move;
                        }
                    }
                    else
                    {
                        if (DragDropUtil.IsMoveAllowed(e))
                        {
                            e.Effect = DragDropEffects.Move;
                        }
                        else if (DragDropUtil.IsCopyAllowed(e))
                        {
                            e.Effect = DragDropEffects.Copy;
                        }
                    }
                }
                else if (data.GetDataPresent("UniformResourceLocator") && data.GetDataPresent(DataFormats.UnicodeText))
                {
                    if (DragDropUtil.IsLinkAllowed(e))
                    {
                        e.Effect = DragDropEffects.Link;
                    }
                }
                else if (data.GetDataPresent(DataFormats.UnicodeText))
                {
                    if (DragDropUtil.IsControlPressed(e))
                    {
                        if (DragDropUtil.IsCopyAllowed(e))
                        {
                            e.Effect = DragDropEffects.Copy;
                        }
                        else if (DragDropUtil.IsMoveAllowed(e))
                        {
                            e.Effect = DragDropEffects.Move;
                        }
                    }
                    else
                    {
                        if (DragDropUtil.IsMoveAllowed(e))
                        {
                            e.Effect = DragDropEffects.Move;
                        }
                        else if (DragDropUtil.IsCopyAllowed(e))
                        {
                            e.Effect = DragDropEffects.Copy;
                        }
                    }
                }
            };

            ret.DragDrop += (sender, e) => {
                if (DragDropUtil.IsNone(e))
                {
                    return;
                }

                var oldCursor = Host.Site.EditorCanvas.Cursor;
                Host.Site.EditorCanvas.Cursor = Cursors.WaitCursor;

                try {
                    var data = e.Data;
                    var loc  = Host.Site.GridService.GetAdjustedPoint(new Point(e.X, e.Y));

                    if (data.GetDataPresent(typeof(MemoInfo[])))
                    {
                        /// MemoInfo[]
                        if (DragDropUtil.IsLink(e))
                        {
                            var infos = (MemoInfo[])data.GetData(typeof(MemoInfo[]));
                            foreach (var info in infos)
                            {
                                var text    = info.Title;
                                var uri     = UriUtil.GetUri(info);
                                var created = MemoEditorHelper.AddTextAsLink(Host, loc, text, uri, null);
                            }
                            Host.Site.EditorCanvas.Select();
                        }
                    }
                    else if (data.GetDataPresent(DataFormats.FileDrop))
                    {
                        /// FileDrop
                        if (DragDropUtil.IsCopy(e) || DragDropUtil.IsLink(e))
                        {
                            MemoEditorHelper.AddFileDrops(
                                Host,
                                loc,
                                (string[])data.GetData(DataFormats.FileDrop),
                                e.Effect == DragDropEffects.Copy,
                                true,
                                false
                                );
                            Host.Site.EditorCanvas.Select();
                        }
                    }
                    else if (data.GetDataPresent(StyledTextConsts.BlocksAndInlinesFormat.Name))
                    {
                        /// StyledText flows
                        if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e))
                        {
                            MemoEditorHelper.AddBlocksAndInlines(
                                Host,
                                loc,
                                data.GetData(StyledTextConsts.BlocksAndInlinesFormat.Name) as IEnumerable <Flow>,
                                true
                                );
                            Host.Site.EditorCanvas.Select();
                        }
                    }
                    else if (data.GetDataPresent(DataFormats.Html))
                    {
                        /// Html
                        if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e))
                        {
                            var html = Common.Forms.Clipboard.ClipboardUtil.GetCFHtmlFromDataObject(data);
                            MemoEditorHelper.AddHtml(
                                Host,
                                loc,
                                html,
                                true
                                );
                            Host.Site.EditorCanvas.Select();
                        }
                    }
                    else if (data.GetDataPresent("UniformResourceLocator") && data.GetDataPresent(DataFormats.UnicodeText))
                    {
                        /// URL
                        if (DragDropUtil.IsLink(e))
                        {
                            var url     = (string)data.GetData(DataFormats.UnicodeText);
                            var created = MemoEditorHelper.AddTextAsLink(Host, loc, url, url, null);
                            Host.Site.EditorCanvas.Select();
                        }
                    }
                    else if (data.GetDataPresent(DataFormats.UnicodeText))
                    {
                        /// text
                        if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e))
                        {
                            MemoEditorHelper.AddText(Host, loc, (string)data.GetData(DataFormats.UnicodeText), false);
                            Host.Site.EditorCanvas.Select();
                        }
                    }
                } finally {
                    Host.Site.EditorCanvas.Cursor = oldCursor;
                }
            };

            return(ret);
        }