]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetcite.h
* src/LyXAction.C: mark goto-clear-bookmark as working without buffer
[lyx.git] / src / insets / insetcite.h
index ee1581323b91d44ec2826afc22691ac48de2fa7c..1c83084a67ea156ebccc95f82dce0a0e8ecf79bb 100644 (file)
@@ -1,82 +1,81 @@
 // -*- 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>
+#include "bufferparams.h"
+
 
-class Buffer;
+namespace lyx {
 
-/** Used to insert citations  
+
+/** 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 plaintext(Buffer const &, odocstream &, OutputParams const &) const;
        ///
-       void setBibButtons( FD_citation_form *, State ) const;
+       int latex(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