X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiCitation.h;h=27f69e56bc457ab1bb5c7f7a1bf63b968850c39a;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=f99b009b670f3c4c97d6c62bbfa8d4add44b7b80;hpb=a1cec91afaca91968b46e695533c10ad2a3f73d3;p=lyx.git diff --git a/src/frontends/qt4/GuiCitation.h b/src/frontends/qt4/GuiCitation.h index f99b009b67..27f69e56bc 100644 --- a/src/frontends/qt4/GuiCitation.h +++ b/src/frontends/qt4/GuiCitation.h @@ -7,60 +7,112 @@ * \author Angus Leeming * \author Kalle Dalheimer * \author Abdelrazak Younes - * \author Richard Heck (adapted to QSelectionManager) + * \author Richard Heck * * Full author contact details are available in file CREDITS. */ -#ifndef QCITATION_H -#define QCITATION_H +#ifndef GUICITATION_H +#define GUICITATION_H -#include "frontends/controllers/ControlCitation.h" -#include "support/docstring.h" +#include "DialogView.h" +#include "ui_CitationUi.h" + +#include "insets/InsetCommandParams.h" + +#include "Citation.h" #include #include namespace lyx { + +class BiblioInfo; + namespace frontend { -class GuiCitation : public ControlCitation +class GuiSelectionManager; + +class GuiCitation : public DialogView, public Ui::CitationUi { + Q_OBJECT + public: /// - GuiCitation(Dialog &); - virtual ~GuiCitation() {} - virtual bool initialiseParams(std::string const & data); - + GuiCitation(GuiView & lv); /// - 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(); + ~GuiCitation(); + +private Q_SLOTS: + 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 updateControls(); + - /// Get key description - QString getKeyInfo(QString const &); +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(BiblioInfo const & bi); + /// fill the fields combo + void fillFields(BiblioInfo const & bi); + /// fill the entries combo + void fillEntries(BiblioInfo const & bi); + /// set the styles combo + void updateStyle(); + /// set the formatting widgets + void updateFormatting(CiteStyle currentStyle); + /// + void updateControls(BiblioInfo const & bi); + /// + void init(); /// 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, // & keyVector, docstring entryType); + /// + 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) + docstring field, //< field to search, empty for all fields + bool case_sensitive = false, //< set to true is the search should be case sensitive + bool regex = false //< \set to true if \c search_expression is a regex + ); // + + /// The BibTeX information available to the dialog + /// 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 } // namespace lyx -#endif // QCITATION_H +#endif // GUICITATION_H