X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2Fqt_helpers.cpp;h=92a052048747837b018e33543298cf6052cf0550;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=b1e2b140bb02b537182dcdd1d5896be854ee30d5;hpb=5cbf181f1e87b5b9704a486ee96ddcd243037eea;p=lyx.git diff --git a/src/frontends/qt4/qt_helpers.cpp b/src/frontends/qt4/qt_helpers.cpp index b1e2b140bb..92a0520487 100644 --- a/src/frontends/qt4/qt_helpers.cpp +++ b/src/frontends/qt4/qt_helpers.cpp @@ -4,7 +4,7 @@ * Licence details can be found in the file COPYING. * * \author Dekel Tsur - * \author Jürgen Spitzmüller + * \author Jürgen Spitzmüller * \author Richard Heck * * Full author contact details are available in file CREDITS. @@ -19,9 +19,13 @@ #include "frontends/alert.h" +#include "BufferParams.h" +#include "FloatList.h" #include "Language.h" #include "Length.h" +#include "TextClass.h" +#include "support/convert.h" #include "support/debug.h" #include "support/filetools.h" #include "support/foreach.h" @@ -36,6 +40,7 @@ #include #include #include +#include #include #include @@ -54,12 +59,6 @@ using namespace lyx::support; namespace lyx { -LyXErr & operator<<(LyXErr & err, QString const & str) -{ - return err << fromqstr(str); -} - - FileName libFileSearch(QString const & dir, QString const & name, QString const & ext) { @@ -81,7 +80,7 @@ string widgetsToLength(QLineEdit const * input, LengthCombo const * combo) Length::UNIT const unit = combo->currentLengthItem(); - return Length(length.toDouble(), unit).asString(); + return Length(length.trimmed().toDouble(), unit).asString(); } @@ -95,9 +94,16 @@ Length widgetsToLength(QLineEdit const * input, QComboBox const * combo) if (isValidGlueLength(fromqstr(length))) return Length(fromqstr(length)); - Length::UNIT const unit = unitFromString(fromqstr(combo->currentText())); + Length::UNIT unit = Length::UNIT_NONE; + QString const item = combo->currentText(); + for (int i = 0; i < num_units; i++) { + if (qt_(lyx::unit_name_gui[i]) == item) { + unit = unitFromString(unit_name[i]); + break; + } + } - return Length(length.toDouble(), unit); + return Length(length.trimmed().toDouble(), unit); } @@ -105,7 +111,9 @@ void lengthToWidgets(QLineEdit * input, LengthCombo * combo, Length const & len, Length::UNIT /*defaultUnit*/) { combo->setCurrentItem(len.unit()); - input->setText(QString::number(Length(len).value())); + QLocale loc; + loc.setNumberOptions(QLocale::OmitGroupSeparator); + input->setText(loc.toString(Length(len).value())); } @@ -126,13 +134,44 @@ void lengthToWidgets(QLineEdit * input, LengthCombo * combo, } -void lengthAutoToWidgets(QLineEdit * input, LengthCombo * combo, - Length const & len, Length::UNIT defaultUnit) +void lengthToWidgets(QLineEdit * input, LengthCombo * combo, + docstring const & len, Length::UNIT defaultUnit) +{ + lengthToWidgets(input, combo, to_utf8(len), defaultUnit); +} + + +double widgetToDouble(QLineEdit const * input) +{ + QString const text = input->text(); + if (text.isEmpty()) + return 0.0; + + return text.trimmed().toDouble(); +} + + +string widgetToDoubleStr(QLineEdit const * input) { - if (len.value() == 0) - lengthToWidgets(input, combo, "auto", defaultUnit); - else - lengthToWidgets(input, combo, len, defaultUnit); + QString const text = input->text(); + if (text.isEmpty()) + return string(); + + return convert(text.trimmed().toDouble()); +} + + +void doubleToWidget(QLineEdit * input, double const & value, char f, int prec) +{ + QLocale loc; + loc.setNumberOptions(QLocale::OmitGroupSeparator); + input->setText(loc.toString(value, f, prec)); +} + + +void doubleToWidget(QLineEdit * input, string const & value, char f, int prec) +{ + doubleToWidget(input, convert(value), f, prec); } @@ -160,72 +199,6 @@ QString const qt_(string const & str) return toqstr(_(str)); } -namespace { - -class Sorter -{ -public: -#if !defined(USE_WCHAR_T) && defined(__GNUC__) - bool operator()(LanguagePair const & lhs, LanguagePair const & rhs) const - { - return lhs.first < rhs.first; - } -#else - Sorter() : loc_ok(true) - { - try { - loc_ = locale(""); - } catch (...) { - loc_ok = false; - } - } - - bool operator()(LanguagePair const & lhs, LanguagePair const & rhs) const - { - // FIXME: would that be "QString::localeAwareCompare()"? - if (loc_ok) - return loc_(fromqstr(lhs.first), fromqstr(rhs.first)); - else - return lhs.first < rhs.first; - } -private: - locale loc_; - bool loc_ok; -#endif -}; - - -} // namespace anon - - -QList languageData(bool character_dlg) -{ - size_t const offset = character_dlg ? 2 : 0; - vector langs(languages.size() + offset); - - if (character_dlg) { - langs[0].first = qt_("No change"); - langs[0].second = "ignore"; - langs[1].first = qt_("Reset"); - langs[1].second = "reset"; - } - - Languages::const_iterator it = languages.begin(); - for (size_t i = 0; i != languages.size(); ++i, ++it) { - langs[i + offset].first = qt_(it->second.display()); - langs[i + offset].second = toqstr(it->second.lang()); - } - - // Don't sort "ignore" and "reset" - vector::iterator begin = langs.begin() + offset; - sort(begin, langs.end(), Sorter()); - - QList list; - foreach (LanguagePair const & l, langs) - list.append(l); - return list; -} - void rescanTexStyles() { @@ -240,7 +213,7 @@ void rescanTexStyles() return; // FIXME UNICODE frontend::Alert::error(_("Could not update TeX information"), - bformat(_("The script `%s' failed."), from_utf8(command.absFilename()))); + bformat(_("The script `%1$s' failed."), from_utf8(command.absFilename()))); } @@ -270,6 +243,27 @@ QStringList texFileList(QString const & filename) return QList::fromSet(set); } +QString const externalLineEnding(docstring const & str) +{ +#ifdef Q_WS_MACX + // The MAC clipboard uses \r for lineendings, and we use \n + return toqstr(subst(str, '\n', '\r')); +#elif defined(Q_WS_WIN) + // Windows clipboard uses \r\n for lineendings, and we use \n + return toqstr(subst(str, from_ascii("\n"), from_ascii("\r\n"))); +#else + return toqstr(str); +#endif +} + + +docstring const internalLineEnding(QString const & str) +{ + docstring const s = subst(qstring_to_ucs4(str), + from_ascii("\r\n"), from_ascii("\n")); + return subst(s, '\r', '\n'); +} + QString internalPath(const QString & str) { @@ -530,14 +524,52 @@ QStringList fileFilters(QString const & desc) // we have: "*.{gif,png,jpg,bmp,pbm,ppm,tga,tif,xpm,xbm}" // but need: "*.cpp;*.cc;*.C;*.cxx;*.c++" FileFilterList filters(qstring_to_ucs4(desc)); - LYXERR0("DESC: " << fromqstr(desc)); + //LYXERR0("DESC: " << desc); QStringList list; for (size_t i = 0; i != filters.filters_.size(); ++i) { QString f = filters.filters_[i].toString(); - LYXERR0("FILTER: " << fromqstr(f)); + //LYXERR0("FILTER: " << f); list.append(f); } return list; } + +QString guiName(string const & type, BufferParams const & bp) +{ + if (type == "tableofcontents") + return qt_("Table of Contents"); + if (type == "child") + return qt_("Child Documents"); + if (type == "graphics") + return qt_("List of Graphics"); + if (type == "equation") + return qt_("List of Equations"); + if (type == "footnote") + return qt_("List of Footnotes"); + if (type == "listing") + return qt_("List of Listings"); + if (type == "index") + return qt_("List of Indexes"); + if (type == "marginalnote") + return qt_("List of Marginal notes"); + if (type == "note") + return qt_("List of Notes"); + if (type == "citation") + return qt_("List of Citations"); + if (type == "label") + return qt_("Labels and References"); + if (type == "branch") + return qt_("List of Branches"); + if (type == "change") + return qt_("List of Changes"); + + FloatList const & floats = bp.documentClass().floats(); + if (floats.typeExist(type)) + return qt_(floats.getType(type).listName()); + + return qt_(type); +} + + } // namespace lyx