public void SetIconRecognizer(IconRecognizer value) { foreach (var field in Fields) { field.IconRecognizer = value; } }
public void Init( DeckListModel decks, IconRecognizer recognizer, DeckSearcher searcher, DeckDocumentAdapter adapter, CollectionEditorModel collection, UiConfigRepository uiConfigRepository, Control tooltipOwner, IApplication app) { _searcher = searcher; _uiConfigRepository = uiConfigRepository; _panelRename.Visible = false; _viewDeck.IconRecognizer = recognizer; _viewDeck.DataSource = _filteredModels; _menuFilterByDeckMode.SetMenuValues( "Ignored", "Cards in currently open deck", "Cards in saved decks matching filter"); _menuFilterByDeckMode.SelectedIndex = 0; _listModel = decks; _collection = collection; _tooltipOwner = tooltipOwner; _app = app; _searchSubsystem = new DeckSearchSubsystem( this, _searchBar, uiConfigRepository, _searcher, adapter, _viewDeck); _deckSort = new DeckSortSubsystem(_viewDeck, new DeckFields(), _searchSubsystem, _listModel); _layoutViewTooltip = new ViewDeckListTooltips(_tooltipOwner, _viewDeck); _model = _listModel.CreateModel(Deck.Create()); _model.IsCurrent = true; subscribeToEvents(); updateSortLabel(); if (components == null) { components = new Container(); } components.Add(new SearchResultHighlightSubsystem(_viewDeck, _searchSubsystem, adapter)); _searchSubsystem.Apply(); }
public void Init( DeckListModel decks, IconRecognizer recognizer, DeckSearcher searcher, DeckDocumentAdapter adapter, Control tooltipOwner) { _deckListModel = decks; _tooltipOwner = tooltipOwner; _viewDeck.IconRecognizer = recognizer; _viewDeck.LayoutControlType = typeof(DeckListLayout); _viewDeck.DataSource = _filteredModels; _textBoxName.Visible = false; _customTooltip = new ViewDeckListTooltips(_tooltipOwner, _viewDeck); _searchSubsystem = new DeckSearchSubsystem( this, _textBoxSearch, _panelSearchIcon, _listBoxSuggest, searcher, _viewDeck); _menuFilterByDeckMode.SelectedIndex = 0; _viewDeck.MouseClicked += viewDeckClicked; _viewDeck.RowDataLoaded += viewDeckRowDataLoaded; _viewDeck.CardIndexChanged += viewScrolled; _textBoxName.LostFocus += nameLostFocus; _textBoxName.KeyDown += nameKeyDown; _menuFilterByDeckMode.SelectedIndexChanged += filterByDeckModeChanged; _searchSubsystem.TextApplied += applySearchResult; _searchSubsystem.SubscribeToEvents(); _customTooltip.SubscribeToEvents(); _higlightSubsystem = new SearchResultHiglightSubsystem(_viewDeck, _searchSubsystem, adapter); _higlightSubsystem.SubscribeToEvents(); }
private static IEnumerable <RichTextToken> getSubtokens( RichTextToken originalToken, RichTextRenderContext renderContext, IconRecognizer iconRecognizer) { IEnumerable <RichTextToken> tokens; if (iconRecognizer == null) { tokens = Sequence.From(originalToken); } else { tokens = iconRecognizer.Recognize(originalToken, renderContext.Text); } foreach (var token in tokens) { if (token.IconName != null || token.Length == 1) { yield return(token); } else { var splitPositions = Enumerable.Range(token.Index + 1, token.Length) .Where(i => i == token.Index + token.Length || !char.IsLetterOrDigit(renderContext.Text[i]) || !char.IsLetterOrDigit(renderContext.Text[i - 1])); int position = token.Index; foreach (int i in splitPositions) { var subtoken = new RichTextToken(token, position, i - position); yield return(subtoken); position = i; } } } }
public RichTextLayout(RichTextRenderContext renderContext, IconRecognizer iconRecognizer) { _renderContext = renderContext; _iconRecognizer = iconRecognizer; _highlightBrush = new SolidBrush(renderContext.HighlightColor); _highlightContextBrush = new SolidBrush(renderContext.HighlightContextColor); _selectionBrush = new SolidBrush(Color.FromArgb(_renderContext.SelectionAlpha, _renderContext.SelectionBackColor)); _pen = new Pen(renderContext.HighlightBorderColor, renderContext.HighlightBorderWidth); _x = _renderContext.Rect.Left; _y = _renderContext.Rect.Top; var lineSize = getLineSize(@" "); _lineHeight = lineSize.Height; _spaceWidth = lineSize.Width; _iconShadowOffset = new SizeF(-0.7f, 1f).ByDpi().ToPointF(); }
public static void Render(RichTextRenderContext renderContext, IconRecognizer iconRecognizer) { var textTokenPrinter = new RichTextLayout(renderContext, iconRecognizer); var readingContext = new RichTextTokenReader(renderContext.Text, renderContext.HighlightRanges); var currentWord = new List <RichTextToken>(); bool aborted = false; while (readingContext.ReadToken()) { var token = readingContext.Current; bool isCj = renderContext.Text[token.Index + token.Length - 1].IsCj(); if (token.Type == RichTextTokenType.Word) { var subtokens = getSubtokens(token, renderContext, iconRecognizer); currentWord.AddRange(subtokens); if (isCj) { bool canContinue = textTokenPrinter.PrintWord(currentWord); if (currentWord.Count > 0 && !canContinue) { aborted = true; break; } currentWord.Clear(); } } else if (token.Type == RichTextTokenType.Space) { bool canContinue = textTokenPrinter.PrintWord(currentWord); if (currentWord.Count > 0 && !canContinue) { aborted = true; break; } currentWord.Clear(); canContinue = textTokenPrinter.PrintSpace(token); if (!canContinue) { aborted = true; break; } } else if (token.Type == RichTextTokenType.NewLine) { bool canContinue = textTokenPrinter.PrintWord(currentWord); if (currentWord.Count > 0 && !canContinue) { aborted = true; break; } currentWord.Clear(); canContinue = textTokenPrinter.NewParagraph(); if (!canContinue) { aborted = true; break; } } } if (!aborted && currentWord.Count > 0) { textTokenPrinter.PrintWord(currentWord); } textTokenPrinter.Flush(); }
public void Init( DeckListModel decks, IconRecognizer recognizer, DeckSearcher searcher, DeckDocumentAdapter adapter, CollectionEditorModel collection, Control tooltipOwner) { _listModel = decks; _tooltipOwner = tooltipOwner; _collection = collection; searcher.Loaded += indexLoaded; _viewDeck.IconRecognizer = recognizer; _viewDeck.LayoutControlType = typeof(DeckListLayout); _viewDeck.DataSource = _filteredModels; var iBeamIcon = Resources.text_selection_24.ResizeDpi(); var iBeamHotSpot = new Size(iBeamIcon.Width / 2, iBeamIcon.Height / 2); _textSelectionCursor = CursorHelper.CreateCursor(iBeamIcon, iBeamHotSpot); _textBoxName.Visible = false; _layoutViewTooltip = new ViewDeckListTooltips(_tooltipOwner, _viewDeck); _searchSubsystem = new DeckSearchSubsystem( this, _textBoxSearch, _panelSearchIcon, _listBoxSuggest, searcher, adapter, _viewDeck); _searchSubsystem.TextApplied += searchTextApplied; _searchSubsystem.SubscribeToEvents(); _menuFilterByDeckMode.SelectedIndex = 0; _viewDeck.MouseClicked += viewDeckClicked; _viewDeck.RowDataLoaded += viewDeckRowDataLoaded; _viewDeck.CardIndexChanged += viewScrolled; _textBoxName.LostFocus += nameLostFocus; _textBoxName.KeyDown += nameKeyDown; _menuFilterByDeckMode.SelectedIndexChanged += filterByDeckModeChanged; _layoutViewTooltip.SubscribeToEvents(); _highlightSubsystem = new SearchResultHighlightSubsystem(_viewDeck, _searchSubsystem, adapter); _highlightSubsystem.SubscribeToEvents(); _viewDeck.MouseMove += deckMouseMove; _deckSort = new DeckSortSubsystem(_viewDeck, new DeckFields(), _searchSubsystem, _listModel); _deckSort.SortChanged += sortChanged; _deckSort.SubscribeToEvents(); _model = _listModel.CreateModel(Deck.Create()); _model.IsCurrent = true; if (_listModel.IsLoaded) { listModelLoaded(); } else { _listModel.Loaded += listModelLoaded; } searcher.Loaded += searcherLoaded; if (searcher.IsLoaded) { _searchSubsystem.Apply(); } updateSortLabel(); }