#include "ColorCode.h"
#include "InsetCode.h"
+#include "InsetLayout.h"
#include "LayoutEnums.h"
#include "OutputEnums.h"
#include "support/strfwd.h"
#include "support/types.h"
+#include <climits>
+
namespace lyx {
* Intented purpose is to sanitize internal state with regard to current
* Buffer.
**/
- virtual void initView() {};
+ virtual void initView() {}
/// \return true if this inset is labeled.
virtual bool isLabeled() const { return false; }
/// plain text output in ucs4 encoding
/// return the number of characters; in case of multiple lines of
/// output, add PLAINTEXT_NEWLINE to the number of chars in the last line
- virtual int plaintext(odocstream &, OutputParams const &) const = 0;
+ virtual int plaintext(odocstringstream &, OutputParams const &,
+ size_t max_length = INT_MAX) const = 0;
/// docbook output
virtual int docbook(odocstream & os, OutputParams const &) const;
/// XHTML output
virtual bool isActive() const { return nargs() > 0; }
/// can we click at the specified position ?
virtual bool clickable(int, int) const { return false; }
+ /// Move one cell backwards
+ virtual bool allowsCaptionVariation(std::string const &) const { return false; }
/// does this contain text that can be change track marked in DVI?
virtual bool canTrackChanges() const { return false; }
/// \return Context menu identifier. This function determines
/// whose Inset's menu should be shown for the given position.
- virtual docstring contextMenu(BufferView const & bv, int x, int y) const;
+ virtual std::string contextMenu(BufferView const & bv, int x, int y) const;
/// \return Context menu identifier for this inset.
/// This default implementation returns an empty string.
- virtual docstring contextMenuName() const;
+ virtual std::string contextMenuName() const;
- // FIXME This should really disappear in favor of
- // docstring name() const { return from_ascii(insetName(lyxCode()))); }
- // There's no reason to be using different names in different places.
- // But to do this we would need to change the file format, since the names
- // used there don't correspond to what is used here.
- ///
- virtual docstring name() const;
+ virtual docstring layoutName() const;
///
virtual InsetLayout const & getLayout() const;
+ ///
+ virtual bool isPassThru() const { return getLayout().isPassThru(); }
/// Is this inset's layout defined in the document's textclass?
bool undefined() const;
- /// used to toggle insets
- /// is the inset open?
- /// should this inset be handled like a normal character
+ /// should this inset be handled like a normal character?
+ /// (a character can be a letter or punctuation)
virtual bool isChar() const { return false; }
/// is this equivalent to a letter?
+ /// (a letter is a character that is considered part of a word)
virtual bool isLetter() const { return false; }
/// is this equivalent to a space (which is BTW different from
/// a line separator)?
/// Add an entry to the TocList
/// Pass a DocIterator that points at the paragraph containing
/// the inset
- virtual void addToToc(DocIterator const &) const {}
+ virtual void addToToc(DocIterator const & /* di */, bool /* output_active */) const {}
/// Collect BibTeX information
virtual void collectBibKeys(InsetIterator const &) const {}
/// Update the counters of this inset and of its contents.