X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiCitation.h;h=27f69e56bc457ab1bb5c7f7a1bf63b968850c39a;hb=39d569661a3f4411d4501f9a8db9c7360ef5d568;hp=f8029ece78554dbd69a5b640cdb16c90636eb87e;hpb=e285d2a7d84cb372c6ec96a8dd422766ecadda7a;p=lyx.git diff --git a/src/frontends/qt4/GuiCitation.h b/src/frontends/qt4/GuiCitation.h index f8029ece78..27f69e56bc 100644 --- a/src/frontends/qt4/GuiCitation.h +++ b/src/frontends/qt4/GuiCitation.h @@ -15,104 +15,104 @@ #ifndef GUICITATION_H #define GUICITATION_H -#include "GuiDialog.h" -#include "GuiSelectionManager.h" +#include "DialogView.h" #include "ui_CitationUi.h" -#include "support/docstring.h" -#include "BiblioInfo.h" -#include +#include "insets/InsetCommandParams.h" + +#include "Citation.h" + #include #include namespace lyx { + +class BiblioInfo; + namespace frontend { -class GuiCitation : public GuiCommand, public Ui::CitationUi +class GuiSelectionManager; + +class GuiCitation : public DialogView, public Ui::CitationUi { Q_OBJECT public: /// GuiCitation(GuiView & lv); - /// - void applyView(); - -public Q_SLOTS: - /// Update the display of the dialog whilst it is still visible. - void updateView(); - -private: - /// - void showEvent(QShowEvent * e); - /// - void closeEvent(QCloseEvent * e); - /// prepares a call to GuiCitation::searchKeys when we - /// are ready to search the BibTeX entries - void findText(QString const & text, bool reset = false); - /// check whether key is already selected - bool isSelected(const QModelIndex &); - /// update the display of BibTeX information - void updateInfo(QModelIndex const &); + ~GuiCitation(); private Q_SLOTS: - void cleanUp(); void on_okPB_clicked(); void on_cancelPB_clicked(); void on_restorePB_clicked(); void on_applyPB_clicked(); + void on_searchPB_clicked(); void on_findLE_textChanged(const QString & text); void on_fieldsCO_currentIndexChanged(int index); void on_entriesCO_currentIndexChanged(int index); void on_citationStyleCO_currentIndexChanged(int index); void on_caseCB_stateChanged(int); void on_regexCB_stateChanged(int); + void on_asTypeCB_stateChanged(int); void changed(); /// void setCitedKeys(); /// performs a limited update, suitable for internal call - void updateDialog(); + void updateControls(); + private: + /// Dialog inherited methods + //@{ + void applyView(); + void updateView() {} + bool initialiseParams(std::string const & data); + void clearParams(); + void dispatchParams(); + bool isBufferDependent() const { return true; } + void saveSession() const; + void restoreSession(); + /** Disconnect from the inset when the Apply button is pressed. + * Allows easy insertion of multiple citations. + */ + bool disconnectOnApply() const { return true; } + //@} + + /// + void showEvent(QShowEvent * e); + /// + void closeEvent(QCloseEvent * e); + /// prepares a call to GuiCitation::searchKeys when we + /// are ready to search the BibTeX entries + void findText(QString const & text, bool reset = false); + /// check whether key is already selected + bool isSelected(const QModelIndex &); + /// update the display of BibTeX information + void updateInfo(BiblioInfo const & bi, QModelIndex const &); /// enable/disable buttons void setButtons(); /// fill the styles combo - void fillStyles(); + void fillStyles(BiblioInfo const & bi); /// fill the fields combo - void fillFields(); + void fillFields(BiblioInfo const & bi); /// fill the entries combo - void fillEntries(); + void fillEntries(BiblioInfo const & bi); /// set the styles combo void updateStyle(); /// set the formatting widgets - void updateFormatting(biblio::CiteStyle currentStyle); - /// last used citation style - int style_; - - GuiSelectionManager * selectionManager; - + void updateFormatting(CiteStyle currentStyle); + /// + void updateControls(BiblioInfo const & bi); /// void init(); - /// Available keys - QStringListModel * available() { return &available_model_; } - /// Selected keys - QStringListModel * selected() { return &selected_model_; } - /// Text before cite - QString textBefore(); - /// Text after cite - QString textAfter(); - /// Get key description - QString getKeyInfo(QString const &); /// Clear selected keys void clearSelection(); - /// Return a list of available fields - QStringList getFieldsAsQStringList(); - /// Return a list of available fields - QStringList getEntriesAsQStringList(); /// Find keys containing a string. void findKey( + BiblioInfo const & bi, //< optimize by passing this QString const & str, //< string expression bool only_keys, //< set to true if only keys shall be searched. docstring field, // const availableKeys() const; - /// \return the list of all used BibTeX fields - std::vector const availableFields() const; - /// \return the list of all used BibTeX entry types - std::vector const availableEntries() const; /// - void filterByEntryType( + void filterByEntryType(BiblioInfo const & bi, std::vector & keyVector, docstring entryType); /// - biblio::CiteEngine getEngine() const; - - /// \return information for this key. - docstring getInfo(docstring const & key) const; + CiteEngine citeEngine() const; /// Search a given string within the passed keys. /// \return the vector of matched keys. std::vector searchKeys( + BiblioInfo const & bi, //< optimize by passing this std::vector const & keys_to_search, //< Keys to search. bool only_keys, //< whether to search only the keys docstring const & search_expression, //< Search expression (regex possible) @@ -176,9 +147,25 @@ private: bool regex = false //< \set to true if \c search_expression is a regex ); // -private: /// The BibTeX information available to the dialog - BiblioInfo bibkeysInfo_; + /// Calls to this method will lead to checks of modification times and + /// the like, so it should be avoided. + BiblioInfo const & bibInfo() const; + + /// last used citation style + int style_; + /// + GuiSelectionManager * selectionManager; + /// available keys. + QStringListModel available_model_; + /// selected keys. + QStringListModel selected_model_; + /// All keys. + QStringList all_keys_; + /// Cited keys. + QStringList cited_keys_; + /// + InsetCommandParams params_; }; } // namespace frontend