Example #1
0
        private static MessageBoxResult ShowMessageInner(string text, string title, MessageDialogButton button,
                                                         ShowMessageCallbacks doNotAskAgainLoadSave, Window owner = null)
        {
            var value = doNotAskAgainLoadSave?.Item1?.Invoke();

            if (value != null)
            {
                return(value.Value);
            }

            FrameworkElement content = new SelectableBbCodeBlock {
                Text   = text,
                Margin = new Thickness(0, 0, 0, 8)
            };

            CheckBox doNotAskAgainCheckbox;

            if (doNotAskAgainLoadSave != null)
            {
                doNotAskAgainCheckbox = new CheckBox {
                    Content = new Label {
                        Content = "Don’t ask again"
                    }
                };

                content = new SpacingStackPanel {
                    Spacing  = 8,
                    Children =
                    {
                        content,
                        doNotAskAgainCheckbox
                    }
                };
            }
            else
            {
                doNotAskAgainCheckbox = null;
            }

            var dlg = new ModernDialog {
                Title   = title,
                Content = new ScrollViewer {
                    Content   = content,
                    MaxWidth  = 640,
                    MaxHeight = 520,
                    VerticalScrollBarVisibility   = ScrollBarVisibility.Auto,
                    HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled
                },
                MinHeight = 0,
                MinWidth  = 0,
                MaxHeight = 640,
                MaxWidth  = 800
            };

            if (owner != null)
            {
                dlg.Owner = owner;
            }

            dlg.Buttons = button.GetButtons(dlg);
            dlg.ShowDialog();

            if (doNotAskAgainCheckbox != null)
            {
                doNotAskAgainLoadSave.Item2.Invoke(doNotAskAgainCheckbox.IsChecked == true ?
                                                   dlg.MessageBoxResult : (MessageBoxResult?)null);
            }

            return(dlg.MessageBoxResult);
        }
            public bool Text(Table v)
            {
                var text = GetText(v);

                if (text == null)
                {
                    return(false);
                }

                var color    = GetColor(v);
                var font     = v[@"font"]?.ToString();
                var fontSize = v[@"fontSize"].As(30d);

                if (!string.IsNullOrWhiteSpace(font))
                {
                    var fontPng = _data?.Get(font + ".png");
                    var fontTxt = _data?.Get(font + ".txt");
                    if (fontPng != null && fontTxt != null)
                    {
                        ActionExtension.InvokeInMainThread(() => {
                            var bitmap     = new FontObjectBitmap(fontPng, fontTxt);
                            var charsPanel = new SpacingStackPanel {
                                Spacing     = v[@"spacing"].As(0d),
                                Orientation = Orientation.Horizontal
                            };

                            for (var i = 0; i < text.Length; i++)
                            {
                                var charBitmap = bitmap.BitmapForChar(text[i]);
                                if (charBitmap == null)
                                {
                                    return;
                                }
                                charsPanel.Children.Add(new Image {
                                    Source = charBitmap,
                                    Height = fontSize,
                                    Width  = fontSize * charBitmap.Width / charBitmap.Height
                                });
                            }

                            ApplyParams(v, charsPanel);
                            charsPanel.Effect = new AsTransparencyMask {
                                OverlayColor = color
                            };
                            _canvas.Children.Add(charsPanel);
                        });
                        return(true);
                    }
                }

                ActionExtension.InvokeInMainThread(() => {
                    var block        = v[@"bb"].As(false) ? new BbCodeBlock() : new TextBlock();
                    block.Text       = text;
                    block.Foreground = new SolidColorBrush(color);
                    block.FontFamily = new FontFamily(font ?? @"Segoe UI");
                    block.FontWeight = FontWeight.FromOpenTypeWeight(v[@"fontWeight"].As(400));
                    block.FontStyle  = v[@"fontItalic"].As(false) ? FontStyles.Italic : FontStyles.Normal;
                    block.FontSize   = fontSize;
                    ApplyParams(v, block);
                    _canvas.Children.Add(block);
                });
                return(true);
            }