Enhance LyX by fixing bug 5587. We add a new ContentAsLabel tag to

InsetLayout, per Jurgen's suggestion, so that insets can be told to
display an abbreviated form of their content when closed.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32575 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2009-12-18 00:29:22 +00:00
parent e1ed39f8b4
commit 08b63ad3c6
7 changed files with 101 additions and 13 deletions

View File

@ -1,5 +1,5 @@
#LyX 2.0.0svn created this file. For more info see http://www.lyx.org/ #LyX 2.0.0svn created this file. For more info see http://www.lyx.org/
\lyxformat 372 \lyxformat 373
\begin_document \begin_document
\begin_header \begin_header
\textclass scrbook \textclass scrbook
@ -12868,6 +12868,43 @@ src/ColorCode.h
\begin_inset Flex CharStyle:Code \begin_inset Flex CharStyle:Code
status collapsed status collapsed
\begin_layout Plain Layout
ContentAsLabel
\end_layout
\end_inset
[
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
\emph on
0
\end_layout
\end_inset
,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
1
\end_layout
\end_inset
] Whether to use the content of the inset as the label, when the inset is
closed.
Default is false.
\end_layout
\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
CopyStyle CopyStyle
\end_layout \end_layout
@ -13121,6 +13158,7 @@ status collapsed
] Indicates whether the PlainLayout should be used or, instead, the user ] Indicates whether the PlainLayout should be used or, instead, the user
can change the paragraph style used in the inset. can change the paragraph style used in the inset.
Default is false.
\end_layout \end_layout
\begin_layout Description \begin_layout Description
@ -13141,6 +13179,7 @@ reference "des:FreeSpacing"
\end_inset \end_inset
). ).
Default is false.
\end_layout \end_layout
\begin_layout Description \begin_layout Description
@ -13201,6 +13240,7 @@ reference "des:KeepEmpty"
\end_inset \end_inset
). ).
Default is false.
\end_layout \end_layout
\begin_layout Description \begin_layout Description
@ -13409,13 +13449,43 @@ status collapsed
\end_inset \end_inset
] Whether multiple paragraphs are permitted in this inset. ] Whether multiple paragraphs are permitted in this inset.
This will also set CustomPars to the same value and ForcePlain to the opposite This will also set
value. \begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
CustomPars
\end_layout
\end_inset
to the same value and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
ForcePlain
\end_layout
\end_inset
to the opposite value.
These can be reset to other values, if they are used These can be reset to other values, if they are used
\emph on \emph on
after after
\emph default \emph default
MultiPar.
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
MultiPar
\end_layout
\end_inset
.
Default is true.
\end_layout \end_layout
\begin_layout Description \begin_layout Description
@ -13467,7 +13537,7 @@ protect
\emph on \emph on
not not
\emph default \emph default
whether the command should itself be protected.) whether the command should itself be protected.) Default is false.
\end_layout \end_layout
\begin_layout Description \begin_layout Description
@ -13504,12 +13574,13 @@ status collapsed
] As with paragraph styles (see page ] As with paragraph styles (see page
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand pageref
reference "des:PathThru" reference "des:PathThru"
\end_inset \end_inset
). ).
Default is false.
\end_layout \end_layout
\begin_layout Description \begin_layout Description

View File

@ -305,6 +305,7 @@ InsetLayout URL
LyXType standard LyXType standard
Decoration classic Decoration classic
LabelString URL LabelString URL
ContentAsLabel true
LatexName url LatexName url
LatexType command LatexType command
Requires url Requires url

View File

@ -73,10 +73,13 @@ import os, re, string, sys
# Incremented to format 19, 17 November 2009 by rgh # Incremented to format 19, 17 November 2009 by rgh
# Added InPreamble tag. # Added InPreamble tag.
# Incremented to format 20, 17 December 2009 by rgh
# Added ContentAsLabel tag.
# Do not forget to document format change in Customization # Do not forget to document format change in Customization
# Manual (section "Declaring a new text class"). # Manual (section "Declaring a new text class").
currentFormat = 19 currentFormat = 20
def usage(prog_name): def usage(prog_name):
@ -245,7 +248,7 @@ def convert(lines):
continue continue
# This just involved new features, not any changes to old ones # This just involved new features, not any changes to old ones
if format == 14 or format == 15 or format == 16 or format == 17 or format == 18: if format >= 14 and format <= 19:
i += 1 i += 1
continue continue

