#include "lyxlex.h"
#include "FontLoader.h"
#include "support/lstrings.h"
+#include "bufferparams.h" // stateText
using std::ostream;
using std::endl;
/// Increases font size by one
LyXFont & LyXFont::incSize()
{
- switch(size()) {
+ switch (size()) {
case SIZE_HUGER: break;
case SIZE_HUGE: setSize(SIZE_HUGER); break;
case SIZE_LARGEST: setSize(SIZE_HUGE); break;
void LyXFont::update(LyXFont const & newfont,
Language const * document_language, bool toggleall)
{
- if(newfont.family() == family() && toggleall)
+ if (newfont.family() == family() && toggleall)
setFamily(INHERIT_FAMILY); // toggle 'back'
else if (newfont.family() != IGNORE_FAMILY)
setFamily(newfont.family());
break;
}
- if(newfont.shape() == shape() && toggleall)
+ if (newfont.shape() == shape() && toggleall)
setShape(INHERIT_SHAPE); // toggle 'back'
else if (newfont.shape() != IGNORE_SHAPE)
setShape(newfont.shape());
setNoun(setMisc(newfont.noun(), noun()));
setLatex(setMisc(newfont.latex(), latex()));
- if (newfont.language() != ignore_language)
- if (language() == newfont.language())
- if (language() == document_language)
- setLanguage(default_language);
- else
- setLanguage(document_language);
+ setNumber(setMisc(newfont.number(), number()));
+ if (newfont.language() == language() && toggleall)
+ if (language() == document_language)
+ setLanguage(default_language);
else
- setLanguage(newfont.language());
+ setLanguage(document_language);
+ else if (newfont.language() != ignore_language)
+ setLanguage(newfont.language());
if (newfont.color() == color() && toggleall)
setColor(LColor::inherit); // toggle 'back'
/// Build GUI description of font state
-string LyXFont::stateText() const
+string const LyXFont::stateText(BufferParams * params) const
{
-#ifdef HAVE_SSTREAM
std::ostringstream ost;
-#else
- char str[1024];
- ostrstream ost(str, 1024);
-#endif
if (family() != INHERIT_FAMILY)
ost << _(GUIFamilyNames[family()]) << ", ";
if (series() != INHERIT_SERIES)
ost << _("Noun ") << _(GUIMiscNames[noun()]) << ", ";
if (latex() != INHERIT)
ost << _("Latex ") << _(GUIMiscNames[latex()]) << ", ";
- //if (buf.empty())
- // ost << _("Default");
- unsigned int opos = ost.tellp();
- lyxerr << "Opos: " << opos << endl;
- if (opos == 0)
+ if (bits == inherit)
ost << _("Default") << ", ";
- ost << _("Language: ") << _(language()->display.c_str());
-#ifdef HAVE_SSTREAM
+ if (!params || (language() != params->language))
+ ost << _("Language: ") << _(language()->display()) << ", ";
+ if (number() != OFF)
+ ost << _(" Number ") << _(GUIMiscNames[number()]);
+
string buf(ost.str().c_str());
-#else
- ost << '\0';
- string buf(ost.str());
-#endif
buf = strip(buf, ' ');
buf = strip(buf, ',');
return buf;
}
+#if 0
/// Sets size after GUI name
LyXFont & LyXFont::setGUISize(string const & siz)
{
-#warning this might be wrong.
+ // CHECK this might be wrong.
/// ??????
// this is how it was how it was done in the lyx repository...
// but this does not make sense.
setColor(lcolor.getFromGUIName(siz));
return *this;
}
+#endif
// Returns size in latex format
-string LyXFont::latexSize() const
+string const LyXFont::latexSize() const
{
return LaTeXSizeNames[size()];
}
if (orgfont.emph() != emph()) {
os << "\\emph " << LyXMiscNames[emph()] << " \n";
}
+ if (orgfont.number() != number()) {
+ os << "\\numeric " << LyXMiscNames[number()] << " \n";
+ }
if (orgfont.underbar() != underbar()) {
// This is only for backwards compatibility
switch (underbar()) {
}
}
if (orgfont.color() != color()) {
- os << "\\color " << lcolor.getLyXName(color()) << "\n";
+ // To make us file compatible with older
+ // lyx versions we emit "default" instead
+ // of "inherit"
+ string col_str(lcolor.getLyXName(color()));
+ if (col_str == "inherit") col_str = "default";
+ os << "\\color " << col_str << "\n";
}
if (orgfont.language() != language()) {
if (language())
- os << "\\lang " << language()->lang << "\n";
+ os << "\\lang " << language()->lang() << "\n";
else
os << "\\lang unknown\n";
}
int count = 0;
bool env = false;
- if (language() != base.language() && language() != prev.language()) {
+ if (language()->babel() != base.language()->babel() &&
+ language()->babel() != prev.language()->babel()) {
if (isRightToLeft() != prev.isRightToLeft()) {
if (isRightToLeft()) {
os << "\\R{";
count += 3;
- env = true; //We have opened a new environment
} else {
os << "\\L{";
count += 3;
- env = true; //We have opened a new environment
}
} else {
string tmp = '{' +
subst(lyxrc.language_command_begin,
- "$$lang", language()->lang);
+ "$$lang", language()->babel());
os << tmp;
count += tmp.length();
- env = true; //We have opened a new environment
}
}
+ if (number() == ON && prev.number() != ON &&
+ language()->lang() == "hebrew") {
+ os << "{\\beginL ";
+ count += 9;
+ }
+
LyXFont f = *this;
f.reduce(base);
count += strlen(LaTeXShapeNames[f.shape()]) + 2;
env = true; //We have opened a new environment
}
- if (f.color() != LColor::inherit) {
+ if (f.color() != LColor::inherit && f.color() != LColor::ignore) {
os << "\\textcolor{"
<< lcolor.getLaTeXName(f.color())
<< "}{";
int count = 0;
bool env = false;
- if (language() != base.language() && language() != next.language()) {
- os << "}";
- ++count;
- env = true; // Size change need not bother about closing env.
- }
-
LyXFont f = *this; // why do you need this?
f.reduce(base); // why isn't this just "reduce(base);" (Lgb)
// Because this function is const. Everything breaks if this
// method changes the font it represents. There is no speed penalty
// by using the temporary. (Asger)
+
if (f.family() != INHERIT_FAMILY) {
os << '}';
++count;
++count;
env = true; // Size change need not bother about closing env.
}
- if (f.color() != LColor::inherit) {
+ if (f.color() != LColor::inherit && f.color() != LColor::ignore) {
os << '}';
++count;
env = true; // Size change need not bother about closing env.
}
}
+ if (number() == ON && next.number() != ON &&
+ language()->lang() == "hebrew") {
+ os << "\\endL}";
+ count += 6;
+ }
+
+ if (language() != base.language() && language() != next.language()) {
+ os << "}";
+ ++count;
+ }
+
return count;
}