Improwing documentation.
--HG-- branch : develop
This commit is contained in:
parent
074ca3a4e0
commit
7064dbfaa2
|
@ -1505,6 +1505,14 @@ void VApplication::InitSTDescriptions()
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::MeasurementsFromUser translate measurement to internal look.
|
||||
* @param newFormula [in|out] expression to translate
|
||||
* @param position token position
|
||||
* @param token token to translate
|
||||
* @param bias hold change of length between translated and origin token string
|
||||
* @return true if was found measurement with same name.
|
||||
*/
|
||||
bool VApplication::MeasurementsFromUser(QString &newFormula, int position, const QString &token, int &bias) const
|
||||
{
|
||||
QMap<QString, QmuTranslation>::const_iterator i = measurements.constBegin();
|
||||
|
@ -1522,6 +1530,14 @@ bool VApplication::MeasurementsFromUser(QString &newFormula, int position, const
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::VariablesFromUser translate variable to internal look.
|
||||
* @param newFormula [in|out] expression to translate
|
||||
* @param position token position
|
||||
* @param token token to translate
|
||||
* @param bias hold change of length between translated and origin token string
|
||||
* @return true if was found variable with same name.
|
||||
*/
|
||||
bool VApplication::VariablesFromUser(QString &newFormula, int position, const QString &token, int &bias) const
|
||||
{
|
||||
QMap<QString, QmuTranslation>::const_iterator i = variables.constBegin();
|
||||
|
@ -1541,6 +1557,14 @@ bool VApplication::VariablesFromUser(QString &newFormula, int position, const QS
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::PostfixOperatorsFromUser translate postfix operator to internal look.
|
||||
* @param newFormula [in|out] expression to translate
|
||||
* @param position token position
|
||||
* @param token token to translate
|
||||
* @param bias hold change of length between translated and origin token string
|
||||
* @return true if was found postfix operator with same name.
|
||||
*/
|
||||
bool VApplication::PostfixOperatorsFromUser(QString &newFormula, int position, const QString &token, int &bias) const
|
||||
{
|
||||
QMap<QString, QmuTranslation>::const_iterator i = postfixOperators.constBegin();
|
||||
|
@ -1558,6 +1582,14 @@ bool VApplication::PostfixOperatorsFromUser(QString &newFormula, int position, c
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::FunctionsFromUser translate function name to internal look.
|
||||
* @param newFormula [in|out] expression to translate
|
||||
* @param position token position
|
||||
* @param token token to translate
|
||||
* @param bias hold change of length between translated and origin token string
|
||||
* @return true if was found function with same name.
|
||||
*/
|
||||
bool VApplication::FunctionsFromUser(QString &newFormula, int position, const QString &token, int &bias) const
|
||||
{
|
||||
QMap<QString, QmuTranslation>::const_iterator i = functions.constBegin();
|
||||
|
@ -1575,6 +1607,14 @@ bool VApplication::FunctionsFromUser(QString &newFormula, int position, const QS
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::VariablesToUser translate variable name to user.
|
||||
* @param newFormula [in|out] expression to translate
|
||||
* @param position token position
|
||||
* @param token token to translate
|
||||
* @param bias hold change of length between translated and origin token string
|
||||
* @return true if was found variable with same name.
|
||||
*/
|
||||
bool VApplication::VariablesToUser(QString &newFormula, int position, const QString &token, int &bias) const
|
||||
{
|
||||
QMap<QString, QmuTranslation>::const_iterator i = variables.constBegin();
|
||||
|
@ -1594,18 +1634,37 @@ bool VApplication::VariablesToUser(QString &newFormula, int position, const QStr
|
|||
return false;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::CorrectionsPositions correct position tokens in expression after token translation.
|
||||
*
|
||||
* Because translated string can have different length compare to original need make correction after each translation.
|
||||
* If bias = 0 correction will not happens.
|
||||
*
|
||||
* @param position position currecnt token in expression
|
||||
* @param bias difference between original token length and translated
|
||||
* @param tokens all tokens
|
||||
* @param numbers all numbers
|
||||
*/
|
||||
void VApplication::CorrectionsPositions(int position, int bias, QMap<int, QString> &tokens,
|
||||
QMap<int, QString> &numbers)
|
||||
{
|
||||
if (bias == 0)
|
||||
{
|
||||
return;
|
||||
return;// Nothing to correct;
|
||||
}
|
||||
|
||||
BiasTokens(position, bias, tokens);
|
||||
BiasTokens(position, bias, numbers);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::BiasTokens change position for each token that have position more then "position".
|
||||
* @param position token position
|
||||
* @param bias difference between original token length and translated
|
||||
* @param tokens all tokens
|
||||
*/
|
||||
void VApplication::BiasTokens(int position, int bias, QMap<int, QString> &tokens) const
|
||||
{
|
||||
QMap<int, QString> newTokens;
|
||||
|
@ -1613,7 +1672,7 @@ void VApplication::BiasTokens(int position, int bias, QMap<int, QString> &tokens
|
|||
while (i != tokens.constEnd())
|
||||
{
|
||||
if (i.key()<= position)
|
||||
{
|
||||
{ // Tokens before position "position" did not change his positions.
|
||||
newTokens.insert(i.key(), i.value());
|
||||
}
|
||||
else
|
||||
|
@ -1705,16 +1764,22 @@ QString VApplication::PostfixOperator(const QString &name) const
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::FormulaFromUser replace all known tokens in formula to internal look. Also change decimal
|
||||
* separator in numbers.
|
||||
* @param formula expression that need translate
|
||||
* @return translated expression
|
||||
*/
|
||||
QString VApplication::FormulaFromUser(const QString &formula)
|
||||
{
|
||||
QString newFormula = formula;
|
||||
QString newFormula = formula;// Local copy for making changes
|
||||
|
||||
Calculator *cal = new Calculator(formula);
|
||||
QMap<int, QString> tokens = cal->GetTokens();
|
||||
QMap<int, QString> numbers = cal->GetNumbers();
|
||||
Calculator *cal = new Calculator(formula);// Eval formula
|
||||
QMap<int, QString> tokens = cal->GetTokens();// Tokens (variables, measurements)
|
||||
QMap<int, QString> numbers = cal->GetNumbers();// All numbers in expression for changing decimal separator
|
||||
delete cal;
|
||||
|
||||
QList<int> tKeys = tokens.keys();
|
||||
QList<int> tKeys = tokens.keys();// Take all tokens positions
|
||||
QList<QString> tValues = tokens.values();
|
||||
for (int i = 0; i < tKeys.size(); ++i)
|
||||
{
|
||||
|
@ -1722,7 +1787,7 @@ QString VApplication::FormulaFromUser(const QString &formula)
|
|||
if (MeasurementsFromUser(newFormula, tKeys.at(i), tValues.at(i), bias))
|
||||
{
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated token has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(tKeys.at(i), bias, tokens, numbers);
|
||||
tKeys = tokens.keys();
|
||||
tValues = tokens.values();
|
||||
|
@ -1733,7 +1798,7 @@ QString VApplication::FormulaFromUser(const QString &formula)
|
|||
if (VariablesFromUser(newFormula, tKeys.at(i), tValues.at(i), bias))
|
||||
{
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated token has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(tKeys.at(i), bias, tokens, numbers);
|
||||
tKeys = tokens.keys();
|
||||
tValues = tokens.values();
|
||||
|
@ -1744,7 +1809,7 @@ QString VApplication::FormulaFromUser(const QString &formula)
|
|||
if (PostfixOperatorsFromUser(newFormula, tKeys.at(i), tValues.at(i), bias))
|
||||
{
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated token has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(tKeys.at(i), bias, tokens, numbers);
|
||||
tKeys = tokens.keys();
|
||||
tValues = tokens.values();
|
||||
|
@ -1755,7 +1820,7 @@ QString VApplication::FormulaFromUser(const QString &formula)
|
|||
if (FunctionsFromUser(newFormula, tKeys.at(i), tValues.at(i), bias))
|
||||
{
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated token has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(tKeys.at(i), bias, tokens, numbers);
|
||||
tKeys = tokens.keys();
|
||||
tValues = tokens.values();
|
||||
|
@ -1764,28 +1829,28 @@ QString VApplication::FormulaFromUser(const QString &formula)
|
|||
}
|
||||
}
|
||||
|
||||
QLocale loc = QLocale::system();
|
||||
QLocale loc = QLocale::system(); // User locale
|
||||
if (loc != QLocale(QLocale::C) && getSettings()->GetOsSeparator())
|
||||
{
|
||||
QList<int> nKeys = numbers.keys();
|
||||
{// User want use Os separator
|
||||
QList<int> nKeys = numbers.keys();// Positions for all numbers in expression
|
||||
QList<QString> nValues = numbers.values();
|
||||
for (int i = 0; i < nKeys.size(); ++i)
|
||||
{
|
||||
loc = QLocale::system();
|
||||
loc = QLocale::system();// From system locale
|
||||
bool ok = false;
|
||||
const qreal d = loc.toDouble(nValues.at(i), &ok);
|
||||
if (ok == false)
|
||||
{
|
||||
qDebug()<<"Can't convert to double token"<<nValues.at(i);
|
||||
continue;
|
||||
continue;//Leave with out translation
|
||||
}
|
||||
|
||||
loc = QLocale(QLocale::C);
|
||||
const QString dStr = loc.toString(d);
|
||||
loc = QLocale(QLocale::C);// To internal locale
|
||||
const QString dStr = loc.toString(d);// Internal look for number
|
||||
newFormula.replace(nKeys.at(i), nValues.at(i).length(), dStr);
|
||||
const int bias = nValues.at(i).length() - dStr.length();
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated number has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(nKeys.at(i), bias, tokens, numbers);
|
||||
nKeys = numbers.keys();
|
||||
nValues = numbers.values();
|
||||
|
@ -1797,17 +1862,23 @@ QString VApplication::FormulaFromUser(const QString &formula)
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief VApplication::FormulaToUser replace all known tokens in formula to user look. Also change decimal
|
||||
* separator in numbers.
|
||||
* @param formula expression that need translate
|
||||
* @return translated expression
|
||||
*/
|
||||
QString VApplication::FormulaToUser(const QString &formula)
|
||||
{
|
||||
QString newFormula = formula;
|
||||
QString newFormula = formula;// Local copy for making changes
|
||||
|
||||
QMap<int, QString> tokens;
|
||||
QMap<int, QString> numbers;
|
||||
try
|
||||
{
|
||||
Calculator *cal = new Calculator(formula, false);
|
||||
tokens = cal->GetTokens();
|
||||
numbers = cal->GetNumbers();
|
||||
Calculator *cal = new Calculator(formula, false);// Eval formula
|
||||
tokens = cal->GetTokens();// Tokens (variables, measurements)
|
||||
numbers = cal->GetNumbers();// All numbers in expression for changing decimal separator
|
||||
delete cal;
|
||||
}
|
||||
catch (qmu::QmuParserError &e)
|
||||
|
@ -1829,7 +1900,7 @@ QString VApplication::FormulaToUser(const QString &formula)
|
|||
newFormula.replace(tKeys.at(i), tValues.at(i).length(), measurements.value(tValues.at(i)).translate());
|
||||
int bias = tValues.at(i).length() - measurements.value(tValues.at(i)).translate().length();
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated token has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(tKeys.at(i), bias, tokens, numbers);
|
||||
tKeys = tokens.keys();
|
||||
tValues = tokens.values();
|
||||
|
@ -1842,7 +1913,7 @@ QString VApplication::FormulaToUser(const QString &formula)
|
|||
newFormula.replace(tKeys.at(i), tValues.at(i).length(), functions.value(tValues.at(i)).translate());
|
||||
int bias = tValues.at(i).length() - functions.value(tValues.at(i)).translate().length();
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated token has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(tKeys.at(i), bias, tokens, numbers);
|
||||
tKeys = tokens.keys();
|
||||
tValues = tokens.values();
|
||||
|
@ -1855,7 +1926,7 @@ QString VApplication::FormulaToUser(const QString &formula)
|
|||
newFormula.replace(tKeys.at(i), tValues.at(i).length(), postfixOperators.value(tValues.at(i)).translate());
|
||||
int bias = tValues.at(i).length() - postfixOperators.value(tValues.at(i)).translate().length();
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated token has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(tKeys.at(i), bias, tokens, numbers);
|
||||
tKeys = tokens.keys();
|
||||
tValues = tokens.values();
|
||||
|
@ -1867,7 +1938,7 @@ QString VApplication::FormulaToUser(const QString &formula)
|
|||
if (VariablesToUser(newFormula, tKeys.at(i), tValues.at(i), bias))
|
||||
{
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated token has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(tKeys.at(i), bias, tokens, numbers);
|
||||
tKeys = tokens.keys();
|
||||
tValues = tokens.values();
|
||||
|
@ -1876,28 +1947,28 @@ QString VApplication::FormulaToUser(const QString &formula)
|
|||
}
|
||||
}
|
||||
|
||||
QLocale loc = QLocale::system();
|
||||
QLocale loc = QLocale::system();// User locale
|
||||
if (loc != QLocale::C && getSettings()->GetOsSeparator())
|
||||
{
|
||||
QList<int> nKeys = numbers.keys();
|
||||
{// User want use Os separator
|
||||
QList<int> nKeys = numbers.keys();// Positions for all numbers in expression
|
||||
QList<QString> nValues = numbers.values();
|
||||
for (int i = 0; i < nKeys.size(); ++i)
|
||||
{
|
||||
loc = QLocale(QLocale::C);
|
||||
loc = QLocale(QLocale::C);// From pattern locale
|
||||
bool ok = false;
|
||||
const qreal d = loc.toDouble(nValues.at(i), &ok);
|
||||
if (ok == false)
|
||||
{
|
||||
qDebug()<<"Can't convert to double token"<<nValues.at(i);
|
||||
continue;
|
||||
continue;//Leave with out translation
|
||||
}
|
||||
|
||||
loc = QLocale::system();
|
||||
const QString dStr = loc.toString(d);
|
||||
loc = QLocale::system();// To user locale
|
||||
const QString dStr = loc.toString(d);// Number string in user locale
|
||||
newFormula.replace(nKeys.at(i), nValues.at(i).length(), dStr);
|
||||
const int bias = nValues.at(i).length() - dStr.length();
|
||||
if (bias != 0)
|
||||
{
|
||||
{// Translated number has different length than original. Position next tokens need to be corrected.
|
||||
CorrectionsPositions(nKeys.at(i), bias, tokens, numbers);
|
||||
nKeys = numbers.keys();
|
||||
nValues = numbers.values();
|
||||
|
|
|
@ -460,8 +460,8 @@ void DialogTool::ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer *tim
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief Eval evaluate formula and show result
|
||||
* @param text formula
|
||||
* @param flag flag state of formula
|
||||
* @param text expresion that we parse
|
||||
* @param flag flag state of eval formula
|
||||
* @param label label for signal error
|
||||
* @param postfix unit name
|
||||
* @param checkZero true - if formula can't be equal zero
|
||||
|
@ -484,10 +484,10 @@ qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QSt
|
|||
{
|
||||
try
|
||||
{
|
||||
// Replace line return with spaces for calc if exist
|
||||
// Replace line return character with spaces for calc if exist
|
||||
QString formula = text;
|
||||
formula.replace("\n", " ");
|
||||
formula = qApp->FormulaFromUser(formula);
|
||||
formula = qApp->FormulaFromUser(formula);// Translate to internal look.
|
||||
Calculator *cal = new Calculator(data);
|
||||
result = cal->EvalFormula(formula);
|
||||
delete cal;
|
||||
|
@ -511,7 +511,7 @@ qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QSt
|
|||
{
|
||||
loc = QLocale(QLocale::C);
|
||||
}
|
||||
label->setText(loc.toString(result) + postfix);
|
||||
label->setText(loc.toString(result) + " " +postfix);
|
||||
flag = true;
|
||||
ChangeColor(labelEditFormula, okColor);
|
||||
label->setToolTip(tr("Value"));
|
||||
|
@ -532,7 +532,7 @@ qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QSt
|
|||
<< "--------------------------------------";
|
||||
}
|
||||
}
|
||||
CheckState();
|
||||
CheckState(); // Disable Ok and Apply buttons if something wrong.
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -886,7 +886,7 @@ void DialogTool::EvalFormula()
|
|||
{
|
||||
SCASSERT(plainTextEditFormula != nullptr);
|
||||
SCASSERT(labelResultCalculation != nullptr);
|
||||
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit());
|
||||
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit());//Show unit in dialog lable (cm, mm or inch)
|
||||
Eval(plainTextEditFormula->toPlainText(), flagFormula, labelResultCalculation, postfix, false);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user