// -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 2001 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 "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 bool initialiseParams(string const & data);
+ /// clean-up on hide.
virtual void clearParams();
- /// The info associated with each key
- InfoMap bibkeysInfo_;
-};
-/** Helper functions, of possible use to all frontends
- */
-
-/** Search a BibTeX info field for the given key and return the
- associated field. */
-string const parseBibTeX(string data, string const & findkey);
+ /** Disconnect from the inset when the Apply button is pressed.
+ * Allows easy insertion of multiple citations.
+ */
+ virtual bool disconnectOnApply() const { return true; }
-/** Returns an iterator to the first key that meets the search criterion,
- or end() if unsuccessful.
+ /// Returns a reference to the map of stored keys
+ biblio::InfoMap const & bibkeysInfo() const;
- 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.
-*/
+ ///
+ 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_;
-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);
+ ///
+ static std::vector<biblio::CiteStyle> citeStyles_;
+};
-/// 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
-
-
-