]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/controllers/ControlCitation.h
Add a buffer_path arg to InsetGraphicsMailer's params2string, string2params.
[lyx.git] / src / frontends / controllers / ControlCitation.h
index 173004db4b7fd7b1ce6748e252eaa9fe49706cb6..2d30c54a70f92d50e1120a4fa8fc17c326451554 100644 (file)
 // -*- C++ -*-
-/* This file is part of
- * ====================================================== 
- *
- *           LyX, The Document Processor
- *
- *           Copyright 2000 The LyX Team.
+/**
+ * \file ControlCitation.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * ======================================================
+ * \author Angus Leeming
  *
- * \file ControlCitation.h
- * \author Angus Leeming <a.leeming@ic.ac.uk>
+ * Full author contact details are available in file CREDITS
  */
 
 #ifndef CONTROLCITATION_H
 #define CONTROLCITATION_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
 
 #include "ControlCommand.h"
-#include "ButtonController.h"
-#include "ViewBase.h"
+#include "biblio.h" // biblio::InfoMap
 
-/** A controller for Citation dialogs. All citation-specific functionality
-    should go in here.
+/** A controller for Citation dialogs.
  */
-class ControlCitation : public ControlCommand
-{
+class ControlCitation : public ControlCommand {
 public:
        ///
-       typedef std::map<string, string> InfoMap;
-       ///
-       typedef std::map<string, string>::value_type InfoMapValue;
-       ///
-       enum Search {
-               ///
-               SIMPLE,
-               ///
-               REGEX
-       };
-       ///
-       enum Direction {
-               ///
-               FORWARD,
-               ///
-               BACKWARD
-       };
+       ControlCitation(Dialog &);
+
        ///
-       ControlCitation(LyXView &, Dialogs &);
-       /// A vector of bibliography keys
-       std::vector<string> const getBibkeys();
-       /// Returns a reference to the map of stored keys
-       InfoMap const & bibkeysInfo() const { return bibkeysInfo_; }
-       /** Returns the BibTeX data associated with a given key.
-           Empty if no info exists. */
-       string const getBibkeyInfo(string const &);
-private:
-       /// Clean up, then hide dialog.
-       virtual void hide();
-       /// The info associated with each key
-       InfoMap bibkeysInfo_;
-};
+       virtual bool initialiseParams(string const & data);
+       /// clean-up on hide.
+       virtual void clearParams();
 
+       /** Disconnect from the inset when the Apply button is pressed.
+        *  Allows easy insertion of multiple citations.
+        */
+       virtual bool disconnectOnApply() const { return true; }
+
+       /// Returns a reference to the map of stored keys
+       biblio::InfoMap const & bibkeysInfo() const;
 
-/** This class instantiates and makes available the GUI-specific
-    ButtonController and View.
- */
-template <class GUIview, class GUIbc>
-class GUICitation : public ControlCitation {
-public:
-       ///
-       GUICitation(LyXView &, Dialogs &);
-       ///
-       virtual ButtonControllerBase & bc() { return bc_; }
        ///
-       virtual ViewBase & view() { return view_; }
+       bool usingNatbib() const;
+       /// Possible citations based on this key
+       std::vector<string> const getCiteStrings(string const & key) const;
 
+       /// available CiteStyle-s (depends on availability of Natbib
+       static std::vector<biblio::CiteStyle> const & getCiteStyles() {
+               return citeStyles_;
+       }
 private:
+       /// The info associated with each key
+       biblio::InfoMap bibkeysInfo_;
+
        ///
-       ButtonController<NoRepeatedApplyReadOnlyPolicy, GUIbc> bc_;
-       ///
-       GUIview view_;
+       static std::vector<biblio::CiteStyle> citeStyles_;
 };
 
-template <class GUIview, class GUIbc>
-GUICitation<GUIview, GUIbc>::GUICitation(LyXView & lv, Dialogs & d)
-       : ControlCitation(lv, d),
-         view_(*this)
-{}
-
-/** Helper functions, of possible use to all frontends
- */
-
-/** Multiple citation keys are stored in InsetCommandParams::contents as a
-    comma-separated string. These two functions convert to/from a vector. */
-string const getStringFromVector(std::vector<string> const &, char delim=',');
-///
-std::vector<string> const getVectorFromString(string const &, char delim=',');
 
-/** Search a BibTeX info field for the given key and return the
-    associated field. */
-string const parseBibTeX(string data, string const & findkey);
-
-/** Returns an iterator to the first key that meets the search criterion,
-    or end() if unsuccessful.
-
-    User supplies :
-    the controller with the map of bibkeys info,
-    the vector of keys to be searched,
-    the search criterion,
-    an iterator defining the starting point of the search,
-    an enum defining a Simple or Regex search,
-    an enum defining the search direction.
-*/
-
-std::vector<string>::const_iterator
-searchKeys(ControlCitation const & controller,
-          std::vector<string> const & keys_to_search,
-          string const & search_expression,
-          std::vector<string>::const_iterator start,
-          ControlCitation::Search,
-          ControlCitation::Direction,
-          bool caseSensitive=false);
-
-/// Do the dirty work for the search. Should use through the function above
-std::vector<string>::const_iterator
-simpleSearch(ControlCitation const & controller,
-            std::vector<string> const & keys_to_search,
-            string const & search_expression,
-            std::vector<string>::const_iterator start,
-            ControlCitation::Direction,
-            bool caseSensitive=false);
-
-/// Should use through the function above
-std::vector<string>::const_iterator
-regexSearch(ControlCitation const & controller,
-           std::vector<string> const & keys_to_search,
-           string const & search_expression,
-           std::vector<string>::const_iterator start,
-           ControlCitation::Direction);
 #endif // CONTROLCITATION_H
-
-
-