X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiCitation.h;h=27f69e56bc457ab1bb5c7f7a1bf63b968850c39a;hb=39d569661a3f4411d4501f9a8db9c7360ef5d568;hp=95a0158dce6905526e18b75bac6c7be8eff2ab78;hpb=470aba2a0e552f27d55992372c09f15af9725fa8;p=lyx.git diff --git a/src/frontends/qt4/GuiCitation.h b/src/frontends/qt4/GuiCitation.h index 95a0158dce..27f69e56bc 100644 --- a/src/frontends/qt4/GuiCitation.h +++ b/src/frontends/qt4/GuiCitation.h @@ -15,120 +15,104 @@ #ifndef GUICITATION_H #define GUICITATION_H -#include "GuiDialog.h" -#include "ControlCitation.h" -#include "GuiSelectionManager.h" +#include "DialogView.h" #include "ui_CitationUi.h" -#include "support/docstring.h" -#include +#include "insets/InsetCommandParams.h" + +#include "Citation.h" + #include #include namespace lyx { + +class BiblioInfo; + namespace frontend { -class GuiCitationDialog : public GuiDialog, public Ui::CitationUi +class GuiSelectionManager; + +class GuiCitation : public DialogView, public Ui::CitationUi { Q_OBJECT public: /// - GuiCitationDialog(LyXView & lv); - - /// - void applyView(); - /// Hide the dialog from sight - void hideView(); - /// Redraw the dialog (e.g. if the colors have been remapped). - void redrawView() {} - /// Create the dialog if necessary, update it and display it. - void showView(); - /// \return true if the dialog is visible. - bool isVisibleView() const; - -public Q_SLOTS: - /// Update the display of the dialog whilst it is still visible. - void updateView(); - -private: - /// - ControlCitation & controller(); + GuiCitation(GuiView & lv); /// - 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(); - /// last used citation style - int style_; - - GuiSelectionManager * selectionManager; - + /// set the formatting widgets + void updateFormatting(CiteStyle currentStyle); /// - bool initialiseParams(std::string const & data); - + 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, // & 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. @@ -154,9 +164,10 @@ private: QStringList all_keys_; /// Cited keys. QStringList cited_keys_; + /// + InsetCommandParams params_; }; - } // namespace frontend } // namespace lyx