diff --git a/Pilz.UI.Telerik.SymbolFactory/Pilz - Backup.UI.Telerik.SymbolFactory.csproj b/Pilz.UI.Telerik.SymbolFactory/Pilz - Backup.UI.Telerik.SymbolFactory.csproj new file mode 100644 index 0000000..4ed218b --- /dev/null +++ b/Pilz.UI.Telerik.SymbolFactory/Pilz - Backup.UI.Telerik.SymbolFactory.csproj @@ -0,0 +1,10 @@ + + + + net6.0 + enable + enable + Pilz.UI.Telerik + + + diff --git a/Pilz.UI.Telerik.SymbolFactory/Pilz.UI.Telerik.SymbolFactory.csproj b/Pilz.UI.Telerik.SymbolFactory/Pilz.UI.Telerik.SymbolFactory.csproj new file mode 100644 index 0000000..b146c5f --- /dev/null +++ b/Pilz.UI.Telerik.SymbolFactory/Pilz.UI.Telerik.SymbolFactory.csproj @@ -0,0 +1,15 @@ + + + + net6.0-windows + enable + enable + Pilz.UI.Telerik + + + + + + + + diff --git a/Pilz.UI.Telerik.SymbolFactory/SvgImageSize.cs b/Pilz.UI.Telerik.SymbolFactory/SvgImageSize.cs new file mode 100644 index 0000000..905d4ed --- /dev/null +++ b/Pilz.UI.Telerik.SymbolFactory/SvgImageSize.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Pilz.UI.Telerik +{ + public enum SvgImageSize + { + Default, + Small, + Medium, + Large + } +} diff --git a/Pilz.UI.Telerik.SymbolFactory/SymbolFactory.cs b/Pilz.UI.Telerik.SymbolFactory/SymbolFactory.cs new file mode 100644 index 0000000..91ed741 --- /dev/null +++ b/Pilz.UI.Telerik.SymbolFactory/SymbolFactory.cs @@ -0,0 +1,87 @@ +using System.Drawing; +using System.Reflection; +using Telerik.WinControls; +using Telerik.WinControls.Svg; + +namespace Pilz.UI.Telerik +{ + public abstract class SymbolFactory where TSvgSymbols : Enum + { + public abstract string GetSvgImageRessourcePath(TSvgSymbols svgImage); + public abstract Assembly GetSvgImageResourceAssembly(); + + protected virtual Size ResolveCommonSize(SvgImageSize size) + { + return size switch + { + SvgImageSize.Small => new Size(16, 16), + SvgImageSize.Medium => new Size(20, 20), + SvgImageSize.Large => new Size(32, 32), + _ => Size.Empty, + }; + } + + public virtual Stream? GetSvgImageRessourceStream(TSvgSymbols svgImage) + { + var asm = GetSvgImageResourceAssembly(); + var path = GetSvgImageRessourcePath(svgImage); + return asm.GetManifestResourceStream(path); + } + + public virtual RadSvgImage GetSvgImage(TSvgSymbols svgImage, SvgImageSize size) + { + return GetSvgImage(svgImage, ResolveCommonSize(size)); + } + + public virtual RadSvgImage GetSvgImage(TSvgSymbols svgImage, Size size) + { + using var stream = GetSvgImageRessourceStream(svgImage); + var img = RadSvgImage.FromStream(stream); + + if (size.IsEmpty) + img.Size = size; + + return img; + } + + public virtual RadSvgImage GetSvgImageColored(TSvgSymbols svgImage, SvgImageSize size, Color color) + { + return GetSvgImageColored(svgImage, ResolveCommonSize(size), color); + } + + public virtual RadSvgImage GetSvgImageColored(TSvgSymbols svgImage, Size size, Color color) + { + var img = GetSvgImage(svgImage, size); + + img.Document.Fill = new SvgColourServer(color); + img.ClearCache(); + + return img; + } + + public virtual Image GetImage(TSvgSymbols svgImage, SvgImageSize size) + { + return GetImage(svgImage, ResolveCommonSize(size)); + } + + public virtual Image GetImage(TSvgSymbols svgImage, Size size) + { + return GetImageFromSvg(GetSvgImage(svgImage, size)); + } + + public virtual Image GetImageColored(TSvgSymbols svgImage, SvgImageSize size, Color color) + { + return GetImageColored(svgImage, ResolveCommonSize(size), color); + } + + public virtual Image GetImageColored(TSvgSymbols svgImage, Size size, Color color) + { + return GetImageFromSvg(GetSvgImageColored(svgImage, size, color)); + } + + public virtual Image GetImageFromSvg(RadSvgImage svg) + { + return svg.Document.Draw(svg.Width, svg.Height); + } + } +} \ No newline at end of file diff --git a/Pilz.UI.Telerik/Dialogs/DialogBaseForm.Statics.cs b/Pilz.UI.Telerik/Dialogs/DialogBaseForm.Statics.cs new file mode 100644 index 0000000..6bc58a7 --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/DialogBaseForm.Statics.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Pilz.UI.Telerik.Dialogs +{ + partial class DialogBaseForm + { + public delegate void DialogLoadingEventHandler(DialogLoadingEventArgs e); + public delegate void DialogClosedEventHandler(DialogClosedEventArgs e); + + public static event DialogLoadingEventHandler? DialogLoading; + public static event DialogClosedEventHandler? DialogClosed; + + public static T ShowDialog(string title, Icon icon, object? tag = null) where T : FlyoutDialogBase + { + return ShowDialog(null, title, icon, tag); + } + + public static T ShowDialog(IWin32Window? parent, string title, Icon icon, object? tag = null) where T : FlyoutDialogBase + { + var dialogPanel = Activator.CreateInstance(); + dialogPanel.Dock = DockStyle.Fill; + dialogPanel.Tag = tag; + + var dialog = new DialogBaseForm + { + DialogPanel = dialogPanel, + Text = title, + Icon = icon, + StartPosition = parent == null ? FormStartPosition.CenterScreen : FormStartPosition.CenterParent, + ClientSize = dialogPanel.Size + }; + dialog.Controls.Add(dialogPanel); + dialog.ShowDialog(parent); + + return dialogPanel; + } + } +} diff --git a/Pilz.UI.Telerik/Dialogs/DialogBaseForm.cs b/Pilz.UI.Telerik/Dialogs/DialogBaseForm.cs new file mode 100644 index 0000000..06a6ef3 --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/DialogBaseForm.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Telerik.WinControls.UI; + +namespace Pilz.UI.Telerik.Dialogs +{ + public partial class DialogBaseForm : RadForm + { + public FlyoutDialogBase? DialogPanel { get; private set; } + + private DialogBaseForm() + { + Load += DialogBaseForm_Load; + FormClosed += DialogBaseForm_FormClosed; + } + + private void DialogBaseForm_Load(object? sender, EventArgs e) + { + if (DialogPanel is ILoadContent iLoadContent) + iLoadContent.LoadContent(); + + DialogLoading?.Invoke(new DialogLoadingEventArgs(this)); + } + + private void DialogBaseForm_FormClosed(object? sender, FormClosedEventArgs e) + { + DialogClosed?.Invoke(new DialogClosedEventArgs(this)); + } + } +} diff --git a/Pilz.UI.Telerik/Dialogs/DialogClosedEventArgs.cs b/Pilz.UI.Telerik/Dialogs/DialogClosedEventArgs.cs new file mode 100644 index 0000000..8f0b05d --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/DialogClosedEventArgs.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Pilz.UI.Telerik.Dialogs +{ + public class DialogClosedEventArgs : EventArgs + { + public DialogBaseForm Parent { get; private set; } + public FlyoutDialogBase? Content => Parent?.DialogPanel; + + public DialogClosedEventArgs(DialogBaseForm dialog) + { + Parent = dialog; + } + } +} diff --git a/Pilz.UI.Telerik/Dialogs/DialogLoadingEventArgs.cs b/Pilz.UI.Telerik/Dialogs/DialogLoadingEventArgs.cs new file mode 100644 index 0000000..2e47dbf --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/DialogLoadingEventArgs.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.Design; + +namespace Pilz.UI.Telerik.Dialogs +{ + public class DialogLoadingEventArgs : EventArgs + { + public DialogBaseForm Parent { get; private set; } + public FlyoutDialogBase? Content => Parent?.DialogPanel; + + public DialogLoadingEventArgs(DialogBaseForm dialog) + { + Parent = dialog; + } + } +} diff --git a/Pilz.UI.Telerik/Dialogs/FlyoutClosedEventArgs.cs b/Pilz.UI.Telerik/Dialogs/FlyoutClosedEventArgs.cs new file mode 100644 index 0000000..3c310d4 --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/FlyoutClosedEventArgs.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Pilz.UI.Telerik.Dialogs +{ + public class FlyoutClosedEventArgs : global::Telerik.WinControls.UI.SplashScreen.FlyoutClosedEventArgs + { + public new FlyoutDialogBase? Content => base.Content as FlyoutDialogBase; + + public FlyoutClosedEventArgs(FlyoutDialogBase content) : base(content) + { + } + } +} diff --git a/Pilz.UI.Telerik/Dialogs/FlyoutCreatedEventArgs.cs b/Pilz.UI.Telerik/Dialogs/FlyoutCreatedEventArgs.cs new file mode 100644 index 0000000..e39597c --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/FlyoutCreatedEventArgs.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Telerik.WinControls.UI.SplashScreen; + +namespace Pilz.UI.Telerik.Dialogs +{ + public class FlyoutCreatedEventArgs : ContentCreatedEventArgs + { + public new FlyoutDialogBase? Content => base.Content as FlyoutDialogBase; + + public FlyoutCreatedEventArgs(FlyoutDialogBase content) : base(content) + { + } + } +} diff --git a/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.Designer.cs b/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.Designer.cs new file mode 100644 index 0000000..385c2ea --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.Designer.cs @@ -0,0 +1,77 @@ +namespace Pilz.UI.Telerik.Dialogs +{ + partial class FlyoutDialogBase + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Komponenten-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FlyoutDialogBase)); + radButton_Cancel = new global::Telerik.WinControls.UI.RadButton(); + radButton_Confirm = new global::Telerik.WinControls.UI.RadButton(); + panel_ActionButtons = new System.Windows.Forms.Panel(); + ((System.ComponentModel.ISupportInitialize)radButton_Cancel).BeginInit(); + ((System.ComponentModel.ISupportInitialize)radButton_Confirm).BeginInit(); + panel_ActionButtons.SuspendLayout(); + SuspendLayout(); + // + // radButton_Cancel + // + resources.ApplyResources(radButton_Cancel, "radButton_Cancel"); + radButton_Cancel.Name = "radButton_Cancel"; + radButton_Cancel.Click += RadButton_Cancel_Click; + // + // radButton_Confirm + // + resources.ApplyResources(radButton_Confirm, "radButton_Confirm"); + radButton_Confirm.Name = "radButton_Confirm"; + radButton_Confirm.Click += RadButton_Confirm_Click; + // + // panel_ActionButtons + // + panel_ActionButtons.Controls.Add(radButton_Cancel); + panel_ActionButtons.Controls.Add(radButton_Confirm); + resources.ApplyResources(panel_ActionButtons, "panel_ActionButtons"); + panel_ActionButtons.Name = "panel_ActionButtons"; + // + // FlyoutDialogBase + // + resources.ApplyResources(this, "$this"); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + Controls.Add(panel_ActionButtons); + Name = "FlyoutDialogBase"; + ((System.ComponentModel.ISupportInitialize)radButton_Cancel).EndInit(); + ((System.ComponentModel.ISupportInitialize)radButton_Confirm).EndInit(); + panel_ActionButtons.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private global::Telerik.WinControls.UI.RadButton radButton_Cancel; + private global::Telerik.WinControls.UI.RadButton radButton_Confirm; + private System.Windows.Forms.Panel panel_ActionButtons; + } +} diff --git a/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.Statics.cs b/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.Statics.cs new file mode 100644 index 0000000..25b1c3b --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.Statics.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Telerik.WinControls.UI.SplashScreen; +using Telerik.WinControls.UI; +using System.Windows.Forms; + +namespace Pilz.UI.Telerik.Dialogs +{ + partial class FlyoutDialogBase + { + public delegate void FlyoutCreatedEventHandler(FlyoutCreatedEventArgs e); + public delegate void FlyoutClosedEventHandler(FlyoutClosedEventArgs e); + + public static event FlyoutCreatedEventHandler FlyoutCreated + { + add => flyoutCreatedHandlers.Add(value); + remove => flyoutCreatedHandlers.Remove(value); + } + + public static event FlyoutClosedEventHandler FlyoutClosed + { + add => flyoutCloseHandlers.Add(value); + remove => flyoutCloseHandlers.Remove(value); + } + + private static readonly List flyoutCreatedHandlers = new(); + private static readonly List flyoutCloseHandlers = new(); + + private static object? tagToAssign = null; + public static Control? ParentContext { get; private set; } = null; + + static FlyoutDialogBase() + { + RadFlyoutManager.ContentCreated += RadFlyoutManager_ContentCreated; + RadFlyoutManager.FlyoutClosed += RadFlyoutManager_FlyoutClosed; + } + + private static void RadFlyoutManager_ContentCreated(ContentCreatedEventArgs e) + { + if (e.Content is FlyoutDialogBase dialogBase) + { + if (tagToAssign != null) + dialogBase.Tag = tagToAssign; + + var eventArgs = new FlyoutCreatedEventArgs((FlyoutDialogBase)e.Content); + + if (dialogBase is ILoadContent iLoadContent) + iLoadContent.LoadContent(); + + foreach (var args in flyoutCreatedHandlers) + { + if (ParentContext != null) + ParentContext?.Invoke(args, eventArgs); + else + args.Invoke(eventArgs); + } + } + } + + private static void RadFlyoutManager_FlyoutClosed(global::Telerik.WinControls.UI.SplashScreen.FlyoutClosedEventArgs e) + { + if (e.Content is FlyoutDialogBase dialogBase) + { + var eventArgs = new FlyoutClosedEventArgs((FlyoutDialogBase)e.Content); + + foreach (var args in flyoutCloseHandlers) + { + if (ParentContext != null) + ParentContext?.Invoke(args, eventArgs); + else + args.Invoke(eventArgs); + } + } + + ParentContext = null; + } + + public static void Show(Control controlToAssociate, object? tag = null) + { + Show(controlToAssociate, typeof(T), tag); + } + + public static void Show(Control controlToAssociate, Type flyoutContentType, object? tag = null) + { + tagToAssign = tag; + ParentContext = controlToAssociate; + RadFlyoutManager.Show(controlToAssociate, flyoutContentType); + } + + protected static void CloseFlyout() + { + if (ParentContext == null) + throw new NullReferenceException(nameof(ParentContext)); + + ParentContext.BeginInvoke(RadFlyoutManager.Close); + } + } +} diff --git a/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.cs b/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.cs new file mode 100644 index 0000000..6dff35e --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.cs @@ -0,0 +1,86 @@ +using Pilz.UI.Telerik; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Telerik.WinControls; +using Telerik.WinControls.UI; +using Telerik.WinControls.UI.SplashScreen; +using static Telerik.WinControls.UI.PopupEditorNotificationData; + +namespace Pilz.UI.Telerik.Dialogs +{ + public partial class FlyoutDialogBase : UserControl + { + public static RadSvgImage? CancelSvg { get; set; } = null; + public static RadSvgImage? ConfirmSvg { get; set; } = null; + + public DialogResult Result { get; protected set; } + + protected bool ActionPanelVisible + { + get => panel_ActionButtons.Visible; + set => panel_ActionButtons.Visible = value; + } + + protected bool CancelButtonEnable + { + get => radButton_Cancel.Enabled; + set => radButton_Cancel.Enabled = value; + } + + protected bool ConfirmButtonEnable + { + get => radButton_Confirm.Enabled; + set => radButton_Confirm.Enabled = value; + } + + protected FlyoutDialogBase() + { + InitializeComponent(); + ParentChanged += FlyoutDialogBase_ParentChanged; + + // SVG Symbols + radButton_Cancel.SvgImage = CancelSvg; + radButton_Confirm.SvgImage = ConfirmSvg; + } + + private void FlyoutDialogBase_ParentChanged(object? sender, EventArgs e) + { + var frm = FindForm(); + if (frm != null) + frm.AcceptButton = radButton_Confirm; + } + + protected void Close(DialogResult result) + { + Result = result; + + if (FindForm() is DialogBaseForm dialogForm) + dialogForm.Close(); + else + CloseFlyout(); + } + + private void RadButton_Confirm_Click(object sender, EventArgs e) + { + if (ValidateOK()) + Close(DialogResult.OK); + } + + private void RadButton_Cancel_Click(object sender, EventArgs e) + { + Close(DialogResult.Cancel); + } + + protected virtual bool ValidateOK() + { + return true; + } + } +} diff --git a/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.resx b/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.resx new file mode 100644 index 0000000..ce650cc --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/FlyoutDialogBase.resx @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Top, Right + + + + MiddleRight + + + 187, 3 + + + 110, 24 + + + + 0 + + + Cancel + + + MiddleLeft + + + ImageBeforeText + + + radButton_Cancel + + + Telerik.WinControls.UI.RadButton, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e + + + panel_ActionButtons + + + 0 + + + Top, Right + + + MiddleRight + + + 71, 3 + + + 110, 24 + + + 1 + + + Okay + + + MiddleLeft + + + ImageBeforeText + + + radButton_Confirm + + + Telerik.WinControls.UI.RadButton, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e + + + panel_ActionButtons + + + 1 + + + Bottom + + + 0, 120 + + + 300, 30 + + + 2 + + + panel_ActionButtons + + + System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + True + + + 7, 15 + + + 300, 150 + + + FlyoutDialogBase + + + System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Pilz.UI.Telerik/Dialogs/ILoadContent.cs b/Pilz.UI.Telerik/Dialogs/ILoadContent.cs new file mode 100644 index 0000000..6ab549c --- /dev/null +++ b/Pilz.UI.Telerik/Dialogs/ILoadContent.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Pilz.UI.Telerik.Dialogs +{ + public interface ILoadContent + { + void LoadContent(); + } +} diff --git a/Pilz.UI.Telerik/Pilz.UI.Telerik.csproj b/Pilz.UI.Telerik/Pilz.UI.Telerik.csproj new file mode 100644 index 0000000..22c45ad --- /dev/null +++ b/Pilz.UI.Telerik/Pilz.UI.Telerik.csproj @@ -0,0 +1,14 @@ + + + + net6.0-windows + enable + enable + true + + + + + + + diff --git a/Pilz.sln b/Pilz.sln index 6271f04..20a2f6a 100644 --- a/Pilz.sln +++ b/Pilz.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.329 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34018.315 MinimumVisualStudioVersion = 10.0.40219.1 Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz", "Pilz\Pilz.vbproj", "{277D2B83-7613-4C49-9CAB-E080195A6E0C}" EndProject @@ -31,6 +31,10 @@ Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Networking", "Pilz.Net EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Cryptography", "Pilz.Cryptography\Pilz.Cryptography.csproj", "{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.UI.Telerik.SymbolFactory", "Pilz.UI.Telerik.SymbolFactory\Pilz.UI.Telerik.SymbolFactory.csproj", "{2B3B8161-29FF-4526-9082-4410AB5144A5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.UI.Telerik", "Pilz.UI.Telerik\Pilz.UI.Telerik.csproj", "{DF674119-CC28-40AA-968F-1E23D184A491}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -151,6 +155,22 @@ Global {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|Any CPU.Build.0 = Release|Any CPU {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|x86.ActiveCfg = Release|Any CPU {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|x86.Build.0 = Release|Any CPU + {2B3B8161-29FF-4526-9082-4410AB5144A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B3B8161-29FF-4526-9082-4410AB5144A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B3B8161-29FF-4526-9082-4410AB5144A5}.Debug|x86.ActiveCfg = Debug|Any CPU + {2B3B8161-29FF-4526-9082-4410AB5144A5}.Debug|x86.Build.0 = Debug|Any CPU + {2B3B8161-29FF-4526-9082-4410AB5144A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2B3B8161-29FF-4526-9082-4410AB5144A5}.Release|Any CPU.Build.0 = Release|Any CPU + {2B3B8161-29FF-4526-9082-4410AB5144A5}.Release|x86.ActiveCfg = Release|Any CPU + {2B3B8161-29FF-4526-9082-4410AB5144A5}.Release|x86.Build.0 = Release|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Debug|x86.ActiveCfg = Debug|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Debug|x86.Build.0 = Debug|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Release|Any CPU.Build.0 = Release|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Release|x86.ActiveCfg = Release|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE