/
TODO
109 lines (83 loc) · 5.64 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
##TSL
* functions, constants, TSL - names and aliases simplification, unification - make TSL API rock hard stable and solid
* Instead of making var $1 = TypeDeducer.Func(($2) => $3) from function f(x)=x; make new Function.Function(TypeDeducer.Func(($2) => $3)) //it would make possible to have string representation of user function in scripting -> plot() functions could produce better looking charts with labels corresponding to functions by string representation
* maybe we should add something like cos²(x) or cos(x)² instead of having to write (cos(x))²
* make File class official files I/O API with tutorials instead of FileWriter and FileReader, remove FileReader and FileWriter classes from API
* include in tutorials and test experimental features
##Code quality
* Setup sonarqube github integration with GitHub Authentication Plugin
* Core should not reference Charting
* Set up artifacts in Travis to have assemblies for manual testing
* Use Paket instead of Nuget? This might allow simpler builds targeting NET40 without additional projects and solutions
* Whole autocomplete / functionInfo / functions.xml area needs serious refactoring and restructuring
* modedeterminer and tslcompiler should reuse each other logic instead of reimplementing the same
* Use mark_heath tips
* migrate all controls, even the advanced ones to use MVP
* Command pattern for buttons, including EditChartMenus / or something better -> EditChartWindow is left
* use mode.error more often - use it for empty text and errors etc
* MVP is still done poorly, IViews shouldn't have nested IViews
##UI
* NumericUpDown is shit for our needs, we need invariant culture ScientificNumericUpDown with support for TSL numbers notation, engineering notation, variable increment based on current value etc
* Scientificnumericupdown is working bad with increment near small values, do we even need small values?
* Used functions history log
* Scripting: tracking user variables
* shift+r_mouse_click on item_key activates new window
* Special function search list arrangement ( or arrangement by user).
* Cancel doesn't work to second option in benchmark if first option was already canceled and second started later
* Windows Ribbon control?
* Metro Modern UI - Metro Framework (https://www.nuget.org/packages/MetroModernUI/ https://github.com/dennismagno/metroframework-modern-ui) or Material Design? ( or https://github.com/IgnaceMaes/MaterialSkin)
* use some good controls like Navigator from Krypton Toolkit https://github.com/ComponentFactory/Krypton (Navigator can be used for TabControl, CheckedListBox for choosing what Functions to load (eg SpecialFunctions etc), DOcking for Console output / solution explorer etc, Workspace for CodeEditors, KryptonColorButton for ChartEdit picking colors)
* useful controls: https://github.com/AdamsLair/winforms https://www.nuget.org/packages/OpenTK.GLControl https://github.com/nathanchere/FerretLib.WinForms http://ascendnet.codeplex.com https://github.com/AdamsLair/winforms
##Math
* make it possible to create distribution like normal from array of elements and from mean stdev and make functions from elements like CDF(elements,x)
* Matrix division
* rest of special functions
* matrix more operations
* numerical calculations for f(z) and f(x,y) functions too
* add functions from gsl_diff.h, gsl_deriv.h, rk methods etc
* add stefanson method for function root roots/steffenson.c and qk61 method from integration
* add numerical methods for solving ordinary differential equations (ODEs) (ode-initval/gsl_odeiv.h, Meta Numerics too), maybe other types of DE too
* add polynomials: operations, solving (solving general case is in GSL), evaluating
* add extreme and minima of functions
* take a look on MathNet.Numerics.Euclid
##General design
* in the long future maybe we should think about unifying Evaluation so that it returns dynamic and we perform operations in application based on real type of this, unify lambdas, total removal of mode, mode determiner etc
* Unify exceptions and logging model in whole application, refactor it
* refactor settings.save() usage and make it optimal
* refactor exception in whole project, unify them
* differ exception in expressions from those in scripting
* make descriptions and names, categories, etc for settingstypes
* add symbolic calculations (Math.NET Symbolics or maybe calling SymPy? http://stackoverflow.com/questions/6721736/c-sharp-library-for-algebra-simplification-and-solving)
##Code editors
* remember last open documents with editors, maybe with content
* if we changed a document note this with red disk and ask for save
* add search and replace windows to scripting
* add printing option to codeeditors
##Installer
* test installer and upgrade options
##Autocomplete
* search in the internet/base of knowledge about the function if we have nothing in function info
* make autocomplete resize on items
* make wrapper for autocomplete to work natively in avalonedit (if this is even possible)
* better autocomplete, also for variables after (.) dot symbol
##Functions&constants info
* Functions descriptions in functions.xml
##Charts
* enable data loading for charts
* enable better usage of transformation and charts scaling for loaded points
* enable transformations for chart2d, complexchart and chart3d
* Chart2D setting XMax<XMin error handling
##I/O
* enable data saving
##Help
* Multi-language help files.
* tutorials on youtube
* more tsl examples
* tutorials and help https://github.com/PawelTroka/Computator.NET/wiki
##Translations
* Update Deutsch and Czech translations to 2.2.0 version
##Tests
* add unit tests for testing culture invariant output
* add tests for presenters from MVP
* add tests for commands
* add evaluation integration tests