Пример #1
0
        public static IEnumerable <IEditor> AddCsv(IEditor editor, Point location, string csv)
        {
            try {
                editor.Site.SuppressUpdateHandleLayer = true;

                var parser = new CsvParser();
                var table  = parser.ParseCsv(csv);
                if (table != null)
                {
                    var created = AddTable(editor, location, table, true);
                    TableFigureHelper.AdjustRowAndColumnSizes(created.Figure as TableFigure);
                    return(new[] { created });
                }
                else
                {
                    return(EmptyEditors);
                }
            } finally {
                editor.Site.SuppressUpdateHandleLayer = false;
                editor.Site.UpdateHandleLayer();
            }
        }
Пример #2
0
        public static IEnumerable <IEditor> AddHtml(IEditor editor, Point location, string html, bool useCommandExecutor)
        {
            if (StringUtil.IsNullOrWhitespace(html))
            {
                return(EmptyEditors);
            }

            //editor.Site.Caret.Hide();
            using (editor.Figure.DirtManager.BeginDirty()) {
                if (useCommandExecutor)
                {
                    editor.Site.CommandExecutor.BeginChain();
                }
                try {
                    /// PasteCommandでreturnしたEditor追加処理のUndo/Redoを処理するのでCommandExecutorを通さないでコマンドを実行する
                    var objs = new HtmlParser().ParseCFHtml(html);
                    var ret  = new List <IEditor>();
                    var cy   = location.Y;
                    foreach (var obj in objs)
                    {
                        if (obj is StyledText.Core.StyledText)
                        {
                            var stext   = obj as StyledText.Core.StyledText;
                            var created = AddBlocksAndInlines(editor, new Point(location.X, cy), stext.Blocks.As <Block, Flow>(), useCommandExecutor);
                            var focus   = created.GetCommand(new FocusRequest()
                            {
                                Value = FocusKind.Commit
                            }) as FocusCommand;
                            focus.Execute();
                            if (focus.ResultKind == FocusCommitResultKind.Canceled)
                            {
                                var rollback = created.GetCommand(new FocusRequest()
                                {
                                    Value = FocusKind.Rollback
                                });
                                rollback.Execute();
                            }
                            ret.Add(created);
                            cy += created.Figure.Height + 4;
                        }
                        else if (obj is Image)
                        {
                            var img      = obj as Image;
                            var createds = AddImage(editor, new Point(location.X + 8, cy), img, useCommandExecutor, false);
                            ret.AddRange(createds);
                            img.Dispose();
                            cy += createds.Sum(created => created.Figure.Height) + 20;
                        }
                        else if (obj is MemoTable)
                        {
                            editor.Site.SuppressUpdateHandleLayer = true;
                            var table    = obj as MemoTable;
                            var created  = AddTable(editor, new Point(location.X + 8, cy), table, useCommandExecutor);
                            var tableFig = created.Figure as TableFigure;
                            TableFigureHelper.AdjustRowAndColumnSizes(tableFig);
                            ret.Add(created);
                            editor.Site.SuppressUpdateHandleLayer = false;
                            editor.Site.UpdateHandleLayer();
                            cy += tableFig.Height + 20;
                        }
                    }
                    return(ret.ToArray());
                } finally {
                    if (useCommandExecutor)
                    {
                        editor.Site.CommandExecutor.EndChain();
                    }
                }
            }
        }