From 064d133288f288657b9fa125e84b0a684ab96bfd Mon Sep 17 00:00:00 2001 From: Dmytro Kyshchenko Date: Sun, 15 May 2022 00:12:20 +0300 Subject: [PATCH] #557 - Split xFunc UI to separate repository (#558) --- CI/azure-pipelines.yml | 28 +- LICENSE_Ms-PL.txt | 31 - README.md | 2 + .../Hyperbolic/HyperbolicArtangentTest.cs | 4 +- xFunc/App.xaml | 20 - xFunc/App.xaml.cs | 41 - xFunc/Images/Add.png | Bin 146 -> 0 bytes xFunc/Images/Clear.png | Bin 859 -> 0 bytes xFunc/Images/ClearLarge.png | Bin 4596 -> 0 bytes xFunc/Images/Converter.png | Bin 264 -> 0 bytes xFunc/Images/ConverterLarge.png | Bin 511 -> 0 bytes xFunc/Images/Copy.png | Bin 309 -> 0 bytes xFunc/Images/CopyLarge.png | Bin 694 -> 0 bytes xFunc/Images/Copy_16.png | Bin 427 -> 0 bytes xFunc/Images/Cut.png | Bin 511 -> 0 bytes xFunc/Images/CutLarge.png | Bin 1418 -> 0 bytes xFunc/Images/Delete.png | Bin 733 -> 0 bytes xFunc/Images/DeleteLarge.png | Bin 1855 -> 0 bytes xFunc/Images/Edit.png | Bin 896 -> 0 bytes xFunc/Images/Function.png | Bin 633 -> 0 bytes xFunc/Images/FunctionLarge.png | Bin 1220 -> 0 bytes xFunc/Images/Help.png | Bin 833 -> 0 bytes xFunc/Images/Paste.png | Bin 469 -> 0 bytes xFunc/Images/PasteLarge.png | Bin 910 -> 0 bytes xFunc/Images/Redo.png | Bin 579 -> 0 bytes xFunc/Images/RedoLarge.png | Bin 1583 -> 0 bytes xFunc/Images/Refresh.png | Bin 1397 -> 0 bytes xFunc/Images/Remove.png | Bin 459 -> 0 bytes xFunc/Images/Tools.png | Bin 397 -> 0 bytes xFunc/Images/Undo.png | Bin 589 -> 0 bytes xFunc/Images/UndoLarge.png | Bin 1681 -> 0 bytes xFunc/Images/Variable.png | Bin 537 -> 0 bytes xFunc/Images/VariableLarge.png | Bin 1028 -> 0 bytes xFunc/Images/Vars.png | Bin 458 -> 0 bytes xFunc/Images/VarsLarge.png | Bin 1253 -> 0 bytes xFunc/Images/xFunc.ico | Bin 370070 -> 0 bytes xFunc/MiniDump.cs | 48 - xFunc/Operations.xaml | 135 -- xFunc/Presenters/GraphsPresenter.cs | 68 - xFunc/Presenters/MathPresenter.cs | 112 - xFunc/Presenters/MathWorkspace.cs | 103 - xFunc/Presenters/MathWorkspaceItem.cs | 26 - xFunc/Presenters/OutputFormats.cs | 16 - xFunc/Presenters/TruthTablePresenter.cs | 79 - xFunc/Properties/AssemblyInfo.cs | 6 - xFunc/Properties/Settings.Designer.cs | 469 ---- xFunc/Properties/Settings.settings | 117 - xFunc/Resources/Resource.Designer.cs | 1971 ----------------- xFunc/Resources/Resource.resx | 697 ------ xFunc/Resources/Resource.ru.Designer.cs | 0 xFunc/Resources/Resource.ru.resx | 697 ------ xFunc/StylesForControls.xaml | 49 - xFunc/ViewModels/BaseViewModel.cs | 21 - xFunc/ViewModels/FunctionViewModel.cs | 25 - xFunc/ViewModels/GraphItemViewModel.cs | 73 - .../ViewModels/MathWorkspaceItemViewModel.cs | 30 - xFunc/ViewModels/TruthTableRowViewModel.cs | 29 - xFunc/ViewModels/VariableViewModel.cs | 24 - xFunc/Views/AboutView.xaml | 47 - xFunc/Views/AboutView.xaml.cs | 44 - xFunc/Views/AddFunctionView.xaml | 31 - xFunc/Views/AddFunctionView.xaml.cs | 50 - xFunc/Views/AddVariableView.xaml | 32 - xFunc/Views/AddVariableView.xaml.cs | 60 - xFunc/Views/Converter.xaml | 61 - xFunc/Views/Converter.xaml.cs | 160 -- xFunc/Views/DrawingCanvas.cs | 54 - xFunc/Views/FunctionView.xaml | 82 - xFunc/Views/FunctionView.xaml.cs | 177 -- xFunc/Views/GraphsControl.xaml | 66 - xFunc/Views/GraphsControl.xaml.cs | 134 -- xFunc/Views/IGraphsView.cs | 17 - xFunc/Views/IMathView.cs | 17 - xFunc/Views/IView.cs | 12 - xFunc/Views/MainView.xaml | 1163 ---------- xFunc/Views/MainView.xaml.cs | 646 ------ xFunc/Views/MathControl.xaml | 81 - xFunc/Views/MathControl.xaml.cs | 238 -- xFunc/Views/PlottingGraph.xaml | 43 - xFunc/Views/PlottingGraph.xaml.cs | 363 --- xFunc/Views/SettingsView.xaml | 69 - xFunc/Views/SettingsView.xaml.cs | 106 - xFunc/Views/TruthTableControl.xaml | 34 - xFunc/Views/TruthTableControl.xaml.cs | 156 -- xFunc/Views/VariableView.xaml | 124 -- xFunc/Views/VariableView.xaml.cs | 118 - xFunc/Views/WindowExtentions.cs | 34 - xFunc/app.config | 120 - xFunc/xFunc.UI.sln | 43 - xFunc/xFunc.csproj | 105 - 90 files changed, 6 insertions(+), 9402 deletions(-) delete mode 100644 LICENSE_Ms-PL.txt delete mode 100644 xFunc/App.xaml delete mode 100644 xFunc/App.xaml.cs delete mode 100644 xFunc/Images/Add.png delete mode 100644 xFunc/Images/Clear.png delete mode 100644 xFunc/Images/ClearLarge.png delete mode 100644 xFunc/Images/Converter.png delete mode 100644 xFunc/Images/ConverterLarge.png delete mode 100644 xFunc/Images/Copy.png delete mode 100644 xFunc/Images/CopyLarge.png delete mode 100644 xFunc/Images/Copy_16.png delete mode 100644 xFunc/Images/Cut.png delete mode 100644 xFunc/Images/CutLarge.png delete mode 100644 xFunc/Images/Delete.png delete mode 100644 xFunc/Images/DeleteLarge.png delete mode 100644 xFunc/Images/Edit.png delete mode 100644 xFunc/Images/Function.png delete mode 100644 xFunc/Images/FunctionLarge.png delete mode 100644 xFunc/Images/Help.png delete mode 100644 xFunc/Images/Paste.png delete mode 100644 xFunc/Images/PasteLarge.png delete mode 100644 xFunc/Images/Redo.png delete mode 100644 xFunc/Images/RedoLarge.png delete mode 100644 xFunc/Images/Refresh.png delete mode 100644 xFunc/Images/Remove.png delete mode 100644 xFunc/Images/Tools.png delete mode 100644 xFunc/Images/Undo.png delete mode 100644 xFunc/Images/UndoLarge.png delete mode 100644 xFunc/Images/Variable.png delete mode 100644 xFunc/Images/VariableLarge.png delete mode 100644 xFunc/Images/Vars.png delete mode 100644 xFunc/Images/VarsLarge.png delete mode 100644 xFunc/Images/xFunc.ico delete mode 100644 xFunc/MiniDump.cs delete mode 100644 xFunc/Operations.xaml delete mode 100644 xFunc/Presenters/GraphsPresenter.cs delete mode 100644 xFunc/Presenters/MathPresenter.cs delete mode 100644 xFunc/Presenters/MathWorkspace.cs delete mode 100644 xFunc/Presenters/MathWorkspaceItem.cs delete mode 100644 xFunc/Presenters/OutputFormats.cs delete mode 100644 xFunc/Presenters/TruthTablePresenter.cs delete mode 100644 xFunc/Properties/AssemblyInfo.cs delete mode 100644 xFunc/Properties/Settings.Designer.cs delete mode 100644 xFunc/Properties/Settings.settings delete mode 100644 xFunc/Resources/Resource.Designer.cs delete mode 100644 xFunc/Resources/Resource.resx delete mode 100644 xFunc/Resources/Resource.ru.Designer.cs delete mode 100644 xFunc/Resources/Resource.ru.resx delete mode 100644 xFunc/StylesForControls.xaml delete mode 100644 xFunc/ViewModels/BaseViewModel.cs delete mode 100644 xFunc/ViewModels/FunctionViewModel.cs delete mode 100644 xFunc/ViewModels/GraphItemViewModel.cs delete mode 100644 xFunc/ViewModels/MathWorkspaceItemViewModel.cs delete mode 100644 xFunc/ViewModels/TruthTableRowViewModel.cs delete mode 100644 xFunc/ViewModels/VariableViewModel.cs delete mode 100644 xFunc/Views/AboutView.xaml delete mode 100644 xFunc/Views/AboutView.xaml.cs delete mode 100644 xFunc/Views/AddFunctionView.xaml delete mode 100644 xFunc/Views/AddFunctionView.xaml.cs delete mode 100644 xFunc/Views/AddVariableView.xaml delete mode 100644 xFunc/Views/AddVariableView.xaml.cs delete mode 100644 xFunc/Views/Converter.xaml delete mode 100644 xFunc/Views/Converter.xaml.cs delete mode 100644 xFunc/Views/DrawingCanvas.cs delete mode 100644 xFunc/Views/FunctionView.xaml delete mode 100644 xFunc/Views/FunctionView.xaml.cs delete mode 100644 xFunc/Views/GraphsControl.xaml delete mode 100644 xFunc/Views/GraphsControl.xaml.cs delete mode 100644 xFunc/Views/IGraphsView.cs delete mode 100644 xFunc/Views/IMathView.cs delete mode 100644 xFunc/Views/IView.cs delete mode 100644 xFunc/Views/MainView.xaml delete mode 100644 xFunc/Views/MainView.xaml.cs delete mode 100644 xFunc/Views/MathControl.xaml delete mode 100644 xFunc/Views/MathControl.xaml.cs delete mode 100644 xFunc/Views/PlottingGraph.xaml delete mode 100644 xFunc/Views/PlottingGraph.xaml.cs delete mode 100644 xFunc/Views/SettingsView.xaml delete mode 100644 xFunc/Views/SettingsView.xaml.cs delete mode 100644 xFunc/Views/TruthTableControl.xaml delete mode 100644 xFunc/Views/TruthTableControl.xaml.cs delete mode 100644 xFunc/Views/VariableView.xaml delete mode 100644 xFunc/Views/VariableView.xaml.cs delete mode 100644 xFunc/Views/WindowExtentions.cs delete mode 100644 xFunc/app.config delete mode 100644 xFunc/xFunc.UI.sln delete mode 100644 xFunc/xFunc.csproj diff --git a/CI/azure-pipelines.yml b/CI/azure-pipelines.yml index 31750aada..fe5a71917 100644 --- a/CI/azure-pipelines.yml +++ b/CI/azure-pipelines.yml @@ -15,12 +15,10 @@ pr: jobs: - job: xFunc pool: - vmImage: 'windows-latest' + vmImage: 'ubuntu-latest' variables: - uiSolution: 'xFunc/xFunc.UI.sln' solution: 'xFunc.sln' - buildPlatform: 'Any CPU' buildConfiguration: 'Release' steps: @@ -61,18 +59,6 @@ jobs: displayName: 'Publish to Codecov' env: CODECOV_TOKEN: $(CODECOV_TOKEN) - - - task: DotNetCoreCLI@2 - displayName: 'dotnet restore' - inputs: - command: restore - projects: '$(uiSolution)' - - - task: DotNetCoreCLI@2 - displayName: 'dotnet build' - inputs: - projects: '$(uiSolution)' - arguments: '-c $(buildConfiguration)' - task: DotNetCoreCLI@2 displayName: 'dotnet pack' @@ -96,14 +82,4 @@ jobs: - task: PublishPipelineArtifact@1 inputs: path: nupkgs - artifact: NuGet Packages - - - task: PublishPipelineArtifact@1 - inputs: - path: xFunc/bin/Release/netcoreapp3.1 - artifact: xFunc.UI (.NET Core 3.1) - - - task: PublishPipelineArtifact@1 - inputs: - path: xFunc/bin/Release/net6.0-windows - artifact: xFunc.UI (.NET 6) \ No newline at end of file + artifact: NuGet Packages \ No newline at end of file diff --git a/LICENSE_Ms-PL.txt b/LICENSE_Ms-PL.txt deleted file mode 100644 index 839d18d38..000000000 --- a/LICENSE_Ms-PL.txt +++ /dev/null @@ -1,31 +0,0 @@ -Microsoft Public License (Ms-PL) - -This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. - -1. Definitions - -The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. - -A "contribution" is the original software, or any additions or changes to the software. - -A "contributor" is any person that distributes its contribution under this license. - -"Licensed patents" are a contributor's patent claims that read directly on its contribution. - -2. Grant of Rights - -(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. - -(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. - -3. Conditions and Limitations - -(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. - -(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. - -(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. - -(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. - -(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. \ No newline at end of file diff --git a/README.md b/README.md index a13a1105a..59ebf7a6f 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ xFunc is a simple and easy to use application that allows you to build mathemati xFunc is a small-sized and portable application that you can use to create complex mathematical expressions which will be automatically computed. It can be used by teachers and students alike. +Note: The WPF application (xFunc UI) was migrated to a separate repository [xFunc.UI](https://github.com/sys27/xFunc.UI). + ## Features: * Calculating expressions ([supported functions and operations](https://github.com/sys27/xFunc/wiki/Supported-functions-and-operations)); diff --git a/xFunc.Tests/Expressions/Hyperbolic/HyperbolicArtangentTest.cs b/xFunc.Tests/Expressions/Hyperbolic/HyperbolicArtangentTest.cs index 2e31366f9..a0556b714 100644 --- a/xFunc.Tests/Expressions/Hyperbolic/HyperbolicArtangentTest.cs +++ b/xFunc.Tests/Expressions/Hyperbolic/HyperbolicArtangentTest.cs @@ -10,9 +10,9 @@ public class HyperbolicArtangentTest : BaseExpressionTests [Fact] public void ExecuteNumberTest() { - var exp = new Artanh(new Number(0.5)); + var exp = new Artanh(new Number(0.6)); var result = exp.Execute(); - var expected = AngleValue.Radian(0.5493061443340549); + var expected = AngleValue.Radian(0.6931471805599453); Assert.Equal(expected, result); } diff --git a/xFunc/App.xaml b/xFunc/App.xaml deleted file mode 100644 index 711e72141..000000000 --- a/xFunc/App.xaml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/xFunc/App.xaml.cs b/xFunc/App.xaml.cs deleted file mode 100644 index 48eeddc4a..000000000 --- a/xFunc/App.xaml.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Globalization; -using System.Windows; -using xFunc.Properties; -using xFunc.Views; - -namespace xFunc -{ - - public partial class App : Application - { - - public App() - { - AppDomain.CurrentDomain.UnhandledException += (obj, args) => - { - if (Settings.Default.SaveDump) - MiniDump.CreateMiniDump(); - }; - } - - protected override void OnStartup(StartupEventArgs e) - { - var lang = Settings.Default.Lang; - if (lang != "Auto") - { - var cultureInfo = CultureInfo.GetCultureInfo(lang); - this.Dispatcher.Thread.CurrentCulture = cultureInfo; - this.Dispatcher.Thread.CurrentUICulture = cultureInfo; - } - - MainView mainView = new MainView(); - mainView.Show(); - } - - } - -} \ No newline at end of file diff --git a/xFunc/Images/Add.png b/xFunc/Images/Add.png deleted file mode 100644 index c044758856cf8475b8f6298342b7184f210a8194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJNKY5Xkcif|QysY)40u@FKkEGb zul=|2-c%M|r+~Bt)0cR&J85*(OkjL-u=32GdEvaQA{pWlO}{*hvM-%3Vz|B2fK}Yv ty0-ar^;_itheob{ZCn~3^cg3X@deuR#hm2WUjwv+!PC{xWt~$(69BXQF(&{3 diff --git a/xFunc/Images/Clear.png b/xFunc/Images/Clear.png deleted file mode 100644 index cf039f40bbfeb27808da2baf71534720dcff09e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmV-h1El*9LGQR;QS<&hkkZ651oG9iF3!18b?~u<0#c4wwkTdq+#@cQlwffJxmc2t81z2 zN-hs;g-YfK6}uiV=fa)z{J8b|^lSZ5r}5d|`~LHJzrLTn_xS)!Pzj58piCFTwLP9t zu~S5rY~zPl>~gocnI(gyWmXee0jwth6mKP=Cf6S-(kO5Bp}@gMg%JbSGbQI#d!>-L z#ByRl0L1}CvJ2E?OIfu?K%`e`qvQ0dAH$@l=F8ym__S%WfukIGZ_ONjP%l&0ge?<;0m5boPg?XUbCo0e!^T7MLv+2@A zmw08m5K0pTuu{tX-y9Lfgm!WvsPdzru_DO#Wm9NreIaFN$hO6z1gC2CVIk{ErZenc zX9tAY7;`vd?$dZdcjGE(QAfk+)U7w}Dw0vx9)p8VmtuoLRIWPW#V*fugaCKK)a)za z!mDNq4B8c-e-Z^f%|R)3<%x88P6p=0?#Hsd@mN(TOR3DC4^;(xkh*jJ2~EI;)*43` ze6|?g^h7g&kc=NAY4i_cJihM>$BsJzSg>aeeLgExQe7MXwIzITb7B7lwA{9bflfIL zYa@QYtG^mje||Tn;g`V}G?6DMC}@su=EGPrvJlMC0@I z%&$SH(>P#%TQK%%yy=j+X7ik9@XXE4fMWtUo@EP3TO3$+HXPf1$&M#*e(8 zj@j7T?19=w2|lj%F`DyW2GefK==T-z82uT=irGl9hzER002ovPDHLkV1ff)o{j(j diff --git a/xFunc/Images/ClearLarge.png b/xFunc/Images/ClearLarge.png deleted file mode 100644 index 1d16ce6ff5050c3a26e82abf63a28969ab8ccd5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4596 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 B<6Zy& diff --git a/xFunc/Images/Copy.png b/xFunc/Images/Copy.png deleted file mode 100644 index f348604335b132b090582a42ecbf7a89bf66a0ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmV-50m}Y~P)ZrE5Jmq+P|#5938Kh#h+IHpS#F`>3ige-L2`;&S#FR;Lu0uo$`L4NKv0Y;Z!o(~ z;CFv_=IM=KW+-}m=-$RfZP0$>jS&iFIGd_P^3QlczN-J7O?0obiq zP^z*5q9}Ukd7hhqvB6(9yY&jpYy!3)Z#W(+Jv1i|fb;cdwt*F}d4I*}RB4;V29EPv z$2R{O48wpd%g}Wlf*{Z~wg@3igEUR`D-rS3X7&kFn>o1wV*j^5N)%sR00000NkvXX Hu0mjf?el?M diff --git a/xFunc/Images/CopyLarge.png b/xFunc/Images/CopyLarge.png deleted file mode 100644 index 4f4ca1f70514bcd8e516aa3887a100208e620e18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)7{;HdEg6iI7~S1iyLLDjOV{3bv32dOlPw=1U&%|sPvD&*CPj9!&Fyv@jxnU$ zP;g zVAI-?^Kl$^74R-i(_B^=hT*o`ZMRmd{ZJI;5rB;_0P;$#^2MY?QA8$_fh0+fRaI>$ zin1LBK`J&tDwTpHNswh3*=#n)3c)RVpin3*G|+V&>2#V2YC4_5G|lggMx#)vRL(*8 zf}9TkQc(uX=krVegTVmZZud#CSZo=F@ups{_Yh#t*d_22i!W{kfW;To61@BTGZus( z2#{qNolYmGs%itkYmVc3uItXrLCwI);oiys$z&44;Si>2LJ)*`CIE;W$IUYl$%Ly& z5Ci~#BuTI=3zNwNPt zfvd7}kpRL5WYuUix)JjQ@OG>BUw*ATSyWLoaD1?f)6?~pATq%6e$6rrS893VCL92DP5M%Yl@xd;D>(dV_0Byi^iE6@+o!5C|OA#X9{}ge4QWd$On!a6 z*fM~PfaCM#=H|)(G=-iAY}-buRDxw${}+H*zc+jlQzH;rUidX5YefKT0JsB&AI=cj cAP%K}0oTVtvwH+7Y5)KL07*qoM6N<$f>}X4h5!Hn diff --git a/xFunc/Images/Copy_16.png b/xFunc/Images/Copy_16.png deleted file mode 100644 index f20df387fb9257fb174b760c58eb5d25258a0657..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX5pP)@kUK9#Q51#0eeMwo(RuVL z(V9#pM<+3vLNWXXi9$_7p;yS5!VeHaf>6jU+z^SFQYdsL5fP%0c;0)q!c52^BU-Cm zd+jf4Zy`{rREjQd9{0dpgflPnw^$iJinp#Bo`fOioPDNa;W*iz3}^YF;u@$%)=V`Z z0+1Uj42zmR01-7F85Lz6K*?54lHF^7yen3`jb==iE;S$qz^IIQeC+XYrn;x_w6=mHjm0%n(8co{V1neO?FPdRd$8@sI_G}eW9FlBa_Gb+oPYeVgg>|ce+P~T Vg2-@R4y^zH002ovPDHLkV1hYMu(bdH diff --git a/xFunc/Images/Cut.png b/xFunc/Images/Cut.png deleted file mode 100644 index 2701f6896e636eb10ddd7300353f2a501a6b0f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmV9k`OV6i4$!A z0|UeSC(mDhmzEH<4R_Z6K$HP1_g)m>q! zfB5nFhrs`T{}~Ql`p4jDt^VNh)h7!34xD&^t{KG(KR*6g|MSbw!0(^F8~*tGL*UQP zKM#KVVo=<5@vq~#yMGxN7#RHV8t~=a7ljR3;s?IG`I7MK>#qy{{`_-1ImO_^z9!WN z42)b1Y`jthDxM3@E4$4!!0LtXAHILE%)j*i_xIli{{R2)cxsvVr_vS5v_ni)WlnS(D*)5E3`{*^tQWa_gv?U54%gYyWL7{-CchwKeb&c_1^)$I&eJSBUEvoZwes!H*qOtJ+UqFCd6R^ z8Hj2TA(YF^0v|%T8T%!~wXk;4C&_02&j3$9aQm=8;ms1j=+%=D&&{H&udlZaxPla) zOvD2U<>Jlqz$h6=h!@SctnAw2nRK4}`*&j7Bqs|1aPek|v@J*$U%GHEbw^Hcyy1rf zfDYJ`2cTTCJpz>kkSu=d4W-l^YT}R6t*096Yfl5=Nd>TNiQ_74#{ppFBTtSH-~C+! zhmQW@-~IXa&A@ORz)6f3LQD+6vK=hP#j+$N3l{kvT=!h{m4&_$;=4ZCR^HduaTe$W zqAFejLd2>zdtv|*TPiHa;i;E4e{j{zg83^Jm$GZ$5q><@924*EJPULI!%8V9S$q-z z94zT#*^;8!h4XJ-T*5c|j&QiK*}uE8A|ZYr7$Uy+$>J~p4}7)%_!2D=<#6LkOw(ZT zf~%<7-$4D*X8$*rC=L_IK+8F2$y5PSDNMuQ$HtSiw4e7^fAM~Ke^0u2rVy!jfMm+G zyR=nCNM8~e9PaFEX{>IpT-$%sv&}1|B`c=qxW)G`>%%gl%qzWys;X-LPc=KnC7u!B z=^AT^>+-1?vC52)fe|v$L(z~v9BOcE&waLGkpK8rxmT2w#3mx z{xh}DmFoj-UBF;4&{k0}ciuZfczi(4Xp71OGU|`W2pUfWy8~4xc5G}Xmdb$0E+}wJ z2P+zEKU2HDTpwsVODxraTwlSdDVJYHc5V(u%U@kf>|%1s)s@y!4;y*m-rhdI0)|#R z-?RXg^QaXKx1FhZenWJi^(--y^#i(gp`#fEE1p=*wf8>!;-XcbA1}FU+uOu0sUzkW zLZo>h&4hPsYE{xUyDqdGc-=Q=>D25gS8R1moO#VVZT1!=Wnr|xrMA6p z!?*EO^b5JQ%+411A5u^X(B){J?GtUe|G+wQ?I`sW=^W(>*`Li=0|CkNiw(PmN zx*86To;DgU0DuF)r{(2(VRm+fGd7I1;~#Dry6t8RXBQeN!tLMsIT==XXr#nAW5&F$?N zhEho9^Acg`t^*DjgI%q<`AS7z?CbzafknFtl`6Bh#iErQ9d*+qBN9qMhasR85QgZs z+g@&J3b!g1dGX=H?{%%g09^L_Ubo+O7y!H(AGea0<)-s_c?GjD1i}!vo;-oSw-+Zf zt>O3kUN;Dwg_9GX{dq~LY}QTRyeY3>rZx0n038HiQF2!Z?=lFS#gh{sKztkkz`AW) zsZ7SrB$HBo{|?n|g9G54gNV>E46iGMvv_Gr64n)@Xo-Avj~PLTx&2QFvid|46i4IqX7_O?wv?-BN9DGBqZ;2>f&dob9B19dkyZHruV}z;@e&; zl^mgzJ4qyOL=w(9l0k690N`CVTQ>%S=R|~II_(Wi(^-gmzM8dC$-0wDxexPsnM@?` zrPq6Pe}8`|eh2S!xm6IAhl#|}LbLhL@BI4iU8|hQ)Ki9W^!VW51pxd4!0;Y|ZRR#v P00000NkvXXu0mjfqxDmL diff --git a/xFunc/Images/DeleteLarge.png b/xFunc/Images/DeleteLarge.png deleted file mode 100644 index 9f63a08c2823267a997dd86a443dffd962dd6aa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1855 zcmV-F2f+A=P)7hC8GxUev6I*)A;Ag8lZ5<0Vkf&~E7V@t(!$bI${rBaW=jv1_}QvGEp1h)_o~t! zD)rDyyRFm!d#F?uNFo;P(q{L>uIOcf5>Ta03S<-i=x za$@^^p6`9XdEZZ=W{pQ87l89Z$~)g*T>Ld)177X-c3L;0(O*e8vEg}txR6ed1L8$7 zv|4!A$jI2xrAu9k=N&(uN)3z~#_du7xl8z!=1t5b(Icr;<|EU50Jz)5 zs0ftd-KS3@vROnfhmy?>o)RK9u}g^?(dd=^M~|NCJ$)LP&!YmNLgBkd3}gN8rgogH=Hu#esKC$q&Yne>W(AIv;CYBl1}l-E z^~e!AIy=u?jzq?Qrs~pN*Y!>K(h>_36L^I}F@}^B5(#8JPis#P?LOa+fiU1N|K2C0 zyz}(dt#1WdTZ{iG!DW>Mo=4l@AV_&;47iw1Uj#O;>-wMDhKA1dzx5V&8E)Gs<70HFQNFg`z?N)6Ph>R_m&11SWqWfdhn52VDiETnDI)ZLBG zapEUEFLt)E@pN=(=!gBIqu5JJBqk=1Wq4`%_wJ=Z*IAjH36^?uu(b- zXn;3v7`IR4a*BgMm(=5Q92WKnig;A=y5Z5$jN9Kfj99RtAs*88VkYwWN-dERX<10i zVsB?B9mB&oD=REaP9h5h6hIaVAO!x#MjCXTOft#CnVG3~)9Eri1!SpeO4S+DfTqil z$XMTNubtU*-~d)4fwR6|$$|plI4E^>_=7>rnHgNu1lKL@Tv70c!vwmz$Zl-#U}0hE z(k47vO1(=Bw7euBCJp1`0CeYnYE}PvIyjEa~#5YYdwx^*X?ys*W|KtgFI*k+pMNv>y6{Q5Nh6lU5$!4?M z-z9uIfvuUatXRNxuWrIi zP+us7R$q@=l@U$TP;48;b!qMDBIvrqufY1tB(?}#i$*Iuw^J#eUb(U@Jk-}mT{w(1 z3{=mnltNQgR3T6thqmr+g04F}DCLe4n^UbCo=ozj2Ci1YbEb(9f~NL%FwISg(n}Qr z&GU$KcN1`&;ej0_v}$w;LWkQn@pU+o(l_WIRCDPMFy%583*L_Yx1Fu%pCpqP|Mld_#7ZVZeQz&XFt~YEd_Md>ADU^R<#G)6 z_Y?N{en8EIL={rrS@`TTR;Q=&N<*dcVK7Lrl=f|U`x>zJqeSB3z1i7`<+U~HdV0_T zfz49*eAMmRhd&(V-!n6$ix-j*;H#A2S}ynb$y{#0TU{O8Q#E|bHP7esJWM8E)Y~N> zZf3I|f8DlYEum1nxuXNsvd{p3IE=r&oi83f$JE?RtAf;;3!MnnR&@b9;L+3y}z4Oiy$7>C>s7ClWhfNG1*A_NltM zSe@&}Ly-uUY4RwYei{5ZiLVt3v6f&k-V}*&|MBBm_;VMM>ZJiKe~Lt|-q3aV+qSlG z-~=!Tw6Me6sEzUa_V%lPJ$O+5=D>lM#!zbh)__J}KgGjh0E;E-EjyQTv!5u+mN2`H tv7JCUKt07rMNph*JC4-1RCwC$m&lCh^cXoDq*^WXfI0jRwj-wF{hgDr&-DN=6 z4a3M{%wVL6CtY1#p7HVVye1sSPVm&!6k|UM&;uv{g=s>Jw)YQ}n*h`806LcE7N&}{8^0&_o4Grg}r>AqvbH@p2_~hiIYH4XX0>CTFvIzPq zl`lg;Tv1VRo%h(6oujkBzH@N~qvwo$(N_7Ih;YXK&Fl4c@E)E4 z#Z+EQ3k-?<1ORV0>3J50c)bMpB~}c$so{=}W9^u0mN8h5&+{7K z1NlmYSE(|<(umtH$LmA4+kG3R%A(OI|6`P*^1KEjkq8akC!9&(Wy9Uw-L2;5=T)Is ztCF-pj2L}=eHO$%TbvUx<{B6n`0a4omG1)mU?xH7_xw`zyQl diff --git a/xFunc/Images/Function.png b/xFunc/Images/Function.png deleted file mode 100644 index 0f432ed05ed9a73889b15574d094f72fd2b56169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)27|$kQmJGr6bkM} zqoE{mKV99WL?UtIbUIJZ31CE0zehf25c2!|%lUkcyS`?#**@S@8vkay-F^^@#cCdp z=lGleyjLofr}#($w{gmJI=w=64t+k~j3(;9dp@7{l*?s<*Xw;L3MiFI2)x>Ex1xXY z?Sofpmjq66IFrleg4JsMNWtkO0tApeS=d3UN!Mz(+uzA#GJ#QObA!R~9gm6d#bh#l z{U3}*<2Sut|AQXY*`HXgR-eS<@#o28@+g%`{S)XxFF4?`zkg@E#(jWZaKQZycI1dD Tt~UT+00000NkvXXu0mjfi>4*D diff --git a/xFunc/Images/FunctionLarge.png b/xFunc/Images/FunctionLarge.png deleted file mode 100644 index eec19452da2ef196e6def037ad103c05f4ead183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 zcmV;#1UvhQP)Tcvu)ZYu?x1g+BMxt zX`3!~OZSy@N%x8ho;-*rZ}p%jJt*iwK@VEciin~&y@(f4s1V;9^2sC^Q^B-{FSF#I z@4at(^N%t%Hm0nnDWjvKs*R72D^90VnVg&qs1bu$f~)?>A3Z%i`#U>3Pj+>6od|@{ zH!&nomB8HG9D$FTOr{4>QBf-}SAcDWSi~f@(%;{|Hz_IUU1(^iD>^#b6%!K^P$LGh zfcbuCXlSRBnwt8A%wl6>*VKq z2@SHuV<1d?6H7>_1js5SCFRw`#DqGIJpRe1rlypcnHhD2L^ph`^){}R^~55kH-Tj; z6CHc26#@BRM@NUgp`qbSZ*T9u>FH??5%Z;VB055X_lV^|ATlzN1YUa+;DdY!;}TL; zRaFaX$jQmM*4Ni}5G0P3mX@|+P0-(@mi`6@2e+4(mtP~P8#6OA7ZH6Z z(?2^qOG4W-GBOsSAqVJ`M12w9e=J==LBX8OX3OKb!C?410dY7#Kd)3*SKH7$j~5me ze)jx(;qZ8 zHWnk|!?+g@6?-e|2;Sb_9*yYE$%}@-=#||1`uYN16BO5H5y%s+VH2)~z$QFo!nk}Z zDk^f~{5)#8J1Z;eHqv>S(K93HhXc8}xmPH!EiEku>U(iit1LKqxISG4Z2z_8BG1(cIj83fcOSpPzqK$|L>| zKrnE=c6WClarc1#DIim%^*YAwo^*6uTU#9J_*^@x!^6WNWo2b{)YyX3r0ey17y4ok zHXw&sGLk_rv|w`XaD?f5RRjpgw4niKNyaTG+tA66&>KO#2S5{^{Zvv?GD4D!4h{Aq zK0baK6Ohe&@EHU@j}ZM)UayLPkU%GYMrw`Pc?O|zj9d=S(SVFp=LS;Kj*M)@z2k1# z-GY)hp#g=W6F!xYjUi6l4Ht%Jp5opHX(kc_Krlu!gXdgJa`L}c^Ld019rVL2k^3Yd zZ$pX?(i;qrU8w&hG+nAhuO;D6ezl4y&ubgkg8<*lyrA5oS!}4+J)~_K>K5b8{9jD_ zoVO2o9jhA>Zi{$<61RtQBIan^JDelarIxZFyK&m@7OyJfKDlk8Qd3!vw5;l3AcWO6Z#y9v>#_ i{%N-EAE)d6dHxHmV;w;TW~6EW0000i?rw>b8}O$ zT%>MGWoD`SIcKNuJL+0pb>QKAyx;e{-}}7Z`;ea7H}KEbMA1x9Lt);D`6$LIMk&Tp z50jL&iQ-~GVWHhzZqb`eC7dxQN7-0eUatP?|6=ue+-C!Ur2!i1r|`2qq2XxlF1fef zW;@?{?4-_ERLpt8I^1)Lc*Z~5svuh=X2@#j}&XW32rfRb!{UV zoRZNwyon4>#-#=gS}bbZf3}W?BkM>b0-Ebec_MISG>OdQFbPcs1%-BNO&uAW6!FBh zg~x4L94z>w?!g5EHX;eMU0;GAC2+jHmdyHmb}DC#XALu3EczH!7<{G8QVRm35l0Adts9hOARpS zRZ0wmhpj}w^!qvXjN`0=(P{ToSgR7zbI!1RJ57Kz0n$(*5|50u0!q$QLzPL;SIujjD

