Exemplo n.º 1
0
        protected void SetFontBase(Func <FontDescription, FontDescription> fontProvider, FontModificationKinds kind)
        {
            if (_EditorCanvas == null)
            {
                return;
            }
            if (_EditorCanvas.FocusManager.IsEditorFocused)
            {
                /// Focusがある場合はその内容を変更する
                var focus = _EditorCanvas.FocusManager.Focus as StyledTextFocus;
                if (focus != null)
                {
                    focus.SetFont((flow) => fontProvider(flow.Font));
                }
                // todo: PlainTextのときの処理
            }
            else
            {
                /// Focusがない場合はRequestを送る
                var selecteds = _EditorCanvas.SelectionManager.SelectedEditors;
                if (selecteds.Any())
                {
                    var bundle   = new EditorBundle(_EditorCanvas.SelectionManager.SelectedEditors);
                    var executor = _EditorCanvas.CommandExecutor;

                    var nodeFig = selecteds.First().Figure as INode;
                    if (nodeFig != null)
                    {
                        var req = new SetPlainTextFontRequest()
                        {
                            Font = fontProvider(nodeFig.Font),
                        };
                        bundle.PerformCompositeRequest(req, executor);
                    }

                    var node = selecteds.First().Model as MemoStyledText;
                    if (node != null)
                    {
                        var stext  = node.StyledText;
                        var stfont = stext.Inlines.First().Font;
                        var req    = new SetStyledTextFontRequest()
                        {
                            FontProvider = (flow) => fontProvider(stfont),
                        };
                        bundle.PerformCompositeRequest(req, executor);
                    }
                }
            }
        }
Exemplo n.º 2
0
 // ========================================
 // constructor
 // ========================================
 public SetPlainTextFontRole(FontModificationKinds supportKinds)
 {
     _supportKinds = supportKinds;
 }
Exemplo n.º 3
0
 // ========================================
 // constructor
 // ========================================
 public SetStyledTextFontRole(StyledTextProvider styledTextProvider, FontModificationKinds supportKinds)
 {
     _styledTextProvider = styledTextProvider;
     _supportKinds       = supportKinds;
 }