Commit Graph

903 Commits

Author SHA1 Message Date
Émilie Feral
7a4ee746b2 [escher] TextField: call reinitDraftBuffer after edition is complete to
avoid erasing text that is required later.

Fix bug: OK handling on function list in linear mode did not copy the
function expression into the textfield before editing
2019-07-30 11:47:42 +02:00
Ruben Dashyan
44809f4b3f Substitute Escher app() by Container::activeApp() 2019-07-19 15:06:25 +02:00
Ruben Dashyan
1a2a651f36 [apps] Replace app() by expressionFieldDelegateApp() in Calculation::EditExpressionController 2019-07-19 15:06:25 +02:00
Ruben Dashyan
3e992a3560 [apps] Replace app() by textFieldDelegateApp() in TextFieldDelegates 2019-07-19 15:06:25 +02:00
Ruben Dashyan
28f713e905 [apps/shared] Make App accessors const in delegates 2019-07-19 15:06:25 +02:00
Ruben Dashyan
9611133276 [apps] Factor Shared::TextFieldDelegateApp::isAcceptableText 2019-07-19 15:06:25 +02:00
Ruben Dashyan
ff887ec4a0 [apps/shared] Define static app() accessor in FunctionApp class 2019-07-19 15:06:25 +02:00
Ruben Dashyan
055d601854 [apps] Define TextFieldDelegate::textFieldDelegateApp() directly from ::app() 2019-07-19 15:06:25 +02:00
Ruben Dashyan
5058f64163 [apps] Define LayoutFieldDelegate::expressionFieldDelegateApp() directly from ::app() 2019-07-19 15:06:25 +02:00
Ruben Dashyan
0490e3ab81 [apps] Define InputEventHandlerDelegate::inputEventHandlerDelegateApp() directly from ::app() 2019-07-19 15:06:25 +02:00
Romain Goyet
45875dd642 [escher] Make app() a global function
This way it can easily be reached by anyone, including non-responders.
And it can easily be overwritten in namespaced apps.
2019-07-19 15:06:25 +02:00
Ruben Dashyan
62cec10b46 [apps] Clean unnecessary AppsContainer class declarations and header inclusions 2019-07-19 15:06:25 +02:00
Ruben Dashyan
1f06819974 [apps] Remove Container * parameter from all App constructors 2019-07-19 15:06:25 +02:00
Ruben Dashyan
d04d414315 [apps] Remove InputEventHandlerDelegateApp::container() 2019-07-19 15:06:25 +02:00
Ruben Dashyan
eb3da7f395 [apps] Substitute "app()->container()" by "AppsContainer::sharedAppsContainer()" 2019-07-19 15:06:25 +02:00
Ruben Dashyan
3546788573 [apps/shared/input_event_handler_delegate_app] Simpler (and protected) access to AppsContainer * 2019-07-19 15:06:25 +02:00
Ruben Dashyan
9a25249088 [apps/shared/store_controller] Simpler access to AppsContainer * 2019-07-19 15:06:25 +02:00
Émilie Feral
7891cf4182 [apps/shared] Fix ExpressionListController: the cell heights memoization
was corrupted
2019-07-11 10:43:59 +02:00
Émilie Feral
fb80cd3271 [apps] Object contained in the Storage might be unaligned. Make sure to
use emscripten unaligned type to avoid producing an alignment error on
emscripten platform.
2019-06-19 09:54:57 +02:00
Émilie Feral
cd688ab9cf [apps] Force packing classes of objects contained in the Storage
If these classes are padded, we lose space in the Storage and the
Storage::checksum is computed on uninitialized values (corresponding to
the padding memory spaces)
2019-06-19 09:54:57 +02:00
Émilie Feral
0b8fddf576 [solver] Reinitialize selected subcell when changing displayed layouts 2019-06-17 15:10:40 -04:00
Émilie Feral
3b25398e6e [shared] ScrollableExactApproximateExpressionsView: reloadScroll when
displayed layouts have changed
2019-06-17 15:10:40 -04:00
Émilie Feral
709a7028e8 [shared] BannerView: add an assertion to avoid deferencing nullptr 2019-06-17 10:20:25 +02:00
Léa Saviot
a886c0fb32 [apps/shared] Share PadWithSpaces method 2019-06-14 09:31:46 -04:00
Léa Saviot
f5cdf95bc5 [apps/banner_view] Replace assert with escape case 2019-05-03 15:54:22 +02:00
Léa Saviot
28133f378e [apps] Remove wrong withinTemporarySelection escape cases
Scenario:
Sequence app, add new sequence, go on its name, backspace: the cell on
the left of Add new sequence is selected, but it should not
2019-05-03 15:54:22 +02:00
Léa Saviot
a6cf1498da [apps/text_field_delegate_app] default XNT() is 'x' 2019-05-03 15:54:22 +02:00
Léa Saviot
d97d5d40f5 [apps/cartesian_function] Fix derivative name display
Scenario: f(x) = x, go to the Values tab of the Graph app, display the
derivative, there is a roblem with UTF8
2019-05-03 15:54:22 +02:00
Ruben Dashyan
e53b0e6bba [apps/shared] Clean CurveViewCursor coordinate getters 2019-05-03 15:54:22 +02:00
Ruben Dashyan
0e1c1a017d [apps] Implement TextFieldDelegate methods in GraphControllers 2019-05-03 15:54:22 +02:00
Ruben Dashyan
0f98face6a [apps] Define InteractiveCurveViewController::selectedCurveIndex 2019-05-03 15:54:22 +02:00
Ruben Dashyan
3d71397949 [apps/shared] XYBannerView contains a TextField 2019-05-03 15:54:22 +02:00
Ruben Dashyan
5ff19a2506 [apps] Define Font, Text/BackgroundColor BannerView static methods 2019-05-03 15:54:21 +02:00
Ruben Dashyan
339258a29d [apps/shared] Add LineSpacing to BannerView 2019-05-03 15:54:21 +02:00
Ruben Dashyan
26d59bbd74 [apps/shared] Simplify BannerView methods 2019-05-03 15:54:21 +02:00
Ruben Dashyan
4d640e2916 [apps] XYBannerView: prepare constructor so the class may contain TextField 2019-05-03 15:54:21 +02:00
Ruben Dashyan
ba6282be45 [apps/shared] Remove InteractiveCurveViewController::didEnterResponderChain
In order to avoid reloading after Ion::Events::Toolbox/Var, but only in
viewWillAppear.
The previous behavior was masking a bug in
Regression::GraphController::viewWillAppear where the cursor could be
moved after reloading the bannerView.
2019-05-03 15:54:21 +02:00
Ruben Dashyan
a8650f7191 [apps/shared] SimpleInteractiveCurveViewController inherits from TextFieldDelegate 2019-05-03 15:54:21 +02:00
Ruben Dashyan
7b5c891f44 [apps/shared] Clean InteractiveCurveViewController::handleEvent 2019-05-03 15:54:21 +02:00
Ruben Dashyan
94cf542ba3 [apps] Factorize InteractiveCurveViewController::moveCursorVertically 2019-05-03 15:54:21 +02:00
Ruben Dashyan
f6ceae3b8b [apps] Factorize SimpleInteractiveCurveView::moveCursorHorizontally 2019-05-03 15:54:21 +02:00
Ruben Dashyan
67f9f79322 [apps] Implement InteractiveCurveViewController::isCursorVisible
It was a pure virtual method implemented in derived classes
  Shared::FunctionGraphController,
  Regression::GraphController.
