This commit is contained in:
Timerix22 2023-12-25 18:14:09 +06:00
parent cfe68e39cc
commit c7eda63c03
3 changed files with 120 additions and 519 deletions

View File

@ -3,6 +3,32 @@
x:Class="SharpCalculator.Avalonia.App"
RequestedThemeVariant="Dark">
<Application.Styles>
<SimpleTheme />
<Style Selector="Control.center">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style Selector="Button.cirlce">
<Setter Property="Height" Value="60"/>
<Setter Property="Width" Value="60"/>
<Setter Property="CornerRadius" Value="30"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
<Style Selector="Button.gray">
<Setter Property="Background" Value="Gray"/>
</Style>
<Style Selector="Button.orange">
<Setter Property="Background" Value="DarkOrange"/>
</Style>
</Application.Styles>
</Application>

View File

@ -1,571 +1,151 @@
<Window
FontFamily="Consolas"
FontSize="24"
Height="750"
Title="SharpCalculator"
Width="600"
mc:Ignorable="d"
x:Class="SharpCalculator.Avalonia.MainWindow"
xmlns="https://github.com/avaloniaui"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SharpCalculator.Avalonia.MainWindow"
Title="SharpCalculator"
FontFamily="Consolas" FontSize="24"
Width="600" Height="750"
MinWidth="600" MinHeight="750">
<Grid
HorizontalAlignment="Center"
Margin="20"
VerticalAlignment="Center">
<Grid Classes="center" Margin="20">
<Grid.ColumnDefinitions>* * * * * * *</Grid.ColumnDefinitions>
<Grid.RowDefinitions>* * * * * * * * * *</Grid.RowDefinitions>
<!-- 1st row -->
<TextBlock
FontSize="40"
Grid.Column="0"
Grid.ColumnSpan="7"
Grid.Row="1"
<TextBlock Name="Input" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="7"
HorizontalAlignment="Right"
Name="Input"
Text=""/>
<!-- 2nd row -->
<Button
Background="Gray"
Click="ClearButton_OnClick"
Content="AC"
Grid.Column="0"
Grid.Row="2"
Name="ClearButton"/>
<Button Name="ClearButton" Classes="cirlce gray" Grid.Column="0" Grid.Row="2"
Click="ClearButton_OnClick" Content="AC"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="("
CornerRadius="30"
Grid.Column="1"
Grid.Row="2"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button
Background="Gray"
Click="MathButton_OnClick"
Content=")"
CornerRadius="30"
Grid.Column="2"
Grid.Row="2"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button
Background="Orange"
Click="MathButton_OnClick"
Content="/"
CornerRadius="30"
Grid.Column="3"
Grid.Row="2"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="1" Grid.Row="2"
Click="MathButton_OnClick" Content="("/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="^"
CornerRadius="30"
Grid.Column="4"
Grid.Row="2"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="2" Grid.Row="2"
Click="MathButton_OnClick" Content=")" />
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="sin"
CornerRadius="30"
Grid.Column="5"
Grid.Row="2"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce orange" Grid.Column="3" Grid.Row="2"
Click="MathButton_OnClick" Content="/"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="asin"
CornerRadius="30"
Grid.Column="6"
Grid.Row="2"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="4" Grid.Row="2"
Click="MathButton_OnClick" Content="^"/>
<Button Classes="cirlce gray" Grid.Column="5" Grid.Row="2"
Click="MathButton_OnClick" Content="sin"/>
<Button Classes="cirlce gray" Grid.Column="6" Grid.Row="2"
Click="MathButton_OnClick" Content="asin"/>
<!-- 3rd row -->
<Button
Click="MathButton_OnClick"
Content="7"
CornerRadius="30"
Grid.Column="0"
Grid.Row="3"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="0" Grid.Row="3"
Click="MathButton_OnClick" Content="7"/>
<Button
Click="MathButton_OnClick"
Content="8"
CornerRadius="30"
Grid.Column="1"
Grid.Row="3"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button
Click="MathButton_OnClick"
Content="9"
CornerRadius="30"
Grid.Column="2"
Grid.Row="3"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button
Background="Orange"
Click="MathButton_OnClick"
Content="*"
CornerRadius="30"
Grid.Column="3"
Grid.Row="3"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="1" Grid.Row="3"
Click="MathButton_OnClick" Content="8"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="e"
CornerRadius="30"
Grid.Column="4"
Grid.Row="3"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="2" Grid.Row="3"
Click="MathButton_OnClick" Content="9"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="cos"
CornerRadius="30"
Grid.Column="5"
Grid.Row="3"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce orange" Grid.Column="3" Grid.Row="3"
Click="MathButton_OnClick" Content="*"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="acos"
CornerRadius="30"
Grid.Column="6"
Grid.Row="3"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="4" Grid.Row="3"
Click="MathButton_OnClick" Content="e"/>
<Button Classes="cirlce gray" Grid.Column="5" Grid.Row="3"
Click="MathButton_OnClick" Content="cos"/>
<Button Classes="cirlce gray" Grid.Column="6" Grid.Row="3"
Click="MathButton_OnClick" Content="acos"/>
<!-- 4th row -->
<Button
Click="MathButton_OnClick"
Content="4"
CornerRadius="30"
Grid.Column="0"
Grid.Row="4"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="0" Grid.Row="4"
Click="MathButton_OnClick" Content="4"/>
<Button
Click="MathButton_OnClick"
Content="5"
CornerRadius="30"
Grid.Column="1"
Grid.Row="4"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="1" Grid.Row="4"
Click="MathButton_OnClick" Content="5"/>
<Button
Click="MathButton_OnClick"
Content="6"
CornerRadius="30"
Grid.Column="2"
Grid.Row="4"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="2" Grid.Row="4"
Click="MathButton_OnClick" Content="6"/>
<Button
Background="Orange"
Click="MathButton_OnClick"
Content="-"
CornerRadius="30"
Grid.Column="3"
Grid.Row="4"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce orange" Grid.Column="3" Grid.Row="4"
Click="MathButton_OnClick" Content="-"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="10^x"
CornerRadius="30"
Grid.Column="4"
Grid.Row="4"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="4" Grid.Row="4"
Click="MathButton_OnClick" Content="10^x"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="tan"
CornerRadius="30"
Grid.Column="5"
Grid.Row="4"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="5" Grid.Row="4"
Click="MathButton_OnClick" Content="tan"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="atan"
CornerRadius="30"
Grid.Column="6"
Grid.Row="4"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="6" Grid.Row="4"
Click="MathButton_OnClick" Content="atan"/>
<!-- 5th row -->
<Button
Click="MathButton_OnClick"
Content="1"
CornerRadius="30"
Grid.Column="0"
Grid.Row="5"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="0" Grid.Row="5"
Click="MathButton_OnClick" Content="1"/>
<Button
Click="MathButton_OnClick"
Content="2"
CornerRadius="30"
Grid.Column="1"
Grid.Row="5"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="1" Grid.Row="5"
Click="MathButton_OnClick" Content="2"/>
<Button
Click="MathButton_OnClick"
Content="3"
CornerRadius="30"
Grid.Column="2"
Grid.Row="5"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="2" Grid.Row="5"
Click="MathButton_OnClick" Content="3"/>
<Button
Background="Orange"
Click="MathButton_OnClick"
Content="+"
CornerRadius="30"
Grid.Column="3"
Grid.Row="5"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce orange" Grid.Column="3" Grid.Row="5"
Click="MathButton_OnClick" Content="+"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="rand"
CornerRadius="30"
Grid.Column="4"
Grid.Row="5"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="4" Grid.Row="5"
Click="MathButton_OnClick" Content="rand"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="ctg"
CornerRadius="30"
Grid.Column="5"
Grid.Row="5"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="5" Grid.Row="5"
Click="MathButton_OnClick" Content="ctg"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="actg"
CornerRadius="30"
Grid.Column="6"
Grid.Row="5"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="6" Grid.Row="5"
Click="MathButton_OnClick" Content="actg"/>
<!-- 6th row -->
<Button
Click="MathButton_OnClick"
Content="0"
CornerRadius="30"
Grid.Column="0"
Grid.Row="6"
Height="55"
HorizontalContentAlignment="Center"
Margin="5"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="0" Grid.Row="6"
Click="MathButton_OnClick" Content="0"/>
<Button
Click="MathButton_OnClick"
Content="%"
CornerRadius="30"
Grid.Column="1"
Grid.Row="6"
Height="55"
HorizontalContentAlignment="Center"
Margin="5"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="1" Grid.Row="6"
Click="MathButton_OnClick" Content="%"/>
<Button
Click="MathButton_OnClick"
Content="."
CornerRadius="30"
Grid.Column="2"
Grid.Row="6"
Height="55"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce" Grid.Column="2" Grid.Row="6"
Click="MathButton_OnClick" Content="."/>
<Button
Background="Orange"
Click="ResultButton_OnClick"
Content="="
CornerRadius="30"
Grid.Column="3"
Grid.Row="6"
Height="55"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce orange" Grid.Column="3" Grid.Row="6"
Click="ResultButton_OnClick" Content="="/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="π"
CornerRadius="30"
Grid.Column="4"
Grid.Row="6"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="4" Grid.Row="6"
Click="MathButton_OnClick" Content="π"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="1/x"
CornerRadius="30"
Grid.Column="5"
Grid.Row="6"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="5" Grid.Row="6"
Click="MathButton_OnClick" Content="1/x"/>
<Button
Background="Gray"
Click="MathButton_OnClick"
Content="log"
CornerRadius="30"
Grid.Column="6"
Grid.Row="6"
Height="60"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Margin="5"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Width="60" />
<Button Classes="cirlce gray" Grid.Column="6" Grid.Row="6"
Click="MathButton_OnClick" Content="log"/>
<!-- 7th row -->
<TextBlock
FontSize="25"
Grid.Column="0"
Grid.ColumnSpan="7"
Grid.Row="7"
Name="History1"
<TextBlock Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="7" Name="History1"
Text=""/>
<!-- 8th row -->
<TextBlock
FontSize="25"
Grid.Column="0"
Grid.ColumnSpan="7"
Grid.Row="8"
Name="History2"
<TextBlock Name="History2" Grid.Column="0" Grid.Row="8" Grid.ColumnSpan="7"
Text=""/>
<!-- 9th row -->
<TextBlock
FontSize="25"
Grid.Column="0"
Grid.ColumnSpan="7"
Grid.Row="9"
Name="History3"
<TextBlock Name="History3" Grid.Column="0" Grid.Row="9" Grid.ColumnSpan="7"
Text=""/>
</Grid>
</Window>

View File

@ -8,25 +8,20 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using Avalonia.Controls;
using Avalonia.Interactivity;
using FusionCalculator;
using Avalonia.Media;
using FusionCalculator;
namespace SharpCalculator.Avalonia;
public partial class MainWindow : Window
{
static Random _random = new Random(); // Random object for rand() function in calculator
double _randomNumber = _random.NextDouble(); // Random variable is between 0 to 1
private int _currentIndex = 0; // Current index for checking the length of input text, accordingly for clear button
static Random _random = new(); // Random object for rand() function in calculator
private int _currentIndex; // Current index for checking the length of input text, accordingly for clear Button Classes="cirlce"
private List<string> _history = new List<string>();
private List<string> _history = new();
public MainWindow()
{
@ -46,7 +41,7 @@ public partial class MainWindow : Window
{
case "rand": // rand function add random variable from 0 to 1 into Input
Input.Text = "";
Input.Text += _randomNumber.ToString(CultureInfo.InvariantCulture);
Input.Text += _random.NextDouble().ToString(CultureInfo.InvariantCulture);
break;
case "π": // Pi function add pi value into Input
Input.Text = "";