]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetcite.h
The speed patch: redraw only rows that have changed
[lyx.git] / src / insets / insetcite.h
index b8ec6f347faa3b47e0ffa5a6efab1b9cff05fd99..0733e93486ea60f3271797bf90698991ee2e62bf 100644 (file)
@@ -1,42 +1,73 @@
 // -*- 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 2000-2001 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 "bufferparams.h"
+
 
-/** Used to insert citations  
+/** Used to insert citations
  */
 class InsetCitation : public InsetCommand {
 public:
        ///
        InsetCitation(InsetCommandParams const &);
        ///
-       Inset * Clone(Buffer const &) const {
-               return new InsetCitation(params());
-       }
+       std::string const getScreenLabel(Buffer const &) const;
+       ///
+       EDITABLE editable() const { return IS_EDITABLE; }
+       ///
+       InsetBase::Code lyxCode() const { return InsetBase::CITE_CODE; }
        ///
-       string const getScreenLabel() const;
+       int plaintext(Buffer const &, std::ostream &, OutputParams const &) const;
        ///
-       EDITABLE Editable() const { return IS_EDITABLE; }
+       int latex(Buffer const &, std::ostream &,
+                 OutputParams const &) const;
        ///
-       Inset::Code LyxCode() const { return Inset::CITE_CODE; }
-        ///
-       void Edit(BufferView *, int, int, unsigned int);
+       int docbook(Buffer const &, std::ostream &,
+                 OutputParams const &) const;
+       /// the string that is passed to the TOC
+       virtual int textString(Buffer const &, std::ostream & os,
+               OutputParams const &) const;
+       ///
+       void validate(LaTeXFeatures &) const;
+
+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
+       std::string const generateLabel(Buffer const &) const;
+
+       class Cache {
+       public:
+               ///
+               Cache() : engine(lyx::biblio::ENGINE_BASIC) {}
+               ///
+               lyx::biblio::CiteEngine engine;
+               ///
+               InsetCommandParams params;
+               ///
+               std::string generated_label;
+               ///
+               std::string screen_label;
+       };
        ///
-       int Ascii(Buffer const *, std::ostream &, int linelen) const;
+       mutable Cache cache;
 };
 
 #endif // INSET_CITE_H