]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetcite.h
fix #832
[lyx.git] / src / insets / insetcite.h
index efa21fd17883dfb5f3e2f1af2832cfc058d81b39..587ba52564884a91bb6300c7a1b17fa2cb491672 100644 (file)
@@ -1,29 +1,30 @@
 // -*- 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 Voss
+ *
+ * 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"
 
-/** Used to insert citations  
+/** Used to insert citations
  */
 class InsetCitation : public InsetCommand {
 public:
        ///
        InsetCitation(InsetCommandParams const &, bool same_id = false);
        ///
+       ~InsetCitation();
+       ///
        Inset * clone(Buffer const &, bool same_id = false) const {
                return new InsetCitation(params(), same_id);
        }
@@ -34,15 +35,48 @@ public:
        ///
        Inset::Code lyxCode() const { return Inset::CITE_CODE; }
        ///
-       void edit(BufferView *, int, int, unsigned int);
-       ///
-       void edit(BufferView * bv, bool front = true);
-       ///
        int ascii(Buffer const *, std::ostream &, int linelen) const;
-        ///
+       ///
        int latex(Buffer const *, std::ostream &, bool, bool) const;
        ///
+       dispatch_result localDispatch(FuncRequest const & cmd);
+       ///
        void validate(LaTeXFeatures &) const;
+       /** Invoked by BufferView::Pimpl::dispatch when a new citation key
+           is inserted. Tells us that the buffer is no longer being loaded
+           and that the cache of BibTeX keys should be reloaded in the future.
+       */
+       void setLoadingBuffer(Buffer const * buffer, bool state) const;
+private:
+       struct Cache {
+               ///
+               enum Style {
+                       ///
+                       BASIC,
+                       ///
+                       NATBIB_AY,
+                       ///
+                       NATBIB_NUM
+               };
+               ///
+               Cache() : style(BASIC) {}
+               ///
+               Style style;
+               ///
+               InsetCommandParams params;
+               ///
+               string generated_label;
+               ///
+               string screen_label;
+       };
+
+       /// This function does the donkey work of creating the pretty label
+       string const generateLabel(Buffer const *) const;
+       ///
+       Cache::Style getStyle(Buffer const * buffer) const;
+
+       ///
+       mutable Cache cache;
 };
 
 #endif // INSET_CITE_H