mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-04 14:20:05 +00:00
963a0aa466
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.
100 lines
2.1 KiB
C++
100 lines
2.1 KiB
C++
// -*- C++ -*-
|
|
/**
|
|
* \file InsetNewpage.h
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author André Pönitz
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#ifndef INSET_NEWPAGE_H
|
|
#define INSET_NEWPAGE_H
|
|
|
|
#include "Inset.h"
|
|
|
|
|
|
namespace lyx {
|
|
|
|
class InsetNewpageParams
|
|
{
|
|
public:
|
|
/// The different kinds of spaces we support
|
|
enum Kind {
|
|
///
|
|
NEWPAGE,
|
|
///
|
|
PAGEBREAK,
|
|
///
|
|
CLEARPAGE,
|
|
///
|
|
CLEARDOUBLEPAGE,
|
|
///
|
|
NOPAGEBREAK
|
|
};
|
|
///
|
|
InsetNewpageParams() : kind(NEWPAGE) {}
|
|
///
|
|
void write(std::ostream & os) const;
|
|
///
|
|
void read(Lexer & lex);
|
|
///
|
|
Kind kind;
|
|
};
|
|
|
|
|
|
class InsetNewpage : public Inset
|
|
{
|
|
public:
|
|
///
|
|
InsetNewpage();
|
|
///
|
|
explicit InsetNewpage(InsetNewpageParams const & par);
|
|
///
|
|
static void string2params(std::string const &, InsetNewpageParams &);
|
|
///
|
|
static std::string params2string(InsetNewpageParams const &);
|
|
private:
|
|
///
|
|
InsetCode lyxCode() const override { return NEWPAGE_CODE; }
|
|
///
|
|
void metrics(MetricsInfo &, Dimension &) const override;
|
|
///
|
|
void draw(PainterInfo & pi, int x, int y) const override;
|
|
///
|
|
void latex(otexstream &, OutputParams const &) const override;
|
|
///
|
|
int plaintext(odocstringstream & ods, OutputParams const & op,
|
|
size_t max_length = INT_MAX) const override;
|
|
///
|
|
void docbook(XMLStream &, OutputParams const &) const override;
|
|
///
|
|
docstring xhtml(XMLStream &, OutputParams const &) const override;
|
|
///
|
|
void read(Lexer & lex) override;
|
|
///
|
|
void write(std::ostream & os) const override;
|
|
///
|
|
int rowFlags() const override { return (params_.kind == InsetNewpageParams::NOPAGEBREAK) ? Inline : Display; }
|
|
///
|
|
docstring insetLabel() const;
|
|
///
|
|
ColorCode ColorName() const;
|
|
///
|
|
std::string contextMenuName() const override;
|
|
///
|
|
Inset * clone() const override { return new InsetNewpage(*this); }
|
|
///
|
|
void doDispatch(Cursor & cur, FuncRequest & cmd) override;
|
|
///
|
|
bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const override;
|
|
|
|
///
|
|
InsetNewpageParams params_;
|
|
};
|
|
|
|
} // namespace lyx
|
|
|
|
#endif // INSET_NEWPAGE_H
|