lyx_mirror/src/insets/InsetListings.h
Jean-Marc Lasgouttes ba738d0167 Use new rowFlags() values to remove some inset hardcoding.
The enum DisplayType is replaced with the flags RowFlags that can be
combined. Here is the correspondence between the old DisplayType and
the new Inset::RowFlags:

DisplayType   RowFLags             Meaning
 Inline        Inline               plain inline inset
  --           BreakBefore          row ends before this inset
  --           BreakAfter           the row ends after this inset
 AlignCenter   Display	            the inset is centered on its own row
 AlignLeft     Display | AlignLeft  the inset is left-aligned on its row
 AlignRight    Display | AlignRight the inset is right-aligned on its row
  --           RowAfter             an extra row is needed after this inset

Display is just a shortcut for BreakBefore | BreakAfter.

The flags for the newline inset will be BreakAfter | RowAfter,
while the separator inset will just use BreakAfter.

This groundwork does not introduce any new feature at this point. It
aims to remve the numerous isNewLine and isSeparator all over the
code, and to eventually optional break after some insets like spaces
(see #11621).

Most display() methods are renamed to rowFlags(). Some are removed
because they returned Inline.

Now display() is only a helper function for hull insets.
2020-06-22 23:11:40 +02:00

92 lines
2.3 KiB
C++

// -*- C++ -*-
/**
* \file InsetListings.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Bo Peng
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSET_LISTINGS_H
#define INSET_LISTINGS_H
#include "InsetListingsParams.h"
namespace lyx {
class LaTeXFeatures;
struct TexString;
/////////////////////////////////////////////////////////////////////////
//
// InsetListings
//
/////////////////////////////////////////////////////////////////////////
/// A captionable and collapsible text inset for program listings.
class InsetListings : public InsetCaptionable
{
public:
///
InsetListings(Buffer *, InsetListingsParams const & par = InsetListingsParams());
///
~InsetListings();
///
static void string2params(std::string const &, InsetListingsParams &);
///
static std::string params2string(InsetListingsParams const &);
private:
///
bool isLabeled() const { return true; }
/// false is needed since listings do their own font handling.
bool inheritFont() const { return false; }
///
InsetCode lyxCode() const { return LISTINGS_CODE; }
/// lstinline is inlined, normal listing is displayed
RowFlags rowFlags() const;
///
docstring layoutName() const;
///
void write(std::ostream & os) const;
///
void read(Lexer & lex);
///
void latex(otexstream &, OutputParams const &) const;
///
docstring xhtml(XMLStream &, OutputParams const &) const;
///
void validate(LaTeXFeatures &) const;
///
bool showInsetDialog(BufferView *) const;
///
InsetListingsParams const & params() const { return params_; }
///
InsetListingsParams & params() { return params_; }
///
std::string contextMenuName() const;
///
void doDispatch(Cursor & cur, FuncRequest & cmd);
///
bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const;
///
Inset * clone() const { return new InsetListings(*this); }
///
docstring const buttonLabel(BufferView const & bv) const;
///
TexString getCaption(OutputParams const &) const;
///
bool insetAllowed(InsetCode c) const { return c == CAPTION_CODE || c == QUOTE_CODE; }
///
Encoding const * forcedEncoding(Encoding const *, Encoding const *) const;
///
InsetListingsParams params_;
};
} // namespace lyx
#endif // INSET_LISTINGS_H