AutoGrid and build.sh
This commit is contained in:
@@ -4,7 +4,6 @@ global using System.Globalization;
|
|||||||
global using Avalonia;
|
global using Avalonia;
|
||||||
global using Avalonia.Controls;
|
global using Avalonia.Controls;
|
||||||
global using Avalonia.Interactivity;
|
global using Avalonia.Interactivity;
|
||||||
global using Avalonia.Media;
|
|
||||||
using Avalonia.Controls.ApplicationLifetimes;
|
using Avalonia.Controls.ApplicationLifetimes;
|
||||||
using Avalonia.Markup.Xaml;
|
using Avalonia.Markup.Xaml;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<Window
|
<Window
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:ag="clr-namespace:AvaloniaAutoGrid;assembly=AvaloniaAutoGrid"
|
||||||
x:Class="SharpCalculator.Avalonia.MainWindow"
|
x:Class="SharpCalculator.Avalonia.MainWindow"
|
||||||
Title="SharpCalculator"
|
Title="SharpCalculator"
|
||||||
Icon="avares://SharpCalculator.Avalonia/assets/icon.ico"
|
Icon="avares://SharpCalculator.Avalonia/assets/icon.ico"
|
||||||
@@ -8,10 +9,11 @@
|
|||||||
MinWidth="460" MinHeight="570"
|
MinWidth="460" MinHeight="570"
|
||||||
Width="460" Height="570">
|
Width="460" Height="570">
|
||||||
|
|
||||||
<Grid Margin="10">
|
<!-- ReSharper disable Xaml.MissingGridIndex -->
|
||||||
<Grid.RowDefinitions>1* 40 1* 330</Grid.RowDefinitions>
|
<ag:AutoGrid Margin="10"
|
||||||
|
ColumnDefinitions="*"
|
||||||
<TextBox Name="Input" Grid.Row="0"
|
RowDefinitions="1* 40 1* 330">
|
||||||
|
<TextBox Name="Input"
|
||||||
TextChanged="Input_OnTextChanged"
|
TextChanged="Input_OnTextChanged"
|
||||||
BorderThickness="2"
|
BorderThickness="2"
|
||||||
BorderBrush="#AAAAAA"
|
BorderBrush="#AAAAAA"
|
||||||
@@ -19,11 +21,11 @@
|
|||||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
||||||
ScrollViewer.VerticalScrollBarVisibility="Auto"/>
|
ScrollViewer.VerticalScrollBarVisibility="Auto"/>
|
||||||
|
|
||||||
<TextBlock Grid.Row="1"
|
<StackPanel Orientation="Horizontal">
|
||||||
VerticalAlignment="Center"
|
<TextBlock VerticalAlignment="Center"
|
||||||
Foreground="#AAAAAA"
|
Foreground="#AAAAAA"
|
||||||
Text="="/>
|
Text="="/>
|
||||||
<TextBox Name="Output" Grid.Row="1"
|
<TextBox Name="Output"
|
||||||
Margin="16 0 0 0"
|
Margin="16 0 0 0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
VerticalContentAlignment="Center"
|
VerticalContentAlignment="Center"
|
||||||
@@ -32,8 +34,9 @@
|
|||||||
TextWrapping="NoWrap"
|
TextWrapping="NoWrap"
|
||||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||||
ScrollViewer.VerticalScrollBarVisibility="Disabled"/>
|
ScrollViewer.VerticalScrollBarVisibility="Disabled"/>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
<TextBox Name="History" Grid.Row="2"
|
<TextBox Name="History"
|
||||||
Foreground="Gray"
|
Foreground="Gray"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
BorderBrush="Gray"
|
BorderBrush="Gray"
|
||||||
@@ -43,127 +46,131 @@
|
|||||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||||
ScrollViewer.VerticalScrollBarVisibility="Auto"/>
|
ScrollViewer.VerticalScrollBarVisibility="Auto"/>
|
||||||
|
|
||||||
<Grid Grid.Row="3" VerticalAlignment="Bottom"
|
<!-- ReSharper disable once Xaml.MissingGridIndex -->
|
||||||
MinWidth="440" MaxWidth="440" MinHeight="320" MaxHeight="320">
|
<ag:AutoGrid
|
||||||
<Grid.ColumnDefinitions>* * * * * * *</Grid.ColumnDefinitions>
|
ColumnDefinitions="*"
|
||||||
<Grid.RowDefinitions>* * * * *</Grid.RowDefinitions>
|
RowDefinitions="*"
|
||||||
|
ColumnCount="7" RowCount="5"
|
||||||
|
VerticalAlignment="Bottom"
|
||||||
|
MinWidth="440" MaxWidth="440"
|
||||||
|
MinHeight="320" MaxHeight="320">
|
||||||
|
|
||||||
<!-- 1st row -->
|
<!-- 1st row -->
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="0" Grid.Row="0"
|
<Button Classes="button gray"
|
||||||
Click="ClearButton_OnClick" Content="AC"/>
|
Click="ClearButton_OnClick" Content="AC"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="1" Grid.Row="0"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="("/>
|
Click="MathButton_OnClick" Content="("/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="2" Grid.Row="0"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content=")" />
|
Click="MathButton_OnClick" Content=")" />
|
||||||
|
|
||||||
<Button Classes="button orange" Grid.Column="3" Grid.Row="0"
|
<Button Classes="button orange"
|
||||||
Click="MathButton_OnClick" Content="/"/>
|
Click="MathButton_OnClick" Content="/"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="4" Grid.Row="0"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="1/x"/>
|
Click="MathButton_OnClick" Content="1/x"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="5" Grid.Row="0"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="sin"/>
|
Click="MathButton_OnClick" Content="sin"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="6" Grid.Row="0"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="asin"/>
|
Click="MathButton_OnClick" Content="asin"/>
|
||||||
|
|
||||||
<!-- 2nd row -->
|
<!-- 2nd row -->
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="0" Grid.Row="1"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="7"/>
|
Click="MathButton_OnClick" Content="7"/>
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="1" Grid.Row="1"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="8"/>
|
Click="MathButton_OnClick" Content="8"/>
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="2" Grid.Row="1"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="9"/>
|
Click="MathButton_OnClick" Content="9"/>
|
||||||
|
|
||||||
<Button Classes="button orange" Grid.Column="3" Grid.Row="1"
|
<Button Classes="button orange"
|
||||||
Click="MathButton_OnClick" Content="*"/>
|
Click="MathButton_OnClick" Content="*"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="4" Grid.Row="1"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="^"/>
|
Click="MathButton_OnClick" Content="^"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="5" Grid.Row="1"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="cos"/>
|
Click="MathButton_OnClick" Content="cos"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="6" Grid.Row="1"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="acos"/>
|
Click="MathButton_OnClick" Content="acos"/>
|
||||||
|
|
||||||
<!-- 3th row -->
|
<!-- 3th row -->
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="0" Grid.Row="2"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="4"/>
|
Click="MathButton_OnClick" Content="4"/>
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="1" Grid.Row="2"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="5"/>
|
Click="MathButton_OnClick" Content="5"/>
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="2" Grid.Row="2"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="6"/>
|
Click="MathButton_OnClick" Content="6"/>
|
||||||
|
|
||||||
<Button Classes="button orange" Grid.Column="3" Grid.Row="2"
|
<Button Classes="button orange"
|
||||||
Click="MathButton_OnClick" Content="-"/>
|
Click="MathButton_OnClick" Content="-"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="4" Grid.Row="2"
|
<Button Classes="button gray"
|
||||||
FontSize="22"
|
FontSize="22"
|
||||||
Click="MathButton_OnClick" Content="10^x"/>
|
Click="MathButton_OnClick" Content="10^x"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="5" Grid.Row="2"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="tg"/>
|
Click="MathButton_OnClick" Content="tg"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="6" Grid.Row="2"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="atg"/>
|
Click="MathButton_OnClick" Content="atg"/>
|
||||||
|
|
||||||
<!-- 4th row -->
|
<!-- 4th row -->
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="0" Grid.Row="3"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="1"/>
|
Click="MathButton_OnClick" Content="1"/>
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="1" Grid.Row="3"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="2"/>
|
Click="MathButton_OnClick" Content="2"/>
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="2" Grid.Row="3"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="3"/>
|
Click="MathButton_OnClick" Content="3"/>
|
||||||
|
|
||||||
<Button Classes="button orange" Grid.Column="3" Grid.Row="3"
|
<Button Classes="button orange"
|
||||||
Click="MathButton_OnClick" Content="+"/>
|
Click="MathButton_OnClick" Content="+"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="4" Grid.Row="3"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="e"/>
|
Click="MathButton_OnClick" Content="e"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="5" Grid.Row="3"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="ctg"/>
|
Click="MathButton_OnClick" Content="ctg"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="6" Grid.Row="3"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="actg"/>
|
Click="MathButton_OnClick" Content="actg"/>
|
||||||
|
|
||||||
<!-- 5th row -->
|
<!-- 5th row -->
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="0" Grid.Row="4"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="0"/>
|
Click="MathButton_OnClick" Content="0"/>
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="1" Grid.Row="4"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="."/>
|
Click="MathButton_OnClick" Content="."/>
|
||||||
|
|
||||||
<Button Classes="button" Grid.Column="2" Grid.Row="4"
|
<Button Classes="button"
|
||||||
Click="MathButton_OnClick" Content="%"/>
|
Click="MathButton_OnClick" Content="%"/>
|
||||||
|
|
||||||
<Button Classes="button orange" Grid.Column="3" Grid.Row="4"
|
<Button Classes="button orange"
|
||||||
Click="ResultButton_OnClick" Content="="/>
|
Click="ResultButton_OnClick" Content="="/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="4" Grid.Row="4"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="π"/>
|
Click="MathButton_OnClick" Content="π"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="5" Grid.Row="4"
|
<Button Classes="button gray"
|
||||||
FontSize="22"
|
FontSize="22"
|
||||||
Click="MathButton_OnClick" Content="rand"/>
|
Click="MathButton_OnClick" Content="rand"/>
|
||||||
|
|
||||||
<Button Classes="button gray" Grid.Column="6" Grid.Row="4"
|
<Button Classes="button gray"
|
||||||
Click="MathButton_OnClick" Content="ln"/>
|
Click="MathButton_OnClick" Content="ln"/>
|
||||||
</Grid>
|
</ag:AutoGrid>
|
||||||
</Grid>
|
</ag:AutoGrid>
|
||||||
</Window>
|
</Window>
|
||||||
@@ -1,8 +1,4 @@
|
|||||||
using Avalonia;
|
namespace SharpCalculator.Avalonia;
|
||||||
using System;
|
|
||||||
using System.Globalization;
|
|
||||||
|
|
||||||
namespace SharpCalculator.Avalonia;
|
|
||||||
|
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<LangVersion>12</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>disable</ImplicitUsings>
|
<ImplicitUsings>disable</ImplicitUsings>
|
||||||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||||
<ApplicationIcon>assets\icon.ico</ApplicationIcon>
|
<ApplicationIcon>assets\icon.ico</ApplicationIcon>
|
||||||
|
<PublishTrimmed>true</PublishTrimmed>
|
||||||
|
<PublishAot>true</PublishAot>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -15,6 +17,7 @@
|
|||||||
<PackageReference Include="Avalonia.Desktop" Version="11.3.10" />
|
<PackageReference Include="Avalonia.Desktop" Version="11.3.10" />
|
||||||
<PackageReference Include="Avalonia.Themes.Simple" Version="11.3.10" />
|
<PackageReference Include="Avalonia.Themes.Simple" Version="11.3.10" />
|
||||||
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.3.10" />
|
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.3.10" />
|
||||||
|
<PackageReference Include="Russkyc.AvaloniaAutoGrid" Version="1.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<ImplicitUsings>disable</ImplicitUsings>
|
<ImplicitUsings>disable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution_items", "solution_
|
|||||||
.gitignore = .gitignore
|
.gitignore = .gitignore
|
||||||
.gitmodules = .gitmodules
|
.gitmodules = .gitmodules
|
||||||
README.md = README.md
|
README.md = README.md
|
||||||
|
build.sh = build.sh
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpCalculator.Tests", "SharpCalculator.Tests\SharpCalculator.Tests.csproj", "{E929E48D-D11B-4FB5-AC6F-D0D50E2B3BD1}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpCalculator.Tests", "SharpCalculator.Tests\SharpCalculator.Tests.csproj", "{E929E48D-D11B-4FB5-AC6F-D0D50E2B3BD1}"
|
||||||
|
|||||||
28
build.sh
Normal file
28
build.sh
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
outdir="bin"
|
||||||
|
project="SharpCalculator.Avalonia"
|
||||||
|
|
||||||
|
# Somebody broke dotnet10 sdk .target files
|
||||||
|
# To publish self-contained trimmed binary you should add <PublishTrimmed>true</PublishTrimmed> to project file.
|
||||||
|
# Command-line option -p:PublishTrimmed=true produces an error.
|
||||||
|
# Same with <PublishAot>true</PublishAot> if you want AOT compilation.
|
||||||
|
args="
|
||||||
|
--self-contained
|
||||||
|
--use-current-runtime
|
||||||
|
-p:PublishSingleFile=true
|
||||||
|
-p:TrimMode=partial
|
||||||
|
-p:EnableCompressionInSingleFile=true
|
||||||
|
-p:OptimizationPreference=Size
|
||||||
|
-p:InvariantGlobalization=true
|
||||||
|
-p:DebugType=none
|
||||||
|
-p:IncludeNativeLibrariesForSelfExtract=true"
|
||||||
|
|
||||||
|
rm -rf "$outdir"
|
||||||
|
command="dotnet publish $project -c Release -o $outdir $args"
|
||||||
|
echo "$command"
|
||||||
|
$command
|
||||||
|
|
||||||
|
find "$outdir" -name '*.pdb' -delete -printf "deleted '%p'\n"
|
||||||
|
tree -sh "$outdir"
|
||||||
Reference in New Issue
Block a user