mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[apps/*expression_model*] unknownSymbol is replaced in ExpressionModel
This commit is contained in:
committed by
Léa Saviot
parent
7859308053
commit
b1b309c0c4
@@ -104,8 +104,6 @@ void ListController::editExpression(int sequenceDefinition, Ion::Events::Event e
|
||||
break;
|
||||
}
|
||||
initialText = initialTextContent;
|
||||
// Replace UCodePointUnknownN with 'n'
|
||||
replaceUnknownSymbolWithReadableSymbol(initialText);
|
||||
}
|
||||
InputViewController * inputController = Shared::FunctionApp::app()->inputViewController();
|
||||
// Invalidate the sequences context cache
|
||||
|
||||
@@ -20,11 +20,14 @@ ExpressionModel::ExpressionModel() :
|
||||
{
|
||||
}
|
||||
|
||||
void ExpressionModel::text(const Storage::Record * record, char * buffer, size_t bufferSize) const {
|
||||
void ExpressionModel::text(const Storage::Record * record, char * buffer, size_t bufferSize, CodePoint symbol, CodePoint unknownSymbol) const {
|
||||
Expression e = expressionClone(record);
|
||||
if (e.isUninitialized() && bufferSize > 0) {
|
||||
buffer[0] = 0;
|
||||
} else {
|
||||
if (symbol != 0 && !e.isUninitialized()) {
|
||||
e = e.replaceUnknown(Symbol::Builder(unknownSymbol), Symbol::Builder(symbol));
|
||||
}
|
||||
e.serialize(buffer, bufferSize);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ public:
|
||||
ExpressionModel();
|
||||
|
||||
// Getters
|
||||
void text(const Ion::Storage::Record * record, char * buffer, size_t bufferSize) const;
|
||||
void text(const Ion::Storage::Record * record, char * buffer, size_t bufferSize, CodePoint symbol = 0, CodePoint unknownSymbol = 0) const;
|
||||
Poincare::Expression expressionReduced(const Ion::Storage::Record * record, Poincare::Context * context) const;
|
||||
Poincare::Expression expressionClone(const Ion::Storage::Record * record) const;
|
||||
Poincare::Layout layout(const Ion::Storage::Record * record) const;
|
||||
|
||||
@@ -14,7 +14,7 @@ public:
|
||||
virtual CodePoint unknownSymbol() const { return 0; }
|
||||
|
||||
// Property
|
||||
void text(char * buffer, size_t bufferSize) const { return model()->text(this, buffer, bufferSize); }
|
||||
void text(char * buffer, size_t bufferSize) const { return model()->text(this, buffer, bufferSize, symbol(), unknownSymbol()); }
|
||||
Poincare::Expression expressionReduced(Poincare::Context * context) const { return model()->expressionReduced(this, context); }
|
||||
Poincare::Expression expressionClone() const { return model()->expressionClone(this); }
|
||||
Poincare::Layout layout() { return model()->layout(this); }
|
||||
|
||||
@@ -219,17 +219,6 @@ void ExpressionModelListController::reinitSelectedExpression(ExpiringPointer<Exp
|
||||
selectableTableView()->reloadData();
|
||||
}
|
||||
|
||||
void ExpressionModelListController::replaceUnknownSymbolWithReadableSymbol(char * text) {
|
||||
size_t textLength = strlen(text);
|
||||
char unknownSymb = modelStore()->unknownSymbol();
|
||||
char symb = modelStore()->symbol();
|
||||
for (size_t i = 0; i < textLength; i++) {
|
||||
if (unknownSymb != 0 && text[i] == unknownSymb) {
|
||||
text[i] = symb;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ExpressionModelListController::editExpression(Ion::Events::Event event) {
|
||||
char * initialText = nullptr;
|
||||
constexpr int initialTextContentMaxSize = Constant::MaxSerializedExpressionSize;
|
||||
@@ -239,8 +228,6 @@ void ExpressionModelListController::editExpression(Ion::Events::Event event) {
|
||||
ExpiringPointer<ExpressionModelHandle> model = modelStore()->modelForRecord(record);
|
||||
model->text(initialTextContent, initialTextContentMaxSize);
|
||||
initialText = initialTextContent;
|
||||
// Replace UCodePointUnknownX with 'x'
|
||||
replaceUnknownSymbolWithReadableSymbol(initialTextContent);
|
||||
}
|
||||
inputController()->edit(this, event, this, initialText,
|
||||
[](void * context, void * sender){
|
||||
|
||||
@@ -27,7 +27,6 @@ protected:
|
||||
virtual void didChangeModelsList() { resetMemoization(); }
|
||||
virtual void reinitSelectedExpression(ExpiringPointer<ExpressionModelHandle> model);
|
||||
virtual void editExpression(Ion::Events::Event event);
|
||||
void replaceUnknownSymbolWithReadableSymbol(char * initialText);
|
||||
virtual bool editSelectedRecordWithText(const char * text);
|
||||
virtual bool removeModelRow(Ion::Storage::Record record);
|
||||
virtual int modelIndexForRow(int j) { return j; }
|
||||
|
||||
Reference in New Issue
Block a user