private void _okButton_Click(object sender, RoutedEventArgs e)
        {
            var digitalSignature = _signatureComboBox.SelectedItem as DigitalSignature;

            int limit = 0;

            if (!Inspect.ContainTrustSignature(digitalSignature.ToString()))
            {
                limit = -1;
            }

            var comment = _commentTextBox.Text.Substring(0, Math.Min(_commentTextBox.Text.Length, Message.MaxCommentLength));
            var message = new Message(comment);

            _amoebaManager.MulticastUpload(_tag, message, limit, Settings.Instance.Global_MiningTime, digitalSignature);

            this.Close();
        }
Example #2
0
            public override VisualLineElement ConstructElement(int offset)
            {
                var result = this.FindMatch(offset);

                if (result != null)
                {
                    if (result.Type == "State")
                    {
                        var size = (double)new FontSizeConverter().ConvertFromString(Settings.Instance.Global_Fonts_Message_FontSize + "pt");

                        var image = new Image()
                        {
                            Height = (size - 3), Width = (size - 3), Margin = new Thickness(1.5, 1.5, 0, 0)
                        };
                        if (result.Value == "#")
                        {
                            image.Source = StatesIconManager.Instance.Green;
                        }
                        else if (result.Value == "!")
                        {
                            image.Source = StatesIconManager.Instance.Red;
                        }
                        else if (result.Value == "@")
                        {
                            image.Source = StatesIconManager.Instance.Yello;
                        }

                        var element = new CustomObjectElement(result.Value, image);

                        element.ClickEvent += (string text) =>
                        {
                            this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                        };

                        return(element);
                    }
                    else if (result.Type == "Signature")
                    {
                        Brush brush;

                        if (Inspect.ContainTrustSignature(result.Value))
                        {
                            brush = new SolidColorBrush(_serviceManager.Config.Colors.Message_Trust);
                        }
                        else
                        {
                            brush = new SolidColorBrush(_serviceManager.Config.Colors.Message_Untrust);
                        }

                        var element = new CustomTextElement(result.Value);
                        element.Foreground = brush;

                        element.ClickEvent += (string text) =>
                        {
                            this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                        };

                        return(element);
                    }
                    else if (result.Type == "Uri")
                    {
                        var uri = result.Value;

                        CustomObjectElement element = null;

                        if (uri.StartsWith("http:") | uri.StartsWith("https:"))
                        {
                            var textBlock = new TextBlock();
                            textBlock.Text    = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = HttpUtility.UrlDecode(uri);

                            if (Settings.Instance.Global_UrlHistorys.Contains(uri))
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            }
                            else
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);
                            }

                            element = new CustomObjectElement(uri, textBlock);
                        }
                        else if (uri.StartsWith("Tag:"))
                        {
                            var tag = AmoebaConverter.FromTagString(uri);

                            var textBlock = new TextBlock();
                            textBlock.Text    = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = MessageConverter.ToInfoMessage(tag);

                            if (Settings.Instance.Global_TagHistorys.Contains(tag))
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            }
                            else
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);
                            }

                            element = new CustomObjectElement(uri, textBlock);
                        }
                        else if (uri.StartsWith("Seed:"))
                        {
                            var seed = AmoebaConverter.FromSeedString(uri);

                            var textBlock = new TextBlock();
                            textBlock.Text    = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = MessageConverter.ToInfoMessage(seed);

                            if (Settings.Instance.Global_SeedHistorys.Contains(seed))
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            }
                            else
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);
                            }

                            element = new CustomObjectElement(uri, textBlock);
                        }

                        if (element != null)
                        {
                            element.ClickEvent += (string text) =>
                            {
                                this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                                this.OnClickEvent(text);
                            };

                            return(element);
                        }
                    }
                }

                return(null);
            }
