diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8ca517d61..bda81ccfe 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,6 +6,37 @@ version: 2 updates: - package-ecosystem: "nuget" # See documentation for possible values - directory: "/" # Location of package manifests + directory: "/CSharpBible" # Location of package manifests schedule: interval: "weekly" + target-branch: "CSharpBible" + + - package-ecosystem: "nuget" # See documentation for possible values + directory: "/TestStatements" # Location of package manifests + schedule: + interval: "weekly" + target-branch: "TestStatements" + + - package-ecosystem: "nuget" # See documentation for possible values + directory: "/JC-AMS" # Location of package manifests + schedule: + interval: "weekly" + target-branch: "JC-AMS" + + - package-ecosystem: "nuget" # See documentation for possible values + directory: "/Transpiler_pp" # Location of package manifests + schedule: + interval: "weekly" + target-branch: "Transpiler_pp" + + - package-ecosystem: "nuget" # See documentation for possible values + directory: "/GenFreeWin" # Location of package manifests + schedule: + interval: "weekly" + target-branch: "GenFreeWin" + + - package-ecosystem: "nuget" # See documentation for possible values + directory: "/Avalonia_Apps" # Location of package manifests + schedule: + interval: "weekly" + target-branch: "Avalonia_Apps" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3e143b975..656b4893e 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,24 +1,12 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" +name: "CodeQL C#" on: push: - branches: [ "master" ] + branches: [ "master", "main", "develop" ] pull_request: - # The branches below must be a subset of the branches above - branches: [ "master" ] + branches: [ "master", "main", "develop" ] schedule: - - cron: '24 0 * * 1' + - cron: '0 18 * * 5' # Runs at 18:00 every Friday jobs: analyze: @@ -32,43 +20,54 @@ jobs: strategy: fail-fast: false matrix: - language: ['csharp' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + language: ['csharp'] steps: - name: Checkout repository uses: actions/checkout@v3 - # Initializes the CodeQL tools for scanning. + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: ~/.nuget/packages + key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} + restore-keys: | + ${{ runner.os }}-nuget- + + - name: Install wasi-experimental-workload (WebAssembly) + run: | + dotnet workload install wasi-experimental + - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality + queries: +security-extended,security-and-quality + - name: Build Avalonia_Apps + continue-on-error: true # Ignore errors during this step + run: | + dotnet build Avalonia_Apps/Avalonia_Apps.sln - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - #- name: Autobuild - # uses: github/codeql-action/autobuild@v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - #- run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh + - name: Build Transpiler_pp + continue-on-error: true # Ignore errors during this step + run: | + dotnet build Transpiler_pp/Transpiler.sln + + - name: Build CSharpBible + continue-on-error: true # Ignore errors during this step + run: | + dotnet build CSharpBible/Libraries/Libraries.sln + dotnet build CSharpBible/Calc/Calc.sln + dotnet build CSharpBible/Graphics/Graphics.sln + dotnet build CSharpBible/MVVM_Tutorial/MVVM_Tutorial.sln + + # Uncomment and modify the following lines if Autobuild fails + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" diff --git a/.gitignore b/.gitignore index 00022acfc..3e5f6349f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,114 +1,9 @@ -################################################################################ -# Diese .gitignore-Datei wurde von Microsoft(R) Visual Studio automatisch erstellt. -################################################################################ - -*.pfx -*.exe -*.dll +.vs +bin +obj *.bak -/.svn -/.vs -/bin -/*/.vs -/CSharpBible/*/.vs -/*/obj -/*/bin -/*/TestResults -/*/*/TestResults -/*/*/obj -/*/*/bin -/*/*/*/.vs -/*/*/*/obj -/*/*/*/bin -/CSharpBible/Help -/CSharpBible/Mobile -/CSharpBible/AboutEx/obj -/CSharpBible/AboutEx/publish -/CSharpBible/AboutExTests/bin -/CSharpBible/AboutExTests/obj -/CSharpBible/ActionTest/obj -/CSharpBible/ActionTestWPF/obj -/CSharpBible/AddPage/obj -/CSharpBible/AddPageWPF/obj -/CSharpBible/BindingGroupExp/obj -/CSharpBible/Calc/Help -/CSharpBible/Calc32/obj -/CSharpBible/Calc32Tests/obj -/CSharpBible/Calc32WPF/obj -/CSharpBible/CharGrid/obj -/CSharpBible/CSharpBibleTest/obj -/CSharpBible/CSFreeVision/obj -/CSharpBible/CSV_Viewer/obj -/CSharpBible/CSV_ViewerTest/obj -/CSharpBible/ConsoleMouseApp/obj -/CSharpBible/ConsoleLib/obj -/CSharpBible/DataGridEx/obj -/CSharpBible/DataGridExWPF/obj -/CSharpBible/packages -/NUnitTestProject1/NUnitTestProject1/obj -/TestStatements/.vs -/TestStatements/AsyncExample/obj -/TestStatements/AsyncExampleWPF/obj -/TestStatements/CallAllExamples/obj -/TestStatements/ctlClockLib/obj -/TestStatements/DynamicSample/obj -/TestStatements/packages -/TestStatements/TestClockApp/obj -/TestStatements/TestStatements/obj -/TestStatements/TestStatementsTest/obj -/TestStatements/Tutorials/obj -/CSharpProgrammierHandbuch/.vs -/CSharpProgrammierHandbuch/Fibonacci/obj -/CSharpProgrammierHandbuch/HelloWorld/obj -/CSharpProgrammierHandbuch/CGui/obj -/CSharpProgrammierHandbuch/ConsoleTest/obj -/CSharpProgrammierHandbuch/CSharpProgrammierHandbuch/obj -/CSharpProgrammierHandbuch/Fibonacci2 -/TestStatements/AsyncExampleWPF -/TestStatements/Tutorials/obj/Debug -/CSharpBible/Basics/.vs -/CSharpBible/Basics/.vs *.user -*.bak -/CSharpBible/Calc/.vs -/CSharpBible/DB/.vs -/CSharpBible/Mobile -/CSharpBible/MVVM_Tutorial/.vs -/CSharpBible/Calc/Help -/CSharpBible/DependencyInjection/.vs -/CSharpBible/CSharpBibleTest/.vs -/CSharpBible/Games/.vs -/CSharpBible/Graphics/.vs -/GenFreeWin/.vs -/JC-AMS/.vs -/obj /obj.net -/TestStatements/Help -/JC-AMS/JC-AMS.sln.GhostDoc.xml -/CSharpBible/Help -/CSharpBible/MVVM_Tutorial/MVVM_16_Usercontrol1/.vs -/CSharpBible/MVVM_Tutorial/TestResults -/CSharpBible/Patterns_Tutorial/.vs -/CSharpBible/Patterns_Tutorial/Pattern_00_Template/obj -/CSharpBible/Patterns_Tutorial/Pattern_00_TemplateTests/obj -/CSharpBible/Patterns_Tutorial/Pattern_01_Singleton/obj -/CSharpBible/Patterns_Tutorial/Pattern_01_SingletonTests/obj -/CSharpBible/Patterns_Tutorial/Pattern_02_Observer/obj -/CSharpBible/Patterns_Tutorial/Pattern_02_ObserverTests/obj -*.editorconfig -/CSharpBible/Libraries/CSFreeVision_ -/CSharpBible/AboutExTests/.vs -/CSharpBible/CSV_ViewerTest/.vs -/CSharpBible/DB/DataLake_App/obj -/CSharpBible/DB/DataLake_App/bin -/CSharpBible/DB/DataLake_Example/.vs -/CSharpBible/Graphics/Polyline/.vs -/GenFreeWin/TestResults -/CSharpBible/Games/Sokoban_Base/*.svn -/CSharpBible/MVVM_Tutorial/UWP_00_Test/AppPackages -/TestStatements/TestStatements/Version.inc -obj.net -/JC-AMS/Core/Resource/Version.inc -/TestStatements/*.snk -/CSharpBible/Libraries/*.snk -/Transpiler_pp/Analyzer1/Analyzer1.Package/tools/install.ps1 +/CSharpBible/Data/obj.net +/CSharpBible/obj.net +*.log diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc.sln b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc.sln new file mode 100644 index 000000000..5516f6076 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AA05_CommandParCalc", "AA05_CommandParCalc\AA05_CommandParCalc.csproj", "{02E04201-5AE2-470B-9C41-C1EF23C31DBB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Projektmappenelemente", "Projektmappenelemente", "{87372279-1249-4919-88C6-641CFD20D23F}" + ProjectSection(SolutionItems) = preProject + Application.props = Application.props + Directory.Packages.props = Directory.Packages.props + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UpDir", "UpDir", "{B80EE610-E601-41EA-90C0-94157D42F9B2}" + ProjectSection(SolutionItems) = preProject + ..\Solution.props = ..\Solution.props + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AA05_CommandParCalcTests", "AA05_CommandParCalcTests\AA05_CommandParCalcTests.csproj", "{F7B8C2BD-2643-4464-AE46-4C92D889DD37}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {02E04201-5AE2-470B-9C41-C1EF23C31DBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {02E04201-5AE2-470B-9C41-C1EF23C31DBB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {02E04201-5AE2-470B-9C41-C1EF23C31DBB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {02E04201-5AE2-470B-9C41-C1EF23C31DBB}.Release|Any CPU.Build.0 = Release|Any CPU + {F7B8C2BD-2643-4464-AE46-4C92D889DD37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7B8C2BD-2643-4464-AE46-4C92D889DD37}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7B8C2BD-2643-4464-AE46-4C92D889DD37}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7B8C2BD-2643-4464-AE46-4C92D889DD37}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/AA05_CommandParCalc.csproj b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/AA05_CommandParCalc.csproj new file mode 100644 index 000000000..9d80b995e --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/AA05_CommandParCalc.csproj @@ -0,0 +1,59 @@ + + + + WinExe + net8.0 + true + app.manifest + true + + + + + $(TargetFrameworks);net9.0 + + + $(TargetFrameworks);net10.0 + + + + + + + + + + + + + + None + All + + + + + + + + + + + + + + True + True + Resources.resx + + + + + + PublicResXFileCodeGenerator + Resources.Designer.cs + + + + + diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/App.axaml b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/App.axaml new file mode 100644 index 000000000..0c0341c10 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/App.axaml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/App.axaml.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/App.axaml.cs new file mode 100644 index 000000000..fbae35880 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/App.axaml.cs @@ -0,0 +1,70 @@ +using System; +using System.Linq; +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Data.Core; +using Avalonia.Data.Core.Plugins; +using Avalonia.Markup.Xaml; +using Avalonia.Platform; +using AA05_CommandParCalc.Models; +using AA05_CommandParCalc.Models.Interfaces; +using AA05_CommandParCalc.ViewModels; +using AA05_CommandParCalc.ViewModels.Interfaces; +using AA05_CommandParCalc.Views; +using Microsoft.Extensions.DependencyInjection; + +namespace AA05_CommandParCalc; + +public partial class App : Application +{ + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + InitDesktopApp(desktop); + } + + base.OnFrameworkInitializationCompleted(); + } + + protected void InitDesktopApp(IClassicDesktopStyleApplicationLifetime desktop) + { + var services = new ServiceCollection(); + + services.AddTransient() + .AddTransient() + .AddTransient() + .AddSingleton((s)=>null!) + .AddSingleton(); + + Services = services.BuildServiceProvider(); + + // Avoid duplicate validations from both Avalonia and the CommunityToolkit. + // More info: https://docs.avaloniaui.net/docs/guides/development-guides/data-validation#manage-validationplugins + DisableAvaloniaDataAnnotationValidation(); + desktop.MainWindow = new MainWindow + { + DataContext = Services.GetRequiredService() + }; + } + + private void DisableAvaloniaDataAnnotationValidation() + { + // Get an array of plugins to remove + var dataValidationPluginsToRemove = + BindingPlugins.DataValidators.OfType().ToArray(); + + // remove each entry found + foreach (var plugin in dataValidationPluginsToRemove) + { + BindingPlugins.DataValidators.Remove(plugin); + } + } + + public IServiceProvider? Services { get; private set; } +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/Images/Logo.svg b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/Images/Logo.svg new file mode 100644 index 000000000..88219f567 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/Images/Logo.svg @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + J + C -Soft + + + diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/Images/Logo_2.png b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/Images/Logo_2.png new file mode 100644 index 000000000..c579a91cf Binary files /dev/null and b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/Images/Logo_2.png differ diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/avalonia-logo.ico b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/avalonia-logo.ico new file mode 100644 index 000000000..da8d49ff9 Binary files /dev/null and b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Assets/avalonia-logo.ico differ diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ECalcError.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ECalcError.cs new file mode 100644 index 000000000..df5dfb859 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ECalcError.cs @@ -0,0 +1,46 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 05-11-2023 +// +// Last Modified By : Mir +// Last Modified On : 05-08-2023 +// *********************************************************************** +// +// Copyright JC-Soft 2023 +// +// +// *********************************************************************** +/// +/// The Model namespace. +/// +/// +namespace AA05_CommandParCalc.Data; + +/// +/// Enum ECalcError +/// +/// +public enum ECalcError +{ + /// + /// The none + /// + /// + None = 0, + /// + /// The div by zero + /// + /// + DivByZero, + /// + /// The over flow + /// + /// + OverFlow, + /// + /// The under flow + /// + /// + UnderFlow, +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ECommands.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ECommands.cs new file mode 100644 index 000000000..997d3b7b1 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ECommands.cs @@ -0,0 +1,93 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 05-11-2023 +// +// Last Modified By : Mir +// Last Modified On : 05-08-2023 +// *********************************************************************** +// +// Copyright JC-Soft 2023 +// +// +// *********************************************************************** + +/// +/// The Model namespace. +/// +/// +namespace AA05_CommandParCalc.Data; + +/// +/// Enum ECommands +/// +/// +public enum ECommands +{ + /// + /// The nop + /// + /// + Nop, + /// + /// The clear + /// + /// + Clear, + /// + /// The clear all + /// + /// + ClearAll, + /// + /// The decimal mode + /// + /// + DecMode, + /// + /// The pi + /// + /// + Pi, + /// + /// The e + /// + /// + e, + /// + /// The bracket open + /// + /// + BracketOpen, + /// + /// The bracket close + /// + /// + BracketClose, + /// + /// The ms + /// + /// + MS, + /// + /// The mr + /// + /// + MR, + /// + /// The mc + /// + /// + MC, + /// + /// The mp + /// + /// + Mp, + /// + /// The mm + /// + /// + Mm, + +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ENumbers.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ENumbers.cs new file mode 100644 index 000000000..886228ae0 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ENumbers.cs @@ -0,0 +1,88 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 01-15-2025 +// +// Last Modified By : Mir +// Last Modified On : 02-18-2024 +// *********************************************************************** +// +// Copyright JC-Soft 2025 +// +// +// *********************************************************************** +/// +/// The Data namespace. +/// +namespace AA05_CommandParCalc.Data; + +/// +/// Enum ENumbers +/// +public enum ENumbers : int +{ + /// + /// The 0 + /// + _0 = 0, + /// + /// The 1 + /// + _1 = 1, + /// + /// The 2 + /// + _2 = 2, + /// + /// The 3 + /// + _3 = 3, + /// + /// The 4 + /// + _4 = 4, + /// + /// The 5 + /// + _5 = 5, + /// + /// The 6 + /// + _6 = 6, + /// + /// The 7 + /// + _7 = 7, + /// + /// The 8 + /// + _8 = 8, + /// + /// The 9 + /// + _9 = 9, + /// + /// a + /// + _A = 10, + /// + /// The b + /// + _B = 11, + /// + /// The c + /// + _C = 12, + /// + /// The d + /// + _D = 13, + /// + /// The e + /// + _E = 14, + /// + /// The f + /// + _F = 15 +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/EOperations.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/EOperations.cs new file mode 100644 index 000000000..62e3db9e6 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/EOperations.cs @@ -0,0 +1,121 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 05-11-2023 +// +// Last Modified By : Mir +// Last Modified On : 05-08-2023 +// *********************************************************************** +// +// Copyright JC-Soft 2023 +// +// +// *********************************************************************** +/// +/// The Model namespace. +/// +/// +namespace AA05_CommandParCalc.Data; + +/// +/// Enum EOperations +/// +/// +public enum EOperations +{ + /// + /// The nop + /// + /// + Nop, + /// + /// The calculate result + /// + /// + CalcResult, // = + /// + /// The add + /// + /// + Add, // + + /// + /// The subtract + /// + /// + Subtract, // - + /// + /// The multiply + /// + /// + Multiply, + /// + /// The divide + /// + /// + Divide, + /// + /// The negate + /// + /// + Negate, + /// + /// The power + /// + /// + Power, + /// + /// The square + /// + /// + Square, + /// + /// The square root + /// + /// + SquareRt, // vx + /// + /// The inverse + /// + /// + Inverse, // 1/x + /// + /// The sin + /// + /// + Sin, + /// + /// The cos + /// + /// + Cos, + /// + /// The tan + /// + /// + Tan, + /// + /// The exp n + /// + /// + ExpN, // e? + /// + /// The log n + /// + /// + LogN, + /// + /// The exp x + /// + /// + ExpX, // y? + /// + /// The log x + /// + /// + LogX, + /// + /// The square rt x + /// + /// + SquareRtX, +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ETrigMode.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ETrigMode.cs new file mode 100644 index 000000000..5cdbf1bac --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Data/ETrigMode.cs @@ -0,0 +1,41 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 05-11-2023 +// +// Last Modified By : Mir +// Last Modified On : 05-08-2023 +// *********************************************************************** +// +// Copyright JC-Soft 2023 +// +// +// *********************************************************************** +/// +/// The Model namespace. +/// +/// +namespace AA05_CommandParCalc.Data; + +/// +/// Enum ETrigMode +/// +/// +public enum ETrigMode +{ + /// + /// The grad + /// + /// + Grad, + /// + /// The RAD + /// + /// + Rad, + /// + /// The degr + /// + /// + Degr +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/CalculatorModel.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/CalculatorModel.cs new file mode 100644 index 000000000..0d7d8d911 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/CalculatorModel.cs @@ -0,0 +1,333 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 05-11-2023 +// +// Last Modified By : Mir +// Last Modified On : 05-19-2023 +// *********************************************************************** +// +// Copyright © JC-Soft 2023 +// +// +// *********************************************************************** +using System; +using System.Collections.Generic; +using CommunityToolkit.Mvvm.ComponentModel; +using AA05_CommandParCalc.Data; +using AA05_CommandParCalc.Models.Interfaces; + +/// +/// The Model namespace. +/// +/// +namespace AA05_CommandParCalc.Models; + +/// +/// Class CalculatorModel. +/// Implements the +/// Implements the +/// +/// +/// +/// +public partial class CalculatorModel : ObservableObject, ICalculatorModel +{ + + #region Properties + /// + /// The unary operation + /// + /// + private static readonly List _unaryOperation = new() { + EOperations.Nop, + EOperations.Negate, + EOperations.Sin, + EOperations.Cos, + EOperations.Tan, + EOperations.Square, + EOperations.SquareRt, + EOperations.Inverse, + EOperations.ExpN, + EOperations.LogN, + }; + + /// + /// The operation level + /// + /// + private static readonly Dictionary _OperationLevel = new() { + { EOperations.CalcResult, 0 }, + { EOperations.Add, 1 }, + { EOperations.Subtract, 1 }, + { EOperations.Multiply, 2 }, + { EOperations.Divide, 2 }, + { EOperations.Power, 3 }, + { EOperations.SquareRtX, 3 }, + }; + + /// + /// The instance + /// + /// + private static CalculatorModel? _instance; + /// + /// The op + /// + /// + private EOperations _op; + /// + /// The operation + /// + /// + private Func? _Operation; + /// + /// The accumulator + /// + /// + [ObservableProperty] + private double _accumulator = 0d; + /// + /// The register + /// + /// + [ObservableProperty] + private double? _register = null; + /// + /// The memory + /// + /// + [ObservableProperty] + private double? _memory = null; + /// + /// The stack + /// + /// + private Stack<(double, EOperations, Func)> _stack = new(); + /// + /// The decimal fak + /// + /// + private double _decFak; + /// + /// The decimal mode + /// + /// + private bool _decMode; + /// + /// The edit mode + /// + /// + private bool _editMode; + /// + /// The trig mode + /// + /// + private ETrigMode _trigMode; + /// + /// The calculate error + /// + /// + private ECalcError _calcError; + + /// + /// Gets or sets a value indicating whether [decimal mode]. + /// + /// true if [decimal mode]; otherwise, false. + /// + public bool DecMode + { + get => _decMode; + set + { + if (!_decMode && value) + _decFak = 1d; + _decMode = value; + } + } + + /// + /// Gets the instance. + /// + /// The instance. + /// + public static CalculatorModel Instance => _instance ??= new(); + + /// + /// Gets the dependencies. + /// + /// The dependencies. + /// + public IEnumerable<(string, string)> Dependencies => new[]{ + (nameof(canOperator),nameof(Accumulator)), + (nameof(canOperator),nameof(Register)), + }; + + /// + /// Gets the trig mode. + /// + /// The trig mode. + /// + public ETrigMode TrigMode => _trigMode; + + /// + /// Gets the calculate error. + /// + /// The calculate error. + /// + public ECalcError CalcError => _calcError; + + /// + /// Gets the size of the stack. + /// + /// The size of the stack. + /// + public int StackSize => _stack.Count; + + #endregion + + /// + /// Initializes a new instance of the class. + /// + /// + public CalculatorModel() { } + + /// + /// Determines whether this instance can operator the specified e o. + /// + /// The e o. + /// true if this instance can operator the specified e o; otherwise, false. + /// + public bool canOperator(EOperations eO) + { + if (eO == EOperations.Nop) return true; + if (eO == EOperations.CalcResult) return _Operation != null && Register != null; + if (eO > EOperations.CalcResult) return _editMode || Accumulator != 0d; + return false; + } + + /// + /// Determines whether this instance can command the specified e. + /// + /// The e. + /// true if this instance can command the specified e; otherwise, false. + /// + public bool canCommand(ECommands e) + { + if (e == ECommands.DecMode) return !_decMode; + return true; + } + + + /// + /// Numbers the command. + /// + /// The oo. + /// + public void NumberCmd(ENumbers oo) + { + if (oo is ENumbers e && (int)e is int iN) + { + if (!_editMode) + { + Accumulator = 0d; + _editMode = true; + _decMode = false; + } + if (!_decMode) + Accumulator = Accumulator * 10d + iN; + else + { + _decFak *= 0.1d; + Accumulator = Accumulator + iN * _decFak; + } + } + } + + /// + /// Operators the command. + /// + /// The e o. + /// + public void OperatorCmd(EOperations eO) + { + + _editMode = false; + + if (eO >= EOperations.CalcResult && Register != null && !_unaryOperation.Contains(eO)) + { + if (_Operation != null ) + Accumulator = _Operation.Invoke(Accumulator); + + Register = null; + DecMode = false; + } + if (eO > EOperations.CalcResult && !_unaryOperation.Contains(eO)) + { Register = Accumulator; }; + var op = eO switch + { + + EOperations.CalcResult => null, + EOperations.Add => (a) => Register!.Value + a, + EOperations.Subtract => (a) => Register!.Value - a, + EOperations.Multiply => (a) => Register!.Value * a, + EOperations.Divide => (a) => Register!.Value / a, + EOperations.Power => (a) => Math.Pow(Register!.Value, a), + EOperations.Negate => (a) => -a, + EOperations.Square => (a) => a * a, + EOperations.SquareRt => (a) => Math.Sqrt(a), + EOperations.Inverse => (a) => 1 / a, + EOperations.Sin => (a) => Math.Sin(a), // Dodo: Factor by Trig-Mode + EOperations.Cos => (a) => Math.Cos(a), + EOperations.Tan => (a) => Math.Tan(a), + EOperations.LogN => (a) => Math.Log(a), + EOperations.ExpN => (a) => Math.Exp(a), + _ => (Func?)null, + }; + if (_unaryOperation.Contains(eO)) + Accumulator = op?.Invoke(Accumulator) ?? Accumulator; + else + { + _op = eO; + _Operation = op; + } + } + + /// + /// Calculates the command. + /// + /// The o. + /// + public void CalcCmd(ECommands o) + { + switch (o) + { + case ECommands.Clear: //Clear + Accumulator = 0d; + _editMode = false; + break; + case ECommands.ClearAll: //Clear All + Accumulator = 0d; + Register = 0d; + _Operation = null; + _editMode = false; + break; + case ECommands.DecMode: // DecimalSeparator + DecMode = true; + break; + case ECommands.e: + Accumulator = Math.E; + break; + case ECommands.Pi: + Accumulator = Math.PI; + break; + case ECommands.MS: Memory = Accumulator; break; + case ECommands.MR: Accumulator = Memory ?? 0d; break; + case ECommands.MC: Memory = null; break; + case ECommands.Mp: Memory = (Memory ?? 0d) + Accumulator; break; + case ECommands.Mm: Memory = (Memory ?? 0d) - Accumulator; break; + default: + break; + } + } +} \ No newline at end of file diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/CommandParCalcModel.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/CommandParCalcModel.cs new file mode 100644 index 000000000..4f75e1068 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/CommandParCalcModel.cs @@ -0,0 +1,56 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 01-11-2025 +// +// Last Modified By : Mir +// Last Modified On : 01-12-2025 +// *********************************************************************** +// +// Copyright © JC-Soft 2025 +// +// +// *********************************************************************** +using Avalonia.Platform; +using AA05_CommandParCalc.Models.Interfaces; +using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Timers; + +/// +/// The Models namespace. +/// +namespace AA05_CommandParCalc.Models; + +/// +/// Class CommandParCalcModel. +/// +public partial class CommandParCalcModel : ObservableObject, ICommandParCalcModel +{ + /// + /// The platform handle + /// + private IPlatformHandle _platformHandle; + private ISysTime _sysTime; + private ICyclTimer _timer; + + public DateTime Now => _sysTime.Now; + /// + /// Initializes a new instance of the class. + /// + /// The platform handle. + public CommandParCalcModel(IPlatformHandle platformHandle, ISysTime sysTime, ICyclTimer timer) + { + _platformHandle = platformHandle; + _sysTime = sysTime; + _timer = timer; + _timer.Interval = 1000; + _timer.Elapsed += (s, e) => OnPropertyChanged(nameof(Now)); + _timer.Start(); + } +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICalculatorModel.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICalculatorModel.cs new file mode 100644 index 000000000..3e0fceee2 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICalculatorModel.cs @@ -0,0 +1,108 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 05-11-2023 +// +// Last Modified By : Mir +// Last Modified On : 05-08-2023 +// *********************************************************************** +// +// Copyright JC-Soft 2023 +// +// +// *********************************************************************** +using AA05_CommandParCalc.Data; +using System.Collections.Generic; +using System.ComponentModel; + +/// +/// The Model namespace. +/// +/// +namespace AA05_CommandParCalc.Models.Interfaces; + +/// +/// Interface ICalculatorModel +/// Extends the +/// +/// +/// +public interface ICalculatorModel : INotifyPropertyChanged +{ + + /// + /// Gets the accumulator. + /// + /// The accumulator. + /// + double Accumulator { get; } + /// + /// Gets the register. + /// + /// The register. + /// + double? Register { get; } + /// + /// Gets the memory. + /// + /// The memory. + /// + double? Memory { get; } + /// + /// Gets the dependencies. + /// + /// The dependencies. + /// + IEnumerable<(string Dest, string Src)> Dependencies { get; } + /// + /// Gets the trig mode. + /// + /// The trig mode. + /// + ETrigMode TrigMode { get; } + /// + /// Gets the calculate error. + /// + /// The calculate error. + /// + ECalcError CalcError { get; } + + /// + /// Gets the size of the stack. + /// + /// The size of the stack. + /// + int StackSize { get; } + /// + /// Determines whether this instance can command the specified e c. + /// + /// The e c. + /// true if this instance can command the specified e c; otherwise, false. + /// + bool canCommand(ECommands eC); + /// + /// Calculates the command. + /// + /// The o. + /// + void CalcCmd(ECommands o); + /// + /// Determines whether this instance can operator the specified e o. + /// + /// The e o. + /// true if this instance can operator the specified e o; otherwise, false. + /// + bool canOperator(EOperations eO); + /// + /// Operators the command. + /// + /// The e o. + /// + void OperatorCmd(EOperations eO); + /// + /// Numbers the command. + /// + /// The o. + /// + void NumberCmd(ENumbers o); +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICommandParCalcModel.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICommandParCalcModel.cs new file mode 100644 index 000000000..f78d97e00 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICommandParCalcModel.cs @@ -0,0 +1,22 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 01-11-2025 +// +// Last Modified By : Mir +// Last Modified On : 01-12-2025 +// *********************************************************************** +// +// Copyright © JC-Soft 2025 +// +// +// *********************************************************************** +using System; +using System.ComponentModel; + +namespace AA05_CommandParCalc.Models.Interfaces; + +public interface ICommandParCalcModel :INotifyPropertyChanged +{ + DateTime Now { get; } +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICyclTimer.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICyclTimer.cs new file mode 100644 index 000000000..9e306f3f3 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ICyclTimer.cs @@ -0,0 +1,29 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 01-11-2025 +// +// Last Modified By : Mir +// Last Modified On : 01-12-2025 +// *********************************************************************** +// +// Copyright © JC-Soft 2025 +// +// +// *********************************************************************** +using System; +using System.ComponentModel; +using System.Timers; + +namespace AA05_CommandParCalc.Models.Interfaces; + +public interface ICyclTimer +{ + double Interval { get; set; } + bool Enabled { get; } + bool AutoReset { get; set; } + event ElapsedEventHandler Elapsed; + void Start(); + void Stop(); + +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ISysTime.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ISysTime.cs new file mode 100644 index 000000000..c5d8fe2e0 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/Interfaces/ISysTime.cs @@ -0,0 +1,23 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 01-11-2025 +// +// Last Modified By : Mir +// Last Modified On : 01-12-2025 +// *********************************************************************** +// +// Copyright © JC-Soft 2025 +// +// +// *********************************************************************** +using System; + +namespace AA05_CommandParCalc.Models.Interfaces; + +public interface ISysTime +{ + DateTime Now { get; } + DateTime UtcNow { get; } + DateTime Today { get; } +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/SysTime.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/SysTime.cs new file mode 100644 index 000000000..300f61060 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/SysTime.cs @@ -0,0 +1,46 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 01-13-2025 +// +// Last Modified By : Mir +// Last Modified On : 01-13-2025 +// *********************************************************************** +// +// Copyright © JC-Soft 2025 +// +// +// *********************************************************************** +using AA05_CommandParCalc.Models.Interfaces; +using System; + +/// +/// The Models namespace. +/// +namespace AA05_CommandParCalc.Models; + +/// +/// Class SysTime. +/// Implements the +/// +/// +public class SysTime : ISysTime +{ + /// + /// Gets the now. + /// + /// The now. + public DateTime Now => DateTime.Now; + + /// + /// Gets the UTC now. + /// + /// The UTC now. + public DateTime UtcNow => DateTime.UtcNow; + + /// + /// Gets the today. + /// + /// The today. + public DateTime Today => DateTime.Today; +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/TimerProxy.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/TimerProxy.cs new file mode 100644 index 000000000..dbacc6c25 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Models/TimerProxy.cs @@ -0,0 +1,37 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 01-13-2025 +// +// Last Modified By : Mir +// Last Modified On : 01-13-2025 +// *********************************************************************** +// +// Copyright © JC-Soft 2025 +// +// +// *********************************************************************** +using AA05_CommandParCalc.Models.Interfaces; + +/// +/// The Models namespace. +/// +namespace AA05_CommandParCalc.Models; + +/// +/// Class TimerProxy. +/// Implements the +/// Implements the +/// +/// +/// +public class TimerProxy : System.Timers.Timer , ICyclTimer +{ + /// + /// Initializes a new instance of the class. + /// + public TimerProxy() : base() + { + Interval = 1000; + } +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Program.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Program.cs new file mode 100644 index 000000000..1f27ba5f5 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Program.cs @@ -0,0 +1,57 @@ +// *********************************************************************** +// Assembly : AA05_CommandParCalc +// Author : Mir +// Created : 01-11-2025 +// +// Last Modified By : Mir +// Last Modified On : 01-11-2025 +// *********************************************************************** +// +// Copyright © JC-Soft 2025 +// +// +// *********************************************************************** +using System; +using Avalonia; + +/// +/// The AA05_CommandParCalc namespace. +/// +namespace AA05_CommandParCalc; + +/// +/// Class Program. This class cannot be inherited. +/// +public sealed 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. + /// + /// Defines the entry point of the application. + /// + /// The arguments. + [STAThread] + public static void Main(string[] args) + => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + + // Avalonia configuration, don't remove; also used by visual designer. + /// + /// Builds the avalonia application. + /// + /// AppBuilder. + public static AppBuilder BuildAvaloniaApp() //{ get; set; } = () + => GetAppBuilder(); + + /// + /// Builds the avalonia application. + /// + /// AppBuilder. + public static Func GetAppBuilder{ get; set; } = () + => AppBuilder.Configure() + .UsePlatformDetect() + .WithInterFont() + .LogToTrace(); + +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.Designer.cs b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.Designer.cs new file mode 100644 index 000000000..191f18a18 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.Designer.cs @@ -0,0 +1,450 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace AA05_CommandParCalc.Properties { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AA05_CommandParCalc.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 0 ähnelt. + /// + public static string btn0 { + get { + return ResourceManager.GetString("btn0", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 1 ähnelt. + /// + public static string btn1 { + get { + return ResourceManager.GetString("btn1", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 1/x ähnelt. + /// + public static string btn1_x { + get { + return ResourceManager.GetString("btn1_x", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 2 ähnelt. + /// + public static string btn2 { + get { + return ResourceManager.GetString("btn2", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 3 ähnelt. + /// + public static string btn3 { + get { + return ResourceManager.GetString("btn3", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 4 ähnelt. + /// + public static string btn4 { + get { + return ResourceManager.GetString("btn4", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 5 ähnelt. + /// + public static string btn5 { + get { + return ResourceManager.GetString("btn5", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 6 ähnelt. + /// + public static string btn6 { + get { + return ResourceManager.GetString("btn6", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 7 ähnelt. + /// + public static string btn7 { + get { + return ResourceManager.GetString("btn7", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 8 ähnelt. + /// + public static string btn8 { + get { + return ResourceManager.GetString("btn8", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die 9 ähnelt. + /// + public static string btn9 { + get { + return ResourceManager.GetString("btn9", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Actions ähnelt. + /// + public static string btnActions { + get { + return ResourceManager.GetString("btnActions", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die ) ähnelt. + /// + public static string btnBrClose { + get { + return ResourceManager.GetString("btnBrClose", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die ( ähnelt. + /// + public static string btnBrOpen { + get { + return ResourceManager.GetString("btnBrOpen", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die C/CE ähnelt. + /// + public static string btnC_CE { + get { + return ResourceManager.GetString("btnC_CE", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Configuration ähnelt. + /// + public static string btnConfig { + get { + return ResourceManager.GetString("btnConfig", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die cos ähnelt. + /// + public static string btnCos { + get { + return ResourceManager.GetString("btnCos", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die . ähnelt. + /// + public static string btnDecp { + get { + return ResourceManager.GetString("btnDecp", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die / ähnelt. + /// + public static string btnDiv { + get { + return ResourceManager.GetString("btnDiv", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die e ähnelt. + /// + public static string btnE { + get { + return ResourceManager.GetString("btnE", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die eˣ ähnelt. + /// + public static string btnE_X { + get { + return ResourceManager.GetString("btnE_X", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die = ähnelt. + /// + public static string btnEquals { + get { + return ResourceManager.GetString("btnEquals", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die History ähnelt. + /// + public static string btnHistory { + get { + return ResourceManager.GetString("btnHistory", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Home ähnelt. + /// + public static string btnHome { + get { + return ResourceManager.GetString("btnHome", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Inv ähnelt. + /// + public static string btnInv { + get { + return ResourceManager.GetString("btnInv", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die log ähnelt. + /// + public static string btnLog { + get { + return ResourceManager.GetString("btnLog", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Macros ähnelt. + /// + public static string btnMacros { + get { + return ResourceManager.GetString("btnMacros", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die MC ähnelt. + /// + public static string btnMemClr { + get { + return ResourceManager.GetString("btnMemClr", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die M- ähnelt. + /// + public static string btnMemMinus { + get { + return ResourceManager.GetString("btnMemMinus", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die M+ ähnelt. + /// + public static string btnMemPlus { + get { + return ResourceManager.GetString("btnMemPlus", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die MR ähnelt. + /// + public static string btnMemRetr { + get { + return ResourceManager.GetString("btnMemRetr", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die MS ähnelt. + /// + public static string btnMemStore { + get { + return ResourceManager.GetString("btnMemStore", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die - ähnelt. + /// + public static string btnMinus { + get { + return ResourceManager.GetString("btnMinus", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die * ähnelt. + /// + public static string btnMul { + get { + return ResourceManager.GetString("btnMul", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die +/- ähnelt. + /// + public static string btnNeg { + get { + return ResourceManager.GetString("btnNeg", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die π ähnelt. + /// + public static string btnPi { + get { + return ResourceManager.GetString("btnPi", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die + ähnelt. + /// + public static string btnPlus { + get { + return ResourceManager.GetString("btnPlus", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Process ähnelt. + /// + public static string btnProcess { + get { + return ResourceManager.GetString("btnProcess", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Reports ähnelt. + /// + public static string btnReports { + get { + return ResourceManager.GetString("btnReports", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die sin ähnelt. + /// + public static string btnSin { + get { + return ResourceManager.GetString("btnSin", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die √x ähnelt. + /// + public static string btnSqX { + get { + return ResourceManager.GetString("btnSqX", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die tan ähnelt. + /// + public static string btnTan { + get { + return ResourceManager.GetString("btnTan", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die X² ähnelt. + /// + public static string btnX2 { + get { + return ResourceManager.GetString("btnX2", resourceCulture); + } + } + } +} diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.de.resx b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.de.resx new file mode 100644 index 000000000..cc30a1df0 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.de.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Einstellungen + + + Historie + + + Anfang + + + Makros + + + Prozess + + + Auswertung + + diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.en.resx b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.en.resx new file mode 100644 index 000000000..590e7ddf7 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.en.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Configuration + + + History + + + Home + + + Macros + + + Process + + + Reports + + diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.fr.resx b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.fr.resx new file mode 100644 index 000000000..590e7ddf7 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.fr.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Configuration + + + History + + + Home + + + Macros + + + Process + + + Reports + + diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.resx b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.resx new file mode 100644 index 000000000..375341ab5 --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Properties/Resources.resx @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + @Invariant + + + 1/x + @Invariant + + + 2 + @Invariant + + + 3 + @Invariant + + + 4 + @Invariant + + + 5 + @Invariant + + + 6 + @Invariant + + + 7 + @Invariant + + + 8 + @Invariant + + + 9 + @Invariant + + + Actions + + + ) + @Invariant + + + ( + @Invariant + + + Configuration + Caption for Button "Config" + + + cos + @Invariant + + + C/CE + @Invariant + + + . + @Invariant + + + / + @Invariant + + + e + @Invariant + + + = + @Invariant + + + + @Invariant + + + History + + + Home + + + Inv + @Invariant + + + log + @Invariant + + + Macros + + + MC + @Invariant + + + M- + @Invariant + + + M+ + @Invariant + + + MR + @Invariant + + + MS + @Invariant + + + - + @Invariant + + + * + @Invariant + + + +/- + @Invariant + + + π + @Invariant + + + + + @Invariant + + + Process + + + Reports + + + sin + @Invariant + + + √x + @Invariant + + + tan + @Invariant + + + + @Invariant + + + 0 + @Invariant + + \ No newline at end of file diff --git a/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Styles/AppDefaultStyles.axaml b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Styles/AppDefaultStyles.axaml new file mode 100644 index 000000000..307bd586c --- /dev/null +++ b/Avalonia_Apps/AA05_CommandParCalc/AA05_CommandParCalc/Styles/AppDefaultStyles.axaml @@ -0,0 +1,251 @@ + + + + + + +