X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiCitation.h;h=428ea50a97de293a584d5e3f13dd4eafade126d2;hb=b6eacd8d4f86734e8abef3335b190ce12a6a11b5;hp=583d432b9caf598ad1ddecb97c328b5f3c700f69;hpb=6f0703e707a529823fe23342fd01ae36e8b5c8aa;p=lyx.git diff --git a/src/frontends/qt4/GuiCitation.h b/src/frontends/qt4/GuiCitation.h index 583d432b9c..428ea50a97 100644 --- a/src/frontends/qt4/GuiCitation.h +++ b/src/frontends/qt4/GuiCitation.h @@ -15,45 +15,79 @@ #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 "FancyLineEdit.h" -#include +#include "insets/InsetCommandParams.h" + +#include "BiblioInfo.h" +#include "Citation.h" + +#include +#include #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); + 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(); - /// - 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: + /// 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; } + //@} + /// - ControlCitation & controller(); + void showEvent(QShowEvent * e); /// void closeEvent(QCloseEvent * e); /// prepares a call to GuiCitation::searchKeys when we @@ -62,70 +96,42 @@ private: /// check whether key is already selected bool isSelected(const QModelIndex &); /// update the display of BibTeX information - void updateInfo(QModelIndex const &); - -private Q_SLOTS: - void cleanUp(); - void on_okPB_clicked(); - void on_cancelPB_clicked(); - void on_restorePB_clicked(); - void on_applyPB_clicked(); - void on_findLE_textChanged(const QString & text); - void on_fieldsCO_currentIndexChanged(int index); - void on_entriesCO_currentIndexChanged(int index); - void on_caseCB_stateChanged(int); - void on_regexCB_stateChanged(int); - void changed(); - /// - void setCitedKeys(); - /// performs a limited update, suitable for internal call - void updateDialog(); - -private: + void updateInfo(BiblioInfo const & bi, QModelIndex const &); /// enable/disable buttons void setButtons(); - /// fill the styles combo - void fillStyles(); /// 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; - + 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(); - - /// 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(); - + + /// 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