From fa0e8de0a9c015b87a54813b7968ac82d73681ba Mon Sep 17 00:00:00 2001 From: Arthur Camouseigt Date: Wed, 9 Sep 2020 16:57:52 +0200 Subject: [PATCH] [VariableBoxController] Changed the way sequences appear Change-Id: I45a1cb01ab9c5aefd298c40050e69850a4cc5c71 --- apps/math_variable_box_controller.cpp | 12 ++++++++++-- poincare/src/variable_context.cpp | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/math_variable_box_controller.cpp b/apps/math_variable_box_controller.cpp index 060d44f2e..f1032a5b5 100644 --- a/apps/math_variable_box_controller.cpp +++ b/apps/math_variable_box_controller.cpp @@ -4,12 +4,15 @@ #include #include #include +#include #include #include #include #include #include #include +#include +#include "global_preferences.h" using namespace Poincare; using namespace Shared; @@ -104,6 +107,7 @@ void MathVariableBoxController::willDisplayCellForIndex(HighlightCell * cell, in Storage::Record record = recordAtIndex(index); char symbolName[Shared::Function::k_maxNameWithArgumentSize]; size_t symbolLength = 0; + Layout symbolLayout; if (m_currentPage == Page::Expression) { static_assert(Shared::Function::k_maxNameWithArgumentSize > Poincare::SymbolAbstract::k_maxNameSize, "Forgot argument's size?"); symbolLength = SymbolAbstract::TruncateExtension(symbolName, record.fullName(), SymbolAbstract::k_maxNameSize); @@ -120,8 +124,12 @@ void MathVariableBoxController::willDisplayCellForIndex(HighlightCell * cell, in symbolName, Shared::Sequence::k_maxNameWithArgumentSize ); + Expression symbolExpression = Expression::ParseAndSimplify(symbolName, AppsContainer::sharedAppsContainer()->globalContext(), Poincare::Preferences::sharedPreferences()->complexFormat(), Poincare::Preferences::sharedPreferences()->angleUnit(), GlobalPreferences::sharedGlobalPreferences()->unitFormat()); + symbolLayout = symbolExpression.createLayout(Poincare::Preferences::sharedPreferences()->displayMode(), Poincare::Preferences::sharedPreferences()->numberOfSignificantDigits()); + } + if (symbolLayout.isUninitialized()) { + symbolLayout = LayoutHelper::String(symbolName, symbolLength); } - Layout symbolLayout = LayoutHelper::String(symbolName, symbolLength); myCell->setLayout(symbolLayout); myCell->setAccessoryLayout(expressionLayoutForRecord(record, index)); myCell->reloadScroll(); @@ -201,7 +209,7 @@ bool MathVariableBoxController::selectLeaf(int selectedRow) { char nameToHandle[nameToHandleMaxSize]; size_t nameLength = SymbolAbstract::TruncateExtension(nameToHandle, record.fullName(), nameToHandleMaxSize); - if (m_currentPage == Page::Function) { + if (m_currentPage == Page::Function || m_currentPage == Page::Sequence) { // Add parentheses to a function name assert(nameLength < nameToHandleMaxSize); nameLength += UTF8Decoder::CodePointToChars('(', nameToHandle+nameLength, nameToHandleMaxSize - nameLength); diff --git a/poincare/src/variable_context.cpp b/poincare/src/variable_context.cpp index f7191a1a2..92d54c364 100644 --- a/poincare/src/variable_context.cpp +++ b/poincare/src/variable_context.cpp @@ -32,6 +32,7 @@ const Expression VariableContext::expressionForSymbolAbstract(const SymbolAbstra } else { Symbol unknownSymbol = Symbol::Builder(UCodePointUnknown); if (m_name != nullptr && strcmp(m_name, unknownSymbol.name()) == 0) { + assert(std::isnan(unknownSymbolValue)); unknownSymbolValue = m_value.approximateToScalar(this, Preferences::sharedPreferences()->complexFormat(),Preferences::sharedPreferences()->angleUnit()); } return ContextWithParent::expressionForSymbolAbstract(symbol, clone, unknownSymbolValue);