lyx_mirror/src/insets/InsetCitation.h
Juergen Spitzmueller e15a8f3551 Extend LATEXIFY command param handling and add literal param.
File format change.

This allows for the relevant InsetCommand-based dialogs (such as
citation text before/after, Bibitem label, hyperlink name etc.)
to provide both the input of verbatim code or text that is transformed
to proper LaTeX code.

Some dialogs (Nomencl, Href) already had some methods (although they
could not be toggled), which are now centralized and streamlined.

The initial work of this patch has been done by Georg Baum (see
http://www.lyx.org/trac/attachment/ticket/2751/x.diff)

Fixes: #2751, #8227.
2017-01-30 07:44:55 +01:00

132 lines
3.2 KiB
C++

// -*- C++ -*-
/**
* \file InsetCitation.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Angus Leeming
* \author Herbert Voß
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSET_CITATION_H
#define INSET_CITATION_H
#include "InsetCommand.h"
#include "Citation.h"
namespace lyx {
/////////////////////////////////////////////////////////////////////////
//
// InsetCitation
//
/////////////////////////////////////////////////////////////////////////
/// Used to insert citations
class InsetCitation : public InsetCommand
{
public:
///
InsetCitation(Buffer * buf, InsetCommandParams const &);
///
~InsetCitation();
///
bool addKey(std::string const & key);
/// \name Public functions inherited from Inset class
//@{
///
bool isLabeled() const { return true; }
///
bool hasSettings() const { return true; }
///
docstring toolTip(BufferView const & bv, int x, int y) const;
///
void doDispatch(Cursor & cur, FuncRequest & cmd);
///
bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const;
///
InsetCode lyxCode() const { return CITE_CODE; }
///
void latex(otexstream &, OutputParams const &) const;
///
int plaintext(odocstringstream & ods, OutputParams const & op,
size_t max_length = INT_MAX) const;
///
int docbook(odocstream &, OutputParams const &) const;
///
docstring xhtml(XHTMLStream &, OutputParams const &) const;
///
void toString(odocstream &) const;
///
void forOutliner(docstring &, size_t const, bool const) const;
///
void updateBuffer(ParIterator const & it, UpdateType);
///
void addToToc(DocIterator const & di, bool output_active,
UpdateType utype, TocBackend & backend) const;
///
std::string contextMenuName() const;
//@}
/// \name Static public methods obligated for InsetCommand derived classes
//@{
///
static ParamInfo const & findInfo(std::string const &);
///
static std::string defaultCommand() { return "cite"; }
///
static bool isCompatibleCommand(std::string const &);
//@}
///
CitationStyle getCitationStyle(BufferParams const & bp, std::string const & input,
std::vector<CitationStyle> const & valid_styles) const;
///
std::map<docstring, docstring> getQualifiedLists(docstring const p) const;
private:
/// tries to make a pretty label and makes a basic one if not
docstring generateLabel(bool for_xhtml = false) const;
/// makes a pretty label
docstring complexLabel(bool for_xhtml = false) const;
/// makes a very basic label, in case we can't make a pretty one
docstring basicLabel(bool for_xhtml = false) const;
/// \name Private functions inherited from Inset class
//@{
///
Inset * clone() const { return new InsetCitation(*this); }
//@}
/// \name Private functions inherited from InsetCommand class
//@{
///
docstring screenLabel() const;
//@}
/// we'll eventually want to be able to get info on this from the
/// various CiteEngines
static ParamInfo param_info_;
///
struct Cache {
Cache() : recalculate(true) {}
///
bool recalculate;
///
docstring generated_label;
///
docstring screen_label;
};
///
mutable Cache cache;
};
} // namespace lyx
#endif // INSET_CITATION_H