diff --git a/Pilz.UI.Telerik.md b/Pilz.UI.Telerik.md index 1bfb8d8..9d1a089 100644 --- a/Pilz.UI.Telerik.md +++ b/Pilz.UI.Telerik.md @@ -144,3 +144,75 @@ Ensure you unregister your handlers from the event on Dispose or deconstructor! RadDialogBase.DialogClosed -= RadDialogBase_DialogClosed; } ``` + +# Symbols + +## Setup SymbolFactory + +Create a new directory, we call it `Symbols` here. + +![image](uploads/c2de97541c4d37acf2da07d7a8ae395e/image.png){width=188 height=275} + +Ensure you add this to the project file. This will mark all SVG files within the Symbols folder as embedded resource. + +```xml + + + +``` + +Create a new enum. It may look like the following. Ensure you only add new values to the buttom as you will introduce a breaking change to your API otherwise. + +```csharp +public enum GlobalSymbols +{ + add, + administrative_tools, + billboard, + cancel, + delete, + edit, + home, + login, + logout, + product, + project, + remove, + save, + settings, +} +``` + +The class `GlobalsymbolFactory` need to inherit from `RadSymbolFactory<>`. Provide your symbols enum here. You will need to overwrite `GetImageResourceAssembly` and `GetImageRessourcePath` as this parts can't be done by the base class. + +```csharp +public class GlobalSymbolFactory : RadSymbolFactory +{ + private static readonly string? symbolsNamespace = typeof(GlobalSymbolFactory).Namespace + ".Symbols"; + private static readonly string symbolsPathTemplate = "{0}.{1}.svg"; + + public override Assembly GetImageResourceAssembly() + { + return Assembly.GetExecutingAssembly(); + } + + public override string GetImageRessourcePath(GlobalSymbols svgImage) + { + return string.Format(symbolsPathTemplate, symbolsNamespace, svgImage); + } +} +``` + +## Access symbols + +Accessing symbols esaily via an instance of your SymbolFactory implementation. You can either provide a static instance in `GlobalSymbolFactory` or create a new instance wherever you need it. Access via `GetSvgImage` or `GetImage`, decide wheneer you can use an `RadSvgImage` or need an `Image`. + +```csharp +// Static instance in GlobalSymbolFactory +public static IRadSymbolFactory Instance { get; } = new GlobalSymbolFactory(); +var img = GlobalSymbolFactory.Instance.GetSvgImage(GlobalSymbols.billboard, SvgImageSize.Small); + +// Instance on-demand +var symbols = new GlobalSymbolFactory(); +var img = symbols.GetSvgImage(GlobalSymbols.billboard, SvgImageSize.Small); +```