X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiCitation.h;h=428ea50a97de293a584d5e3f13dd4eafade126d2;hb=b6eacd8d4f86734e8abef3335b190ce12a6a11b5;hp=7059106ef87427e32b391f8aab4a366b08ffa420;hpb=fc36725282df43059aee9a821f098309ccdbd523;p=lyx.git diff --git a/src/frontends/qt4/GuiCitation.h b/src/frontends/qt4/GuiCitation.h index 7059106ef8..428ea50a97 100644 --- a/src/frontends/qt4/GuiCitation.h +++ b/src/frontends/qt4/GuiCitation.h @@ -15,52 +15,123 @@ #ifndef GUICITATION_H #define GUICITATION_H -#include "ControlCitation.h" -#include "support/docstring.h" +#include "DialogView.h" +#include "ui_CitationUi.h" +#include "FancyLineEdit.h" +#include "insets/InsetCommandParams.h" + +#include "BiblioInfo.h" +#include "Citation.h" + +#include +#include #include #include namespace lyx { -namespace frontend { -class GuiCitation : public ControlCitation -{ -public: - /// - GuiCitation(Dialog &); - virtual ~GuiCitation() {} - virtual bool initialiseParams(std::string const & data); +class BiblioInfo; - /// - void init(); +namespace frontend { - /// Available keys - QStringListModel * available() { return &available_model_; } +class GuiSelectionManager; - /// Selected keys - QStringListModel * selected() { return &selected_model_; } - /// Text before cite - QString textBefore(); +class GuiCitation : public DialogView, public Ui::CitationUi +{ + Q_OBJECT + +public: + /// + GuiCitation(GuiView & lv); + +private Q_SLOTS: + void on_buttonBox_accepted(); + void on_buttonBox_rejected(); + void on_buttonBox_clicked(QAbstractButton *); + void on_literalCB_clicked(); + void filterPressed(); + void filterChanged(const QString & text); + void on_fieldsCO_currentIndexChanged(int index); + void on_entriesCO_currentIndexChanged(int index); + void on_citationStyleCO_currentIndexChanged(int index); + void resetFilter(); + void caseChanged(); + void regexChanged(); + void instantChanged(bool checked); + void changed(); + /// set the citation keys, mark as changed + void setCitedKeys(); + /// update the styles for the style combo, mark as changed + void updateStyles(); + /// performs a limited update, suitable for internal call + void updateControls(); - /// Text after cite - QString textAfter(); - /// 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(QSettings & settings) 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 fields combo + void fillFields(BiblioInfo const & bi); + /// fill the entries combo + void fillEntries(BiblioInfo const & bi); + /// set the styles combo + void updateStyles(BiblioInfo const & bi); + /// set the formatting widgets + void updateFormatting(CitationStyle const & currentStyle); + /// + void updateControls(BiblioInfo const & bi); + /// Set the appropriate hinting text on the filter bar + void updateFilterHint(); + /// + void init(); /// Clear selected keys void clearSelection(); - - /// Return a list of available fields - QStringList getFieldsAsQStringList(); - - /// Return a list of available fields - QStringList getEntriesAsQStringList(); - + + /// Set selected keys + void setSelectedKeys(QStringList const); + /// Get selected keys + QStringList selectedKeys(); + /// Set pre texts of qualified lists + void setPreTexts(std::vector const m); + /// Get pre texts of qualified lists + std::vector getPreTexts(); + /// Set post texts of qualified lists + void setPostTexts(std::vector const m); + /// Get post texts of qualified lists + std::vector getPostTexts(); + /// 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); + + /// 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; + + /// contains the search box + FancyLineEdit * filter_; + + /// Regexp action + QAction * regexp_; + /// Case sensitive action + QAction * casesense_; + /// Search as you type action + QAction * instant_; + + /// last used citation style + QString style_; + /// + GuiSelectionManager * selectionManager; /// available keys. QStringListModel available_model_; /// selected keys. - QStringListModel selected_model_; + QStandardItemModel selected_model_; /// All keys. QStringList all_keys_; /// Cited keys. QStringList cited_keys_; + /// + InsetCommandParams params_; }; - } // namespace frontend } // namespace lyx