mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 18:08:10 +00:00
Allow for some argument visual customization
This commit is contained in:
parent
b4c9e902ad
commit
e0f392e075
@ -877,6 +877,8 @@ void Layout::readArgument(Lexer & lex)
|
|||||||
arg.mandatory = false;
|
arg.mandatory = false;
|
||||||
bool error = false;
|
bool error = false;
|
||||||
bool finished = false;
|
bool finished = false;
|
||||||
|
arg.font = inherit_font;
|
||||||
|
arg.labelfont = inherit_font;
|
||||||
unsigned int nr;
|
unsigned int nr;
|
||||||
lex >> nr;
|
lex >> nr;
|
||||||
while (!finished && lex.isOK() && !error) {
|
while (!finished && lex.isOK() && !error) {
|
||||||
@ -905,6 +907,13 @@ void Layout::readArgument(Lexer & lex)
|
|||||||
} else if (tok == "requires") {
|
} else if (tok == "requires") {
|
||||||
lex.next();
|
lex.next();
|
||||||
arg.requires = lex.getString();
|
arg.requires = lex.getString();
|
||||||
|
} else if (tok == "decoration") {
|
||||||
|
lex.next();
|
||||||
|
arg.decoration = lex.getString();
|
||||||
|
} else if (tok == "font") {
|
||||||
|
arg.font = lyxRead(lex, arg.font);
|
||||||
|
} else if (tok == "labelfont") {
|
||||||
|
arg.labelfont = lyxRead(lex, arg.labelfont);
|
||||||
} else {
|
} else {
|
||||||
lex.printError("Unknown tag");
|
lex.printError("Unknown tag");
|
||||||
error = true;
|
error = true;
|
||||||
|
@ -95,6 +95,9 @@ public:
|
|||||||
docstring rdelim;
|
docstring rdelim;
|
||||||
docstring tooltip;
|
docstring tooltip;
|
||||||
std::string requires;
|
std::string requires;
|
||||||
|
std::string decoration;
|
||||||
|
FontInfo font;
|
||||||
|
FontInfo labelfont;
|
||||||
};
|
};
|
||||||
///
|
///
|
||||||
typedef std::map<unsigned int, latexarg> LaTeXArgMap;
|
typedef std::map<unsigned int, latexarg> LaTeXArgMap;
|
||||||
|
@ -34,7 +34,8 @@ namespace lyx {
|
|||||||
|
|
||||||
|
|
||||||
InsetArgument::InsetArgument(Buffer * buf, string const & name)
|
InsetArgument::InsetArgument(Buffer * buf, string const & name)
|
||||||
: InsetCollapsable(buf), name_(name), labelstring_(docstring())
|
: InsetCollapsable(buf), name_(name), labelstring_(docstring()),
|
||||||
|
font_(inherit_font), labelfont_(inherit_font), decoration_(string())
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -102,6 +103,9 @@ void InsetArgument::updateBuffer(ParIterator const & it, UpdateType utype)
|
|||||||
support::rsplit(label, striplabel, '|');
|
support::rsplit(label, striplabel, '|');
|
||||||
labelstring_ = striplabel.empty() ? label: striplabel;
|
labelstring_ = striplabel.empty() ? label: striplabel;
|
||||||
tooltip_ = translateIfPossible((*lait).second.tooltip);
|
tooltip_ = translateIfPossible((*lait).second.tooltip);
|
||||||
|
font_ = (*lait).second.font;
|
||||||
|
labelfont_ = (*lait).second.labelfont;
|
||||||
|
decoration_ = (*lait).second.decoration;
|
||||||
} else {
|
} else {
|
||||||
labelstring_ = _("Unknown Argument");
|
labelstring_ = _("Unknown Argument");
|
||||||
tooltip_ = _("Argument not known in this Layout. Will be supressed in the output.");
|
tooltip_ = _("Argument not known in this Layout. Will be supressed in the output.");
|
||||||
@ -202,6 +206,43 @@ string InsetArgument::contextMenuName() const
|
|||||||
return "context-argument";
|
return "context-argument";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FontInfo InsetArgument::getFont() const
|
||||||
|
{
|
||||||
|
if (font_ != inherit_font)
|
||||||
|
return font_;
|
||||||
|
return getLayout().font();
|
||||||
|
}
|
||||||
|
|
||||||
|
FontInfo InsetArgument::getLabelfont() const
|
||||||
|
{
|
||||||
|
if (labelfont_ != inherit_font)
|
||||||
|
return labelfont_;
|
||||||
|
return getLayout().labelfont();
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
InsetLayout::InsetDecoration translateDecoration(std::string const & str)
|
||||||
|
{
|
||||||
|
if (support::compare_ascii_no_case(str, "classic") == 0)
|
||||||
|
return InsetLayout::CLASSIC;
|
||||||
|
if (support::compare_ascii_no_case(str, "minimalistic") == 0)
|
||||||
|
return InsetLayout::MINIMALISTIC;
|
||||||
|
if (support::compare_ascii_no_case(str, "conglomerate") == 0)
|
||||||
|
return InsetLayout::CONGLOMERATE;
|
||||||
|
return InsetLayout::DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
}// namespace anon
|
||||||
|
|
||||||
|
InsetLayout::InsetDecoration InsetArgument::decoration() const
|
||||||
|
{
|
||||||
|
InsetLayout::InsetDecoration dec = getLayout().decoration();
|
||||||
|
if (!decoration_.empty())
|
||||||
|
dec = translateDecoration(decoration_);
|
||||||
|
return dec == InsetLayout::DEFAULT ? InsetLayout::CLASSIC : dec;
|
||||||
|
}
|
||||||
|
|
||||||
void InsetArgument::latexArgument(otexstream & os,
|
void InsetArgument::latexArgument(otexstream & os,
|
||||||
OutputParams const & runparams_in, docstring const & ldelim,
|
OutputParams const & runparams_in, docstring const & ldelim,
|
||||||
docstring const & rdelim) const
|
docstring const & rdelim) const
|
||||||
|
@ -66,6 +66,12 @@ public:
|
|||||||
/// \name Public functions inherited from InsetCollapsable class
|
/// \name Public functions inherited from InsetCollapsable class
|
||||||
//@{
|
//@{
|
||||||
///
|
///
|
||||||
|
InsetLayout::InsetDecoration decoration() const;
|
||||||
|
///
|
||||||
|
FontInfo getFont() const;
|
||||||
|
///
|
||||||
|
FontInfo getLabelfont() const;
|
||||||
|
///
|
||||||
void setButtonLabel();
|
void setButtonLabel();
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
@ -78,6 +84,12 @@ private:
|
|||||||
docstring labelstring_;
|
docstring labelstring_;
|
||||||
///
|
///
|
||||||
docstring tooltip_;
|
docstring tooltip_;
|
||||||
|
///
|
||||||
|
FontInfo font_;
|
||||||
|
///
|
||||||
|
FontInfo labelfont_;
|
||||||
|
///
|
||||||
|
std::string decoration_;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/// \name Protected functions inherited from Inset class
|
/// \name Protected functions inherited from Inset class
|
||||||
|
@ -173,7 +173,9 @@ void InsetCollapsable::read(Lexer & lex)
|
|||||||
Dimension InsetCollapsable::dimensionCollapsed(BufferView const & bv) const
|
Dimension InsetCollapsable::dimensionCollapsed(BufferView const & bv) const
|
||||||
{
|
{
|
||||||
Dimension dim;
|
Dimension dim;
|
||||||
theFontMetrics(getLayout().labelfont()).buttonText(
|
FontInfo labelfont(getLabelfont());
|
||||||
|
labelfont.realize(sane_font);
|
||||||
|
theFontMetrics(labelfont).buttonText(
|
||||||
buttonLabel(bv), dim.wid, dim.asc, dim.des);
|
buttonLabel(bv), dim.wid, dim.asc, dim.des);
|
||||||
return dim;
|
return dim;
|
||||||
}
|
}
|
||||||
@ -184,7 +186,7 @@ void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
auto_open_[mi.base.bv] = mi.base.bv->cursor().isInside(this);
|
auto_open_[mi.base.bv] = mi.base.bv->cursor().isInside(this);
|
||||||
|
|
||||||
FontInfo tmpfont = mi.base.font;
|
FontInfo tmpfont = mi.base.font;
|
||||||
mi.base.font = getLayout().font();
|
mi.base.font = getFont();
|
||||||
mi.base.font.realize(tmpfont);
|
mi.base.font.realize(tmpfont);
|
||||||
|
|
||||||
BufferView const & bv = *mi.base.bv;
|
BufferView const & bv = *mi.base.bv;
|
||||||
@ -201,7 +203,7 @@ void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
case SubLabel: {
|
case SubLabel: {
|
||||||
InsetText::metrics(mi, dim);
|
InsetText::metrics(mi, dim);
|
||||||
// consider width of the inset label
|
// consider width of the inset label
|
||||||
FontInfo font(getLayout().labelfont());
|
FontInfo font(getLabelfont());
|
||||||
font.realize(sane_font);
|
font.realize(sane_font);
|
||||||
font.decSize();
|
font.decSize();
|
||||||
font.decSize();
|
font.decSize();
|
||||||
@ -253,7 +255,7 @@ void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const
|
|||||||
auto_open_[&bv] = bv.cursor().isInside(this);
|
auto_open_[&bv] = bv.cursor().isInside(this);
|
||||||
|
|
||||||
FontInfo tmpfont = pi.base.font;
|
FontInfo tmpfont = pi.base.font;
|
||||||
pi.base.font = getLayout().font();
|
pi.base.font = getFont();
|
||||||
pi.base.font.realize(tmpfont);
|
pi.base.font.realize(tmpfont);
|
||||||
|
|
||||||
// Draw button first -- top, left or only
|
// Draw button first -- top, left or only
|
||||||
@ -267,7 +269,7 @@ void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const
|
|||||||
button_dim.y1 = y - dimc.asc;
|
button_dim.y1 = y - dimc.asc;
|
||||||
button_dim.y2 = y + dimc.des;
|
button_dim.y2 = y + dimc.des;
|
||||||
|
|
||||||
FontInfo labelfont = getLayout().labelfont();
|
FontInfo labelfont = getLabelfont();
|
||||||
labelfont.setColor(labelColor());
|
labelfont.setColor(labelColor());
|
||||||
pi.pain.buttonText(x, y, buttonLabel(bv), labelfont,
|
pi.pain.buttonText(x, y, buttonLabel(bv), labelfont,
|
||||||
mouse_hover_[&bv]);
|
mouse_hover_[&bv]);
|
||||||
@ -334,7 +336,7 @@ void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const
|
|||||||
|
|
||||||
// the label below the text. Can be toggled.
|
// the label below the text. Can be toggled.
|
||||||
if (geometry(bv) == SubLabel) {
|
if (geometry(bv) == SubLabel) {
|
||||||
FontInfo font(getLayout().labelfont());
|
FontInfo font(getLabelfont());
|
||||||
font.realize(sane_font);
|
font.realize(sane_font);
|
||||||
font.decSize();
|
font.decSize();
|
||||||
font.decSize();
|
font.decSize();
|
||||||
|
@ -111,6 +111,10 @@ public:
|
|||||||
|
|
||||||
/// Default looks
|
/// Default looks
|
||||||
virtual InsetLayout::InsetDecoration decoration() const;
|
virtual InsetLayout::InsetDecoration decoration() const;
|
||||||
|
/// Inset font
|
||||||
|
virtual FontInfo getFont() const { return getLayout().font(); }
|
||||||
|
/// Label font
|
||||||
|
virtual FontInfo getLabelfont() const { return getLayout().labelfont(); }
|
||||||
///
|
///
|
||||||
enum Geometry {
|
enum Geometry {
|
||||||
TopButton,
|
TopButton,
|
||||||
|
@ -496,6 +496,8 @@ void InsetLayout::readArgument(Lexer & lex)
|
|||||||
arg.mandatory = false;
|
arg.mandatory = false;
|
||||||
bool error = false;
|
bool error = false;
|
||||||
bool finished = false;
|
bool finished = false;
|
||||||
|
arg.font = inherit_font;
|
||||||
|
arg.labelfont = inherit_font;
|
||||||
unsigned int nr;
|
unsigned int nr;
|
||||||
lex >> nr;
|
lex >> nr;
|
||||||
while (!finished && lex.isOK() && !error) {
|
while (!finished && lex.isOK() && !error) {
|
||||||
@ -524,6 +526,13 @@ void InsetLayout::readArgument(Lexer & lex)
|
|||||||
} else if (tok == "requires") {
|
} else if (tok == "requires") {
|
||||||
lex.next();
|
lex.next();
|
||||||
arg.requires = lex.getString();
|
arg.requires = lex.getString();
|
||||||
|
} else if (tok == "decoration") {
|
||||||
|
lex.next();
|
||||||
|
arg.decoration = lex.getString();
|
||||||
|
} else if (tok == "font") {
|
||||||
|
arg.font = lyxRead(lex, arg.font);
|
||||||
|
} else if (tok == "labelfont") {
|
||||||
|
arg.labelfont = lyxRead(lex, arg.labelfont);
|
||||||
} else {
|
} else {
|
||||||
lex.printError("Unknown tag");
|
lex.printError("Unknown tag");
|
||||||
error = true;
|
error = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user