Example #3
0
        public void Set(TextEditor textEditor, IEnumerable <MulticastMessageViewModel> collection)
        {
            _ranges.Clear();

            var document = new StringBuilder();
            var settings = new List <CustomElementSetting>();

            foreach (var target in collection)
            {
                int startOffset = document.Length;

                {
                    string item1;
                    if (target.Option.State.HasFlag(MulticastMessageState.IsLocked))
                    {
                        item1 = "#";
                    }
                    else if (target.Option.State.HasFlag(MulticastMessageState.IsUnread))
                    {
                        item1 = "!";
                    }
                    else
                    {
                        item1 = "@";
                    }

                    var item2 = target.Item.CreationTime.ToLocalTime().ToString(LanguagesManager.Instance.DateTime_StringFormat, System.Globalization.DateTimeFormatInfo.InvariantInfo);
                    var item3 = target.Item.Signature;

                    {
                        settings.Add(new CustomElementSetting("State", document.Length, item1.Length));
                        document.Append(item1);
                        document.Append(" ");

                        settings.Add(new CustomElementSetting("CreationTime", document.Length, item2.Length));
                        document.Append(item2);
                        document.Append(" - ");

                        settings.Add(new CustomElementSetting("Signature", document.Length, item3.Length));
                        document.Append(item3);

                        if (!Inspect.ContainTrustSignature(target.Item.Signature))
                        {
                            document.Append(" +");
                            document.Append(target.Option.Cost);
                        }
                    }

                    document.AppendLine();
                }

                {
                    document.AppendLine();
                }

                {
                    foreach (var line in target.Item.Comment
                             .Trim('\r', '\n')
                             .Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.None)
                             .Take(128))
                    {
                        foreach (var match in _uriRegexes.Select(n => n.Matches(line)).SelectMany(n => n.OfType <Match>()))
                        {
                            settings.Add(new CustomElementSetting("Uri", document.Length + match.Index, match.Length));
                        }

                        document.AppendLine(line);
                    }
                }

                {
                    document.AppendLine();
                }

                _ranges.Add(new CustomElementRange(startOffset, document.Length));
            }

            if (document.Length >= 2)
            {
                document.Remove(document.Length - 2, 2);
            }

            textEditor.Document.BeginUpdate();

            textEditor.Document.Text   = "";
            textEditor.CaretOffset     = 0;
            textEditor.SelectionLength = 0;
            textEditor.TextArea.TextView.ElementGenerators.Clear();
            textEditor.ScrollToHome();

            textEditor.Document.Text = document.ToString();

            var elementGenerator = new CustomElementGenerator(settings);

            elementGenerator.ClickEvent  += (string text) => this.OnClickEvent(text);
            elementGenerator.SelectEvent += (CustomElementRange range) => textEditor.Select(range.Start, range.End - range.Start);
            textEditor.TextArea.TextView.ElementGenerators.Add(elementGenerator);

            textEditor.Document.EndUpdate();

            textEditor.CaretOffset = textEditor.Document.Text.Length;
            textEditor.TextArea.Caret.BringCaretToView();
            textEditor.ScrollToEnd();
        }
Example #4
0
        public void Set(TextEditor textEditor, DateTime creationTime, string signature, int cost, string comment)
        {
            var document = new StringBuilder();
            var settings = new List <CustomElementSetting>();

            {
                {
                    var item1 = "#";
                    var item2 = creationTime.ToLocalTime().ToString(LanguagesManager.Instance.DateTime_StringFormat, System.Globalization.DateTimeFormatInfo.InvariantInfo);
                    var item3 = signature;

                    {
                        settings.Add(new CustomElementSetting("State", document.Length, item1.Length));
                        document.Append(item1);
                        document.Append(" ");

                        settings.Add(new CustomElementSetting("CreationTime", document.Length, item2.Length));
                        document.Append(item2);
                        document.Append(" - ");

                        settings.Add(new CustomElementSetting("Signature", document.Length, item3.Length));
                        document.Append(item3);

                        if (!Inspect.ContainTrustSignature(signature))
                        {
                            document.Append(" - ");
                            document.Append(cost);
                        }
                    }

                    document.AppendLine();
                }

                {
                    document.AppendLine();
                }

                {
                    foreach (var line in comment
                             .Trim('\r', '\n')
                             .Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.None)
                             .Take(128))
                    {
                        foreach (var match in _uriRegexes.Select(n => n.Matches(line)).SelectMany(n => n.OfType <Match>()))
                        {
                            settings.Add(new CustomElementSetting("Uri", document.Length + match.Index, match.Length));
                        }

                        document.AppendLine(line);
                    }
                }

                {
                    document.AppendLine();
                }
            }

            if (document.Length >= 2)
            {
                document.Remove(document.Length - 2, 2);
            }

            textEditor.Document.BeginUpdate();

            textEditor.Document.Text   = "";
            textEditor.CaretOffset     = 0;
            textEditor.SelectionLength = 0;
            textEditor.TextArea.TextView.ElementGenerators.Clear();

            textEditor.Document.Text = document.ToString();

            var elementGenerator = new CustomElementGenerator(settings);

            elementGenerator.ClickEvent  += (string text) => this.OnClickEvent(text);
            elementGenerator.SelectEvent += (CustomElementRange range) => textEditor.Select(range.Start, range.End - range.Start);
            textEditor.TextArea.TextView.ElementGenerators.Add(new CustomElementGenerator(settings));

            textEditor.Document.EndUpdate();
        }