mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-23 02:51:26 -07:00
* add custom bootstrappers * add avalonedit to licenses page * add gif support * add stretch & stretchdirection to images * dont create a bitmapimage for gifs * remove maxheight and maxwidth sets * remove comment * add isenabled * add more textblock properties * add markdowntextblocks * update how transform elements are stored * overhaul textbox content * dont set fontsize if not set * fix warnings * add foreground property to control * add background property to textblock * count descendants and increase element cap * add auto complete * dont display completion window if there is no data * sort schema elements and types * make ! close the completion window * add end tag auto complete * fix pos being wrong * dont treat comments as elements * add imagebrushes * follow same conventions as brushes * fix exception messages * fix them again * update schema * fix crash * now it works * wrong attribute name * add solidcolorbrush * move converters into a separate file * add lineargradientbrushes * unify handlers * update schema * add fake BloxstrapCustomBootstrapper * stop adding an extra end character * add property element auto-complete * add title attribute to custombloxstrapbootstrapper * add shapes * add string translation support * use default wpf size instead of 100x100 * update min height of window * fix verticalalignment not working * uncap height and width * add effects * move transformation handler inside frameworkelement * fix title bar effect & transformation removal * add more frameworkelement properties * add layout transform * add font properties to control * improve window border stuff * make sure file contents are in CRLF * add cornerradius to progress bar * add progressring * Update wpfui * update schema * update function names * add children check to content * make sure only one content is defined * add fontfamily * update schema * only allow file uris for images * disable backdrop * move text setter to textblock handler from base * split up creator into multiple files * turn version into a constant * add grids * cleanup converters * add IgnoreTitleBarInset * add Version to schema * reveal custom bootstrapper stuff on selection * increase listbox height * only set statustext binding in textblock * update ui * rename ZIndex to Panel.ZIndex * add stackpanel * add border * fix being unable to apply transforms on grids * rearrange and add new editor button * use snackbars for saving * add close confirmation message * use viewmodel variable * remove pointless onpropertychanged call * add version string format * start editor window in the centre * update licenses page also resized the about window so everything could fit nicely * fix border not inheriting frameworkelement * add WindowCornerPreference * add the import dialog * add an export theme button * update version number * localise CustomDialog exceptions * localise custom theme editor * localise custom theme add dialog * localise frontend * localise appearance menu page * change customtheme error strings namespace * change icons on appearance page * update button margin on appearance page
91 lines
3.8 KiB
C#
91 lines
3.8 KiB
C#
using System.ComponentModel;
|
|
using System.Windows;
|
|
using System.Windows.Media;
|
|
using System.Xml;
|
|
using System.Xml.Linq;
|
|
|
|
namespace Bloxstrap.UI.Elements.Bootstrapper
|
|
{
|
|
public partial class CustomDialog
|
|
{
|
|
// https://stackoverflow.com/a/2961702
|
|
private static T? ConvertValue<T>(string input) where T : struct
|
|
{
|
|
try
|
|
{
|
|
var converter = TypeDescriptor.GetConverter(typeof(T));
|
|
if (converter != null)
|
|
{
|
|
return (T?)converter.ConvertFromInvariantString(input);
|
|
}
|
|
return default;
|
|
}
|
|
catch (NotSupportedException)
|
|
{
|
|
return default;
|
|
}
|
|
}
|
|
|
|
private static object? GetTypeFromXElement(TypeConverter converter, XElement xmlElement, string attributeName)
|
|
{
|
|
string? attributeValue = xmlElement.Attribute(attributeName)?.Value?.ToString();
|
|
if (attributeValue == null)
|
|
return null;
|
|
|
|
try
|
|
{
|
|
return converter.ConvertFromInvariantString(attributeValue);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new CustomThemeException(ex, "CustomTheme.Errors.ElementAttributeConversionError", xmlElement.Name, attributeName, ex.Message);
|
|
}
|
|
}
|
|
|
|
private static ThicknessConverter ThicknessConverter { get; } = new ThicknessConverter();
|
|
private static object? GetThicknessFromXElement(XElement xmlElement, string attributeName) => GetTypeFromXElement(ThicknessConverter, xmlElement, attributeName);
|
|
|
|
private static RectConverter RectConverter { get; } = new RectConverter();
|
|
private static object? GetRectFromXElement(XElement xmlElement, string attributeName) => GetTypeFromXElement(RectConverter, xmlElement, attributeName);
|
|
|
|
private static ColorConverter ColorConverter { get; } = new ColorConverter();
|
|
private static object? GetColorFromXElement(XElement xmlElement, string attributeName) => GetTypeFromXElement(ColorConverter, xmlElement, attributeName);
|
|
|
|
private static PointConverter PointConverter { get; } = new PointConverter();
|
|
private static object? GetPointFromXElement(XElement xmlElement, string attributeName) => GetTypeFromXElement(PointConverter, xmlElement, attributeName);
|
|
|
|
private static CornerRadiusConverter CornerRadiusConverter { get; } = new CornerRadiusConverter();
|
|
private static object? GetCornerRadiusFromXElement(XElement xmlElement, string attributeName) => GetTypeFromXElement(CornerRadiusConverter, xmlElement, attributeName);
|
|
|
|
private static GridLengthConverter GridLengthConverter { get; } = new GridLengthConverter();
|
|
private static object? GetGridLengthFromXElement(XElement xmlElement, string attributeName) => GetTypeFromXElement(GridLengthConverter, xmlElement, attributeName);
|
|
|
|
|
|
private static BrushConverter BrushConverter { get; } = new BrushConverter();
|
|
|
|
/// <summary>
|
|
/// Return type of string = Name of DynamicResource
|
|
/// Return type of brush = ... The Brush!!!
|
|
/// </summary>
|
|
private static object? GetBrushFromXElement(XElement element, string attributeName)
|
|
{
|
|
string? value = element.Attribute(attributeName)?.Value?.ToString();
|
|
if (value == null)
|
|
return null;
|
|
|
|
// dynamic resource name
|
|
if (value.StartsWith('{') && value.EndsWith('}'))
|
|
return value[1..^1];
|
|
|
|
try
|
|
{
|
|
return BrushConverter.ConvertFromInvariantString(value);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new CustomThemeException(ex, "CustomTheme.Errors.ElementAttributeConversionError", element.Name, attributeName, ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|