mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 19:25:39 +00:00
Make it possible to uses non-ascii labelstring, endlabelstring and
labelstring_appendix in layout files * src/text2.C (LyXText::setLayout): Translate labelwidthstring for paragraph (LyXText::getStringToIndex): labelwidthstring is now a docstring * src/buffer.[Ch] (Buffer::translateLabel): New method for translating a label if it is not already translated by the user in the layout file * src/lyxtext.h (setParagraph): labelwidthstring is now a docstring * src/support/lstrings.[Ch] (bool isAscii): New utility function: Determine whether a docstring contains only pure ascii * src/text3.C (LyXText::dispatch): setParagraph() now takes a docstring * src/lyxlayout.C (LyXLayout::read): Don't use from_ascii when reading labelstring_, endlabelstring_ and labelstring_appendix_ * src/buffer_funcs.C (setLabel): labelwidthstring is now a docstring (setLabel): Use Buffer::translateLabel instead of Buffer::B_ to translate labels (expandLabel): ditto git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15855 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
1354f4b6d6
commit
7e7d28a0ca
12
src/buffer.C
12
src/buffer.C
@ -1445,6 +1445,18 @@ docstring const Buffer::B_(string const & l10n) const
|
||||
}
|
||||
|
||||
|
||||
docstring const Buffer::translateLabel(docstring const & label) const
|
||||
{
|
||||
if (support::isAscii(label))
|
||||
// Probably standard layout, try to translate
|
||||
return B_(to_ascii(label));
|
||||
else
|
||||
// This must be a user defined layout. We can not translate
|
||||
// this, since gettext accepts only ascii keys.
|
||||
return label;
|
||||
}
|
||||
|
||||
|
||||
bool Buffer::isClean() const
|
||||
{
|
||||
return pimpl_->lyx_clean;
|
||||
|
@ -170,6 +170,8 @@ public:
|
||||
Language const * getLanguage() const;
|
||||
/// get l10n translated to the buffers language
|
||||
docstring const B_(std::string const & l10n) const;
|
||||
/// translate \p label to the buffer language if possible
|
||||
docstring const translateLabel(docstring const & label) const;
|
||||
|
||||
///
|
||||
int runChktex();
|
||||
|
@ -43,8 +43,6 @@
|
||||
#include "support/fs_extras.h"
|
||||
#include "support/lyxlib.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/filesystem/operations.hpp>
|
||||
|
||||
@ -376,7 +374,7 @@ void setLabel(Buffer const & buf, ParIterator & it)
|
||||
|
||||
if (layout->margintype == MARGIN_MANUAL) {
|
||||
if (par.params().labelWidthString().empty())
|
||||
par.setLabelWidthString(layout->labelstring());
|
||||
par.setLabelWidthString(buf.translateLabel(layout->labelstring()));
|
||||
} else {
|
||||
par.setLabelWidthString(docstring());
|
||||
}
|
||||
@ -468,8 +466,7 @@ void setLabel(Buffer const & buf, ParIterator & it)
|
||||
int number = counters.value(from_ascii("bibitem"));
|
||||
if (par.bibitem())
|
||||
par.bibitem()->setCounter(number);
|
||||
// FIXME UNICODE
|
||||
par.params().labelString(buf.B_(to_ascii(layout->labelstring())));
|
||||
par.params().labelString(buf.translateLabel(layout->labelstring()));
|
||||
// In biblio should't be following counters but...
|
||||
} else if (layout->labeltype == LABEL_SENSITIVE) {
|
||||
// Search for the first float or wrap inset in the iterator
|
||||
@ -495,16 +492,14 @@ void setLabel(Buffer const & buf, ParIterator & it)
|
||||
s = bformat(_("%1$s #:"), buf.B_(fl.name()));
|
||||
} else {
|
||||
// par->SetLayout(0);
|
||||
// FIXME UNICODE
|
||||
s = buf.B_(to_ascii(layout->labelstring()));
|
||||
s = buf.translateLabel(layout->labelstring());
|
||||
}
|
||||
|
||||
par.params().labelString(s);
|
||||
} else if (layout->labeltype == LABEL_NO_LABEL)
|
||||
par.params().labelString(docstring());
|
||||
else
|
||||
// FIXME UNICODE
|
||||
par.params().labelString(buf.B_(to_ascii(layout->labelstring())));
|
||||
par.params().labelString(buf.translateLabel(layout->labelstring()));
|
||||
}
|
||||
|
||||
} // anon namespace
|
||||
@ -596,9 +591,9 @@ docstring expandLabel(Buffer const & buf,
|
||||
{
|
||||
LyXTextClass const & tclass = buf.params().getLyXTextClass();
|
||||
|
||||
// FIXME UNICODE
|
||||
docstring fmt = buf.B_(to_ascii(appendix ? layout->labelstring_appendix()
|
||||
: layout->labelstring()));
|
||||
docstring fmt = buf.translateLabel(appendix ?
|
||||
layout->labelstring_appendix() :
|
||||
layout->labelstring());
|
||||
|
||||
// handle 'inherited level parts' in 'fmt',
|
||||
// i.e. the stuff between '@' in '@Section@.\arabic{subsection}'
|
||||
|
@ -451,17 +451,17 @@ bool LyXLayout::read(LyXLex & lexrc, LyXTextClass const & tclass)
|
||||
|
||||
case LT_LABELSTRING: // label string definition
|
||||
if (lexrc.next())
|
||||
labelstring_ = lyx::from_ascii(trim(lexrc.getString()));
|
||||
labelstring_ = trim(lexrc.getDocString());
|
||||
break;
|
||||
|
||||
case LT_ENDLABELSTRING: // endlabel string definition
|
||||
if (lexrc.next())
|
||||
endlabelstring_ = lyx::from_ascii(trim(lexrc.getString()));
|
||||
endlabelstring_ = trim(lexrc.getDocString());
|
||||
break;
|
||||
|
||||
case LT_LABELSTRING_APPENDIX: // label string appendix definition
|
||||
if (lexrc.next())
|
||||
labelstring_appendix_ = lyx::from_ascii(trim(lexrc.getString()));
|
||||
labelstring_appendix_ = trim(lexrc.getDocString());
|
||||
break;
|
||||
|
||||
case LT_LABELCOUNTER: // name of counter to use
|
||||
|
@ -260,7 +260,7 @@ public:
|
||||
void setParagraph(LCursor & cur,
|
||||
Spacing const & spacing,
|
||||
LyXAlignment align,
|
||||
std::string const & labelwidthstring,
|
||||
docstring const & labelwidthstring,
|
||||
bool noindent);
|
||||
|
||||
/* these things are for search and replace */
|
||||
|
@ -279,6 +279,16 @@ int hexToInt(docstring const & str)
|
||||
}
|
||||
|
||||
|
||||
bool isAscii(docstring const & str)
|
||||
{
|
||||
int const len = str.length();
|
||||
for (int i = 0; i < len; ++i)
|
||||
if (str[i] >= 0x80)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
char lowercase(char c)
|
||||
{
|
||||
return char(tolower(c));
|
||||
|
@ -72,6 +72,9 @@ bool isHex(lyx::docstring const & str);
|
||||
|
||||
int hexToInt(lyx::docstring const & str);
|
||||
|
||||
/// is \p str pure ascii?
|
||||
bool isAscii(docstring const & str);
|
||||
|
||||
///
|
||||
char lowercase(char c);
|
||||
|
||||
|
@ -352,7 +352,7 @@ void LyXText::setLayout(Buffer const & buffer, pit_type start, pit_type end,
|
||||
for (pit_type pit = start; pit != end; ++pit) {
|
||||
pars_[pit].applyLayout(lyxlayout);
|
||||
if (lyxlayout->margintype == MARGIN_MANUAL)
|
||||
pars_[pit].setLabelWidthString(lyxlayout->labelstring());
|
||||
pars_[pit].setLabelWidthString(buffer.translateLabel(lyxlayout->labelstring()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -604,7 +604,7 @@ docstring LyXText::getStringToIndex(LCursor const & cur)
|
||||
|
||||
void LyXText::setParagraph(LCursor & cur,
|
||||
Spacing const & spacing, LyXAlignment align,
|
||||
string const & labelwidthstring, bool noindent)
|
||||
docstring const & labelwidthstring, bool noindent)
|
||||
{
|
||||
BOOST_ASSERT(cur.text());
|
||||
// make sure that the depth behind the selection are restored, too
|
||||
@ -628,8 +628,7 @@ void LyXText::setParagraph(LCursor & cur,
|
||||
else
|
||||
params.align(align);
|
||||
}
|
||||
// FIXME UNICODE
|
||||
par.setLabelWidthString(from_ascii(labelwidthstring));
|
||||
par.setLabelWidthString(labelwidthstring);
|
||||
params.noindent(noindent);
|
||||
}
|
||||
}
|
||||
|
@ -1411,7 +1411,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
|
||||
}
|
||||
|
||||
setLayout(cur, tclass.defaultLayoutName());
|
||||
setParagraph(cur, Spacing(), LYX_ALIGN_LAYOUT, string(), 0);
|
||||
setParagraph(cur, Spacing(), LYX_ALIGN_LAYOUT, docstring(), 0);
|
||||
insertInset(cur, new InsetFloatList(to_utf8(cmd.argument())));
|
||||
cur.posRight();
|
||||
} else {
|
||||
@ -1455,11 +1455,10 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
|
||||
lex.setStream(is);
|
||||
ParagraphParameters params;
|
||||
params.read(lex);
|
||||
// FIXME UNICODE
|
||||
setParagraph(cur,
|
||||
params.spacing(),
|
||||
params.align(),
|
||||
to_ascii(params.labelWidthString()),
|
||||
params.labelWidthString(),
|
||||
params.noindent());
|
||||
cur.message(_("Paragraph layout set"));
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user