View File

@ -66,7 +66,7 @@ private:
}; };
// Keep the changes documented in the Customization manual. // Keep the changes documented in the Customization manual.
int const FORMAT = 19; int const FORMAT = 20;
bool layout2layout(FileName const & filename, FileName const & tempfile) bool layout2layout(FileName const & filename, FileName const & tempfile)

View File

@ -573,10 +573,14 @@ void InsetCollapsable::setLabel(docstring const & l)
} }
docstring const InsetCollapsable::buttonLabel(BufferView const &) const docstring const InsetCollapsable::buttonLabel(BufferView const & bv) const
{ {
return labelstring_.empty() ? docstring const label = labelstring_.empty() ?
translateIfPossible(getLayout().labelstring()) : labelstring_; translateIfPossible(getLayout().labelstring()) : labelstring_;
InsetLayout const & il = getLayout();
if (!il.contentaslabel() || geometry(bv) != ButtonOnly)
return label;
return getNewLabel(label);
} }

View File

@ -31,8 +31,8 @@ namespace lyx {
InsetLayout::InsetLayout() : InsetLayout::InsetLayout() :
name_(from_ascii("undefined")), lyxtype_(STANDARD), name_(from_ascii("undefined")), lyxtype_(STANDARD),
labelstring_(from_ascii("UNDEFINED")), decoration_(DEFAULT), labelstring_(from_ascii("UNDEFINED")), contentaslabel_(false),
latextype_(NOLATEXTYPE), font_(sane_font), decoration_(DEFAULT), latextype_(NOLATEXTYPE), font_(sane_font),
labelfont_(sane_font), bgcolor_(Color_error), labelfont_(sane_font), bgcolor_(Color_error),
htmlforcecss_ (false), htmlisblock_(true), htmlforcecss_ (false), htmlisblock_(true),
multipar_(true), custompars_(true), forceplain_(false), multipar_(true), custompars_(true), forceplain_(false),
@ -74,6 +74,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
{ {
enum { enum {
IL_BGCOLOR, IL_BGCOLOR,
IL_CONTENTASLABEL,
IL_COPYSTYLE, IL_COPYSTYLE,
IL_COUNTER, IL_COUNTER,
IL_CUSTOMPARS, IL_CUSTOMPARS,
@ -110,6 +111,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
LexerKeyword elementTags[] = { LexerKeyword elementTags[] = {
{ "bgcolor", IL_BGCOLOR }, { "bgcolor", IL_BGCOLOR },
{ "contentaslabel", IL_CONTENTASLABEL },
{ "copystyle", IL_COPYSTYLE }, { "copystyle", IL_COPYSTYLE },
{ "counter", IL_COUNTER}, { "counter", IL_COUNTER},
{ "custompars", IL_CUSTOMPARS }, { "custompars", IL_CUSTOMPARS },
@ -240,6 +242,9 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
case IL_NEEDPROTECT: case IL_NEEDPROTECT:
lex >> needprotect_; lex >> needprotect_;
break; break;
case IL_CONTENTASLABEL:
lex >> contentaslabel_;
break;
case IL_COPYSTYLE: { // initialize with a known style case IL_COPYSTYLE: { // initialize with a known style
docstring style; docstring style;
lex >> style; lex >> style;

View File

@ -66,6 +66,8 @@ public:
/// ///
docstring labelstring() const { return labelstring_; } docstring labelstring() const { return labelstring_; }
/// ///
bool contentaslabel() const { return contentaslabel_; }
///
InsetDecoration decoration() const { return decoration_; } InsetDecoration decoration() const { return decoration_; }
/// ///
InsetLaTeXType latextype() const { return latextype_; } InsetLaTeXType latextype() const { return latextype_; }
@ -143,6 +145,8 @@ private:
/// ///
docstring labelstring_; docstring labelstring_;
/// ///
bool contentaslabel_;
///
InsetDecoration decoration_; InsetDecoration decoration_;
/// ///
InsetLaTeXType latextype_; InsetLaTeXType latextype_;