private void repository_StyleDeleted(object sender, RepositoryStyleEventArgs e) { ToolCache.NotifyStyleChanged(e.Style); }
// Notify ToolCache that a style has changed // Invalidate all (loaded) shapes using the changed style private void repository_StyleUpdated(object sender, RepositoryStyleEventArgs e) { IStyle changedStyle = e.Style; Design design = null; foreach (Design d in repository.GetDesigns()) { if (d.ContainsStyle(changedStyle)) { design = d; break; } } // Update Toolcache and PreviewStyle if (design != null) { if (changedStyle is CapStyle) { DoNotifyStyleChanged(design.CapStyles, (CapStyle)changedStyle); design.CapStyles.SetPreviewStyle((CapStyle)changedStyle, design.CreatePreviewStyle((ICapStyle)changedStyle)); } else if (changedStyle is CharacterStyle) { DoNotifyStyleChanged(design.CharacterStyles, (CharacterStyle)changedStyle); design.CharacterStyles.SetPreviewStyle((CharacterStyle)changedStyle, design.CreatePreviewStyle((ICharacterStyle)changedStyle)); } else if (changedStyle is ColorStyle) { DoNotifyStyleChanged(design.ColorStyles, (ColorStyle)changedStyle); design.ColorStyles.SetPreviewStyle((ColorStyle)changedStyle, design.CreatePreviewStyle((IColorStyle)changedStyle)); } else if (changedStyle is FillStyle) { DoNotifyStyleChanged(design.FillStyles, (FillStyle)changedStyle); design.FillStyles.SetPreviewStyle((FillStyle)changedStyle, design.CreatePreviewStyle((IFillStyle)changedStyle)); } else if (changedStyle is LineStyle) { DoNotifyStyleChanged(design.LineStyles, (LineStyle)changedStyle); design.LineStyles.SetPreviewStyle((LineStyle)changedStyle, design.CreatePreviewStyle((ILineStyle)changedStyle)); } else if (changedStyle is ParagraphStyle) { DoNotifyStyleChanged(design.ParagraphStyles, (ParagraphStyle)changedStyle); design.ParagraphStyles.SetPreviewStyle((ParagraphStyle)changedStyle, design.CreatePreviewStyle((IParagraphStyle)changedStyle)); } } // If the style is contained in the current design, notify all shapes that the style has changed if (design == Design) { foreach (Template template in repository.GetTemplates()) { template.Shape.NotifyStyleChanged(changedStyle); } foreach (Diagram diagram in repository.GetDiagrams()) { foreach (Shape shape in diagram.Shapes) { shape.NotifyStyleChanged(changedStyle); } } } }