*
* \author Dekel Tsur
*
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
*/
#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "support/lstrings.h"
-
+#include "support/tostr.h"
+#include "gettext.h"
#include "qt_helpers.h"
#include "lengthcombo.h"
-
-#include <qglobal.h>
+
#include <qlineedit.h>
+#include <qtextcodec.h>
-using std::pair;
using std::make_pair;
+using std::pair;
+
+
string makeFontName(string const & family, string const & foundry)
{
if (foundry.empty())
#endif
}
-
+
string widgetsToLength(QLineEdit const * input, LengthCombo const * combo)
{
QString length = input->text();
return string();
// don't return unit-from-choice if the input(field) contains a unit
- if (isValidGlueLength(length.latin1()))
- return length.latin1();
+ if (isValidGlueLength(fromqstr(length)))
+ return fromqstr(length);
LyXLength::UNIT unit = combo->currentLengthItem();
input->setText("");
} else {
combo->setCurrentItem(LyXLength(len).unit());
- input->setText(tostr(LyXLength(len).value()).c_str());
+ input->setText(toqstr(tostr(LyXLength(len).value())));
+ }
+}
+
+
+QString const toqstr(char const * str)
+{
+ QTextCodec * codec = QTextCodec::codecForLocale();
+
+ return codec->toUnicode(str);
+}
+
+
+QString const toqstr(string const & str)
+{
+ return toqstr(str.c_str());
+}
+
+
+QString const qt_(char const * str)
+{
+ return toqstr(_(str));
+}
+
+
+QString const qt_(string const & str)
+{
+ return toqstr(_(str));
+}
+
+
+string const fromqstr(QString const & str)
+{
+ QTextCodec * codec = QTextCodec::codecForLocale();
+ QCString tmpstr = codec->fromUnicode(str);
+ char const * tmpcstr = tmpstr;
+ return tmpcstr;
+}
+
+
+string const formatted(string const & text, int w)
+{
+ string sout;
+
+ if (text.empty())
+ return sout;
+
+ string::size_type curpos = 0;
+ string line;
+
+ for (;;) {
+ string::size_type const nxtpos1 = text.find(' ', curpos);
+ string::size_type const nxtpos2 = text.find('\n', curpos);
+ string::size_type const nxtpos = std::min(nxtpos1, nxtpos2);
+
+ string const word = nxtpos == string::npos ?
+ text.substr(curpos) : text.substr(curpos, nxtpos-curpos);
+
+ bool const newline = (nxtpos2 != string::npos &&
+ nxtpos2 < nxtpos1);
+
+ string const line_plus_word =
+ line.empty() ? word : line + ' ' + word;
+
+ // FIXME: make w be size_t
+ if (line_plus_word.length() >= w) {
+ sout += line + '\n';
+ if (newline) {
+ sout += word + '\n';
+ line.erase();
+ } else {
+ line = word;
+ }
+
+ } else if (newline) {
+ sout += line_plus_word + '\n';
+ line.erase();
+
+ } else {
+ if (!line.empty())
+ line += ' ';
+ line += word;
+ }
+
+ if (nxtpos == string::npos) {
+ if (!line.empty())
+ sout += line;
+ break;
+ }
+
+ curpos = nxtpos + 1;
}
+
+ return sout;
}