From f0c46adebe10baaee8ac6361e0bdbfd3ddced8ce Mon Sep 17 00:00:00 2001 From: Evann DREUMONT <53308142+LeGmask@users.noreply.github.com> Date: Sat, 13 Jun 2020 00:10:33 +0200 Subject: [PATCH] [Feature] Add root and log setting (#290) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [setting + layout] add function setting * [GitHub] GitHub Actions * [GitHub/Fix] GitHub Actions * Update config.mak * Fix setting name * Fix setting name * Fix setting name * Fix setting name * Fix setting name * Fix setting name * Fix typo error * Fix trad Co-authored-by: Quentin Guidée --- apps/settings/base.de.i18n | 4 + apps/settings/base.en.i18n | 4 + apps/settings/base.es.i18n | 4 + apps/settings/base.fr.i18n | 4 + apps/settings/base.hu.i18n | 4 + apps/settings/base.pt.i18n | 4 + apps/settings/main_controller.cpp | 5 +- apps/settings/main_controller.h | 4 +- .../sub_menu/math_options_controller.cpp | 3 + .../sub_menu/math_options_controller.h | 2 +- .../sub_menu/preferences_controller.cpp | 23 +++- escher/src/layout_field.cpp | 4 +- poincare/include/poincare/layout_cursor.h | 7 ++ poincare/include/poincare/preferences.h | 8 ++ poincare/src/layout_cursor.cpp | 107 ++++++++++++++++++ poincare/src/preferences.cpp | 1 + 16 files changed, 182 insertions(+), 6 deletions(-) diff --git a/apps/settings/base.de.i18n b/apps/settings/base.de.i18n index 1ee1bf136..85aae1a9b 100644 --- a/apps/settings/base.de.i18n +++ b/apps/settings/base.de.i18n @@ -59,6 +59,10 @@ SymbolMultiplicationCross = "Kreuz " SymbolMultiplicationMiddleDot = "Mittelpunkt " SymbolMultiplicationStar = "Stern " SymbolMultiplicationAutoSymbol = "automatisch " +SymbolFunction = "Ausdrucksformat " +SymbolDefaultFunction = "Standardl " +SymbolArgFunction = "Leer " +SymbolArgDefaultFunction = "Argument " PythonFont = "Python Schriftart" Large = "Groß " Small = "Klein " diff --git a/apps/settings/base.en.i18n b/apps/settings/base.en.i18n index 36c1ded9b..cdb86d8f0 100644 --- a/apps/settings/base.en.i18n +++ b/apps/settings/base.en.i18n @@ -59,6 +59,10 @@ SymbolMultiplicationCross = "Cross " SymbolMultiplicationMiddleDot = "Dot " SymbolMultiplicationStar = "Star " SymbolMultiplicationAutoSymbol = "Auto " +SymbolFunction = "Expression format " +SymbolDefaultFunction = "Default " +SymbolArgFunction = "Empty " +SymbolArgDefaultFunction = "Argument " PythonFont = "Python Font" Large = "Large " Small = "Small " diff --git a/apps/settings/base.es.i18n b/apps/settings/base.es.i18n index be29fdb76..5e770ab73 100644 --- a/apps/settings/base.es.i18n +++ b/apps/settings/base.es.i18n @@ -59,6 +59,10 @@ SymbolMultiplicationCross = "Contrariar " SymbolMultiplicationMiddleDot = "Punto " SymbolMultiplicationStar = "Estrella " SymbolMultiplicationAutoSymbol = "Auto " +SymbolFunction = "Formato expresión " +SymbolDefaultFunction = "Defecto " +SymbolArgFunction = "Vacío " +SymbolArgDefaultFunction = "Argumento " PythonFont = "Fuente Python" Large = "Grande " Small = "Pequeña " diff --git a/apps/settings/base.fr.i18n b/apps/settings/base.fr.i18n index 1128f40f8..9a0296681 100644 --- a/apps/settings/base.fr.i18n +++ b/apps/settings/base.fr.i18n @@ -59,6 +59,10 @@ SymbolMultiplicationCross = "Croix " SymbolMultiplicationMiddleDot = "Point " SymbolMultiplicationStar = "Etoile " SymbolMultiplicationAutoSymbol = "Automatique " +SymbolFunction = "Format expressions " +SymbolDefaultFunction = "Défaut " +SymbolArgFunction = "Vide " +SymbolArgDefaultFunction = "Arguments " PythonFont = "Police Python" Large = "Grand " Small = "Petit " diff --git a/apps/settings/base.hu.i18n b/apps/settings/base.hu.i18n index cceadc498..e900efd16 100644 --- a/apps/settings/base.hu.i18n +++ b/apps/settings/base.hu.i18n @@ -59,6 +59,10 @@ SymbolMultiplicationCross = "Kereszt" SymbolMultiplicationMiddleDot = "Pont " SymbolMultiplicationStar = "Csillag " SymbolMultiplicationAutoSymbol = "Automata " +SymbolFunction = "Kifejezési formátum " +SymbolDefaultFunction = "alapértelmezett " +SymbolArgFunction = "Üres " +SymbolArgDefaultFunction = "Argumentummal " PythonFont = "Python Betütipus" Large = "Nagy " Small = "Kicsi " diff --git a/apps/settings/base.pt.i18n b/apps/settings/base.pt.i18n index 2e78d5b63..610bc5e12 100644 --- a/apps/settings/base.pt.i18n +++ b/apps/settings/base.pt.i18n @@ -59,6 +59,10 @@ SymbolMultiplicationCross = "crómio " SymbolMultiplicationMiddleDot = "ponto médio " SymbolMultiplicationStar = "estrela " SymbolMultiplicationAutoSymbol = "automático " +SymbolFunction = "Formato expressão " +SymbolDefaultFunction = "Padrão " +SymbolArgFunction = "Vazio " +SymbolArgDefaultFunction = "Argumento " PythonFont = "Fonte Python" Large = "Ampla " Small = "Pequeno " diff --git a/apps/settings/main_controller.cpp b/apps/settings/main_controller.cpp index 816b2a841..7ba905013 100644 --- a/apps/settings/main_controller.cpp +++ b/apps/settings/main_controller.cpp @@ -14,8 +14,9 @@ constexpr SettingsMessageTree s_modelEditionModeChildren[2] = {SettingsMessageTr constexpr SettingsMessageTree s_modelFloatDisplayModeChildren[4] = {SettingsMessageTree(I18n::Message::Decimal), SettingsMessageTree(I18n::Message::Scientific), SettingsMessageTree(I18n::Message::Engineering), SettingsMessageTree(I18n::Message::SignificantFigures)}; constexpr SettingsMessageTree s_modelComplexFormatChildren[3] = {SettingsMessageTree(I18n::Message::Real), SettingsMessageTree(I18n::Message::Cartesian), SettingsMessageTree(I18n::Message::Polar)}; constexpr SettingsMessageTree s_symbolChildren[4] = {SettingsMessageTree(I18n::Message::SymbolMultiplicationCross),SettingsMessageTree(I18n::Message::SymbolMultiplicationMiddleDot),SettingsMessageTree(I18n::Message::SymbolMultiplicationStar),SettingsMessageTree(I18n::Message::SymbolMultiplicationAutoSymbol)}; -constexpr SettingsMessageTree s_modelResultDisplayChildren[2] = {SettingsMessageTree(I18n::Message::CompactResult), SettingsMessageTree(I18n::Message::DefaultResult)}; -constexpr SettingsMessageTree s_modelMathOptionsChildren[6] = {SettingsMessageTree(I18n::Message::AngleUnit, s_modelAngleChildren), SettingsMessageTree(I18n::Message::DisplayMode, s_modelFloatDisplayModeChildren), SettingsMessageTree(I18n::Message::EditionMode, s_modelEditionModeChildren), SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren), SettingsMessageTree(I18n::Message::SymbolMultiplication, s_symbolChildren), SettingsMessageTree(I18n::Message::ResultDisplay, s_modelResultDisplayChildren)}; +constexpr SettingsMessageTree s_symbolFunctionChildren[3] = {SettingsMessageTree(I18n::Message::SymbolDefaultFunction), SettingsMessageTree(I18n::Message::SymbolArgDefaultFunction), SettingsMessageTree(I18n::Message::SymbolArgFunction)}; +constexpr SettingsMessageTree s_modelResultDisplayChildren[2] = {SettingsMessageTree(I18n::Message::DefaultResult), SettingsMessageTree(I18n::Message::CompactResult)}; +constexpr SettingsMessageTree s_modelMathOptionsChildren[7] = {SettingsMessageTree(I18n::Message::AngleUnit, s_modelAngleChildren), SettingsMessageTree(I18n::Message::DisplayMode, s_modelFloatDisplayModeChildren), SettingsMessageTree(I18n::Message::EditionMode, s_modelEditionModeChildren), SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren), SettingsMessageTree(I18n::Message::SymbolMultiplication, s_symbolChildren), SettingsMessageTree(I18n::Message::ResultDisplay, s_modelResultDisplayChildren), SettingsMessageTree(I18n::Message::SymbolFunction, s_symbolFunctionChildren)}; constexpr SettingsMessageTree s_modelFontChildren[2] = {SettingsMessageTree(I18n::Message::LargeFont), SettingsMessageTree(I18n::Message::SmallFont)}; constexpr SettingsMessageTree s_accessibilityChildren[6] = {SettingsMessageTree(I18n::Message::AccessibilityInvertColors), SettingsMessageTree(I18n::Message::AccessibilityMagnify),SettingsMessageTree(I18n::Message::AccessibilityGamma),SettingsMessageTree(I18n::Message::AccessibilityGammaRed),SettingsMessageTree(I18n::Message::AccessibilityGammaGreen),SettingsMessageTree(I18n::Message::AccessibilityGammaBlue)}; constexpr SettingsMessageTree s_contributorsChildren[17] = {SettingsMessageTree(I18n::Message::Developers), SettingsMessageTree(I18n::Message::QuentinGuidee), SettingsMessageTree(I18n::Message::DannySimmons), SettingsMessageTree(I18n::Message::JoachimLeFournis), SettingsMessageTree(I18n::Message::JeanBaptisteBoric), SettingsMessageTree(I18n::Message::MaximeFriess), SettingsMessageTree(I18n::Message::David), SettingsMessageTree(I18n::Message::DamienNicolet), SettingsMessageTree(I18n::Message::EvannDreumont), SettingsMessageTree(I18n::Message::SzaboLevente), SettingsMessageTree(I18n::Message::VenceslasDuet), SettingsMessageTree(I18n::Message::CharlotteThomas), SettingsMessageTree(I18n::Message::BetaTesters), SettingsMessageTree(I18n::Message::CyprienMejat), SettingsMessageTree(I18n::Message::TimeoArnouts), SettingsMessageTree(I18n::Message::LouisC), SettingsMessageTree(I18n::Message::LelahelHideux)}; diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h index f36813dde..b10488977 100644 --- a/apps/settings/main_controller.h +++ b/apps/settings/main_controller.h @@ -18,8 +18,10 @@ extern const Shared::SettingsMessageTree s_modelEditionModeChildren[2]; extern const Shared::SettingsMessageTree s_modelFloatDisplayModeChildren[4]; extern const Shared::SettingsMessageTree s_modelComplexFormatChildren[3]; extern const Shared::SettingsMessageTree s_symbolChildren[4]; +extern const Shared::SettingsMessageTree s_symbolFunctionChildren[3]; extern const Shared::SettingsMessageTree s_modelResultDisplayChildren[2]; -extern const Shared::SettingsMessageTree s_modelMathOptionsChildren[6]; +extern const Shared::SettingsMessageTree s_symbolFunctionChildren[3]; +extern const Shared::SettingsMessageTree s_modelMathOptionsChildren[7]; extern const Shared::SettingsMessageTree s_modelFontChildren[2]; extern const Shared::SettingsMessageTree s_accessibilityChildren[6]; extern const Shared::SettingsMessageTree s_contributorsChildren[17]; diff --git a/apps/settings/sub_menu/math_options_controller.cpp b/apps/settings/sub_menu/math_options_controller.cpp index 0657f1f51..8ac4e248d 100644 --- a/apps/settings/sub_menu/math_options_controller.cpp +++ b/apps/settings/sub_menu/math_options_controller.cpp @@ -68,6 +68,9 @@ void MathOptionsController::willDisplayCellForIndex(HighlightCell * cell, int in break; case I18n::Message::ResultDisplay: childIndex = (int)preferences->resultDisplay(); + case I18n::Message::SymbolFunction: + childIndex = (int)preferences->symbolofFunction(); + break; default: break; } diff --git a/apps/settings/sub_menu/math_options_controller.h b/apps/settings/sub_menu/math_options_controller.h index b888d45b9..47a59758d 100644 --- a/apps/settings/sub_menu/math_options_controller.h +++ b/apps/settings/sub_menu/math_options_controller.h @@ -16,7 +16,7 @@ public: int reusableCellCount(int type) override; void willDisplayCellForIndex(HighlightCell * cell, int index) override; private: - constexpr static int k_totalNumberOfCell = 6; + constexpr static int k_totalNumberOfCell = 7; MessageTableCellWithChevronAndMessage m_cells[k_totalNumberOfCell]; PreferencesController m_preferencesController; DisplayModeController m_displayModeController; diff --git a/apps/settings/sub_menu/preferences_controller.cpp b/apps/settings/sub_menu/preferences_controller.cpp index 808e85048..0b0cbcc86 100644 --- a/apps/settings/sub_menu/preferences_controller.cpp +++ b/apps/settings/sub_menu/preferences_controller.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include using namespace Poincare; @@ -181,7 +182,22 @@ Layout PreferencesController::layoutForPreferences(I18n::Message message) { return CodePointLayout::Builder('*', k_layoutFont); case I18n::Message::SymbolMultiplicationAutoSymbol: return CodePointLayout::Builder(' ', k_layoutFont); - + + + // Symbol function + case I18n::Message::SymbolDefaultFunction: + { + return NthRootLayout::Builder(CodePointLayout::Builder('x')); + } + case I18n::Message::SymbolArgDefaultFunction: + { + return NthRootLayout::Builder(CodePointLayout::Builder('x'), CodePointLayout::Builder('2')); + } + case I18n::Message::SymbolArgFunction: + { + return NthRootLayout::Builder(CodePointLayout::Builder('x'), CodePointLayout::Builder('y')); + } + // Result display case I18n::Message::DefaultResult: { @@ -244,6 +260,8 @@ void PreferencesController::setPreferenceWithValueIndex(I18n::Message message, i GlobalPreferences::sharedGlobalPreferences()->setTempExamMode((GlobalPreferences::ExamMode)((uint8_t)valueIndex + 1)); } else if (message == I18n::Message::SymbolMultiplication) { preferences->setSymbolMultiplication((Preferences::SymbolMultiplication)valueIndex); + } else if (message == I18n::Message::SymbolFunction) { + preferences->setSymbolofFunction((Preferences::SymbolFunction)valueIndex); } else if (message == I18n::Message::ResultDisplay) { preferences->setResultDisplay((Preferences::ResultDisplay)valueIndex); } else if (message == I18n::Message::FontSizes) { @@ -274,6 +292,9 @@ int PreferencesController::valueIndexForPreference(I18n::Message message) const if (message == I18n::Message::SymbolMultiplication) { return (int)preferences->symbolofMultiplication(); } + if (message == I18n::Message::SymbolFunction) { + return (int)preferences->symbolofFunction(); + } if (message == I18n::Message::ResultDisplay) { return (int)preferences->resultDisplay(); } diff --git a/escher/src/layout_field.cpp b/escher/src/layout_field.cpp index 7108bc0e1..0933feaab 100644 --- a/escher/src/layout_field.cpp +++ b/escher/src/layout_field.cpp @@ -343,7 +343,9 @@ bool LayoutField::handleEventWithText(const char * text, bool indentation, bool } else if (strcmp(text, Ion::Events::Power.text()) == 0) { cursor->addEmptyPowerLayout(); } else if (strcmp(text, Ion::Events::Sqrt.text()) == 0) { - cursor->addEmptySquareRootLayout(); + m_contentView.cursor()->addRoot(); + } else if (strcmp(text, Ion::Events::Log.text()) == 0) { + m_contentView.cursor()->addLog(); } else if (strcmp(text, Ion::Events::Square.text()) == 0) { cursor->addEmptySquarePowerLayout(); } else if (strcmp(text, Ion::Events::EE.text()) == 0) { diff --git a/poincare/include/poincare/layout_cursor.h b/poincare/include/poincare/layout_cursor.h index e73b2295c..f43a142d0 100644 --- a/poincare/include/poincare/layout_cursor.h +++ b/poincare/include/poincare/layout_cursor.h @@ -109,7 +109,14 @@ public: void addEmptyExponentialLayout(); void addEmptyMatrixLayout(); void addEmptyPowerLayout(); + void addRoot(); + void addLog(); + void addEmptyLog(); + void addEmpty10Log(); + void addEmptyArgLog(); void addEmptySquareRootLayout(); + void addEmptyRootLayout(); + void addEmptyArgSquareRootLayout(); void addEmptySquarePowerLayout(); void addEmptyTenPowerLayout(); void addFractionLayoutAndCollapseSiblings(); diff --git a/poincare/include/poincare/preferences.h b/poincare/include/poincare/preferences.h index 229458252..1f766b332 100644 --- a/poincare/include/poincare/preferences.h +++ b/poincare/include/poincare/preferences.h @@ -52,6 +52,11 @@ public: Star = 2, Auto = 3 }; + enum class SymbolFunction : uint8_t { + Default = 0, + ArgDefault = 1, + Arg = 2 + }; enum class ResultDisplay : uint8_t { Compact = 0, Default = 1 @@ -76,6 +81,8 @@ public: void setColorOfLED(LEDColor color) { m_colorOfLED = color; } SymbolMultiplication symbolofMultiplication() const { return m_symbolMultiplication; } void setSymbolMultiplication(SymbolMultiplication symbolofMultiplication) { m_symbolMultiplication = symbolofMultiplication; } + SymbolFunction symbolofFunction() const { return m_symbolFunction; } + void setSymbolofFunction(SymbolFunction symbolofFunction) { m_symbolFunction = symbolofFunction; } ResultDisplay resultDisplay() const { return m_resultDisplay; } void setResultDisplay(ResultDisplay resultDisplay) { m_resultDisplay = resultDisplay; } PythonFont pythonFont() const { return m_pythonFont; } @@ -89,6 +96,7 @@ private: uint8_t m_numberOfSignificantDigits; LEDColor m_colorOfLED; SymbolMultiplication m_symbolMultiplication; + SymbolFunction m_symbolFunction; ResultDisplay m_resultDisplay; PythonFont m_pythonFont; }; diff --git a/poincare/src/layout_cursor.cpp b/poincare/src/layout_cursor.cpp index e62be6e29..21d289b38 100644 --- a/poincare/src/layout_cursor.cpp +++ b/poincare/src/layout_cursor.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -108,6 +109,90 @@ void LayoutCursor::addEmptyMatrixLayout() { m_position = Position::Right; } +void LayoutCursor::addLog() { + Preferences * preferences = Preferences::sharedPreferences(); + switch((int)preferences->symbolofFunction()){ + case 1: + addEmpty10Log(); + break; + case 2: + addEmptyArgLog(); + break; + default: + addEmptyLog(); + break; + } +} + +void LayoutCursor::addEmptyLog() { + HorizontalLayout child1 = HorizontalLayout::Builder(EmptyLayout::Builder()); + HorizontalLayout child2 = HorizontalLayout::Builder(EmptyLayout::Builder()); + Layout logLayout = LayoutHelper::String("log", 3); + HorizontalLayout resultLayout = static_cast(logLayout); + //VerticalOffsetLayout offsetLayout = VerticalOffsetLayout::Builder(child2, VerticalOffsetLayoutNode::Position::Subscript); + //resultLayout.addChildAtIndex(offsetLayout, resultLayout.numberOfChildren(), resultLayout.numberOfChildren(), nullptr); + resultLayout.addChildAtIndex(HorizontalLayout::Builder( + LeftParenthesisLayout::Builder(), + child1, + RightParenthesisLayout::Builder() + + ), resultLayout.numberOfChildren(), resultLayout.numberOfChildren(), nullptr); + + m_layout.addSibling(this, resultLayout, true); + LayoutCursor::moveLeft(nullptr, false); +} + +void LayoutCursor::addEmpty10Log() { + HorizontalLayout child1 = HorizontalLayout::Builder(EmptyLayout::Builder()); + HorizontalLayout child2 = HorizontalLayout::Builder(CodePointLayout::Builder('1'),CodePointLayout::Builder('0')); + Layout logLayout = LayoutHelper::String("log", 3); + HorizontalLayout resultLayout = static_cast(logLayout); + VerticalOffsetLayout offsetLayout = VerticalOffsetLayout::Builder(child2, VerticalOffsetLayoutNode::Position::Subscript); + resultLayout.addChildAtIndex(offsetLayout, resultLayout.numberOfChildren(), resultLayout.numberOfChildren(), nullptr); + resultLayout.addChildAtIndex(HorizontalLayout::Builder( + LeftParenthesisLayout::Builder(), + child1, + RightParenthesisLayout::Builder() + + ), resultLayout.numberOfChildren(), resultLayout.numberOfChildren(), nullptr); + + m_layout.addSibling(this, resultLayout, true); + LayoutCursor::moveLeft(nullptr, false); +} + +void LayoutCursor::addEmptyArgLog() { + HorizontalLayout child1 = HorizontalLayout::Builder(EmptyLayout::Builder()); + HorizontalLayout child2 = HorizontalLayout::Builder(EmptyLayout::Builder()); + Layout logLayout = LayoutHelper::String("log", 3); + HorizontalLayout resultLayout = static_cast(logLayout); + VerticalOffsetLayout offsetLayout = VerticalOffsetLayout::Builder(child2, VerticalOffsetLayoutNode::Position::Subscript); + resultLayout.addChildAtIndex(offsetLayout, resultLayout.numberOfChildren(), resultLayout.numberOfChildren(), nullptr); + resultLayout.addChildAtIndex(HorizontalLayout::Builder( + LeftParenthesisLayout::Builder(), + child1, + RightParenthesisLayout::Builder() + + ), resultLayout.numberOfChildren(), resultLayout.numberOfChildren(), nullptr); + + m_layout.addSibling(this, resultLayout, true); + LayoutCursor::moveLeft(nullptr, false); +} + +void LayoutCursor::addRoot() { + Preferences * preferences = Preferences::sharedPreferences(); + switch((int)preferences->symbolofFunction()){ + case 1: + addEmptyArgSquareRootLayout(); + break; + case 2: + addEmptyRootLayout(); + break; + default: + addEmptySquareRootLayout(); + break; + } +} + void LayoutCursor::addEmptySquareRootLayout() { // TODO: add a horizontal layout only if several children HorizontalLayout child1 = HorizontalLayout::Builder(EmptyLayout::Builder()); @@ -118,6 +203,28 @@ void LayoutCursor::addEmptySquareRootLayout() { ((Layout *)&newChild)->collapseSiblings(this); } +void LayoutCursor::addEmptyRootLayout() { + // TODO: add a horizontal layout only if several children + HorizontalLayout child1 = HorizontalLayout::Builder(EmptyLayout::Builder()); + HorizontalLayout child2 = HorizontalLayout::Builder(EmptyLayout::Builder()); + NthRootLayout newChild = NthRootLayout::Builder(child1, child2); + m_layout.addSibling(this, newChild, false); + m_layout = newChild.childAtIndex(0); + m_position = Position::Right; + ((Layout *)&newChild)->collapseSiblings(this); +} + +void LayoutCursor::addEmptyArgSquareRootLayout() { + // TODO: add a horizontal layout only if several children + HorizontalLayout child1 = HorizontalLayout::Builder(EmptyLayout::Builder()); + HorizontalLayout child2 = HorizontalLayout::Builder(CodePointLayout::Builder('2')); + NthRootLayout newChild = NthRootLayout::Builder(child1, child2); + m_layout.addSibling(this, newChild, false); + m_layout = newChild.childAtIndex(0); + m_position = Position::Right; + ((Layout *)&newChild)->collapseSiblings(this); +} + void LayoutCursor::addEmptyPowerLayout() { VerticalOffsetLayout offsetLayout = VerticalOffsetLayout::Builder(EmptyLayout::Builder(), VerticalOffsetLayoutNode::Position::Superscript); privateAddEmptyPowerLayout(offsetLayout); diff --git a/poincare/src/preferences.cpp b/poincare/src/preferences.cpp index 5bcccfde5..e8feada0f 100644 --- a/poincare/src/preferences.cpp +++ b/poincare/src/preferences.cpp @@ -15,6 +15,7 @@ Preferences::Preferences() : m_numberOfSignificantDigits(PrintFloat::k_numberOfPrintedSignificantDigits), m_colorOfLED(Preferences::LEDColor::Red), m_symbolMultiplication(Preferences::SymbolMultiplication::Auto), + m_symbolFunction(Preferences::SymbolFunction::Default), m_resultDisplay(Preferences::ResultDisplay::Compact), m_pythonFont(Preferences::PythonFont::Large) {}