feDvG>^hT$?v7mL7O1$S0$C$~r1R*r0-Y7WySGj;7z_;T4ifwN zT`p%H{kL`58%XTEsBna*9reCpT#(`2C+{YNl{75ctbXscvL}E1^)3N(xdtzxppb{}x~XB*h&v;i6Si00000 LNkvXXu0mjf>OOkP diff --git a/xFunc/Images/Paste.png b/xFunc/Images/Paste.png deleted file mode 100644 index 91bf4afd6364c3b611778516dbc67ffd69ebdf07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P)Aw!<+Y+@4T5Y0xFeC5?mLH#W6<6_*zQ% zMc45-$z&1$(=_>(=QGH(#cq; z8_)9s0MVdt5s{%D1RVqw1RMQ&&HUov>4d8veaO4St563%z;T45gDSn-|DWaM+9v=` zPR~a=cv4C!5fO15=h1LoS42e0<+Au!2(@QCo90-*mGd;ibVr*9Pz0YFg{+%!5m zDy|6ieE@WTwzf7pJ3Cz$iwN1DZ~4CX91)GC=40$`+D|qo04lIrDYz?uH8=>dSd45o z>$*4=i&1!oF<)3uy=QmRe$zbnqN)fWVhfJIVAmHue_A5Do+Fpb^E;O(pWkG2v%pqi z3q?^%E3|@Ty+1h|um(4GcIfZ{w(`^p?7$k z$5%HVOioS?&dkiLQK1lB94G-uamV`gz`%enh*T;?GMQ{285wyJ3WY9CO-&`eAe;^q zcMVQQ{7F?+0)YVi{rw%lG~fwQR)m&agC*y+0R)3Vg25m_RS1_F&`M(~M2%`}Y$O~G zv$nQY5u(8X;8Nu!DE|tDLd?$2GB-EJ!omWPNTg$EXlNSP2L#M{&OTrUbEKj+MWa!o z(I}dxk;!D(*w`Q*k9PpgSbihy4wwMNom*U}Qw0s9uyw;q5B?k300c4GstI7}2meTA4w(5b{|fF* z3aSI3r=T=8-%9{ympt2Z)E7XtBcHbeMsTU46V@U}5sGZvi_atY%lJoM0jfFWaGB4gA1(uv_G&Gc?GutY;BQ#_UOL)Ev4~0?+nsA zJZ=Mc^(N^ncyHICik}w&F5isD(2vq8E(gk|!^~L$PM&+!$H()Fak zFF=7h|6Wy-uNv?x^Q5y=@(rMA8WR%}WHOom43rMyvi6`7(a k0bmc7!$h4bU^x-}0p^Fsep6nyvj6}907*qoM6N<$f);C&%K!iX diff --git a/xFunc/Images/Redo.png b/xFunc/Images/Redo.png deleted file mode 100644 index 8618cdb1e3c8f14652f03f9ea87daacb5469cfaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmV-J0=)f+P)ybOTd* ze&w)Q*u^=mJ>1vnq{tU*rNylF>e5O^_n=@f4iSOCi7>JqbUTBlE9LWpy<24fSby|E z_mxzi0Kh0zOKVrNd+A&Tzby}(a|9v5aYGEp9*7ZQA_m*EAjkH$Q0RpaqV8aBgYx%k zdS)T{<=Xm+F1-ltmW6hE*l_*G48aU7l`@2?B8WW9#p7^o2hM0{W|wmM(Ju>vK&31B ztWJ#M;PW@L)j8h!TD!A<5^cHo_L+9UeVNXs5s(jcLB+hT>4_u*05CPFY$miMejN4C z>Df=tE(5^#*SEJFIl3|E4ZtY|4?Yl!;2{J6h& z55tRqvF}4LJ^^?EGaMPfasA4)-PH#lbww!k%;H6Z#W@s4V2r?N5SjRCB_SzG)3yw7QNtZQ#@Hb(+>cO=pk1O3##F#5Vpl_*Z~6^vcJ!G`SF~ zGXc8qi>52(4uG380RSM3!tDq!mhQeYW&*U|6ii~YMMO_$adE2U`}O~RMOA54dI1qP6%`Uvdr?)r zsalB}E>g8Otx^dp6e>~?k`yHfS(T!?a6y3r4gL#FVjRbRyX)E6`8ntGVm6N5kj6nc zeWf#Jq|u!B{l4!#-Md553SYB8PVGycIXs#XrYuD5co4F;A(O#Tbn?7Hz;7AvTI;m=HuU z##&;dN#X!Elcl_28;!*aJG#H{-M^S5c%ZcH?nU5K#w!k$tG&!#90TwGSr#CUd+4@p zo6CicDj%F}P$_wIS3H8iXL9l!elsN2X*ONg#q)A>mb)o>1zJf$qGJ$2+Zd}{O4VNK z3o^L*O9x&N58dwv{ol^z%N>QzO=R30iH#5ei^hmhuJ%%!XHY~@ zuJ)is<46YNiuK&oRO+c)db?R_2_lM8Q86}tmYJ!^k#nbi`AlnJ{9|AdXaLc|_{q_Q z@slH+eS3b}^W`Uho+R=8ot3S4UXIv?09Y}g97om@fES@<(a^SZ64n7X{7v-*Avbh{_ zI}@6OtmmPv#$XT;M9Jk60HCZjcXf8;aWZ+bS%;wMGc&vBpFjPpXWHZ!+Oxl6Z`=00 z56n)Sc=Ff5{OC{W^@}7?j5Q8XVu`fHk3(8IL0d4$@)lkefUvLB*+CdXF6%HgeUWhP z{TEsb<5TU(Yi+V?ApshrN1ymj6wDp*8<)U3Bt{WymPeRCE4D<5O+_qwz*uDwl%r?` zO&04u)BpIxF<=3xUx)lM%#KH1%DP@@K$JoWxUPe?X|QS3fPg506(w-RQFrI^d9<-K zmV9FW(nv5rdO7lN4dm>8{I34xUwHt+Q%at*`0>i^dAtO4@2;zYauei5~1QqJ|P3QLjyr z7P;+o+I3$!x38;AXifZfD`=uMSOh_Ao7`|6yz~3Ldw@;AM%umo`l6Rn17g=i{#&gu zqOsJ%UOBzj`azM9?v|w+BnOCrz#TjO#KfK7IeMdXqc5Wv% z)XftB=*XWw7{xwLCbzjd@W8D=h8s85rxswxPyFx=9XDSDsN8nK#W-#PcepHGvX3)k(6pCuH~x#N)|zpD;>;|?Ido@Cc@xdMu$9%zzgVYxk9yW$UN h9pP{j8`A#`{{cZ?ugvU9q%Z&g002ovPDHLkV1g?n_ZI*F diff --git a/xFunc/Images/Refresh.png b/xFunc/Images/Refresh.png deleted file mode 100644 index bf60ffd7f5aedca65011f34e34b617d44d18ade0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1397 zcmV-*1&aEKP)RCwC$S4l`DR~UZP-Q{*rT5KIrx?LbR2loZFB~hcGQBe?= zL&PN-upL*78uxu)M}&X`49P7Sa-2Y5mw6CvE?CtGoWMMf;ghoY0z1ZE|9YHd> zhx`&Svg8NL%gbVAWkr;hmL?}8BrFRdZUMgl=Ms;BZ-MKPk&&K~l9DiekJ#AQNv;_h z8gecyESUEI7xM6}tu0YmSt*=OXCF4Y!_90qn+BbL#bWWD`#e5AzQo~hRO9&sc+}tD zACK^GU&WLM2)IzGuC7+F!BuW-wOY?rRpkMXfFJC3`&T&R7|-7T-veGnQM7eRr*o2$WVp{)JO-)S{+^HoR5{#v1L2NAt2M1z!c$kFS zVfC3j_*CKy-?&WW0857n2MdKvwlit@dtF^!>h|_FLt`_R6*uO4baeDfIQ%Z~K;j|7 zaUY`>-qbumb>Ju?Bjc#3 zsAwNp2CimiW;#su0&J=&oy+BV2M3>`v>3xzTU%Qh8phl=Uo-{W+}ykXOP6!S#l;!G zB#=+*DNKGnAa!0N5EB#gf$qNC+}ta0wTkeB@^=ZvsFZR}MJ}kAR}mIFzWr71@mo(% zk3;5w2$TZ~6Af;2qpaQr_S)LoLYU=r_r}JC23qN>n!0$=T9oP~DNtUFKcNg`0_Ffe zCdyttgEZ*sH&=Z8TC$dq7-||%F5z=!=W3nv$LZ>l3!p2u_O`7 z4?!R-AOV&VthYi`Sb|^r$?AL1h-BZG@_Qtz6$C|4P!MzIOe*0bn^eFMNENhk5w!dU zD&PTdBFB3WA}?I}37XO~41uniG6yI~nocApCer#7nZVxi^73cd3ArX<8N!7sH%A%X zloITvs!2;eMyaWXhli{PRZlutZKHVg_V$W`f`WXky#vBp35SP=zX<{3dc`+neyaf8 z@0O8(>;<>u;^LZWYinaz`%KFH{e98V(IH@EGJdBP|EM=EjNj$ua6t7ZecOZc^w%SQ-LxdIfWz z`rL+e{0tmJH-=kUT2zJymRo!;sR0S_E=Qq39gpVc=hrYHk!ac+8&zRpq0Q}fS7ICl z)`2;^_hKxARs@l(ya6kJb`=juKyR<@?d`&Nfsh$&HEO;u7&=~F108JYO2)E*`>eiF zOE0h`vs{57j?5b#te07!g9Ca%mu0h-{QuwZUrXS3YaeKr>?r@!00000NkvXXu0mjf D&Jlx# diff --git a/xFunc/Images/Remove.png b/xFunc/Images/Remove.png deleted file mode 100644 index 736b1f3095d4dfe1ee9e9065d8a0c8f68388220c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)c-W_ap(&^WZN5F2Du2 z02kl_zuoNhdWYKWc10w41`@6%d|#6}0h%xxjbJ<;pT%%EJi7U*1cbq00G4H4*6a0} zVHh_b)EGI8Z8RF!&1UnW-|w?0Km#$l1YK*IHqB=bBs-ms$Rt3v zwrwXin+=$z`I5`!_QhgxS11(r5qLv(s;cgFU7z{B|MgHz0vMaL-EN^$sl29AsZf^X zFq6qdCY?@)rBdmcdI1xVn2!Lf=r|5l2jiPzKRjVG1;`YcA&p~C&uv)EPKA*#4v53TSxrFt44HSQzx8QIT?RHzheh^x%)=xx4LXxMz zxyjG7kM$iO35t(u9BA&T&H2B83vdB0zy+(@iU;Q5XmC-!n?F!dg}~ zN>+-+C@C*xgRPnwBCAQ7vSee01z$jR5=x1UGAVh<2e6RYOeq>!AQ2vm=iD5(JLbQ- zuk(L7*SW54K1L`0;u8JHr3FRN_YnGUfLoNK3ukCRH!AUfp%sI?q6Xzjh1Ea~48gYT8K;|(Sy>~X8J)#$XqPi}*r5nrm9fi!JHL8b$ zc0AMrS#!u?Dl)BO1T!g3bCx;AFFb{ieN=pAi17{E7{q-DIYQO{n0plVoW~m4a24uP z>|k19%-6o#LB=ZjsIWe|cPCbF1V5EEUa4U*`R*aJ4&A-_O7OG9ZT7WUE@W8>~Gz(#0{ zZexhSkS)NE4p%vxqMH#w^#sRd+Vq2 z{b0-l@D4I=UK@7(cE;vT$WVWt?d_KGRD0pu+lj@ayq6z*sKin9ZfIoK?H_dAB#CAu zK-25eXohU<3|^ z6D5t4p8@##`c`$n71XtmXbe{ZSf+_%TL>xf+8G6Ruw*;-a_Rnxdm03xYeHyD$8b%6 z&0p<5JWh{Oj^l6{xPG!{SVlcfW26+yTw5xOQ@8v@rY#j{kXp&J4j%%HGHC{q+J6Bo z+Z;`Fq6|Y+{|jJPMn%i)#pjnd&K}{;!g@&>!bPwMaArW-O&JXbIPKdxssEgE!R+W%wX+uFxghY{OSp?#NMWt`$fvTb} zt)e_c6;gSqR1i_RC|FqpR@+plq(})3lx&Vu$4=s0$G+Fs_g>#S%bCN&jH9G#(iG%~ zzcf0tocaF$`L_9l{}SsTeQh&D?TBo~+IDNrF>B5I={FvG3owAa89VZ+NVmOuzn~sR z6^fNx~F;nud_^qQgLrcyj@avR|1$^JfL=gxmrO{5B zTyrPsYz`5Fm4N1a8-CDejs_pzSvdOA!@%rPzB!1(0%tDxZ2J6KENajGM@Y#n&DA44RNjg-gs&yt8BS&@-G9uNUhalDlhGHHi=Q;Nb&fl6^=bn?(Mdx1;I zQAxf>ya*?iCELAz7{~%ziGYb>a&;BC)zs~3b^uJ~kIddW6- z53KphZ+_dk{*f*~-vl`T=SH8NvBo=KLJy?`CzT@A+B*ceu>cWF1i6euHtmp2R!3{9 zby%nws*MP@sh3o)V_ol;ezLb~h2ak--(iKN>+~>+A=6Cb-TI>}pu!zaIuZN(&}3g!STh@<<#6 z4j(xVB8VtZ$r@)Qa?Kha+RY92-u2^=*$?*IOPmuo6d~Fzf?O$U8wFM31UAlz-CxfG zeL(&uT?%ozc|e9ZA3i~VV^M-iaLIjx<3)OcbbiUN8n@ z4V9_)P6Iw*oW#f{#_@lFa#DHiIC!3i2^%xTll!KKJ!sT&5-&lNvniEMQD3a%l_&p} zkb6LMiv;MQD6}+upTd!s_W)JEv)0;MBS7n+$XdMe)Srtd_kBqG2lXLtiOY&F{^Fng zC}*`7gbtlNdY&ZnuhF<%0utL9AeRu=NQRiD_=_wjeGE-9`7GVA)?N|t be}Vr1nG(a5)W20Q00000NkvXXu0mjffeSNM diff --git a/xFunc/Images/Variable.png b/xFunc/Images/Variable.png deleted file mode 100644 index 9199b4ba890939d3f7c5555a0fee5190fcaac4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)QuFQS-& zB!Y^H;`nbI$I;MF;3{a_w`pD9qEn-hJnHxbMyk8xDtTHk+~Ka``XK z=W_;@DT=~swc1%epHCMG1w(=t3|JPA$3?f>{pN5uRHxHvNbnN#o=heM=5o1I$SAB! z=NLAAzyFca=G2WYDCVD-g~)R?wZ;>%49Mnf;bAfZMWMN>Ll7| zG&qER3$WR22)IK44qL6(33YOa;lYR+IwROBNz!_#V8Ak~)v5*pfd{-E7;uR7r#9>G zf&t6u&a%hjdGUI^&pw~;$%x=3=9Omh`6pJZ)pNS@O*We?(+vI;Jn(`6%Qk;!d|^fe bFBq^N_!NlCMhUh)00000NkvXXu0mjflw9k8 diff --git a/xFunc/Images/VariableLarge.png b/xFunc/Images/VariableLarge.png deleted file mode 100644 index 88b0efa832e4eed3496c5439e781ddcfd2cedfee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1028 zcmV+f1pE7mP)2I}QTHq`*6+LNF}F<-TD^2J zJ?GwYJKr~RX6DS1{C>ZbN|Bb9mShP80@BLLiWCe6RTW|oOW?{sV!`Y6UY(kny5V-a zud5-{O$=eEOkiVUgTMtwqw#rJS=kXJtg;*tiNd3kwQr_-q_ z#2^+hKg`X|U6Kq2!wWL2sHiwoA*RV>dLnT`W@k-+n8cO@ILDHbk~0w{rX(hnm6eB$ zjg5NS}&*~ ze4C%2&lJHmIy%~Hu~>HCnQVd*u&1ZT2a6xze`zEL0(pA9{u92rAObfb0>b*v&d$3{ zO-;`@=Nh)*N`HU9y}G*kBVuBU2MWeeOH0en(9qCrf|0<)#Du=8s_F+~=Dg6Eum>VJ zyASt!NPzF4FoW(N8yhp?U^#^49;ef3BoVO%96{2-Lr$qLAp#tcP8wM8odDwe7R30B zT>fRXTJLXeZbk(p$zqEhx3#rxbDmTXMxs9p`}hTMP$<%g3Ms?G!xppI{0QrxxhAZS zbUW!F{&jM4Qb(dm2O%Oj9mn-6k?hOnK+`+S^xVSisEpj;=4g&%;iyNcKpF|h#@0FH`tsz;gXCZ6+Al$6n`+us01V9I^}MubOXyhBK7Wvs&3Z$+Vs2d)%x9Lo&}+af;H)z!VF8%0S~L#Ue=#3H8L zlCdeJJ5W@PdV71lE|<$RK0a=QnEtaEshb$YBBtDwvMsNzt(DvIqN1WO(@IStMpRp_ yyqJL1Pcl>MQbOIth`N}h{A!l+%W0~w=f45p&m43LXw@VD0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bfZ(K~y+Tg_6H3 zMsXCzuOAVjh(V}#F^S|K@D56uEHdOgyoIQ3`z#2geVzolt_ex&!cm6 zyzcd$dOAP9&pG#=Q>XY1HUkAT{tw|))A%0R}LBIbReEm!@ zYdiN~4$J^eCpiGGK$|%935s) A9smFU diff --git a/xFunc/Images/VarsLarge.png b/xFunc/Images/VarsLarge.png deleted file mode 100644 index c0992123489b9ad08e6e2bd9b037e926baecc969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1253 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


