Skip to content

Commit

Permalink
Update v2.3
Browse files Browse the repository at this point in the history
  • Loading branch information
EmptyKeys committed Jul 4, 2016
1 parent 3135ba8 commit 225c2cd
Show file tree
Hide file tree
Showing 14 changed files with 307 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
<Compile Include="EventTrigger.cs" />
<Compile Include="GeneratedBindingsMode.cs" />
<Compile Include="GeneratedBindings.cs" />
<Compile Include="ImageButton.cs" />
<Compile Include="Input\GamepadBinding.cs" />
<Compile Include="Input\GamepadGesture.cs" />
<Compile Include="Input\GamepadInput.cs" />
Expand Down
152 changes: 152 additions & 0 deletions EmptyKeys.UserInterface.Designer/ImageButton.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace EmptyKeys.UserInterface.Designer
{
/// <summary>
/// Implements button with image
/// </summary>
public class ImageButton : Button
{
private static readonly Type typeOfThis = typeof(ImageButton);
private static DependencyObjectType dependencyType;

/// <summary>
/// The image normal property
/// </summary>
public static readonly DependencyProperty ImageNormalProperty =
DependencyProperty.Register("ImageNormal", typeof(BitmapImage), typeOfThis,
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsMeasure));

/// <summary>
/// Gets or sets the image normal.
/// </summary>
/// <value>
/// The image normal.
/// </value>
public BitmapImage ImageNormal
{
get { return (BitmapImage)GetValue(ImageNormalProperty); }
set { SetValue(ImageNormalProperty, value); }
}

/// <summary>
/// The image pressed property
/// </summary>
public static readonly DependencyProperty ImagePressedProperty =
DependencyProperty.Register("ImagePressed", typeof(BitmapImage), typeOfThis,
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsMeasure));

/// <summary>
/// Gets or sets the image pressed.
/// </summary>
/// <value>
/// The image pressed.
/// </value>
public BitmapImage ImagePressed
{
get { return (BitmapImage)GetValue(ImagePressedProperty); }
set { SetValue(ImagePressedProperty, value); }
}

/// <summary>
/// The image hover property
/// </summary>
public static readonly DependencyProperty ImageHoverProperty =
DependencyProperty.Register("ImageHover", typeof(BitmapImage), typeOfThis,
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsMeasure));

/// <summary>
/// Gets or sets the image hover.
/// </summary>
/// <value>
/// The image hover.
/// </value>
public BitmapImage ImageHover
{
get { return (BitmapImage)GetValue(ImageHoverProperty); }
set { SetValue(ImageHoverProperty, value); }
}

/// <summary>
/// The image disabled property
/// </summary>
public static readonly DependencyProperty ImageDisabledProperty =
DependencyProperty.Register("ImageDisabled", typeof(BitmapImage), typeOfThis,
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsMeasure));

/// <summary>
/// Gets or sets the image disabled.
/// </summary>
/// <value>
/// The image disabled.
/// </value>
public BitmapImage ImageDisabled
{
get { return (BitmapImage)GetValue(ImageDisabledProperty); }
set { SetValue(ImageDisabledProperty, value); }
}

/*
/// <summary>
/// The image focused property
/// </summary>
public static readonly DependencyProperty ImageFocusedProperty =
DependencyProperty.Register("ImageFocused", typeof(BitmapImage), typeOfThis,
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsMeasure));
/// <summary>
/// Gets or sets the image focused.
/// </summary>
/// <value>
/// The image focused.
/// </value>
public BitmapImage ImageFocused
{
get { return (BitmapImage)GetValue(ImageFocusedProperty); }
set { SetValue(ImageFocusedProperty, value); }
}
*/

/// <summary>
/// The image stretch property
/// </summary>
public static readonly DependencyProperty ImageStretchProperty =
DependencyProperty.Register("ImageStretch", typeof(Stretch), typeOfThis,
new FrameworkPropertyMetadata(Stretch.Uniform, FrameworkPropertyMetadataOptions.AffectsMeasure));

/// <summary>
/// Gets or sets the image stretch.
/// </summary>
/// <value>
/// The image stretch.
/// </value>
public Stretch ImageStretch
{
get { return (Stretch)GetValue(ImageStretchProperty); }
set { SetValue(ImageStretchProperty, value); }
}

/// <summary>
/// Initializes the <see cref="ImageButton"/> class.
/// </summary>
static ImageButton()
{
}

/// <summary>
/// Initializes a new instance of the <see cref="ImageButton"/> class.
/// </summary>
public ImageButton()
: base()
{
}
}
}
27 changes: 27 additions & 0 deletions EmptyKeys.UserInterface.Designer/Themes/Generic.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,31 @@
</Setter.Value>
</Setter>
</Style>