InteractiveCurveViewRange does not need anymore to hold CurveViewCursor
* m_cursor.
2019-05-03 15:54:21 +02:00
Ruben Dashyan
8629254d9a [apps] Remove Shared::InteractiveCurveViewController::displayTop/BottomMarginRatio
and replace it by the existing cursorTop/BottomMarginRatio.
There was absolutely no reason to use different margin values.
2019-05-03 15:54:21 +02:00
Ruben Dashyan
8658538938 [apps/shared] Clarify InteractiveCurveViewController::k_viewHeight constexpr 2019-05-03 15:54:21 +02:00
Ruben Dashyan
d8f97d62a4 [apps] Factorize Shared::InteractiveCurveViewController methods
cursorBottomMarginRatio(), displayBottomMarginRatio(),
estimatedBannerHeight() and k_viewHeight moved to
Shared::InteractiveCurveViewController from derived classes.

estimatedBannerNumberOfLines() moved from
Shared::FunctionGraphController to
Shared::InteractiveCurveViewController and implemented in
Regresssion::GraphController.
2019-05-03 15:54:21 +02:00
Ruben Dashyan
e32419ce63 [apps/shared/interactive_curve_view_controller] InteractiveCurveViewRangeDelegate methods made private 2019-05-03 15:54:21 +02:00
Ruben Dashyan
0b2ab14ced [apps/shared] Fix a typo in FunctionGraphController
Introduced in commit
[shared] Factorize GraphController::initCursorParameters of Graph and Sequence
2019-05-03 15:54:21 +02:00
Ruben Dashyan
e13651f6fb [apps] Remove Shared::InteractiveCurveViewController::initRangeParameters virtual method 2019-05-03 15:54:21 +02:00
Ruben Dashyan
51bd3312f5 [apps/shared] Clean FunctionGraphController::initRangeParameters()
The method is exactly called once, by
InteractiveCurveViewController::viewWillAppear, which also calls
initCursorParameters afterwards, which in turn calls
selectFunctionWithCursor. Hence the removed lines were redundant.
2019-05-03 15:54:21 +02:00
Ruben Dashyan
e7add02912 [apps] Remove FunctionGraphController::cursorView() virtual method
It was implemented by the Graph and Sequence GraphController derived
classes and was used
  1) in FunctionGraphController::viewWillAppear to set the cursorView
specific to each derived class,
  2) in FunctionGraphController::cursor/displayBottomMarginRatio()
methods.

Instead
  1) the viewWillAppear method of each derived classes sets its
cursorView itself
  2) one may already get the cursorView through curveView().
2019-05-03 15:54:21 +02:00