1 // -*- C++ -*- 2 /** 3 * \file InsetBibitem.h 4 * This file is part of LyX, the document processor. 5 * Licence details can be found in the file COPYING. 6 * 7 * \author Alejandro Aguilar Sierra 8 * 9 * Full author contact details are available in file CREDITS. 10 */ 11 12 #ifndef INSET_BIBITEM_H 13 #define INSET_BIBITEM_H 14 15 16 #include "InsetCommand.h" 17 18 19 namespace lyx { 20 21 class BiblioInfo; 22 23 ///////////////////////////////////////////////////////////////////////// 24 // 25 // InsetBibItem 26 // 27 ///////////////////////////////////////////////////////////////////////// 28 29 /// Used to insert bibitem's information (key and label) 30 31 // Must be automatically inserted as the first object in a 32 // bibliography paragraph. 33 class InsetBibitem : public InsetCommand 34 { 35 public: 36 /// 37 InsetBibitem(Buffer *, InsetCommandParams const &); 38 /// 39 ~InsetBibitem(); 40 41 /// 42 void updateCommand(docstring const & new_key, bool dummy = false); 43 44 /// \name Public functions inherited from Inset class 45 //@{ 46 /// lyxCode()47 InsetCode lyxCode() const { return BIBITEM_CODE; } 48 /// hasSettings()49 bool hasSettings() const { return true; } 50 /// \copydoc Inset::initView() 51 /// verify label and update references. 52 void initView(); 53 /// isLabeled()54 bool isLabeled() const { return true; } 55 /// 56 void read(Lexer & lex); 57 /// 58 int plaintext(odocstringstream &, OutputParams const &, 59 size_t max_length = INT_MAX) const; 60 /// 61 docstring xhtml(XHTMLStream &, OutputParams const &) const; 62 /// 63 void collectBibKeys(InsetIterator const &, support::FileNameList &) const; 64 /// update the counter of this inset 65 void updateBuffer(ParIterator const &, UpdateType); 66 ///@} 67 68 /// \name Static public methods obligated for InsetCommand derived classes 69 //@{ 70 /// 71 static ParamInfo const & findInfo(std::string const &); 72 /// defaultCommand()73 static std::string defaultCommand() { return "bibitem"; } 74 /// isCompatibleCommand(std::string const & s)75 static bool isCompatibleCommand(std::string const & s) 76 { return s == "bibitem"; } 77 ///@} 78 79 private: 80 /// 81 docstring bibLabel() const; 82 83 /// \name Private functions inherited from Inset class 84 //@{ 85 /// 86 void doDispatch(Cursor & cur, FuncRequest & cmd); 87 /// clone()88 Inset * clone() const { return new InsetBibitem(*this); } 89 /// Is the content of this inset part of the immediate (visible) text sequence? isPartOfTextSequence()90 bool isPartOfTextSequence() const { return false; } 91 ///@} 92 93 /// \name Private functions inherited from InsetCommand class 94 //@{ 95 /// 96 docstring screenLabel() const; 97 //@} 98 99 friend docstring bibitemWidest(Buffer const & buffer, OutputParams const &); 100 101 /// The label that is set by updateBuffer 102 docstring autolabel_; 103 /// 104 static int key_counter; 105 }; 106 107 108 /// Return the widest label in the Bibliography. 109 docstring bibitemWidest(Buffer const &, OutputParams const &); 110 111 112 } // namespace lyx 113 114 #endif // INSET_BIBITEM_H 115