/*! * @brief Returns the suffix used in GUI widgets */ const QString unitGetSuffixFromIndex(const int index) { if (index==SC_P) { return ""; } return QString(" %1").arg(unitGetStrFromIndex(index)); }
QString value2String(double unitValue, int unitIndex, bool round2Precision, bool appendSuffix) { QString s; if (round2Precision) s=QString::number(pts2value(unitValue, unitIndex), 'f', unitGetPrecisionFromIndex(unitIndex)); else s=QString::number(pts2value(unitValue, unitIndex)); if (appendSuffix) s += unitGetStrFromIndex(unitIndex); return s; }
QString ScrSpinBox::textFromValue ( double value ) const { if (m_unitIndex==SC_PICAS) { // QString r=QString("%1%2%3").arg((static_cast<int>(value))/12).arg(unitGetStrFromIndex(m_unitIndex)).arg(fabs(fmod(value, 12))); int a=(static_cast<int>(value))/12; double b=fabs(fmod(value, 12)); QString prefix((a==0 && value < 0.0) ? "-" : ""); return QString("%1%2%3%4").arg(prefix).arg(a).arg(unitGetStrFromIndex(m_unitIndex)).arg(b); } return QDoubleSpinBox::textFromValue ( value ); }
QString value2String(double unitValue, int unitIndex, bool round2Precision, bool appendSuffix) { QString s; if (unitIndex==SC_PICAS) { int a=(static_cast<int>(unitValue))/12; double b=fabs(fmod(unitValue, 12)); QString prefix((a==0 && unitValue < 0.0) ? "-" : ""); if (round2Precision) s=QString("%1%2%3%4").arg(prefix).arg(a).arg(unitGetStrFromIndex(unitIndex)).arg(QString::number(b, 'f', unitGetPrecisionFromIndex(unitIndex))); else s=QString("%1%2%3%4").arg(prefix).arg(a).arg(unitGetStrFromIndex(unitIndex)).arg(b); } else { if (round2Precision) s=QString::number(pts2value(unitValue, unitIndex), 'f', unitGetPrecisionFromIndex(unitIndex)); else s=QString::number(pts2value(unitValue, unitIndex)); if (appendSuffix) s += " "+unitGetStrFromIndex(unitIndex); } return s; }
void CommonStrings::languageChange() { CommonStrings::_Apply = "&Apply"; CommonStrings::tr_Apply = tr( "&Apply" ); CommonStrings::_Cancel = "&Cancel"; CommonStrings::tr_Cancel = tr( "&Cancel" ); CommonStrings::None = "None"; CommonStrings::tr_None = tr( "None" ); CommonStrings::tr_NoneColor= tr("None", "color name"); CommonStrings::_OK = "&OK"; CommonStrings::tr_OK = tr( "&OK" ); CommonStrings::_Save = "&Save"; CommonStrings::tr_Save = tr( "&Save" ); CommonStrings::Warning = "Warning"; CommonStrings::trWarning = tr( "Warning" ); CommonStrings::trYes = tr("Yes"); CommonStrings::trNo = tr("No"); CommonStrings::trYesKey = tr("&Yes"); CommonStrings::trNoKey = tr("&No"); CommonStrings::itemType_TextFrame = tr("Text Frame"); CommonStrings::itemType_ImageFrame = tr("Image Frame"); CommonStrings::itemType_Line = tr("Line"); CommonStrings::itemType_Polygon = tr("Polygon"); CommonStrings::itemType_Polyline = tr("Polyline"); CommonStrings::itemType_PathText = tr("Text on a Path"); CommonStrings::itemType_LatexFrame = tr("Render Frame"); CommonStrings::itemType_OSGFrame = tr("PDF 3D Annotation"); CommonStrings::itemType_Symbol = tr("Symbol"); CommonStrings::itemType_Multiple = tr("Multiple", "Multiple frame types"); CommonStrings::itemSubType_PDF_PushButton = tr("PDF Push Button"); CommonStrings::itemSubType_PDF_TextField = tr("PDF Text Field"); CommonStrings::itemSubType_PDF_CheckBox = tr("PDF Check Box"); CommonStrings::itemSubType_PDF_ComboBox = tr("PDF Combo Box"); CommonStrings::itemSubType_PDF_ListBox = tr("PDF List Box"); CommonStrings::itemSubType_PDF_TextAnnotation = tr("PDF Text Annotation"); CommonStrings::itemSubType_PDF_LinkAnnotation = tr("PDF Link Annotation"); CommonStrings::customPageSize = "Custom"; CommonStrings::trCustomPageSize = tr( "Custom", "CommonStrings, custom page size" ); CommonStrings::pageSet1 = "Single Page"; CommonStrings::pageSet2 = "Double Sided"; CommonStrings::pageSet3 = "3-Fold"; CommonStrings::pageSet4 = "4-Fold"; CommonStrings::trPageSet1 = tr( "Single Page" ); CommonStrings::trPageSet2 = tr( "Double Sided" ); CommonStrings::trPageSet3 = tr( "3-Fold" ); CommonStrings::trPageSet4 = tr( "4-Fold" ); CommonStrings::pageLocLeft = "Left Page"; CommonStrings::pageLocMiddle = "Middle"; CommonStrings::pageLocMiddleLeft = "Middle Left"; CommonStrings::pageLocMiddleRight = "Middle Right"; CommonStrings::pageLocRight = "Right Page"; CommonStrings::trPageLocLeft = tr( "Left Page", "Left page location" ); CommonStrings::trPageLocMiddle = tr( "Middle", "Middle page location" ); CommonStrings::trPageLocMiddleLeft = tr( "Middle Left", "Middle Left page location" ); CommonStrings::trPageLocMiddleRight = tr( "Middle Right", "Middle Right page location" ); CommonStrings::trPageLocRight = tr( "Right Page", "Right page location" ); CommonStrings::masterPageNormal = "Normal"; CommonStrings::trMasterPageNormal = tr( "Normal", "Default single master page" ); CommonStrings::masterPageNormalLeft = "Normal Left"; CommonStrings::trMasterPageNormalLeft = tr( "Normal Left", "Default left master page" ); CommonStrings::masterPageNormalMiddle = "Normal Middle"; CommonStrings::trMasterPageNormalMiddle = tr( "Normal Middle", "Default middle master page" ); CommonStrings::masterPageNormalRight = "Normal Right"; CommonStrings::trMasterPageNormalRight = tr( "Normal Right", "Default right master page" ); CommonStrings::trPenStyle_SolidLine = tr("Solid Line"); CommonStrings::trPenStyle_DashedLine = tr("Dashed Line"); CommonStrings::trPenStyle_DottedLine = tr("Dotted Line"); CommonStrings::trPenStyle_DashDotLine = tr("Dash Dot Line"); CommonStrings::trPenStyle_DashDotDotLine = tr("Dash Dot Dot Line"); CommonStrings::DefaultParagraphStyle = "Default Paragraph Style"; CommonStrings::DefaultCharacterStyle = "Default Character Style"; CommonStrings::DefaultLineStyle = "Default Line Style"; CommonStrings::trDefaultParagraphStyle = tr("Default Paragraph Style"); CommonStrings::trDefaultCharacterStyle = tr("Default Character Style"); CommonStrings::trDefaultLineStyle = tr("Default Line Style"); CommonStrings::monday = tr("Monday"); CommonStrings::tuesday = tr("Tuesday"); CommonStrings::wednesday = tr("Wednesday"); CommonStrings::thursday = tr("Thursday"); CommonStrings::friday = tr("Friday"); CommonStrings::saturday = tr("Saturday"); CommonStrings::sunday = tr("Sunday"); CommonStrings::january = tr("January"); CommonStrings::february = tr("February"); CommonStrings::march = tr("March"); CommonStrings::april = tr("April"); CommonStrings::may = tr("May"); CommonStrings::june = tr("June"); CommonStrings::july = tr("July"); CommonStrings::august = tr("August"); CommonStrings::september = tr("September"); CommonStrings::october = tr("October"); CommonStrings::november = tr("November"); CommonStrings::december = tr("December"); CommonStrings::trRGB = tr("RGB", "Colorspace"); CommonStrings::trCMYK = tr("CMYK", "Colorspace"); CommonStrings::trGrayscale = tr("Grayscale", "Colorspace"); CommonStrings::trDuotone = tr("Duotone", "Colorspace"); CommonStrings::trUnknownCS = tr("Unknown", "Colorspace (Unknown)"); CommonStrings::trVisionNormal = tr("Normal Vision", "Color Blindness - Normal Vision"); CommonStrings::trVisionProtanopia = tr("Protanopia (Red)", "Color Blindness - Red Color Blind"); CommonStrings::trVisionDeuteranopia = tr("Deuteranopia (Green)", "Color Blindness - Greed Color Blind"); CommonStrings::trVisionTritanopia = tr("Tritanopia (Blue)", "Color Blindness - Blue Color Blind"); CommonStrings::trVisionFullColorBlind = tr("Full Color Blindness", "Color Blindness - Full Color Blindness"); CommonStrings::trCustomTabFill = tr("Custom: ","Custom Tab Fill Option"); CommonStrings::trOpticalMarginsNone = tr("None", "Optical Margin Setting"); CommonStrings::trOpticalMarginsLeftProtruding = tr("Left Protruding", "Optical Margin Setting"); CommonStrings::trOpticalMarginsRightProtruding = tr("Right Protruding", "Optical Margin Setting"); CommonStrings::trOpticalMarginsLeftHangPunct = tr("Left Hanging Punctuation", "Optical Margin Setting"); CommonStrings::trOpticalMarginsRightHangPunct = tr("Right Hanging Punctuation", "Optical Margin Setting"); CommonStrings::trOpticalMarginsDefault = tr("Default", "Optical Margin Setting"); //Paragraph Style Word Tracking CommonStrings::trMinWordTracking = tr("Min. Word Tracking"); CommonStrings::trMaxWordTracking = tr("Max. Word Tracking"); //Paragraph Style Glyph Extension CommonStrings::trMinGlyphExtension = tr("Min. Glyph Extension"); CommonStrings::trMaxGlyphExtension = tr("Max. Glyph Extension"); //PostScript & PDF Types etc CommonStrings::PostScript = "PostScript"; CommonStrings::trPostScript = tr("PostScript"); CommonStrings::PDF_1_3 = "PDF 1.3"; CommonStrings::PDF_1_4 = "PDF 1.4"; CommonStrings::PDF_1_5 = "PDF 1.5"; CommonStrings::PDF_X1a = "PDF/X-1a"; CommonStrings::PDF_X3 = "PDF/X-3"; CommonStrings::PDF_X4 = "PDF/X-4"; CommonStrings::PostScript1 = "PostScript Level 1"; CommonStrings::trPostScript1 = tr( "PostScript Level 1" ); CommonStrings::PostScript2 = "PostScript Level 2"; CommonStrings::trPostScript2 = tr( "PostScript Level 2" ); CommonStrings::PostScript3 = "PostScript Level 3"; CommonStrings::trPostScript3 = tr( "PostScript Level 3" ); CommonStrings::WindowsGDI = "Windows GDI"; CommonStrings::trWindowsGDI = tr( "Windows GDI" ); //Units CommonStrings::trStrPT=unitGetStrFromIndex(SC_PT); CommonStrings::trStrMM=unitGetStrFromIndex(SC_MM); CommonStrings::trStrIN=unitGetStrFromIndex(SC_IN); CommonStrings::trStrP =unitGetStrFromIndex(SC_P); CommonStrings::trStrCM=unitGetStrFromIndex(SC_CM); CommonStrings::trStrC =unitGetStrFromIndex(SC_C); CommonStrings::strPT=unitGetUntranslatedStrFromIndex(SC_PT); CommonStrings::strMM=unitGetUntranslatedStrFromIndex(SC_MM); CommonStrings::strIN=unitGetUntranslatedStrFromIndex(SC_IN); CommonStrings::strP =unitGetUntranslatedStrFromIndex(SC_P); CommonStrings::strCM=unitGetUntranslatedStrFromIndex(SC_CM); CommonStrings::strC =unitGetUntranslatedStrFromIndex(SC_C); }
double ScrSpinBox::valueFromText ( const QString & text ) const { //Get all our units strings //CB: Replaced by new CommonStrings versions // QString trStrPT=unitGetStrFromIndex(SC_PT); // QString trStrMM=unitGetStrFromIndex(SC_MM); // QString trStrIN=unitGetStrFromIndex(SC_IN); // QString trStrP =unitGetStrFromIndex(SC_P); // QString trStrCM=unitGetStrFromIndex(SC_CM); // QString trStrC =unitGetStrFromIndex(SC_C); // QString strPT=unitGetUntranslatedStrFromIndex(SC_PT); // QString strMM=unitGetUntranslatedStrFromIndex(SC_MM); // QString strIN=unitGetUntranslatedStrFromIndex(SC_IN); // QString strP =unitGetUntranslatedStrFromIndex(SC_P); // QString strCM=unitGetUntranslatedStrFromIndex(SC_CM); // QString strC =unitGetUntranslatedStrFromIndex(SC_C); //Get a copy for use QString ts = text.trimmed(); //Find our suffix QString su(unitGetStrFromIndex(m_unitIndex)); //Replace our pica XpY.Z format with (X*12+Y.Z)pt if (CommonStrings::trStrP.localeAwareCompare(CommonStrings::strP)!=0) ts.replace(CommonStrings::trStrP, CommonStrings::strP); QRegExp rxP; if (m_unitIndex==SC_PICAS) rxP.setPattern("\\b(\\d+)"+CommonStrings::strP+"?(\\d+\\.?\\d*)?\\b"); else rxP.setPattern("\\b(\\d+)"+CommonStrings::strP+"(\\d+\\.?\\d*)?\\b"); int posP = 0; while (posP >= 0) { // qDebug() << "#"; posP = rxP.indexIn(ts, posP); if (posP >= 0) { // qDebug() << rxP.cap(1); // qDebug() << rxP.cap(2); QString replacement = QString("%1%2").arg(rxP.cap(1).toDouble()*(static_cast<double>(unitGetBaseFromIndex(SC_PICAS))) + rxP.cap(2).toDouble()).arg(CommonStrings::strPT); ts.replace(posP, rxP.cap(0).length(), replacement); // qDebug() << ts; } } // qDebug() << "##" << ts; ts.replace(",", "."); ts.replace("%", ""); ts.replace("°", ""); ts.replace(FinishTag, ""); ts = ts.trimmed(); if (ts.endsWith(su)) ts = ts.left(ts.length()-su.length()); int pos = ts.length(); while (pos > 0) { pos = ts.lastIndexOf(".", pos); if (pos >= 0) { if (pos < static_cast<int>(ts.length())) { if (!ts[pos+1].isDigit()) ts.insert(pos+1, "0 "); } pos--; } } if (ts.endsWith(".")) ts.append("0"); //CB FParser doesn't handle unicode well/at all. //So, instead of just getting the translated strings and //sticking them in as variables in the parser, if they are //not the same as the untranslated version, then we replace them. //We lose the ability for now to have some strings in languages //that might use them in variables. //To return to previous functionality, remove the follow replacement ifs, //S&R in the trStr* assignments trStrPT->strPT and remove the current str* ones. //IE, send the translated strings through to the regexp. if (CommonStrings::trStrPT.localeAwareCompare(CommonStrings::strPT)!=0) ts.replace(CommonStrings::trStrPT, CommonStrings::strPT); if (CommonStrings::trStrMM.localeAwareCompare(CommonStrings::strMM)!=0) ts.replace(CommonStrings::trStrMM, CommonStrings::strMM); if (CommonStrings::trStrIN.localeAwareCompare(CommonStrings::strIN)!=0) ts.replace(CommonStrings::trStrIN, CommonStrings::strIN); if (CommonStrings::trStrCM.localeAwareCompare(CommonStrings::strCM)!=0) ts.replace(CommonStrings::trStrCM, CommonStrings::strCM); if (CommonStrings::trStrC.localeAwareCompare(CommonStrings::trStrC)!=0) ts.replace(CommonStrings::trStrC, CommonStrings::strC); //Replace in our typed text all of the units strings with *unitstring QRegExp rx("\\b(\\d+)\\s*("+CommonStrings::strPT+"|"+CommonStrings::strMM+"|"+CommonStrings::strC+"|"+CommonStrings::strCM+"|"+CommonStrings::strIN+")\\b"); pos = 0; while (pos >= 0) { pos = rx.indexIn(ts, pos); if (pos >= 0) { QString replacement = rx.cap(1) + "*" + rx.cap(2); ts.replace(pos, rx.cap(0).length(), replacement); } } //Add in the fparser constants using our unit strings, and the conversion factors. FunctionParser fp; // setFPConstants(fp); fp.AddConstant(CommonStrings::strPT.toStdString(), value2value(1.0, SC_PT, m_unitIndex)); fp.AddConstant(CommonStrings::strMM.toStdString(), value2value(1.0, SC_MM, m_unitIndex)); fp.AddConstant(CommonStrings::strIN.toStdString(), value2value(1.0, SC_IN, m_unitIndex)); fp.AddConstant(CommonStrings::strP.toStdString(), value2value(1.0, SC_P, m_unitIndex)); fp.AddConstant(CommonStrings::strCM.toStdString(), value2value(1.0, SC_CM, m_unitIndex)); fp.AddConstant(CommonStrings::strC.toStdString(), value2value(1.0, SC_C, m_unitIndex)); fp.AddConstant("old", value()); if (m_constants) { QMap<QString, double>::ConstIterator itend = m_constants->constEnd(); QMap<QString, double>::ConstIterator it = m_constants->constBegin(); while(it != itend) { fp.AddConstant(it.key().toStdString(), it.value() * unitGetRatioFromIndex(m_unitIndex)); ++it; } } int ret = fp.Parse(ts.toStdString(), "", true); // qDebug() << "fp return =" << ret; if (ret >= 0) return 0; double erg = fp.Eval(NULL); // qDebug() << "fp value =" << erg; return erg; }