>#*+Ijm#8b*0#l@4@){ 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 StSzv%z}f<93;aLd0{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/xFunc/Presenters/GraphsPresenter.cs b/xFunc/Presenters/GraphsPresenter.cs deleted file mode 100644 index 3a5db486d..000000000 --- a/xFunc/Presenters/GraphsPresenter.cs +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using xFunc.Maths; -using xFunc.Properties; -using xFunc.ViewModels; -using xFunc.Views; - -namespace xFunc.Presenters -{ - - public class GraphsPresenter - { - - private readonly IGraphsView view; - - private readonly Processor processor; - private readonly int countOfGraphs; - private readonly List listOfGraphs; - - public GraphsPresenter(IGraphsView view, Processor processor) - { - this.view = view; - - this.processor = processor; - countOfGraphs = Settings.Default.MaxCountOfExpressions >= 20 ? 20 : Settings.Default.MaxCountOfExpressions; - listOfGraphs = new List(countOfGraphs); - } - - public void Add(string strExp) - { - var exp = processor.Parse(strExp); - - listOfGraphs.Add(new GraphItemViewModel(exp, true, null, Settings.Default.DefaultChartColor)); - - while (listOfGraphs.Count > countOfGraphs) - listOfGraphs.RemoveAt(0); - - view.Graphs = listOfGraphs.AsReadOnly(); - } - - public void Remove(GraphItemViewModel exp) - { - listOfGraphs.Remove(exp); - - view.Graphs = listOfGraphs.AsReadOnly(); - } - - public void Remove(int index) - { - listOfGraphs.RemoveAt(index); - - view.Graphs = listOfGraphs.AsReadOnly(); - } - - public void Clear() - { - listOfGraphs.Clear(); - - view.Graphs = listOfGraphs.AsReadOnly(); - } - - public int CountOfGraphs => listOfGraphs.Count; - - } - -} \ No newline at end of file diff --git a/xFunc/Presenters/MathPresenter.cs b/xFunc/Presenters/MathPresenter.cs deleted file mode 100644 index 33727f691..000000000 --- a/xFunc/Presenters/MathPresenter.cs +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.ComponentModel; -using System.Globalization; -using System.Linq; -using xFunc.Maths; -using xFunc.Maths.Results; -using xFunc.Properties; -using xFunc.ViewModels; -using xFunc.Views; - -namespace xFunc.Presenters -{ - - public class MathPresenter : INotifyPropertyChanged - { - - private readonly IMathView view; - - private readonly Processor processor; - private OutputFormats outputFormat; - - public event PropertyChangedEventHandler PropertyChanged; - - public MathPresenter(IMathView view, Processor processor) - { - this.view = view; - - this.processor = processor; - Workspace = new MathWorkspace(Settings.Default.MaxCountOfExpressions); - } - - protected void OnPropertyChanged(string name) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); - } - - private void UpdateList() - { - var vm = Workspace.Select((t, i) => new MathWorkspaceItemViewModel(i + 1, t)); - - view.MathExpressions = vm; - } - - public void Add(string strExp) - { - if (string.IsNullOrWhiteSpace(strExp)) - throw new ArgumentNullException(nameof(strExp)); - - var exps = strExp.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) - .Select(str => str.Trim()); - - foreach (var s in exps) - { - var result = processor.Solve(s); - if (result is NumberResult num) - { - if (outputFormat == OutputFormats.Normal) - { - Workspace.Add(new MathWorkspaceItem(s, result, num.Result.ToString("F", CultureInfo.InvariantCulture))); - continue; - } - if (outputFormat == OutputFormats.Exponential) - { - Workspace.Add(new MathWorkspaceItem(s, result, num.Result.ToString("E", CultureInfo.InvariantCulture))); - continue; - } - } - - Workspace.Add(new MathWorkspaceItem(s, result, result.ToString())); - } - - UpdateList(); - } - - public void Clear() - { - Workspace.Clear(); - - UpdateList(); - } - - public void Remove(MathWorkspaceItemViewModel item) - { - if (item == null) - throw new ArgumentNullException(nameof(item)); - - Workspace.Remove(item.Item); - - UpdateList(); - } - - public MathWorkspace Workspace { get; } - - public OutputFormats OutputFormat - { - get - { - return outputFormat; - } - set - { - outputFormat = value; - OnPropertyChanged(nameof(OutputFormat)); - } - } - - } - -} \ No newline at end of file diff --git a/xFunc/Presenters/MathWorkspace.cs b/xFunc/Presenters/MathWorkspace.cs deleted file mode 100644 index 496940cdf..000000000 --- a/xFunc/Presenters/MathWorkspace.cs +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections; -using System.Collections.Generic; - -namespace xFunc.Presenters -{ - - public class MathWorkspace : IList - { - private readonly List expressions; - - public MathWorkspace() - : this(20) - { - } - - public MathWorkspace(int maxCountOfExps) - { - this.MaxCountOfExpressions = maxCountOfExps; - expressions = new List(maxCountOfExps >= 20 ? 20 : maxCountOfExps); - } - - public MathWorkspaceItem this[int index] - { - get => expressions[index]; - set => expressions[index] = value; - } - - IEnumerator IEnumerable.GetEnumerator() - { - return expressions.GetEnumerator(); - } - - public IEnumerator GetEnumerator() - { - return expressions.GetEnumerator(); - } - - public void Add(MathWorkspaceItem item) - { - if (expressions.Count >= MaxCountOfExpressions) - expressions.RemoveAt(0); - - expressions.Add(item); - } - - public void AddRange(IEnumerable items) - { - while (expressions.Count >= MaxCountOfExpressions) - expressions.RemoveAt(0); - - expressions.AddRange(items); - } - - public int IndexOf(MathWorkspaceItem item) - { - return expressions.IndexOf(item); - } - - public void Insert(int index, MathWorkspaceItem item) - { - if (expressions.Count >= MaxCountOfExpressions) - expressions.RemoveAt(0); - - expressions.Insert(index, item); - } - - public void Clear() - { - expressions.Clear(); - } - - public bool Remove(MathWorkspaceItem item) - { - return expressions.Remove(item); - } - - public void RemoveAt(int index) - { - expressions.RemoveAt(index); - } - - public bool Contains(MathWorkspaceItem item) - { - return expressions.Contains(item); - } - - public void CopyTo(MathWorkspaceItem[] items, int index) - { - expressions.CopyTo(items, index); - } - - public int Count => expressions.Count; - - public bool IsReadOnly => false; - - public int MaxCountOfExpressions { get; set; } - - } - -} \ No newline at end of file diff --git a/xFunc/Presenters/MathWorkspaceItem.cs b/xFunc/Presenters/MathWorkspaceItem.cs deleted file mode 100644 index 073f9fb55..000000000 --- a/xFunc/Presenters/MathWorkspaceItem.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using xFunc.Maths.Results; - -namespace xFunc.Presenters -{ - - public class MathWorkspaceItem - { - public MathWorkspaceItem(string strExp, IResult result, string answer) - { - this.StringExpression = strExp; - this.Result = result; - this.Answer = answer; - } - - public string StringExpression { get; } - - public IResult Result { get; } - - public string Answer { get; internal set; } - - } - -} \ No newline at end of file diff --git a/xFunc/Presenters/OutputFormats.cs b/xFunc/Presenters/OutputFormats.cs deleted file mode 100644 index f51c696de..000000000 --- a/xFunc/Presenters/OutputFormats.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace xFunc.Presenters -{ - - public enum OutputFormats - { - - Auto, - Normal, - Exponential - - } - -} \ No newline at end of file diff --git a/xFunc/Presenters/TruthTablePresenter.cs b/xFunc/Presenters/TruthTablePresenter.cs deleted file mode 100644 index 221b754ee..000000000 --- a/xFunc/Presenters/TruthTablePresenter.cs +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using xFunc.Maths; -using xFunc.Maths.Expressions; -using xFunc.Maths.Expressions.Collections; -using xFunc.ViewModels; - -namespace xFunc.Presenters -{ - public class TruthTablePresenter - { - private readonly Parser parser; - - private List table; - - public TruthTablePresenter() - { - parser = new Parser(); - } - - private void SetBits(int bits) - { - var i = 0; - foreach (var param in Parameters) - { - Parameters[param.Key] = ((bits >> i) & 1) == 1; - - i++; - } - } - - public void Generate(string strExp) - { - Expression = parser.Parse(strExp); - Expressions = Helpers.ConvertExpressionToCollection(Expression); - Parameters = Helpers.GetParameters(Expression); - table = new List(); - - var parametersCount = Parameters.Count(); - var expressionCount = Expressions.Count(); - var allBitsSet = (int)Math.Pow(2, parametersCount) - 1; - - for (int i = allBitsSet; i >= 0; i--) - { - SetBits(i); - - var result = (bool)Expression.Execute(Parameters); - - var row = new TruthTableRowViewModel(parametersCount, expressionCount) - { - Index = allBitsSet - i + 1 - }; - - for (int j = 0; j < parametersCount; j++) - row.VarsValues[j] = (bool)Parameters[Parameters.ElementAt(j).Key].Value; - - for (int j = 0; j < expressionCount - 1; j++) - row.Values[j] = (bool)Expressions.ElementAt(j).Execute(Parameters); - - if (expressionCount != 0) - row.Result = result; - - table.Add(row); - } - } - - public IExpression Expression { get; private set; } - - public IEnumerable Expressions { get; private set; } - - public ParameterCollection Parameters { get; private set; } - - public IEnumerable Table => table; - } -} \ No newline at end of file diff --git a/xFunc/Properties/AssemblyInfo.cs b/xFunc/Properties/AssemblyInfo.cs deleted file mode 100644 index f6f112295..000000000 --- a/xFunc/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +0,0 @@ -using System.Runtime.InteropServices; -using System.Windows; - -[assembly: ComVisible(false)] - -[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] \ No newline at end of file diff --git a/xFunc/Properties/Settings.Designer.cs b/xFunc/Properties/Settings.Designer.cs deleted file mode 100644 index acf7a6c87..000000000 --- a/xFunc/Properties/Settings.Designer.cs +++ /dev/null @@ -1,469 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace xFunc.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public double WindowTop { - get { - return ((double)(this["WindowTop"])); - } - set { - this["WindowTop"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public double WindowLeft { - get { - return ((double)(this["WindowLeft"])); - } - set { - this["WindowLeft"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("1024")] - public double WindowWidth { - get { - return ((double)(this["WindowWidth"])); - } - set { - this["WindowWidth"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("576")] - public double WindowHeight { - get { - return ((double)(this["WindowHeight"])); - } - set { - this["WindowHeight"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Normal")] - public global::System.Windows.WindowState WindowState { - get { - return ((global::System.Windows.WindowState)(this["WindowState"])); - } - set { - this["WindowState"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool NumbersExpanded { - get { - return ((bool)(this["NumbersExpanded"])); - } - set { - this["NumbersExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool StandartMathExpanded { - get { - return ((bool)(this["StandartMathExpanded"])); - } - set { - this["StandartMathExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool TrigonometricExpanded { - get { - return ((bool)(this["TrigonometricExpanded"])); - } - set { - this["TrigonometricExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool HyperbolicExpanded { - get { - return ((bool)(this["HyperbolicExpanded"])); - } - set { - this["HyperbolicExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool BitwiseExpanded { - get { - return ((bool)(this["BitwiseExpanded"])); - } - set { - this["BitwiseExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool ConstantsMathExpanded { - get { - return ((bool)(this["ConstantsMathExpanded"])); - } - set { - this["ConstantsMathExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool AdditionalMathExpanded { - get { - return ((bool)(this["AdditionalMathExpanded"])); - } - set { - this["AdditionalMathExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int SelectedTabIndex { - get { - return ((int)(this["SelectedTabIndex"])); - } - set { - this["SelectedTabIndex"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("20")] - public int MaxCountOfExpressions { - get { - return ((int)(this["MaxCountOfExpressions"])); - } - set { - this["MaxCountOfExpressions"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Auto")] - public string Lang { - get { - return ((string)(this["Lang"])); - } - set { - this["Lang"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("-1")] - public double VarWindowTop { - get { - return ((double)(this["VarWindowTop"])); - } - set { - this["VarWindowTop"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("-1")] - public double VarWindowLeft { - get { - return ((double)(this["VarWindowLeft"])); - } - set { - this["VarWindowLeft"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("-1")] - public double FuncWindowTop { - get { - return ((double)(this["FuncWindowTop"])); - } - set { - this["FuncWindowTop"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("-1")] - public double FuncWindowLeft { - get { - return ((double)(this["FuncWindowLeft"])); - } - set { - this["FuncWindowLeft"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("220")] - public double VarWindowWidth { - get { - return ((double)(this["VarWindowWidth"])); - } - set { - this["VarWindowWidth"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("280")] - public double VarWindowHeight { - get { - return ((double)(this["VarWindowHeight"])); - } - set { - this["VarWindowHeight"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("220")] - public double FuncWindowWidth { - get { - return ((double)(this["FuncWindowWidth"])); - } - set { - this["FuncWindowWidth"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("280")] - public double FuncWindowHeight { - get { - return ((double)(this["FuncWindowHeight"])); - } - set { - this["FuncWindowHeight"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool RememberSizeAndPosition { - get { - return ((bool)(this["RememberSizeAndPosition"])); - } - set { - this["RememberSizeAndPosition"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool RememberRightToolBar { - get { - return ((bool)(this["RememberRightToolBar"])); - } - set { - this["RememberRightToolBar"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool RememberBaseAndAngle { - get { - return ((bool)(this["RememberBaseAndAngle"])); - } - set { - this["RememberBaseAndAngle"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool MatrixExpanded { - get { - return ((bool)(this["MatrixExpanded"])); - } - set { - this["MatrixExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool ProgExpanded { - get { - return ((bool)(this["ProgExpanded"])); - } - set { - this["ProgExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Collections.Specialized.StringCollection UserFunctions { - get { - return ((global::System.Collections.Specialized.StringCollection)(this["UserFunctions"])); - } - set { - this["UserFunctions"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool SaveUserFunction { - get { - return ((bool)(this["SaveUserFunction"])); - } - set { - this["SaveUserFunction"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("-1")] - public double ConverterLeft { - get { - return ((double)(this["ConverterLeft"])); - } - set { - this["ConverterLeft"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("-1")] - public double ConverterTop { - get { - return ((double)(this["ConverterTop"])); - } - set { - this["ConverterTop"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Auto")] - public global::xFunc.Presenters.OutputFormats OutputFormat { - get { - return ((global::xFunc.Presenters.OutputFormats)(this["OutputFormat"])); - } - set { - this["OutputFormat"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool SaveDump { - get { - return ((bool)(this["SaveDump"])); - } - set { - this["SaveDump"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("#FFFF0000")] - public global::System.Windows.Media.Color DefaultChartColor { - get { - return ((global::System.Windows.Media.Color)(this["DefaultChartColor"])); - } - set { - this["DefaultChartColor"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool ComplexNumberExpanded { - get { - return ((bool)(this["ComplexNumberExpanded"])); - } - set { - this["ComplexNumberExpanded"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool StatisticalExpanded { - get { - return ((bool)(this["StatisticalExpanded"])); - } - set { - this["StatisticalExpanded"] = value; - } - } - } -} diff --git a/xFunc/Properties/Settings.settings b/xFunc/Properties/Settings.settings deleted file mode 100644 index ecf270290..000000000 --- a/xFunc/Properties/Settings.settings +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - 0 - - - 0 - - - 1024 - - - 576 - - - Normal - - - True - - - True - - - False - - - False - - - False - - - False - - - False - - - 0 - - - 20 - - - Auto - - - -1 - - - -1 - - - -1 - - - -1 - - - 220 - - - 280 - - - 220 - - - 280 - - - True - - - True - - - True - - - False - - - False - - - - - - False - - - -1 - - - -1 - - - Auto - - - False - - - #FFFF0000 - - - False - - - False - - - \ No newline at end of file diff --git a/xFunc/Resources/Resource.Designer.cs b/xFunc/Resources/Resource.Designer.cs deleted file mode 100644 index ad01b5746..000000000 --- a/xFunc/Resources/Resource.Designer.cs +++ /dev/null @@ -1,1971 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace xFunc.Resources { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public class Resource { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resource() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [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("xFunc.Resources.Resource", typeof(Resource).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - public static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to About. - /// - public static string AboutButtonHeader { - get { - return ResourceManager.GetString("AboutButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Show the about window. - /// - public static string AboutButtonToolTip { - get { - return ResourceManager.GetString("AboutButtonToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to About (F1). - /// - public static string AboutToolTipTitle { - get { - return ResourceManager.GetString("AboutToolTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to About. - /// - public static string AboutWindowTitle { - get { - return ResourceManager.GetString("AboutWindowTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Absolute value of "x". Example: abs(-1). - /// - public static string AbsToolTip { - get { - return ResourceManager.GetString("AbsToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The "+=" operator. Example: x += 2.. - /// - public static string AddAssignToolTip { - get { - return ResourceManager.GetString("AddAssignToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cancel. - /// - public static string AddFuncCancel { - get { - return ResourceManager.GetString("AddFuncCancel", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The function name is incorrect.. - /// - public static string AddFuncError { - get { - return ResourceManager.GetString("AddFuncError", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Function:. - /// - public static string AddFuncFunc { - get { - return ResourceManager.GetString("AddFuncFunc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Name:. - /// - public static string AddFuncName { - get { - return ResourceManager.GetString("AddFuncName", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to OK. - /// - public static string AddFuncOk { - get { - return ResourceManager.GetString("AddFuncOk", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Add a new function. - /// - public static string AddFuncTitle { - get { - return ResourceManager.GetString("AddFuncTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Additional. - /// - public static string AdditionalMathExpanderHeader { - get { - return ResourceManager.GetString("AdditionalMathExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cancel. - /// - public static string AddVarCancel { - get { - return ResourceManager.GetString("AddVarCancel", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Name:. - /// - public static string AddVarName { - get { - return ResourceManager.GetString("AddVarName", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to OK. - /// - public static string AddVarOK { - get { - return ResourceManager.GetString("AddVarOK", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Read-Only. - /// - public static string AddVarReadOnly { - get { - return ResourceManager.GetString("AddVarReadOnly", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Add a new variable. - /// - public static string AddVarTitle { - get { - return ResourceManager.GetString("AddVarTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Value:. - /// - public static string AddVarValue { - get { - return ResourceManager.GetString("AddVarValue", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bitwise AND operation. Example: x and y, x & y. - /// - public static string AndToolTip { - get { - return ResourceManager.GetString("AndToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Answer:. - /// - public static string AnswerTextBox { - get { - return ResourceManager.GetString("AnswerTextBox", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse cosecant of a number. Example: arccsc(90) or arccosec(90). - /// - public static string ArccosecantToolTip { - get { - return ResourceManager.GetString("ArccosecantToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse cosine of a number. Example: arccos(90). - /// - public static string ArccosineToolTip { - get { - return ResourceManager.GetString("ArccosineToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse cotangent of a number. Example: arccot(90) or arcctg(90). - /// - public static string ArccotangentToolTip { - get { - return ResourceManager.GetString("ArccotangentToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse hyperbolic cosine of "x". Example: arcosh(90) or arch(90). - /// - public static string ArcoshToolTip { - get { - return ResourceManager.GetString("ArcoshToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse hyperbolic cotangent of "x". Example: arcoth(90) or arcth(90). - /// - public static string ArcothToolTip { - get { - return ResourceManager.GetString("ArcothToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse hyperbolic cosecant of "x". Example: arcsch(90). - /// - public static string ArcschToolTip { - get { - return ResourceManager.GetString("ArcschToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse secant of a number. Example: arcsec(90). - /// - public static string ArcsecantToolTip { - get { - return ResourceManager.GetString("ArcsecantToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse sine of a number. Example: arcsin(1). - /// - public static string ArcsineToolTip { - get { - return ResourceManager.GetString("ArcsineToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse tangent of a number. Example: arctan(90) or arctg(90). - /// - public static string ArctangentToolTip { - get { - return ResourceManager.GetString("ArctangentToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse hyperbolic secant of "x". Example: arsech(90). - /// - public static string ArsechToolTip { - get { - return ResourceManager.GetString("ArsechToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse hyperbolic sine of "x". Example: arsinh(90) or arsh(90). - /// - public static string ArsinhToolTip { - get { - return ResourceManager.GetString("ArsinhToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse hyperbolic tangent of "x". Example: artanh(90) or arth(90). - /// - public static string ArtanhToolTip { - get { - return ResourceManager.GetString("ArtanhToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The expression '{1}' was assigned to the function '{0}'.. - /// - public static string AssignFunction { - get { - return ResourceManager.GetString("AssignFunction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The value '{1}' was assigned to the variable '{0}'.. - /// - public static string AssignVariable { - get { - return ResourceManager.GetString("AssignVariable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Dmytro Kyshchenko. - /// - public static string Author { - get { - return ResourceManager.GetString("Author", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Author:. - /// - public static string AuthorTextBox { - get { - return ResourceManager.GetString("AuthorTextBox", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Auto. - /// - public static string AutoFormatButtonHeader { - get { - return ResourceManager.GetString("AutoFormatButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The Avg function. Example: avg(1, 2, 3).. - /// - public static string AvgToolTip { - get { - return ResourceManager.GetString("AvgToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bitwise & Logical. - /// - public static string BitwiseExpanderHeader { - get { - return ResourceManager.GetString("BitwiseExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Returns the smallest integer greater than or equal to the specified number. Example: ceil(5.5555).. - /// - public static string CeilToolTip { - get { - return ResourceManager.GetString("CeilToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Clear. - /// - public static string ClearButtonHeader { - get { - return ResourceManager.GetString("ClearButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Delete all expressions.. - /// - public static string ClearScreenTipText { - get { - return ResourceManager.GetString("ClearScreenTipText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Clear (Shift+Del). - /// - public static string ClearScreenTipTitle { - get { - return ResourceManager.GetString("ClearScreenTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Clipboard. - /// - public static string ClipboardGroupHeader { - get { - return ResourceManager.GetString("ClipboardGroupHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to cm. - /// - public static string cm { - get { - return ResourceManager.GetString("cm", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Complex numbers. - /// - public static string ComplexNumberExpanderHeader { - get { - return ResourceManager.GetString("ComplexNumberExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The conditional-AND operator. Example: x == 0 && y != 0.. - /// - public static string ConditionalAndToolTip { - get { - return ResourceManager.GetString("ConditionalAndToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The conditional-OR operator. Example: x == 0 || y != 0.. - /// - public static string ConditionalOrToolTip { - get { - return ResourceManager.GetString("ConditionalOrToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The Conjugate function. Example: conjugate(3+2i).. - /// - public static string ConjugateToolTip { - get { - return ResourceManager.GetString("ConjugateToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Constants. - /// - public static string ConstantsExpanderHeader { - get { - return ResourceManager.GetString("ConstantsExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unit Converter. - /// - public static string ConverterButtonHeader { - get { - return ResourceManager.GetString("ConverterButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Calculate. - /// - public static string ConverterCalculateText { - get { - return ResourceManager.GetString("ConverterCalculateText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Converts data from one unit to another.. - /// - public static string ConverterScreenTipText { - get { - return ResourceManager.GetString("ConverterScreenTipText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unit Converter (Ctrl+Alt+C). - /// - public static string ConverterScreenTipTitle { - get { - return ResourceManager.GetString("ConverterScreenTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unit Converter. - /// - public static string ConverterTitle { - get { - return ResourceManager.GetString("ConverterTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Converter Type:. - /// - public static string ConverterTypeText { - get { - return ResourceManager.GetString("ConverterTypeText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Copy "Answer". - /// - public static string CopyAnswerMenuItem { - get { - return ResourceManager.GetString("CopyAnswerMenuItem", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Copy. - /// - public static string CopyButtonHeader { - get { - return ResourceManager.GetString("CopyButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Copy "Expression". - /// - public static string CopyExpressionMenuItem { - get { - return ResourceManager.GetString("CopyExpressionMenuItem", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Copy the selected text. - /// - public static string CopyScreenTipText { - get { - return ResourceManager.GetString("CopyScreenTipText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Copy (Ctrl+C). - /// - public static string CopyScreenTipTitle { - get { - return ResourceManager.GetString("CopyScreenTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cosecant of a number. Example: csc(90) or cosec(90). - /// - public static string CosecantToolTip { - get { - return ResourceManager.GetString("CosecantToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Hyperbolic cosine of "x". Example: cosh(90) or ch(90). - /// - public static string CoshToolTip { - get { - return ResourceManager.GetString("CoshToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cosine of a number. Example: cos(90). - /// - public static string CosineToolTip { - get { - return ResourceManager.GetString("CosineToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cotangent of a number. Example: cot(90) or ctg(90). - /// - public static string CotangentToolTip { - get { - return ResourceManager.GetString("CotangentToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Hyperbolic cotangent of "x". Example: coth(90) or cth(90). - /// - public static string CothToolTip { - get { - return ResourceManager.GetString("CothToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The Count function. Example: count(1, 2, 3).. - /// - public static string CountToolTip { - get { - return ResourceManager.GetString("CountToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Hyperbolic cosecant of "x". Example: csch(90). - /// - public static string CschToolTip { - get { - return ResourceManager.GetString("CschToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cut. - /// - public static string CutButtonHeader { - get { - return ResourceManager.GetString("CutButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cut the selected text. - /// - public static string CutScreenTipText { - get { - return ResourceManager.GetString("CutScreenTipText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cut (Ctrl+X). - /// - public static string CutScreenTipTitle { - get { - return ResourceManager.GetString("CutScreenTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Assigns the value to specified variable or creates an user-function. Example: x := 1, f(x) := sin(x). - /// - public static string DefToolTip { - get { - return ResourceManager.GetString("DefToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Delete. - /// - public static string DeleteExpButtonHeader { - get { - return ResourceManager.GetString("DeleteExpButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Delete the selected expression. - /// - public static string DeleteExpScreenTipText { - get { - return ResourceManager.GetString("DeleteExpScreenTipText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Delete (Del). - /// - public static string DeleteExpScreenTipTitle { - get { - return ResourceManager.GetString("DeleteExpScreenTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Delete. - /// - public static string DeleteMenuItem { - get { - return ResourceManager.GetString("DeleteMenuItem", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Determinant of a matrix. Example: det({{1, 3}, {9, 4}}). - /// - public static string DetToolTip { - get { - return ResourceManager.GetString("DetToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The "/=" operator. Example: x /= 2.. - /// - public static string DivAssignToolTip { - get { - return ResourceManager.GetString("DivAssignToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Documentation:. - /// - public static string DocumentationTextBox { - get { - return ResourceManager.GetString("DocumentationTextBox", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Logical Equality. Example: true <=> false.. - /// - public static string EqualityToolTip { - get { - return ResourceManager.GetString("EqualityToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The equality operator. Example: x == 10.. - /// - public static string EqualToolTip { - get { - return ResourceManager.GetString("EqualToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Error. - /// - public static string ErrorHeader { - get { - return ResourceManager.GetString("ErrorHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Exit. - /// - public static string ExitMenu { - get { - return ResourceManager.GetString("ExitMenu", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Closes the application.. - /// - public static string ExitToolTip { - get { - return ResourceManager.GetString("ExitToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Exit (Alt+F4). - /// - public static string ExitToolTipTitle { - get { - return ResourceManager.GetString("ExitToolTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Expression List. - /// - public static string ExpListGroupHeader { - get { - return ResourceManager.GetString("ExpListGroupHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Exponential. - /// - public static string ExponentialFormatButtonHeader { - get { - return ResourceManager.GetString("ExponentialFormatButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Expressions:. - /// - public static string ExpressionsTextBox { - get { - return ResourceManager.GetString("ExpressionsTextBox", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Expression:. - /// - public static string ExpressionTextBox { - get { - return ResourceManager.GetString("ExpressionTextBox", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Factorial. Example: fact(4) or 4!. - /// - public static string FactToolTip { - get { - return ResourceManager.GetString("FactToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to File. - /// - public static string FileMenu { - get { - return ResourceManager.GetString("FileMenu", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Returns the largest integer less than or equal to the specified number. Example: floor(5.55555).. - /// - public static string FloorToolTip { - get { - return ResourceManager.GetString("FloorToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The For loop. Example: for(z := z + 1, x := 0, x < 10, x := x + 1).. - /// - public static string ForToolTip { - get { - return ResourceManager.GetString("ForToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to From:. - /// - public static string FromText { - get { - return ResourceManager.GetString("FromText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Name. - /// - public static string FuncNameHeader { - get { - return ResourceManager.GetString("FuncNameHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Shows the window with all entered functions.. - /// - public static string FuncScreenTitText { - get { - return ResourceManager.GetString("FuncScreenTitText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Functions (Ctrl+Alt+F). - /// - public static string FuncScreenTitTitle { - get { - return ResourceManager.GetString("FuncScreenTitTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Functions. - /// - public static string FunctionButtonHeader { - get { - return ResourceManager.GetString("FunctionButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Functions. - /// - public static string FunctionsTitle { - get { - return ResourceManager.GetString("FunctionsTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Value. - /// - public static string FuncValueHeader { - get { - return ResourceManager.GetString("FuncValueHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Greatest common divisor. Example: gcd(2, 4). - /// - public static string GCDToolTip { - get { - return ResourceManager.GetString("GCDToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Charts. - /// - public static string GraphsTab { - get { - return ResourceManager.GetString("GraphsTab", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The "greater than or equal" operator. Example: x >= 10.. - /// - public static string GreaterOrEqualToolTip { - get { - return ResourceManager.GetString("GreaterOrEqualToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The "greater than" operator. Example: x > 10.. - /// - public static string GreaterThanToolTip { - get { - return ResourceManager.GetString("GreaterThanToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Home Page:. - /// - public static string HomePageTextBox { - get { - return ResourceManager.GetString("HomePageTextBox", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Home. - /// - public static string HomeRibbonTabHeader { - get { - return ResourceManager.GetString("HomeRibbonTabHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Hyperbolic. - /// - public static string HyperbolicExpanderHeader { - get { - return ResourceManager.GetString("HyperbolicExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The If condition. Example: if(x < 2, sin(x), cos(x)).. - /// - public static string IfToolTip { - get { - return ResourceManager.GetString("IfToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Logical Implication. Example: true => false.. - /// - public static string ImplicationToolTip { - get { - return ResourceManager.GetString("ImplicationToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Returns imaginary part of complex number. Example: im(3+2i).. - /// - public static string ImToolTip { - get { - return ResourceManager.GetString("ImToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Perhaps, variables have entered incorrectly.. - /// - public static string IndexOutOfRangeExceptionError { - get { - return ResourceManager.GetString("IndexOutOfRangeExceptionError", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inverse a matrix. Example: inverse({{1, 3}, {9, 4}}). - /// - public static string InverseToolTip { - get { - return ResourceManager.GetString("InverseToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Least common multiple. Example: lcm(2, 4). - /// - public static string LCMToolTip { - get { - return ResourceManager.GetString("LCMToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The "less than or equal" operator. Example: x <= 10.. - /// - public static string LessOrEqualToolTip { - get { - return ResourceManager.GetString("LessOrEqualToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The "less than" operator. Example: x < 10.. - /// - public static string LessThanToolTip { - get { - return ResourceManager.GetString("LessThanToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Logarithm to base 10 of "x". Example: lg(3). - /// - public static string LgToolTip { - get { - return ResourceManager.GetString("LgToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Natural logarithm of "x". Example: ln(10). - /// - public static string LnToolTip { - get { - return ResourceManager.GetString("LnToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Logarigthm to base "y" of "x". Example: log(2, 4). - /// - public static string LogToolTip { - get { - return ResourceManager.GetString("LogToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Expressions. - /// - public static string MathTab { - get { - return ResourceManager.GetString("MathTab", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Matrix. - /// - public static string MatrixExpanderHeader { - get { - return ResourceManager.GetString("MatrixExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The Max function. Example: max(1, 2, 3).. - /// - public static string MaxToolTip { - get { - return ResourceManager.GetString("MaxToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The Min function. Example: min(1, 2, 3).. - /// - public static string MinToolTip { - get { - return ResourceManager.GetString("MinToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The modulo operator. Example: 7 % 2, 7 mod 2.. - /// - public static string ModuleToolTip { - get { - return ResourceManager.GetString("ModuleToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The "*=" operator. Example: x *= 2.. - /// - public static string MulAssignToolTip { - get { - return ResourceManager.GetString("MulAssignToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Logical NAnd. Example: true nand false.. - /// - public static string NAndToolTip { - get { - return ResourceManager.GetString("NAndToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to New. - /// - public static string NewMenu { - get { - return ResourceManager.GetString("NewMenu", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Normal. - /// - public static string NormalFormatButtonHeader { - get { - return ResourceManager.GetString("NormalFormatButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Logical NOr. Example: true nor false.. - /// - public static string NOrToolTip { - get { - return ResourceManager.GetString("NOrToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The inequality operator. Example: x != 10.. - /// - public static string NotEqualToolTip { - get { - return ResourceManager.GetString("NotEqualToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This operation is not supported.. - /// - public static string NotSupportedOperationError { - get { - return ResourceManager.GetString("NotSupportedOperationError", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bitwise NOT operation. Example: not(3). - /// - public static string NotToolTip { - get { - return ResourceManager.GetString("NotToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to nth root of "x". Example: root(27, 3). - /// - public static string NthRootToolTip { - get { - return ResourceManager.GetString("NthRootToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Numbers & Arithmetic. - /// - public static string NumberAndArithmeticExpanderHeader { - get { - return ResourceManager.GetString("NumberAndArithmeticExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Open. - /// - public static string OpenMenu { - get { - return ResourceManager.GetString("OpenMenu", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bitwise OR operation. Example: x or y, x | y. - /// - public static string OrToolTip { - get { - return ResourceManager.GetString("OrToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Output Format. - /// - public static string OutputFormatGroupHeader { - get { - return ResourceManager.GetString("OutputFormatGroupHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Paste. - /// - public static string PasteButtonHeader { - get { - return ResourceManager.GetString("PasteButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Paste text from clipboard. - /// - public static string PasteScreenTipText { - get { - return ResourceManager.GetString("PasteScreenTipText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Paste (Ctrl+V). - /// - public static string PasteScreenTipTitle { - get { - return ResourceManager.GetString("PasteScreenTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The Phase function. Example: phase(3+2i).. - /// - public static string PhaseToolTip { - get { - return ResourceManager.GetString("PhaseToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to "x" raised to the power of 2. Example: 7^2. - /// - public static string PowerOfTwoToolTip { - get { - return ResourceManager.GetString("PowerOfTwoToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to "x" raised to the power of "y". Example: 7^4. - /// - public static string PowerOfYToolTip { - get { - return ResourceManager.GetString("PowerOfYToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Product. Example: product(x, y, z).. - /// - public static string ProductToolTip { - get { - return ResourceManager.GetString("ProductToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Programming. - /// - public static string ProgExpanderHeader { - get { - return ResourceManager.GetString("ProgExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The Reciprocal function. Example: reciprocal(3+2i).. - /// - public static string ReciprocalToolTip { - get { - return ResourceManager.GetString("ReciprocalToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Redo. - /// - public static string RedoButtonHeader { - get { - return ResourceManager.GetString("RedoButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Redo the last change. - /// - public static string RedoScreenTipText { - get { - return ResourceManager.GetString("RedoScreenTipText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Redo (Ctrl+Y). - /// - public static string RedoScreenTipTitle { - get { - return ResourceManager.GetString("RedoScreenTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Returns real part of complex number. Example: re(3+2i).. - /// - public static string ReToolTip { - get { - return ResourceManager.GetString("ReToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Rounds a value to the nearest integer or to the specified number of fractional digits. Example: round(number, digits).. - /// - public static string RoundToolTip { - get { - return ResourceManager.GetString("RoundToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Save As. - /// - public static string SaveAsMenu { - get { - return ResourceManager.GetString("SaveAsMenu", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Save. - /// - public static string SaveMenu { - get { - return ResourceManager.GetString("SaveMenu", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Secant of a number. Example: sec(90). - /// - public static string SecantToolTip { - get { - return ResourceManager.GetString("SecantToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Hyperbolic secant of "x". Example: sech(90). - /// - public static string SechToolTip { - get { - return ResourceManager.GetString("SechToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Automatic. - /// - public static string SettingsAutoLang { - get { - return ResourceManager.GetString("SettingsAutoLang", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cancel. - /// - public static string SettingsCancel { - get { - return ResourceManager.GetString("SettingsCancel", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Default chart color:. - /// - public static string SettingsDefaultChartColor { - get { - return ResourceManager.GetString("SettingsDefaultChartColor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Language*:. - /// - public static string SettingsLanguageLabel { - get { - return ResourceManager.GetString("SettingsLanguageLabel", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The language will be set after program restart.. - /// - public static string SettingsLanguageToolTip { - get { - return ResourceManager.GetString("SettingsLanguageToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Maximum number of expressions:. - /// - public static string SettingsMaxNumber { - get { - return ResourceManager.GetString("SettingsMaxNumber", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Settings. - /// - public static string SettingsMenu { - get { - return ResourceManager.GetString("SettingsMenu", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Remember output format. - /// - public static string SettingsRemember { - get { - return ResourceManager.GetString("SettingsRemember", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Reset. - /// - public static string SettingsReset { - get { - return ResourceManager.GetString("SettingsReset", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Remember right _tool bar state.. - /// - public static string SettingsRightToolBar { - get { - return ResourceManager.GetString("SettingsRightToolBar", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Save. - /// - public static string SettingsSave { - get { - return ResourceManager.GetString("SettingsSave", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Save the dump file after crash.. - /// - public static string SettingsSaveDump { - get { - return ResourceManager.GetString("SettingsSaveDump", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Save user functions.. - /// - public static string SettingsSaveUF { - get { - return ResourceManager.GetString("SettingsSaveUF", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Shows settings of program.. - /// - public static string SettingsToolTip { - get { - return ResourceManager.GetString("SettingsToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Settings (Alt+S). - /// - public static string SettingsToolTipTitle { - get { - return ResourceManager.GetString("SettingsToolTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Settings. - /// - public static string SettingsViewTitle { - get { - return ResourceManager.GetString("SettingsViewTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Remember window state and _position.. - /// - public static string SettingsWindowPos { - get { - return ResourceManager.GetString("SettingsWindowPos", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Show Grid. - /// - public static string ShowGridCheckBox { - get { - return ResourceManager.GetString("ShowGridCheckBox", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Simplifies the specified expression. Example: simplify(arcsin(sin(x))). - /// - public static string SimplifyToolTip { - get { - return ResourceManager.GetString("SimplifyToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Sine of a number. Example: sin(90). - /// - public static string SineToolTip { - get { - return ResourceManager.GetString("SineToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Hyperbolic sine of "x". Example: sinh(90) or sh(90). - /// - public static string SinhToolTip { - get { - return ResourceManager.GetString("SinhToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Square root of "x". Example: sqrt(9). - /// - public static string SquareRootToolTip { - get { - return ResourceManager.GetString("SquareRootToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Standart. - /// - public static string StandartExpanderHeader { - get { - return ResourceManager.GetString("StandartExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Statistical. - /// - public static string StatisticalExpanderHeader { - get { - return ResourceManager.GetString("StatisticalExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The STDEVP function. Example: stdevp(1, 2, 3).. - /// - public static string StdevpToolTip { - get { - return ResourceManager.GetString("StdevpToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The STDEV function. Example: stdev(1, 2, 3).. - /// - public static string StdevToolTip { - get { - return ResourceManager.GetString("StdevToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The "-=" operator. Example: x -= 2.. - /// - public static string SubAssignToolTip { - get { - return ResourceManager.GetString("SubAssignToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Summation. Example: sum(x, y, z).. - /// - public static string SumToolTip { - get { - return ResourceManager.GetString("SumToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tangent of a number. Example: tan(90) or tg(90). - /// - public static string TangentToolTip { - get { - return ResourceManager.GetString("TangentToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Hyperbolic tangent of "x". Example: tanh(90) or th(90). - /// - public static string TanhToolTip { - get { - return ResourceManager.GetString("TanhToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to To Clipboard. - /// - public static string ToClipboardMenuItem { - get { - return ResourceManager.GetString("ToClipboardMenuItem", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to To Input. - /// - public static string ToInputMenuItem { - get { - return ResourceManager.GetString("ToInputMenuItem", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tools. - /// - public static string ToolsGroupHeader { - get { - return ResourceManager.GetString("ToolsGroupHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to To:. - /// - public static string ToText { - get { - return ResourceManager.GetString("ToText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Transpose a matrix. Example: transpose({{1, 3}, {9, 4}}). - /// - public static string TransposeToolTip { - get { - return ResourceManager.GetString("TransposeToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Trigonometric. - /// - public static string TrigonometricExpanderHeader { - get { - return ResourceManager.GetString("TrigonometricExpanderHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Truth Table. - /// - public static string TruthTableTab { - get { - return ResourceManager.GetString("TruthTableTab", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The '{0}' function is removed.. - /// - public static string UndefineFunction { - get { - return ResourceManager.GetString("UndefineFunction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The '{0}' variable is removed.. - /// - public static string UndefineVariable { - get { - return ResourceManager.GetString("UndefineVariable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Removes the specified variable or user-function. Example: undef(x). - /// - public static string UndefToolTip { - get { - return ResourceManager.GetString("UndefToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Undo. - /// - public static string UndoButtonHeader { - get { - return ResourceManager.GetString("UndoButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Undo the last change. - /// - public static string UndoScreenTipText { - get { - return ResourceManager.GetString("UndoScreenTipText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Undo (Ctrl+Z). - /// - public static string UndoScreenTipTitle { - get { - return ResourceManager.GetString("UndoScreenTipTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Unit:. - /// - public static string UnitsText { - get { - return ResourceManager.GetString("UnitsText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _Value:. - /// - public static string ValueText { - get { - return ResourceManager.GetString("ValueText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The variable not found.. - /// - public static string VariableNotFoundExceptionError { - get { - return ResourceManager.GetString("VariableNotFoundExceptionError", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Variables. - /// - public static string VariablesButtonHeader { - get { - return ResourceManager.GetString("VariablesButtonHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Variables. - /// - public static string VariablesTitle { - get { - return ResourceManager.GetString("VariablesTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Name. - /// - public static string VarNameHeader { - get { - return ResourceManager.GetString("VarNameHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The VARP function. Example: varp(1, 2, 3).. - /// - public static string VarpToolTip { - get { - return ResourceManager.GetString("VarpToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Shows the window with all entered variables.. - /// - public static string VarScreenTitText { - get { - return ResourceManager.GetString("VarScreenTitText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Variables (Ctrl+Alt+V). - /// - public static string VarScreenTitTitle { - get { - return ResourceManager.GetString("VarScreenTitTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The VAR function. Example: var(1, 2, 3).. - /// - public static string VarToolTip { - get { - return ResourceManager.GetString("VarToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Value. - /// - public static string VarValueHeader { - get { - return ResourceManager.GetString("VarValueHeader", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Version:. - /// - public static string VersionTextBox { - get { - return ResourceManager.GetString("VersionTextBox", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The While loop. Example: while(x := x + 1, x < 10).. - /// - public static string WhileToolTip { - get { - return ResourceManager.GetString("WhileToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bitwise XOR operation. Example: x xor y. - /// - public static string XOrToolTip { - get { - return ResourceManager.GetString("XOrToolTip", resourceCulture); - } - } - } -} diff --git a/xFunc/Resources/Resource.resx b/xFunc/Resources/Resource.resx deleted file mode 100644 index c6a7bd18e..000000000 --- a/xFunc/Resources/Resource.resx +++ /dev/null @@ -1,697 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - About - - - Show the about window - - - About (F1) - - - About - - - Absolute value of "x". Example: abs(-1) - - - The "+=" operator. Example: x += 2. - - - Cancel - - - The function name is incorrect. - - - _Function: - - - _Name: - - - OK - - - Add a new function - - - Additional - - - Cancel - - - _Name: - - - OK - - - _Read-Only - - - Add a new variable - - - _Value: - - - Bitwise AND operation. Example: x and y, x & y - - - Answer: - - - Inverse cosecant of a number. Example: arccsc(90) or arccosec(90) - - - Inverse cosine of a number. Example: arccos(90) - - - Inverse cotangent of a number. Example: arccot(90) or arcctg(90) - - - Inverse hyperbolic cosine of "x". Example: arcosh(90) or arch(90) - - - Inverse hyperbolic cotangent of "x". Example: arcoth(90) or arcth(90) - - - Inverse hyperbolic cosecant of "x". Example: arcsch(90) - - - Inverse secant of a number. Example: arcsec(90) - - - Inverse sine of a number. Example: arcsin(1) - - - Inverse tangent of a number. Example: arctan(90) or arctg(90) - - - Inverse hyperbolic secant of "x". Example: arsech(90) - - - Inverse hyperbolic sine of "x". Example: arsinh(90) or arsh(90) - - - Inverse hyperbolic tangent of "x". Example: artanh(90) or arth(90) - - - The expression '{1}' was assigned to the function '{0}'. - - - The value '{1}' was assigned to the variable '{0}'. - - - Dmytro Kyshchenko - - - Author: - - - Bitwise & Logical - - - Returns the smallest integer greater than or equal to the specified number. Example: ceil(5.5555). - - - Clear - - - Delete all expressions. - - - Clear (Shift+Del) - - - Clipboard - - - cm - - - The conditional-AND operator. Example: x == 0 && y != 0. - - - The conditional-OR operator. Example: x == 0 || y != 0. - - - Constants - - - Unit Converter - - - Calculate - - - Converts data from one unit to another. - - - Unit Converter (Ctrl+Alt+C) - - - Unit Converter - - - _Converter Type: - - - Copy "Answer" - - - Copy - - - Copy "Expression" - - - Copy the selected text - - - Copy (Ctrl+C) - - - Cosecant of a number. Example: csc(90) or cosec(90) - - - Hyperbolic cosine of "x". Example: cosh(90) or ch(90) - - - Cosine of a number. Example: cos(90) - - - Cotangent of a number. Example: cot(90) or ctg(90) - - - Hyperbolic cotangent of "x". Example: coth(90) or cth(90) - - - Hyperbolic cosecant of "x". Example: csch(90) - - - Cut - - - Cut the selected text - - - Cut (Ctrl+X) - - - Assigns the value to specified variable or creates an user-function. Example: x := 1, f(x) := sin(x) - - - Delete - - - Delete the selected expression - - - Delete (Del) - - - Delete - - - Determinant of a matrix. Example: det({{1, 3}, {9, 4}}) - - - The "/=" operator. Example: x /= 2. - - - The equality operator. Example: x == 10. - - - Error - - - Exit - - - Closes the application. - - - Exit (Alt+F4) - - - Expression List - - - Expressions: - - - Expression: - - - Factorial. Example: fact(4) or 4! - - - File - - - Returns the largest integer less than or equal to the specified number. Example: floor(5.55555). - - - The For loop. Example: for(z := z + 1, x := 0, x < 10, x := x + 1). - - - From: - - - Name - - - Shows the window with all entered functions. - - - Functions (Ctrl+Alt+F) - - - Functions - - - Functions - - - Value - - - Greatest common divisor. Example: gcd(2, 4) - - - Charts - - - The "greater than or equal" operator. Example: x >= 10. - - - The "greater than" operator. Example: x > 10. - - - Home Page: - - - Home - - - Hyperbolic - - - The If condition. Example: if(x < 2, sin(x), cos(x)). - - - Perhaps, variables have entered incorrectly. - - - Inverse a matrix. Example: inverse({{1, 3}, {9, 4}}) - - - Least common multiple. Example: lcm(2, 4) - - - The "less than or equal" operator. Example: x <= 10. - - - The "less than" operator. Example: x < 10. - - - Logarithm to base 10 of "x". Example: lg(3) - - - Natural logarithm of "x". Example: ln(10) - - - Logarigthm to base "y" of "x". Example: log(2, 4) - - - Expressions - - - Matrix - - - The "*=" operator. Example: x *= 2. - - - New - - - The inequality operator. Example: x != 10. - - - This operation is not supported. - - - Bitwise NOT operation. Example: not(3) - - - nth root of "x". Example: root(27, 3) - - - Numbers & Arithmetic - - - Open - - - Bitwise OR operation. Example: x or y, x | y - - - Paste - - - Paste text from clipboard - - - Paste (Ctrl+V) - - - "x" raised to the power of 2. Example: 7^2 - - - "x" raised to the power of "y". Example: 7^4 - - - Product. Example: product(x, y, z). - - - Programming - - - Redo - - - Redo the last change - - - Redo (Ctrl+Y) - - - Rounds a value to the nearest integer or to the specified number of fractional digits. Example: round(number, digits). - - - Save As - - - Save - - - Secant of a number. Example: sec(90) - - - Hyperbolic secant of "x". Example: sech(90) - - - Automatic - - - Cancel - - - _Language*: - - - The language will be set after program restart. - - - Maximum number of expressions: - - - Settings - - - _Remember output format - - - Reset - - - Remember right _tool bar state. - - - Save - - - Save user functions. - - - Shows settings of program. - - - Settings (Alt+S) - - - Settings - - - Remember window state and _position. - - - Show Grid - - - Simplifies the specified expression. Example: simplify(arcsin(sin(x))) - - - Sine of a number. Example: sin(90) - - - Hyperbolic sine of "x". Example: sinh(90) or sh(90) - - - Square root of "x". Example: sqrt(9) - - - Standart - - - The "-=" operator. Example: x -= 2. - - - Summation. Example: sum(x, y, z). - - - Tangent of a number. Example: tan(90) or tg(90) - - - Hyperbolic tangent of "x". Example: tanh(90) or th(90) - - - To Clipboard - - - To Input - - - Tools - - - To: - - - Transpose a matrix. Example: transpose({{1, 3}, {9, 4}}) - - - Trigonometric - - - Truth Table - - - The '{0}' function is removed. - - - The '{0}' variable is removed. - - - Removes the specified variable or user-function. Example: undef(x) - - - Undo - - - Undo the last change - - - Undo (Ctrl+Z) - - - _Unit: - - - _Value: - - - The variable not found. - - - Variables - - - Variables - - - Name - - - Shows the window with all entered variables. - - - Variables (Ctrl+Alt+V) - - - Value - - - Version: - - - The While loop. Example: while(x := x + 1, x < 10). - - - Bitwise XOR operation. Example: x xor y - - - Logical Implication. Example: true => false. - - - Logical Equality. Example: true <=> false. - - - Logical NOr. Example: true nor false. - - - Logical NAnd. Example: true nand false. - - - Output Format - - - Auto - - - Normal - - - Exponential - - - Documentation: - - - Save the dump file after crash. - - - Default chart color: - - - Complex numbers - - - The Conjugate function. Example: conjugate(3+2i). - - - Returns imaginary part of complex number. Example: im(3+2i). - - - The Phase function. Example: phase(3+2i). - - - The Reciprocal function. Example: reciprocal(3+2i). - - - Returns real part of complex number. Example: re(3+2i). - - - The modulo operator. Example: 7 % 2, 7 mod 2. - - - The Avg function. Example: avg(1, 2, 3). - - - The Max function. Example: max(1, 2, 3). - - - The Min function. Example: min(1, 2, 3). - - - Statistical - - - The Count function. Example: count(1, 2, 3). - - - The VAR function. Example: var(1, 2, 3). - - - The VARP function. Example: varp(1, 2, 3). - - - The STDEV function. Example: stdev(1, 2, 3). - - - The STDEVP function. Example: stdevp(1, 2, 3). - - \ No newline at end of file diff --git a/xFunc/Resources/Resource.ru.Designer.cs b/xFunc/Resources/Resource.ru.Designer.cs deleted file mode 100644 index e69de29bb..000000000 diff --git a/xFunc/Resources/Resource.ru.resx b/xFunc/Resources/Resource.ru.resx deleted file mode 100644 index fd7188c89..000000000 --- a/xFunc/Resources/Resource.ru.resx +++ /dev/null @@ -1,697 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - О программе - - - Открыть окно "О программе" - - - О программе (F1) - - - О программе - - - Модуль "x". Пример: abs(-1) - - - Оператор "+=". Пример: x += 2. - - - Отмена - - - Имя функции является неправильным. - - - _Функция: - - - _Имя: - - - ОК - - - Добавить функцию - - - Дополнительные - - - Отмена - - - _Имя: - - - ОК - - - _Только для чтения - - - Добавить переменную - - - _Значение: - - - Побитовая операция И. Пример: x and y, x & y - - - Ответ: - - - Арккосеканс числа. Пример: arccsc(90) или arccosec(90) - - - Арккосинус числа. Пример: arccos(90) - - - Арккотангенс числа. Пример: arccot(90) или arcctg(90) - - - Обратный гиперболический косинус числа "x". Пример: arcosh(90) или arch(90) - - - Обратный гиперболический котангенс числа "x". Пример: arcoth(90) или arcth(90) - - - Обратный гиперболический косеканс числа "x". Пример: arcsch(90) - - - Арксеканс числа. Пример: arcsec(90) - - - Арксинус числа. Пример: arcsin(1) - - - Арктангенс числа. Пример: arctan(90) или arctg(90) - - - Обратный гиперболический секанс числа "x". Пример: arsech(90) - - - Обратный гиперболический синус числа "x". Пример: arsinh(90) или arsh(90) - - - Обратный гиперболический тангенс числа "x". Пример: artanh(90) или arth(90) - - - Функции '{0}' присвоено выражение '{1}'. - - - Переменной '{0}' присвоено '{1}' значение. - - - Дмитрий Кищенко - - - Разработчик: - - - Битовые и логические - - - Возвращает наименьшее целое число, которое больше или равно заданному числу. Пример: ceil(5.55555). - - - Очистить - - - Удалить все выражения из списка. - - - Очистить (Shift+Del) - - - Буфер обмена - - - см - - - Условный оператор И. Пример: x == 0 && y != 0. - - - Условный оператор ИЛИ. Пример: x == 0 || y != 0. - - - Константы - - - Конвертер величин - - - Рассчитать - - - Преобразует данные из одной единицы измерения в другую. - - - Конвертер величин (Ctrl+Alt+C) - - - Конвертер величин - - - _Тип конвертора: - - - Копировать "Ответ" - - - Копировать - - - Копировать "Выражение" - - - Скопировать выделенный текст - - - Копировать (Ctrl+C) - - - Косеканс числа. Пример: csc(90) или cosec(90) - - - Гиперболический косинус числа "x". Пример: cosh(90) или ch(90) - - - Косинус числа. Пример: cos(90) - - - Котангенс числа. Пример: cot(90) или ctg(90) - - - Гиперболический котангенс числа "x". Пример: coth(90) или cth(90) - - - Гиперболический косеканс числа "x". Пример: csch(90) - - - Вырезать - - - Вырезать выделенный текст - - - Вырезать (Ctrl+X) - - - Назначает значение переменной или пользовательской функции. Пример: x := 1, f(x) := sin(x) - - - Удалить - - - Удалить выделенное выражение - - - Удалить (Del) - - - Удалить - - - Детерминант матрицы. Пример: det({{1, 3}, {9, 4}}) - - - Оператор "/=". Пример: x /= 2. - - - Оператор равенства. Пример: x == 10. - - - Ошибка - - - Выход - - - Закрыть приложение. - - - Выход (Alt+F4) - - - Список выражений - - - Графики: - - - Выражение: - - - Факториал. Пример: fact(4) or 4! - - - Файл - - - Возвращает наибольшее целое число, которое меньше или равно указанному числу. Пример: floor(5.55555). - - - Цикл for. Пример: for(z := z + 1, x := 0, x < 10, x := x + 1). - - - Из: - - - Имя - - - Отображает окно со всеме введенными функциями. - - - Функции (Ctrl+Alt+F) - - - Функции - - - Функции - - - Значение - - - Наибольший общий делитель. Пример: gcd(2, 4) - - - Графики - - - Оператор сравнения "больше или равно". Пример: x >= 10. - - - Оператор сравнения "больше". Пример: x > 10. - - - Сайт: - - - Главная - - - Гиперболические - - - Условие if. Пример: if(x < 2, sin(x), cos(x)). - - - Возможно, переменные были введены неправильно. - - - Обратная матрица. Пример: inverse({{1, 3}, {9, 4}}) - - - Наименьшее общее кратное. Пример: lcm(2, 4) - - - Оператор сравнения "меньше или равно". Пример: x <= 10. - - - Оператор сравнения "меньше". Пример: x < 10. - - - Логарифм по основанию 10 числа "x". Пример: lg(3) - - - Натуральный логарифм числа "x". Пример: ln(10) - - - Логарифм по основанию "y" чиста "x". Пример: log(2, 4) - - - Выражения - - - Матрицы - - - Оператор "*=". Пример: x *= 2. - - - Новый - - - Оператор неравенства. Пример: x != 10. - - - Указанная операция не поддерживается. - - - Побитовая операция НЕ. Пример: not(3) - - - Корень n-ой степени от "x". Пример: root(27, 3) - - - Числа и арифметические - - - Открыть - - - Побитовая операция ИЛИ. Пример: x or y, x | y - - - Вставить - - - Вставить текст с буфера обмена - - - Вставить (Ctrl+V) - - - "x" в степени 2. Пример: 7^2 - - - "x" в степени "y". Пример: 7^4 - - - Произведение. Пример: product(x, y, z). - - - Программирование - - - Вернуть - - - Вернуть последнее изменение - - - Вернуть (Ctrl+Y) - - - Функция округления. Пример: round(number, digits). - - - Сохранить как - - - Сохранить - - - Секанс числа. Пример: sec(90) - - - Гиперболический секанс числа "x". Пример: sech(90) - - - Автоматически - - - Отмена - - - Язык*: - - - Язык будет изменен после перезапуска программы. - - - Максимальное количество выражений: - - - Настройки - - - Запоминать формат чисел - - - Сбросить настройки - - - Запоминать состояние правой панели инструментов. - - - Сохранить - - - Сохранять пользовательские функции. - - - Отображает настройки программы. - - - Настройки (Alt+S) - - - Настройки - - - Запоминать состояние окна и его позицию. - - - Показать сетку - - - Упрощает выражение. Пример: simplify(arcsin(sin(x))) - - - Синус числа. Пример: sin(90) - - - Гиперболический синус числа "x". Пример: sinh(90) или sh(90) - - - Квадратный корень от "x". Пример: sqrt(9) - - - Стандартные - - - Оператор "-=". Пример: x -= 2. - - - Сумма. Пример: sum(x, y, z). - - - Тангенс числа. Пример: tan(90) или tg(90) - - - Гиперболический тангенс числа "x". Пример: tanh(90) или th(90) - - - В буфер обмена - - - В поле для ввода - - - Инструменты - - - В: - - - Транспонировать матрицу. Пример: transpose({{1, 3}, {9, 4}}) - - - Тригонометрические - - - Таблица истинности - - - Функция '{0}' удалена. - - - Переменная '{0}' удалена. - - - Удаляет переменную или пользовательскую функцию. Пример: undef(x) - - - Отмена - - - Отменить последнее изменение - - - Отмена (Ctrl+Z) - - - _Единицы: - - - _Значение: - - - Переменная не найдена. - - - Переменные - - - Переменные - - - Имя - - - Отображает окно со всеме введенными переменными. - - - Переменные (Ctrl+Alt+V) - - - Значение - - - Версия: - - - Цикл while. Пример: while(x := x + 1, x < 10). - - - Побитовая операция Исключащее ИЛИ. Пример: x xor y - - - Эквиваленция. Пример: true <=> false. - - - Импликация. Пример: true => false. - - - Штрих Шеффера. Пример: true nand false. - - - Стрелка Пирса. Пример: true nor false. - - - Формат вывода чисел - - - Авто - - - Обычный - - - Экспоненциальный - - - Документация: - - - Сохранить дамп-файл после ошибки в программе. - - - Цвет графика по умолчанию: - - - Комплексные числа - - - Функция Conjugate. Пример: conjugate(3+2i). - - - Возвращает мнимую часть комплексного числа. Пример: im(3+2i). - - - Функция Phase. Пример: phase(3+2i). - - - Функция Reciprocal. Пример: reciprocal(3+2i). - - - Возвращает вещественную часть комплексного числа. Пример: re(3+2i). - - - Остаток от деления. Пример: 7 % 2, 7 mod 2. - - - Среднее арифметическое. Пример: avg(1, 2, 3). - - - Максимум. Пример: max(1, 2, 3). - - - Минимум. Пример: min(1, 2, 3). - - - Статистические - - - Количество аргументов. Пример: count(1, 2, 3). - - - Дисперсия случайной величины. Пример: var(1, 2, 3). - - - Дисперсия случайной величины. Пример: varp(1, 2, 3). - - - Среднеквадратическое отклонение. Пример: stdev(1, 2, 3). - - - Среднеквадратическое отклонение. Пример: stdevp(1, 2, 3). - - \ No newline at end of file diff --git a/xFunc/StylesForControls.xaml b/xFunc/StylesForControls.xaml deleted file mode 100644 index 556700efe..000000000 --- a/xFunc/StylesForControls.xaml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/xFunc/ViewModels/BaseViewModel.cs b/xFunc/ViewModels/BaseViewModel.cs deleted file mode 100644 index 793b4f421..000000000 --- a/xFunc/ViewModels/BaseViewModel.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.ComponentModel; - -namespace xFunc.ViewModels -{ - - public class BaseViewModel : INotifyPropertyChanged - { - - public event PropertyChangedEventHandler PropertyChanged; - - protected virtual void OnPropertyChanged(string propertyName) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } - - } - -} \ No newline at end of file diff --git a/xFunc/ViewModels/FunctionViewModel.cs b/xFunc/ViewModels/FunctionViewModel.cs deleted file mode 100644 index 2436f153e..000000000 --- a/xFunc/ViewModels/FunctionViewModel.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using xFunc.Maths.Expressions; - -namespace xFunc.ViewModels -{ - - public class FunctionViewModel - { - private readonly IExpression value; - - public FunctionViewModel(UserFunction function, IExpression value) - { - this.Function = function; - this.value = value; - } - - public UserFunction Function { get; } - - public string Value => value.ToString(); - - } - -} \ No newline at end of file diff --git a/xFunc/ViewModels/GraphItemViewModel.cs b/xFunc/ViewModels/GraphItemViewModel.cs deleted file mode 100644 index 721b37ee9..000000000 --- a/xFunc/ViewModels/GraphItemViewModel.cs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Windows.Media; -using xFunc.Maths.Expressions; - -namespace xFunc.ViewModels -{ - - public class GraphItemViewModel : BaseViewModel - { - - private bool isChecked; - private DrawingVisual visual; - private Color color; - - public GraphItemViewModel(IExpression exp, bool isChecked, DrawingVisual visual, Color color) - { - this.Expression = exp; - this.isChecked = isChecked; - this.visual = visual; - this.color = color; - } - - public override string ToString() - { - return Expression.ToString(); - } - - public bool IsChecked - { - get - { - return isChecked; - } - set - { - isChecked = value; - OnPropertyChanged("IsChecked"); - } - } - - public IExpression Expression { get; } - - public DrawingVisual Visual - { - get - { - return visual; - } - set - { - visual = value; - OnPropertyChanged(nameof(Visual)); - } - } - - public Color ChartColor - { - get - { - return color; - } - set - { - color = value; - OnPropertyChanged(nameof(ChartColor)); - } - } - - } - -} \ No newline at end of file diff --git a/xFunc/ViewModels/MathWorkspaceItemViewModel.cs b/xFunc/ViewModels/MathWorkspaceItemViewModel.cs deleted file mode 100644 index 9919c1a6e..000000000 --- a/xFunc/ViewModels/MathWorkspaceItemViewModel.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using xFunc.Maths.Results; -using xFunc.Presenters; - -namespace xFunc.ViewModels -{ - - public class MathWorkspaceItemViewModel - { - public MathWorkspaceItemViewModel(int index, MathWorkspaceItem item) - { - this.Index = index; - this.Item = item; - } - - public int Index { get; } - - public MathWorkspaceItem Item { get; } - - public string StringExpression => Item.StringExpression; - - public IResult Result => Item.Result; - - public string Answer => Item.Answer; - - } - -} \ No newline at end of file diff --git a/xFunc/ViewModels/TruthTableRowViewModel.cs b/xFunc/ViewModels/TruthTableRowViewModel.cs deleted file mode 100644 index ebb9b89e9..000000000 --- a/xFunc/ViewModels/TruthTableRowViewModel.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace xFunc.ViewModels -{ - - public class TruthTableRowViewModel - { - public TruthTableRowViewModel(int varsCount, int valuesCount) - { - VarsValues = new bool[varsCount]; - Values = new bool[valuesCount]; - } - - public int Index { get; set; } - - public bool[] VarsValues { get; } - - public bool[] Values { get; set; } - - public bool Result - { - get => Values[^1]; - set => Values[^1] = value; - } - - } - -} \ No newline at end of file diff --git a/xFunc/ViewModels/VariableViewModel.cs b/xFunc/ViewModels/VariableViewModel.cs deleted file mode 100644 index 60bcacded..000000000 --- a/xFunc/ViewModels/VariableViewModel.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using xFunc.Maths.Expressions.Collections; - -namespace xFunc.ViewModels -{ - - public class VariableViewModel - { - - private readonly Parameter parameter; - - public VariableViewModel(Parameter parameter) => this.parameter = parameter; - - public string Variable => parameter.Key; - - public object Value => parameter.Value.Value; - - public ParameterType Type => parameter.Type; - - } - -} \ No newline at end of file diff --git a/xFunc/Views/AboutView.xaml b/xFunc/Views/AboutView.xaml deleted file mode 100644 index eb3d6cb9b..000000000 --- a/xFunc/Views/AboutView.xaml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - https://github.com/sys27/xFunc - - - - https://github.com/sys27/xFunc/wiki - - - The MIT License (MIT) -Copyright © 2012-2021 Dmytro Kyshchenko - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - - - - - - - - - - - - - - - - - diff --git a/xFunc/Views/FunctionView.xaml.cs b/xFunc/Views/FunctionView.xaml.cs deleted file mode 100644 index 89b553989..000000000 --- a/xFunc/Views/FunctionView.xaml.cs +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Linq; -using System.Windows; -using System.Windows.Input; -using xFunc.Maths; -using xFunc.Maths.Analyzers.TypeAnalyzers; -using xFunc.Maths.Expressions; -using xFunc.Maths.Expressions.Collections; -using xFunc.Resources; -using xFunc.ViewModels; - -namespace xFunc.Views -{ - - public partial class FunctionView : Window - { - - private Processor processor; - - #region Commands - - public static RoutedCommand AddCommand = new RoutedCommand(); - public static RoutedCommand EditCommand = new RoutedCommand(); - public static RoutedCommand DeleteCommand = new RoutedCommand(); - public static RoutedCommand RefreshCommand = new RoutedCommand(); - - #endregion - - public FunctionView(Processor processor) - { - this.processor = processor; - this.processor.Parameters.Functions.CollectionChanged += (o, args) => RefreshList(); - - RefreshList(); - - this.SourceInitialized += (o, args) => this.HideMinimizeAndMaximizeButtons(); - - InitializeComponent(); - } - - private void RefreshList() - { - this.DataContext = processor.Parameters.Functions.Select(f => new FunctionViewModel(f.Key, f.Value)); - } - - #region Commands - - private void AddCommand_Executed(object o, ExecutedRoutedEventArgs args) - { - var view = new AddFunctionView - { - Owner = this - }; - if (view.ShowDialog() == true) - { - try - { - if (!(processor.Parse(view.FunctionName) is UserFunction userFunc)) - { - MessageBox.Show(this, Resource.AddFuncError, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - - return; - } - - var func = processor.Parse(view.Function); - - processor.Parameters.Functions.Add(userFunc, func); - - RefreshList(); - } - catch (TokenizeException mle) - { - MessageBox.Show(this, mle.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ParseException mpe) - { - MessageBox.Show(this, mpe.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ParameterIsReadOnlyException mpiroe) - { - MessageBox.Show(this, mpiroe.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (BinaryParameterTypeMismatchException bptme) - { - MessageBox.Show(this, bptme.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (DifferentParameterTypeMismatchException dptme) - { - MessageBox.Show(this, dptme.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ParameterTypeMismatchException ptme) - { - MessageBox.Show(this, ptme.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ArgumentNullException ane) - { - MessageBox.Show(this, ane.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ArgumentException ae) - { - MessageBox.Show(this, ae.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - } - } - - private void EditCommand_Executed(object o, ExecutedRoutedEventArgs args) - { - var selectedItem = funcList.SelectedItem as FunctionViewModel; - - var view = new AddFunctionView(selectedItem) - { - Owner = this - }; - if (view.ShowDialog() == true) - { - try - { - var userFunc = ((FunctionViewModel)funcList.SelectedItem).Function; - var func = processor.Parse(view.Function); - - processor.Parameters.Functions[userFunc] = func; - - RefreshList(); - } - catch (TokenizeException mle) - { - MessageBox.Show(this, mle.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ParseException mpe) - { - MessageBox.Show(this, mpe.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ParameterIsReadOnlyException mpiroe) - { - MessageBox.Show(this, mpiroe.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ParameterTypeMismatchException ptme) - { - MessageBox.Show(this, ptme.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ArgumentNullException ane) - { - MessageBox.Show(this, ane.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - catch (ArgumentException ae) - { - MessageBox.Show(this, ae.Message, Resource.ErrorHeader, MessageBoxButton.OK, MessageBoxImage.Warning); - } - } - } - - private void DeleteCommand_Executed(object o, ExecutedRoutedEventArgs args) - { - var selectedItem = funcList.SelectedItem as FunctionViewModel; - processor.Parameters.Functions.Remove(selectedItem.Function); - - RefreshList(); - } - - private void RefreshCommand_Executed(object o, ExecutedRoutedEventArgs args) - { - RefreshList(); - } - - private void SelectedCommand_CanExecute(object o, CanExecuteRoutedEventArgs args) - { - args.CanExecute = funcList.SelectedItem != null; - } - - #endregion - - } - -} \ No newline at end of file diff --git a/xFunc/Views/GraphsControl.xaml b/xFunc/Views/GraphsControl.xaml deleted file mode 100644 index a05c228ef..000000000 --- a/xFunc/Views/GraphsControl.xaml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xFunc/Views/GraphsControl.xaml.cs b/xFunc/Views/GraphsControl.xaml.cs deleted file mode 100644 index eeb8735ae..000000000 --- a/xFunc/Views/GraphsControl.xaml.cs +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Input; -using xFunc.Maths; -using xFunc.Presenters; -using xFunc.Resources; -using xFunc.ViewModels; - -namespace xFunc.Views -{ - - public partial class GraphsControl : UserControl, IGraphsView - { - - public static readonly DependencyProperty StatusProperty = DependencyProperty.Register(nameof(Status), typeof(string), typeof(GraphsControl)); - - public GraphsControl() - { - InitializeComponent(); - } - - public GraphsControl(GraphsPresenter presenter) - { - this.Presenter = presenter; - - InitializeComponent(); - } - - private void graphExpBox_KeyUp(object o, KeyEventArgs args) - { - if (args.Key == Key.Enter && !string.IsNullOrWhiteSpace(graphExpressionBox.Text)) - { - try - { - Presenter.Add(graphExpressionBox.Text); - Status = string.Empty; - } - catch (TokenizeException mle) - { - Status = mle.Message; - } - catch (ParseException mpe) - { - Status = mpe.Message; - } - catch (DivideByZeroException dbze) - { - Status = dbze.Message; - } - catch (ArgumentNullException ane) - { - Status = ane.Message; - } - catch (ArgumentException ae) - { - Status = ae.Message; - } - catch (FormatException fe) - { - Status = fe.Message; - } - catch (OverflowException oe) - { - Status = oe.Message; - } - catch (KeyNotFoundException) - { - Presenter.Remove(Presenter.CountOfGraphs - 1); - - Status = Resource.VariableNotFoundExceptionError; - } - catch (IndexOutOfRangeException) - { - Status = Resource.IndexOutOfRangeExceptionError; - } - catch (InvalidOperationException ioe) - { - Status = ioe.Message; - } - catch (NotSupportedException) - { - Presenter.Remove(Presenter.CountOfGraphs - 1); - - Status = Resource.NotSupportedOperationError; - } - - graphExpressionBox.Text = string.Empty; - } - } - - private void graphsList_SelectionChanged(object o, SelectionChangedEventArgs args) - { - plot.Expression = graphsList.SelectedIndex >= 0 ? graphsList.Items.Cast() : null; - } - - private void graphItem_Toggle(object o, RoutedEventArgs args) - { - plot.ReRender(); - } - - private void removeGraph_Click(object o, RoutedEventArgs args) - { - var item = ((Button)o).Tag as GraphItemViewModel; - - Presenter.Remove(item); - } - - public string Status - { - get => (string)GetValue(StatusProperty); - set => SetValue(StatusProperty, value); - } - - public GraphsPresenter Presenter { get; set; } - - public IEnumerable Graphs - { - set - { - graphsList.SelectedIndex = -1; - graphsList.ItemsSource = value; - graphsList.SelectedIndex = value.Count() - 1; - } - } - - } - -} \ No newline at end of file diff --git a/xFunc/Views/IGraphsView.cs b/xFunc/Views/IGraphsView.cs deleted file mode 100644 index 0c3046fcf..000000000 --- a/xFunc/Views/IGraphsView.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using xFunc.ViewModels; - -namespace xFunc.Views -{ - - public interface IGraphsView - { - - IEnumerable Graphs { set; } - - } - -} \ No newline at end of file diff --git a/xFunc/Views/IMathView.cs b/xFunc/Views/IMathView.cs deleted file mode 100644 index 2de31e713..000000000 --- a/xFunc/Views/IMathView.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using xFunc.ViewModels; - -namespace xFunc.Views -{ - - public interface IMathView : IView - { - - IEnumerable MathExpressions { set; } - - } - -} \ No newline at end of file diff --git a/xFunc/Views/IView.cs b/xFunc/Views/IView.cs deleted file mode 100644 index f6051bf0e..000000000 --- a/xFunc/Views/IView.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace xFunc.Views -{ - - public interface IView - { - - } - -} \ No newline at end of file diff --git a/xFunc/Views/MainView.xaml b/xFunc/Views/MainView.xaml deleted file mode 100644 index 4406308f5..000000000 --- a/xFunc/Views/MainView.xaml +++ /dev/null @@ -1,1163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Auto - - - - - - - Normal - - - - - - - Exp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xFunc/Views/TruthTableControl.xaml.cs b/xFunc/Views/TruthTableControl.xaml.cs deleted file mode 100644 index f88c99a29..000000000 --- a/xFunc/Views/TruthTableControl.xaml.cs +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Input; -using xFunc.Maths; -using xFunc.Maths.Analyzers.TypeAnalyzers; -using xFunc.Maths.Expressions; -using xFunc.Maths.Expressions.Collections; -using xFunc.Presenters; -using xFunc.Resources; - -namespace xFunc.Views -{ - - public partial class TruthTableControl : UserControl - { - - public static readonly DependencyProperty StatusProperty = DependencyProperty.Register(nameof(Status), typeof(string), typeof(TruthTableControl)); - - public TruthTableControl() - { - InitializeComponent(); - } - - public TruthTableControl(TruthTablePresenter presenter) - { - Presenter = presenter; - - InitializeComponent(); - } - - private void GenerateTruthTable(IEnumerable exps, ParameterCollection parameters) - { - truthTableGridView.Columns.Clear(); - - truthTableGridView.Columns.Add(new GridViewColumn - { - Header = "#", - DisplayMemberBinding = new Binding("Index") - }); - for (int i = 0; i < parameters.Count(); i++) - { - truthTableGridView.Columns.Add(new GridViewColumn - { - Header = parameters.ElementAt(i).Key, - DisplayMemberBinding = new Binding($"VarsValues[{i}]") - }); - } - for (int i = 0; i < exps.Count() - 1; i++) - { - truthTableGridView.Columns.Add(new GridViewColumn - { - Header = exps.ElementAt(i), - DisplayMemberBinding = new Binding($"Values[{i}]") - }); - } - if (exps.Count() != 0) - truthTableGridView.Columns.Add(new GridViewColumn - { - Header = exps.ElementAt(exps.Count() - 1), - DisplayMemberBinding = new Binding("Result") - }); - } - - private void truthTableExpressionBox_KeyUp(object o, KeyEventArgs args) - { - if (args.Key == Key.Enter && !string.IsNullOrWhiteSpace(truthTableExpressionBox.Text)) - { - try - { - Presenter.Generate(truthTableExpressionBox.Text); - GenerateTruthTable(Presenter.Expressions, Presenter.Parameters); - truthTableList.ItemsSource = Presenter.Table; - - Status = string.Empty; - } - catch (TokenizeException le) - { - Status = le.Message; - } - catch (ParseException pe) - { - Status = pe.Message; - } - catch (DivideByZeroException dbze) - { - Status = dbze.Message; - } - catch (ArgumentNullException ane) - { - Status = ane.Message; - } - catch (ArgumentException ae) - { - Status = ae.Message; - } - catch (FormatException fe) - { - Status = fe.Message; - } - catch (OverflowException oe) - { - Status = oe.Message; - } - catch (KeyNotFoundException) - { - Status = Resource.VariableNotFoundExceptionError; - } - catch (IndexOutOfRangeException) - { - Status = Resource.IndexOutOfRangeExceptionError; - } - catch (InvalidOperationException ioe) - { - Status = ioe.Message; - } - catch (ResultIsNotSupportedException rinse) - { - Status = rinse.Message; - } - catch (BinaryParameterTypeMismatchException bptme) - { - Status = bptme.Message; - } - catch (DifferentParameterTypeMismatchException dptme) - { - Status = dptme.Message; - } - catch (ParameterTypeMismatchException ptme) - { - Status = ptme.Message; - } - catch (NotSupportedException) - { - Status = Resource.NotSupportedOperationError; - } - } - } - - public string Status - { - get => (string)GetValue(StatusProperty); - set => SetValue(StatusProperty, value); - } - - public TruthTablePresenter Presenter { get; set; } - - } - -} \ No newline at end of file diff --git a/xFunc/Views/VariableView.xaml b/xFunc/Views/VariableView.xaml deleted file mode 100644 index ce88ae2ac..000000000 --- a/xFunc/Views/VariableView.xaml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xFunc/Views/VariableView.xaml.cs b/xFunc/Views/VariableView.xaml.cs deleted file mode 100644 index 7025fe6ec..000000000 --- a/xFunc/Views/VariableView.xaml.cs +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Linq; -using System.Windows; -using System.Windows.Data; -using System.Windows.Input; -using xFunc.Maths; -using xFunc.Maths.Expressions.Collections; -using xFunc.ViewModels; - -namespace xFunc.Views -{ - - public partial class VariableView : Window - { - - private readonly Processor processor; - - #region Commands - - public static RoutedCommand AddCommand = new RoutedCommand(); - public static RoutedCommand EditCommand = new RoutedCommand(); - public static RoutedCommand DeleteCommand = new RoutedCommand(); - public static RoutedCommand RefreshCommand = new RoutedCommand(); - - #endregion - - public VariableView(Processor processor) - { - this.processor = processor; - this.processor.Parameters.Variables.CollectionChanged += (o, args) => RefreshList(); - - RefreshList(); - - this.SourceInitialized += (o, args) => this.HideMinimizeAndMaximizeButtons(); - - InitializeComponent(); - } - - private void RefreshList() - { - this.DataContext = processor.Parameters.Variables.Select(v => new VariableViewModel(v)); - var view = (CollectionView)CollectionViewSource.GetDefaultView(this.DataContext); - view.GroupDescriptions.Add(new PropertyGroupDescription("Type")); - } - - #region Commands - - private void AddCommand_Executed(object o, ExecutedRoutedEventArgs args) - { - var view = new AddVariableView - { - Owner = this - }; - if (view.ShowDialog() == true) - { - processor.Parameters.Variables.Add(new Parameter(view.VariableName, view.Value, view.IsReadOnly ? ParameterType.ReadOnly : ParameterType.Normal)); - - RefreshList(); - } - } - - private void EditCommand_Executed(object o, ExecutedRoutedEventArgs args) - { - var item = varList.SelectedItem as VariableViewModel; - - var view = new AddVariableView(item) - { - Owner = this - }; - if (view.ShowDialog() == true) - { - var variable = processor.Parameters.Variables.First(v => v.Key == view.VariableName); - variable.Value = view.Value; - - RefreshList(); - } - } - - private void EditCommand_CanExecute(object o, CanExecuteRoutedEventArgs args) - { - var item = varList.SelectedItem as VariableViewModel; - - args.CanExecute = item != null && item.Type == ParameterType.Normal; - } - - private void DeleteCommand_Executed(object o, ExecutedRoutedEventArgs args) - { - try - { - var selectedItem = varList.SelectedItem as VariableViewModel; - processor.Parameters.Variables.Remove(selectedItem.Variable); - - RefreshList(); - } - catch (ParameterIsReadOnlyException) - { - } - } - - private void DeleteCommand_CanExecute(object o, CanExecuteRoutedEventArgs args) - { - var item = varList.SelectedItem as VariableViewModel; - - args.CanExecute = item != null && item.Type != ParameterType.Constant; - } - - private void RefreshCommand_Executed(object o, ExecutedRoutedEventArgs args) - { - RefreshList(); - } - - #endregion - - } - -} \ No newline at end of file diff --git a/xFunc/Views/WindowExtentions.cs b/xFunc/Views/WindowExtentions.cs deleted file mode 100644 index a97964f7d..000000000 --- a/xFunc/Views/WindowExtentions.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Dmytro Kyshchenko. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Runtime.InteropServices; -using System.Windows; - -namespace xFunc.Views -{ - - internal static class WindowExtensions - { - - private const int GWL_STYLE = -16; - private const int WS_MAXIMIZEBOX = 0x10000; - private const int WS_MINIMIZEBOX = 0x20000; - - [DllImport("user32.dll")] - private static extern int GetWindowLong(IntPtr hwnd, int index); - - [DllImport("user32.dll")] - private static extern int SetWindowLong(IntPtr hwnd, int index, int value); - - internal static void HideMinimizeAndMaximizeButtons(this Window window) - { - var hwnd = new System.Windows.Interop.WindowInteropHelper(window).Handle; - var currentStyle = GetWindowLong(hwnd, GWL_STYLE); - - SetWindowLong(hwnd, GWL_STYLE, (currentStyle & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX)); - } - - } - -} \ No newline at end of file diff --git a/xFunc/app.config b/xFunc/app.config deleted file mode 100644 index 5be9db0ff..000000000 --- a/xFunc/app.config +++ /dev/null @@ -1,120 +0,0 @@ - - - - -
- - - - - - 0 - - - 0 - - - 1024 - - - 576 - - - Normal - - - True - - - True - - - False - - - False - - - False - - - False - - - False - - - 0 - - - 20 - - - Auto - - - -1 - - - -1 - - - -1 - - - -1 - - - 220 - - - 280 - - - 220 - - - 280 - - - True - - - True - - - True - - - False - - - False - - - False - - - -1 - - - -1 - - - False - - - #FFFF0000 - - - False - - - False - - - - - - - diff --git a/xFunc/xFunc.UI.sln b/xFunc/xFunc.UI.sln deleted file mode 100644 index 334d36c8f..000000000 --- a/xFunc/xFunc.UI.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29806.167 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xFunc", "xFunc.csproj", "{2044D794-AB20-4699-8EE3-DEC2D83FFCD3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xFunc.Maths", "..\xFunc.Maths\xFunc.Maths.csproj", "{321AD332-2928-4192-8E86-85591D025297}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xFunc.UnitConverters", "..\xFunc.UnitConverters\xFunc.UnitConverters.csproj", "{DCFA3516-6C31-49F7-BB0E-2285A137593F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xFunc.Tests", "..\xFunc.Tests\xFunc.Tests.csproj", "{E86CBD9A-A787-4E19-A2F7-79F111BAC3B4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2044D794-AB20-4699-8EE3-DEC2D83FFCD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2044D794-AB20-4699-8EE3-DEC2D83FFCD3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2044D794-AB20-4699-8EE3-DEC2D83FFCD3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2044D794-AB20-4699-8EE3-DEC2D83FFCD3}.Release|Any CPU.Build.0 = Release|Any CPU - {321AD332-2928-4192-8E86-85591D025297}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {321AD332-2928-4192-8E86-85591D025297}.Debug|Any CPU.Build.0 = Debug|Any CPU - {321AD332-2928-4192-8E86-85591D025297}.Release|Any CPU.ActiveCfg = Release|Any CPU - {321AD332-2928-4192-8E86-85591D025297}.Release|Any CPU.Build.0 = Release|Any CPU - {DCFA3516-6C31-49F7-BB0E-2285A137593F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DCFA3516-6C31-49F7-BB0E-2285A137593F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DCFA3516-6C31-49F7-BB0E-2285A137593F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DCFA3516-6C31-49F7-BB0E-2285A137593F}.Release|Any CPU.Build.0 = Release|Any CPU - {E86CBD9A-A787-4E19-A2F7-79F111BAC3B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E86CBD9A-A787-4E19-A2F7-79F111BAC3B4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E86CBD9A-A787-4E19-A2F7-79F111BAC3B4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E86CBD9A-A787-4E19-A2F7-79F111BAC3B4}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {6559CD89-6A6A-4F60-9163-B54741ECA66E} - EndGlobalSection -EndGlobal diff --git a/xFunc/xFunc.csproj b/xFunc/xFunc.csproj deleted file mode 100644 index fe0636c44..000000000 --- a/xFunc/xFunc.csproj +++ /dev/null @@ -1,105 +0,0 @@ - - - - WinExe - netcoreapp3.1;net6.0-windows - true - 4.0.0 - 4.0.0 - 4.0.0 - en - Copyright © 2012-2021 Dmytro Kyshchenko - xFunc - xFunc - Images\xFunc.ico - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - Settings.settings - - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - - - - True - True - Resource.resx - - - True - True - Resource.ru.resx - - - - - - PublicResXFileCodeGenerator - Resource.Designer.cs - - - PublicResXFileCodeGenerator - Resource.ru.Designer.cs - - - - - - LICENSE - PreserveNewest - - - - \ No newline at end of file