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(); }
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); }
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(); }
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(); }