コード例 #1
0
        public virtual void Paste()
        {
            var     scene = this.Scene;
            IVisual item  = null;

#if TRACE
            Trace.WriteLine($"{this.GetType ().Name}.{nameof(Paste)}:\t" + string.Join(" | ", Clipboard.GetTypesAvailable().Select(f => f.Id)));
#endif
            if (InprocDragDrop.ClipboardData != null)
            {
                // TODO: refactor to use same code as above
                var source = InprocDragDrop.ClipboardData as GraphCursor <IVisual, IVisualEdge>;
                if (source != null && source.Cursor != item)
                {
                    item = Mesh.LookUp(source.Graph, scene.Graph, source.Cursor);
                    if (item == null)
                    {
                        //TODO: error here
                        //return;
                    }
                }
            }

            if (item == null)
            {
                item = DragDropViz.VisualOfTransferData(scene.Graph, Clipboard.GetTransferData(Clipboard.GetTypesAvailable())); //DragDropViz.DataManager.DataTypes));
            }
            if (item != null)
            {
                SceneExtensions.PlaceVisual(scene, scene.Focused, item, Layout);
            }
        }
コード例 #2
0
        protected virtual IVisualEdge NewVisual(Point p)
        {
            var result = SceneExtensions.CreateEdge(this.Scene);

            newCounter++;
            result.Root = Current;
            result.Leaf = Current;
            return(result);
        }
コード例 #3
0
ファイル: LayoutToolbar.cs プロジェクト: git-thinh/limada
        public void ShapeChange(IShape shape)
        {
            var currentDisplay = this.CurrentDisplay;

            if (currentDisplay != null)
            {
                foreach (var visual in currentDisplay.Data.Selected.Elements)
                {
                    SceneExtensions.ChangeShape(currentDisplay.Data, visual, shape);
                }
                currentDisplay.Perform();
            }
        }
コード例 #4
0
        protected virtual void ChangeMarkers(object marker)
        {
            var display = CurrentDisplay;

            if (display != null)
            {
                var scene = display.Data;
                if (scene.Markers != null)
                {
                    SceneExtensions.ChangeMarkers(scene, scene.Selected.Elements, marker);
                }
                display.Perform();
            }
        }
コード例 #5
0
ファイル: LayoutToolbar.cs プロジェクト: git-thinh/limada
        public void StyleChange(IStyleGroup style)
        {
            var currentDisplay = this.CurrentDisplay;

            if (currentDisplay != null)
            {
                foreach (var visual in currentDisplay.Data.Selected.Elements)
                {
                    SceneExtensions.ChangeStyle(currentDisplay.Data, visual, style);
                }
                currentDisplay.Perform();
                currentDisplay.Backend.QueueDraw();
            }
        }
コード例 #6
0
        public virtual void Insert(Point cursorPosition)
        {
            DetachEditor(true);
            Exclusive = Resolved = true;
            Current   = Registry.Pooled <IVisualFactory> ().CreateItem("XXXXXXXX");
            var scene = Scene;
            var root  = scene.Focused;

            if (root == null)
            {
                var pt = Camera.ToSource(cursorPosition) - Layout.Distance;
                SceneExtensions.AddItem(scene, Current, Layout, pt);
            }
            else
            {
                SceneExtensions.PlaceVisual(scene, root, Current, Layout);
            }

            Display.Perform();
            TextToData(Current, string.Empty);

            AttachEditor();
        }
コード例 #7
0
ファイル: SplitView0.cs プロジェクト: git-thinh/limada
        public void CreateNewNote(string title)
        {
            var currentDiplay = CurrentDisplay;

            if (currentDiplay == null)
            {
                return;
            }
            var scene = currentDiplay.Data;

            if (scene == null)
            {
                return;
            }

            var content = new Content <Stream> (new MemoryStream(), CompressionType.bZip2);

            content.Description = title;

            if (Registry.Factory.Contains <IMarkdownEdit>())
            {
                content.ContentType = ContentTypes.Markdown;
                var writer = new StreamWriter(content.Data);
                writer.Write(title);
                writer.Flush();
                content.Data.Position = 0;
            }
            else
            {
                content.ContentType = ContentTypes.RTF;
                var writer = new StreamWriter(content.Data);

                writer.Write("{\\rtf1\\ansi\\deff0");
                writer.Write("{\\info{\\doccomm limada.note}}");

                writer.Write($"{{\\fonttbl{{\\f0\\froman {Xwt.Drawing.Font.SystemSerifFont.Family}}}}}");
                writer.Write("\\pard\\plain ");
                writer.Write(title);
                writer.Write("}");
                writer.Flush();
                content.Data.Position = 0;
            }

            var visual = scene.VisualOfContent(content);
            var root   = scene.Focused;

            var layout = currentDiplay.Layout;

            if (root == null)
            {
                var pt = new Point(layout.Border.Width, scene.Shape.BoundsRect.Bottom);
                SceneExtensions.AddItem(scene, visual, layout, pt);
            }
            else
            {
                SceneExtensions.PlaceVisual(scene, root, visual, layout);
            }
            scene.Selected.Clear();
            scene.Focused = visual;
            currentDiplay.Perform();
            currentDiplay.OnSceneFocusChanged();

            var md = ContentVidget as IMarkdownEdit;

            if (md != null)
            {
                md.InEdit = true;
            }
        }
コード例 #8
0
        public override void Dropped(DragEventArgs e)
        {
            var pt     = Camera.ToSource(e.Position);
            var scene  = this.Scene;
            var target = scene.Hovered ?? HitTestFocused(e.Position);

            IVisual item = null;

            if (Dragging && Dropping)
            {
                // the current Drop has started in this instance
                // so we make a link
                if (target != null && Source != target)
                {
                    SceneExtensions.CreateEdge(scene, Source, target);
                }
                e.Success = true;
                return;
            }

            if (InprocDragDrop.Dragging)
            {
                var source = InprocDragDrop.Data as GraphCursor <IVisual, IVisualEdge>;
                if (source != null && source.Cursor != target)
                {
                    item = Mesh.LookUp(source.Graph, scene.Graph, source.Cursor);
                    if (item == null)
                    {
                        //TODO: error here
                        //return;
                    }
                }
            }

            if (item == null)
            {
                item = DragDropViz.VisualOfTransferData(scene.Graph, e.Data);
                if (item != null)
                {
                    item.Location = pt;
                }
            }

            if (item != null)
            {
                SceneExtensions.AddItem(scene, item, Layout, pt);
                if (target != null && !scene.Graph.Edges(target).Any(edge => edge.Leaf == item || edge.Root == item))
                {
                    SceneExtensions.CreateEdge(scene, target, item);
                }
            }
            else
            {
                // no known type found to import
                string dt = "not found:\t";
            }

            InprocDragDrop.Data     = null;
            InprocDragDrop.Dragging = false;
            Dragging = false;
        }
コード例 #9
0
        IEnumerator WaitForSceneLoaded()
        {
            yield return(new WaitUntil(() => SceneExtensions.ScenesAreAllLoaded()));

            waitCoroutine = null;
        }