// -*- C++ -*-
-/* This file is part of*
- * ======================================================
+/**
+ * \file insetcite.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team.
- *
- * ====================================================== */
+ * \author Angus Leeming
+ * \author Herbert Voß
+ *
+ * Full author contact details are available in file CREDITS.
+ */
#ifndef INSET_CITE_H
#define INSET_CITE_H
-#ifdef __GNUG__
-#pragma interface
-#endif
#include "insetcommand.h"
-#include "bibforms.h"
-#include <vector>
-class Buffer;
+#include "frontends/controllers/biblio.h"
+
-/** Used to insert citations
+namespace lyx {
+
+
+/** Used to insert citations
*/
-class InsetCitation: public InsetCommand {
+class InsetCitation : public InsetCommand {
public:
///
- enum State {
- CANCEL,
- OK,
- DOWN,
- UP,
- DELETE,
- ADD,
- BIBBRSR,
- CITEBRSR,
- ON,
- OFF
- };
+ InsetCitation(InsetCommandParams const &);
///
- InsetCitation() : InsetCommand("cite") {}
+ docstring const getScreenLabel(Buffer const &) const;
///
- explicit
- InsetCitation(string const & key, string const & note = string());
- ///
- ~InsetCitation();
- ///
- Inset * Clone() const {
- return new InsetCitation(getContents(), getOptions());
- }
- ///
- string getScreenLabel()const;
- ///
- void Edit(BufferView *, int x, int y, unsigned int button);
+ EDITABLE editable() const { return IS_EDITABLE; }
///
- void callback( FD_citation_form *, State );
- ///
- EDITABLE Editable() const {
- return IS_EDITABLE;
- }
+ InsetBase::Code lyxCode() const { return InsetBase::CITE_CODE; }
///
- struct Holder {
- InsetCitation * inset;
- BufferView * view;
- };
-
-private:
- ///
- void setSize( FD_citation_form *, int, bool ) const;
+ int latex(Buffer const &, odocstream &,
+ OutputParams const &) const;
///
- void setBibButtons( FD_citation_form *, State ) const;
+ int plaintext(Buffer const &, odocstream &,
+ OutputParams const &) const;
///
- void setCiteButtons( FD_citation_form *, State ) const;
+ int docbook(Buffer const &, odocstream &,
+ OutputParams const &) const;
+ /// the string that is passed to the TOC
+ virtual int textString(Buffer const &, odocstream &,
+ OutputParams const &) const;
///
- void updateBrowser( FL_OBJECT *, std::vector<string> const & ) const;
- ///
- Holder holder;
+ void validate(LaTeXFeatures &) const;
+ ///
+ void replaceContents(std::string const & from, std::string const & to);
+
+private:
+ virtual std::auto_ptr<InsetBase> doClone() const
+ {
+ return std::auto_ptr<InsetBase>(new InsetCitation(params()));
+ }
+
+ /// This function does the donkey work of creating the pretty label
+ docstring const generateLabel(Buffer const &) const;
+
+ class Cache {
+ public:
+ ///
+ Cache() : engine(biblio::ENGINE_BASIC), params("cite") {}
+ ///
+ biblio::CiteEngine engine;
+ ///
+ InsetCommandParams params;
+ ///
+ docstring generated_label;
+ ///
+ docstring screen_label;
+ };
+ ///
+ mutable Cache cache;
};
+
+} // namespace lyx
+
#endif // INSET_CITE_H