Skip to content

Commit

Permalink
[Cirilla] Small tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
Fusion86 committed Sep 17, 2020
1 parent 956cc49 commit 4817c0a
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 16 deletions.
11 changes: 6 additions & 5 deletions src/Cirilla.Avalonia/Cirilla.Avalonia.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@
<AvaloniaResource Include="Assets\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.999-cibuild0010245-beta" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.999-cibuild0010245-beta" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.999-cibuild0010245-beta" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.999-cibuild0010245-beta" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.999-cibuild0010245-beta" />
<PackageReference Include="Avalonia" Version="0.10.999-cibuild0010595-beta" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.999-cibuild0010595-beta" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.999-cibuild0010595-beta" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.999-cibuild0010595-beta" />
<PackageReference Include="Avalonia.Direct2D1" Version="0.10.999-cibuild0010595-beta" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.999-cibuild0010595-beta" />
<PackageReference Include="Nito.AsyncEx.Coordination" Version="5.0.0" />
<PackageReference Include="ReactiveUI" Version="11.5.35" />
<PackageReference Include="ReactiveUI.Fody" Version="11.5.35" />
Expand Down
40 changes: 40 additions & 0 deletions src/Cirilla.Avalonia/Controls/DataGridTextExColumn.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;

namespace Cirilla.Avalonia.Controls
{
public class DataGridTextExColumn : DataGridTextColumn
{
public static readonly StyledProperty<bool> AcceptsReturnProperty =
AvaloniaProperty.Register<DataGridTextExColumn, bool>(nameof(AcceptsReturn));

public bool AcceptsReturn
{
get { return GetValue(AcceptsReturnProperty); }
set { SetValue(AcceptsReturnProperty, value); }
}

protected override IControl GenerateEditingElementDirect(DataGridCell cell, object dataItem)
{
var element = base.GenerateEditingElementDirect(cell, dataItem);
if (element is TextBox textBox)
textBox.AcceptsReturn = AcceptsReturn;
return element;
}

protected override object PrepareCellForEdit(IControl editingElement, RoutedEventArgs editingEventArgs)
{
if (editingElement is TextBox textBox)
textBox.AcceptsReturn = AcceptsReturn;
return base.PrepareCellForEdit(editingElement, editingEventArgs);
}

protected override void RefreshCellContent(IControl element, string propertyName)
{
if (element is TextBox textBox)
textBox.AcceptsReturn = AcceptsReturn;
base.RefreshCellContent(element, propertyName);
}
}
}
50 changes: 45 additions & 5 deletions src/Cirilla.Avalonia/Program.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
using System;
using System.IO;
using System.Reflection;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
//using Avalonia.Logging.Serilog;
using Avalonia.ReactiveUI;
using Serilog;

namespace Cirilla.Avalonia
{
Expand All @@ -11,14 +12,53 @@ class Program
// Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
public static void Main(string[] args) => BuildAvaloniaApp()
.StartWithClassicDesktopLifetime(args);
public static int Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
// The real main needs to be in a different method, see https://stackoverflow.com/a/25990979/2125072
return RealMain(args);
}

// Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
{
var config = AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToDebug()
.UseReactiveUI();

// Needed for correct display of Japanese/Chinese/etc characters
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
config.UseDirect2D1();

return config;
}

private static int RealMain(string[] args)
{
return BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
}

private static Assembly CurrentDomain_AssemblyResolve(object? sender, ResolveEventArgs args)
{
var probingPath = Path.GetFullPath("lib");
var assyName = new AssemblyName(args.Name!);

var dllPath = Path.Combine(probingPath, assyName.Name!);
if (!dllPath.EndsWith(".dll"))
dllPath += ".dll";

if (File.Exists(dllPath))
return Assembly.LoadFile(dllPath);

return null!;
}

private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var ex = e.ExceptionObject as Exception;
Log.Error(ex, $"Unhandled exception: {ex?.Message}");
}
}
}
4 changes: 2 additions & 2 deletions src/Cirilla.Avalonia/Styles/DataGrid.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@

<Style Selector="DataGridRow /template/ Rectangle#BackgroundRectangle">
<Setter Property="IsVisible" Value="False"/>
<Setter Property="Fill" Value="{DynamicResource HighlightBrush}" />
<Setter Property="Fill" Value="{DynamicResource ThemeAccentColor}" />
</Style>

<Style Selector="DataGridRow:pointerover /template/ Rectangle#BackgroundRectangle">
Expand Down Expand Up @@ -149,7 +149,7 @@
</Style>

<Style Selector="DataGridRowGroupHeader">
<Setter Property="Background" Value="{DynamicResource ThemeControlMidHighBrush}" />
<Setter Property="Background" Value="Red" />
<Setter Property="Height" Value="20"/>
<Setter Property="Template">
<ControlTemplate>
Expand Down
35 changes: 34 additions & 1 deletion src/Cirilla.Avalonia/Styles/Themes/CadetDark.axaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,46 @@
<Style xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">

<Design.PreviewWith>
<StackPanel Margin="20" Spacing="5">
<Button Content="Button 1"/>
<Button Content="Button 2" Classes="Primary"/>

<ComboBox SelectedItem="Item 1">
<ComboBoxItem Content="Item 1"/>
<ComboBoxItem Content="Item 2"/>
<ComboBoxItem Content="Item 3"/>
</ComboBox>

<TextBox Height="100" Width="200">
Tekst
Content
Box
</TextBox>

<TabControl>
<TabItem Header="Test">
<StackPanel Margin="5" Spacing="5">
<TextBlock Text="Ok?"/>
<TextBox />
<Button Content="Ok"/>
</StackPanel>
</TabItem>

<TabItem Header="Test"/>
<TabItem Header="Test"/>
</TabControl>
</StackPanel>
</Design.PreviewWith>

<Style.Resources>
<!-- Add custom colors -->
<Color x:Key="FusionDark1Color">#FF1E1E1E</Color>
<Color x:Key="FusionDark2Color">#FF252525</Color>
<Color x:Key="FusionDark3Color">#FF323232</Color>
<Color x:Key="FusionDark4Color">#FF404040</Color>

<SolidColorBrush x:Key="FusionDark1Brush" Color="{DynamicResource FusionDark1Color}"></SolidColorBrush>
<SolidColorBrush x:Key="FusionDark2Brush" Color="{DynamicResource FusionDark2Color}"></SolidColorBrush>
<SolidColorBrush x:Key="FusionDark3Brush" Color="{DynamicResource FusionDark3Color}"></SolidColorBrush>
Expand Down
3 changes: 2 additions & 1 deletion src/Cirilla.Avalonia/Views/GmdEditView.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ctrl="clr-namespace:Cirilla.Avalonia.Controls;assembly=Cirilla.Avalonia"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Cirilla.Avalonia.Views.GmdEditView">

Expand All @@ -10,7 +11,7 @@
<DataGrid.Columns>
<DataGridTextColumn Header="Index" Binding="{Binding Index}" IsReadOnly="True"/>
<DataGridTextColumn Header="Value" Binding="{Binding Key}"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}"/>
<ctrl:DataGridTextExColumn Header="Value" Binding="{Binding Value}" AcceptsReturn="True"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
Expand Down
5 changes: 3 additions & 2 deletions src/Cirilla.Avalonia/Views/GmdEditView.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Markup.Xaml;
using System;

namespace Cirilla.Avalonia.Views
{
Expand Down

0 comments on commit 4817c0a

Please sign in to comment.