<ControlTemplate x:Key="ImageButtonTemplate" TargetType="{x:Type local:ImageButton}">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" >
<StackPanel Orientation="Horizontal" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
<Image Name="PART_Image" Source="{TemplateBinding ImageNormal}" />
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="PART_Image" Property="Source" Value="{Binding ImageHover, RelativeSource={RelativeSource TemplatedParent}}" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="PART_Image" Property="Source" Value="{Binding ImagePressed, RelativeSource={RelativeSource TemplatedParent}}" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="PART_Image" Property="Source" Value="{Binding ImageDisabled, RelativeSource={RelativeSource TemplatedParent}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>

<Style TargetType="{x:Type local:ImageButton}">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Template" Value="{StaticResource ImageButtonTemplate}" />
</Style>
</ResourceDictionary>
4 changes: 2 additions & 2 deletions GlobalAssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@

[assembly: NeutralResourcesLanguage("en")]

[assembly: AssemblyVersion("2.2.0.0")]
[assembly: AssemblyFileVersion("2.2.0.0")]
[assembly: AssemblyVersion("2.3.0.0")]
[assembly: AssemblyFileVersion("2.3.0.0")]
6 changes: 6 additions & 0 deletions UIGenerator/BindingGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,12 @@ public void GenerateFile(string outputFile)
}
finally
{
string directory = Path.GetDirectoryName(outputFile);
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}

