lyx_mirror/src/insets/InsetListings.h
Jean-Marc Lasgouttes 963a0aa466 Implement Row::Element::row_flags
Move the enum definition RowFlags in its own include file, to avoid
loading Inset.h. Document it more thoroughly.

Rename RowAfter to AlwaysBreakAfter.

Add CanBreakInside (rows that can be themselves broken). This allow to
differentiate elements before bodyPos() and allows to remove a
parameter to shortenIfNeeded().

Make the Inset::rowFlags() method return int instead of RowFlags, as
should be done for all the bitwise flags. Remove the hand-made bitwise
operators.

Set R::E::row_flags when creating elements.
* INSET elements use the inset's rowFLags();
* virtual element forbid breaking before them, and inherit the *After
  flags from the previous element of the row;
* STRING elements usr CanBreakInside, except before bodyPos.

More stuff may be added later.
2021-12-07 17:04:47 +01:00

94 lines
2.5 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 override { return true; }
/// false is needed since listings do their own font handling.
bool inheritFont() const override { return false; }
///
InsetCode lyxCode() const override { return LISTINGS_CODE; }
/// lstinline is inlined, normal listing is displayed
int rowFlags() const override;
///
docstring layoutName() const override;
///
void write(std::ostream & os) const override;
///
void read(Lexer & lex) override;
///
void latex(otexstream &, OutputParams const &) const override;
///
docstring xhtml(XMLStream &, OutputParams const &) const override;
///
void docbook(XMLStream &, OutputParams const &) const override;
///
void validate(LaTeXFeatures &) const override;
///
bool showInsetDialog(BufferView *) const override;
///
InsetListingsParams const & params() const { return params_; }
///
InsetListingsParams & params() { return params_; }
///
std::string contextMenuName() const override;
///
void doDispatch(Cursor & cur, FuncRequest & cmd) override;
///
bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const override;
///
Inset * clone() const override { return new InsetListings(*this); }
///
docstring const buttonLabel(BufferView const & bv) const override;
///
TexString getCaption(OutputParams const &) const;
///
bool insetAllowed(InsetCode c) const override { return c == CAPTION_CODE || c == QUOTE_CODE; }
///
Encoding const * forcedEncoding(Encoding const *, Encoding const *) const override;
///
InsetListingsParams params_;
};
} // namespace lyx
#endif // INSET_LISTINGS_H