using (StreamWriter outfile = new StreamWriter(outputFile))
{
outfile.Write(generatedCode);
Expand Down
18 changes: 11 additions & 7 deletions UIGenerator/CodeComHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ private static CodeExpression GenerateImageBrush(CodeMemberMethod method, string
BitmapImage bitmap = image.ImageSource as BitmapImage;
if (bitmap != null)
{
GenerateBitmapImageField(method, brushExpr, bitmap.UriSource, variableName + "_bm", "ImageSource");
GenerateBitmapImageField(method, brushExpr, image, bitmap.UriSource, variableName + "_bm", ImageBrush.ImageSourceProperty);
}

if (BindingOperations.IsDataBound(image, ImageBrush.ImageSourceProperty))
Expand Down Expand Up @@ -533,16 +533,20 @@ private static void GenerateRect(CodeMemberMethod method, CodeExpression brushEx
/// </summary>
/// <param name="method">The method.</param>
/// <param name="fieldReference">The field reference.</param>
/// <param name="source">The source.</param>
/// <param name="uriSource">The URI source.</param>
/// <param name="variableName">Name of the variable.</param>
/// <param name="sourceProperty">The asset property.</param>
public static void GenerateBitmapImageField(CodeMemberMethod method, CodeExpression fieldReference, Uri uriSource, string variableName, string sourceProperty)
/// <param name="property">The property.</param>
public static void GenerateBitmapImageField(CodeMemberMethod method, CodeExpression fieldReference, DependencyObject source, Uri uriSource, string variableName, DependencyProperty property)
{
GenerateBitmapImageValue(method, uriSource, variableName);
if (IsValidForFieldGenerator(source.ReadLocalValue(property)))
{
GenerateBitmapImageValue(method, uriSource, variableName);

method.Statements.Add(new CodeAssignStatement(
new CodeFieldReferenceExpression(fieldReference, sourceProperty),
new CodeVariableReferenceExpression(variableName)));
method.Statements.Add(new CodeAssignStatement(
new CodeFieldReferenceExpression(fieldReference, property.Name),
new CodeVariableReferenceExpression(variableName)));
}
}

/// <summary>
Expand Down
1 change: 1 addition & 0 deletions UIGenerator/EmptyKeys.UserInterface.Generator.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
<Compile Include="Types\Controls\CanvasGeneratorType.cs" />
<Compile Include="Types\Controls\GroupBoxGeneratorType.cs" />
<Compile Include="Types\Controls\HeaderedItemsControlGeneratorType.cs" />
<Compile Include="Types\Controls\ImageButtonGeneratorType.cs" />
<Compile Include="Types\Controls\Primitives\PopupGeneratorType.cs" />
<Compile Include="Types\Controls\Primitives\TabPanelGeneratorType.cs" />
<Compile Include="Types\Controls\RadioButtonGeneratorType.cs" />
Expand Down
8 changes: 6 additions & 2 deletions UIGenerator/FontGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,14 @@ public void GenerateFontAssets(string path, RenderMode renderMode)
string fileContent = string.Empty;
string extension = ".spritefont";
if (renderMode == RenderMode.Xenko)
{
{
assetName = assetName.Replace(".", "-");
string assetGuid = Guid.NewGuid().ToString();
fileContent = string.Format(template, fontName, fontSize.ToString(CultureInfo.InvariantCulture), fontStyle, assetGuid);
string fontSourceGuid = Guid.NewGuid().ToString();
string fontTypeGuid = Guid.NewGuid().ToString();
string charRegionGuid = Guid.NewGuid().ToString();
string version = "{Xenko: 1.7.0-beta04}";
fileContent = string.Format(template, fontName, info.FontSize.ToString(CultureInfo.InvariantCulture), fontStyle, assetGuid, fontSourceGuid, fontTypeGuid, charRegionGuid, version);
extension = ".xkfnt";
}
else
Expand Down
3 changes: 3 additions & 0 deletions UIGenerator/TypeGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,9 @@ public TypeGenerator()

IGeneratorType seriesPoint = new SeriesPointGeneratorType();
Generators.Add(seriesPoint.XamlType, seriesPoint);

IGeneratorType imageButton = new ImageButtonGeneratorType();
Generators.Add(imageButton.XamlType, imageButton);
}

/// <summary>
Expand Down
75 changes: 75 additions & 0 deletions UIGenerator/Types/Controls/ImageButtonGeneratorType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
using System;
using System.CodeDom;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using EmptyKeys.UserInterface.Designer;

namespace EmptyKeys.UserInterface.Generator.Types.Controls
{
/// <summary>
/// Implements Image Button generator
/// </summary>
/// <seealso cref="EmptyKeys.UserInterface.Generator.Types.ButtonGeneratorType" />
public class ImageButtonGeneratorType : ButtonGeneratorType
{
/// <summary>
/// Gets the type of the xaml.
/// </summary>
/// <value>
/// The type of the xaml.
/// </value>
public override Type XamlType
{
get
{
return typeof(ImageButton);
}
}

/// <summary>
/// Generates code
/// </summary>
/// <param name="source">The dependence object</param>
/// <param name="classType">Type of the class.</param>
/// <param name="initMethod">The initialize method.</param>
/// <param name="generateField"></param>
/// <returns></returns>
public override CodeExpression Generate(DependencyObject source, CodeTypeDeclaration classType, CodeMemberMethod initMethod, bool generateField)
{
CodeExpression fieldReference = base.Generate(source, classType, initMethod, generateField);
CodeComHelper.GenerateEnumField<Stretch>(initMethod, fieldReference, source, ImageButton.ImageStretchProperty);

ImageButton imageButton = source as ImageButton;
BitmapImage bitmap = imageButton.ImageNormal as BitmapImage;
if (bitmap != null)
{
CodeComHelper.GenerateBitmapImageField(initMethod, fieldReference, source, bitmap.UriSource, imageButton.Name + "_normal_bm", ImageButton.ImageNormalProperty);
}

bitmap = imageButton.ImageDisabled as BitmapImage;
if (bitmap != null)
{
CodeComHelper.GenerateBitmapImageField(initMethod, fieldReference, source, bitmap.UriSource, imageButton.Name + "_disabled_bm", ImageButton.ImageDisabledProperty);
}

bitmap = imageButton.ImageHover as BitmapImage;
if (bitmap != null)
{
CodeComHelper.GenerateBitmapImageField(initMethod, fieldReference, source, bitmap.UriSource, imageButton.Name + "_hover_bm", ImageButton.ImageHoverProperty);
}

bitmap = imageButton.ImagePressed as BitmapImage;
if (bitmap != null)
{
CodeComHelper.GenerateBitmapImageField(initMethod, fieldReference, source, bitmap.UriSource, imageButton.Name + "_pressed_bm", ImageButton.ImagePressedProperty);
}

return fieldReference;
}
}
}
1 change: 1 addition & 0 deletions UIGenerator/Types/ExpanderGeneratorType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public override CodeExpression Generate(DependencyObject source, CodeTypeDeclara

Expander expander = source as Expander;
CodeComHelper.GenerateField<bool>(initMethod, fieldReference, source, Expander.IsExpandedProperty);
CodeComHelper.GenerateEnumField<ExpandDirection>(initMethod, fieldReference, source, Expander.ExpandDirectionProperty);

return fieldReference;
}
Expand Down
2 changes: 1 addition & 1 deletion UIGenerator/Types/ImageGeneratorType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public override CodeExpression Generate(DependencyObject source, CodeTypeDeclara
BitmapImage bitmap = image.Source as BitmapImage;
if (bitmap != null)
{
CodeComHelper.GenerateBitmapImageField(method, fieldReference, bitmap.UriSource, image.Name + "_bm", "Source");
CodeComHelper.GenerateBitmapImageField(method, fieldReference, source, bitmap.UriSource, image.Name + "_bm", Image.SourceProperty);
}

CodeComHelper.GenerateEnumField<Stretch>(method, fieldReference, source, Image.StretchProperty);
Expand Down
6 changes: 6 additions & 0 deletions ekUiGen/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,12 @@ private static void Generate(string xamlFile, string outputFile, RenderMode rend
}
finally
{
string directory = Path.GetDirectoryName(outputFile);
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}

using (StreamWriter outfile = new StreamWriter(outputFile))
{
outfile.Write(generatedCode);
Expand Down
Loading

0 comments on commit 225c2cd

Please sign in to comment.