X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiPrefs.h;h=2a0405fb3ec337eb1a482fd30757f8fe31bf801a;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=72b8d22dfd1aa027d91dd3d9e1fc6274cbf08ac8;hpb=c9ea6e6eef090b863fb54445010f24443b15eb23;p=lyx.git diff --git a/src/frontends/qt4/GuiPrefs.h b/src/frontends/qt4/GuiPrefs.h index 72b8d22dfd..2a0405fb3e 100644 --- a/src/frontends/qt4/GuiPrefs.h +++ b/src/frontends/qt4/GuiPrefs.h @@ -5,6 +5,8 @@ * Licence details can be found in the file COPYING. * * \author John Levon + * \author Bo Peng + * \author Edwin Leuven * * Full author contact details are available in file CREDITS. */ @@ -13,33 +15,41 @@ #define GUIPREFS_H #include "GuiDialog.h" -#include "ControlPrefs.h" -#include "Color.h" + +#include "ColorCode.h" +#include "Converter.h" +#include "Format.h" +#include "FuncCode.h" +#include "KeyMap.h" #include "LyXRC.h" +#include "Mover.h" #include "ui_PrefsUi.h" #include "ui_PrefPlaintextUi.h" #include "ui_PrefDateUi.h" -#include "ui_PrefKeyboardUi.h" +#include "ui_PrefInputUi.h" #include "ui_PrefLatexUi.h" #include "ui_PrefScreenFontsUi.h" +#include "ui_PrefCompletionUi.h" #include "ui_PrefColorsUi.h" #include "ui_PrefDisplayUi.h" +#include "ui_PrefEditUi.h" #include "ui_PrefPathsUi.h" +#include "ui_PrefShortcutsUi.h" #include "ui_PrefSpellcheckerUi.h" #include "ui_PrefConvertersUi.h" -#include "ui_PrefCopiersUi.h" #include "ui_PrefFileformatsUi.h" #include "ui_PrefLanguageUi.h" #include "ui_PrefPrinterUi.h" #include "ui_PrefUi.h" #include "ui_PrefIdentityUi.h" +#include "ui_ShortcutUi.h" -#include - +#include #include + namespace lyx { class Converters; @@ -48,25 +58,99 @@ class Movers; namespace frontend { -class GuiPrefsDialog; +class PrefModule; + +class GuiPreferences : public GuiDialog, public Ui::PrefsUi +{ + Q_OBJECT +public: + GuiPreferences(GuiView & lv); + + void apply(LyXRC & rc) const; + void updateRc(LyXRC const & rc); + +public Q_SLOTS: + void change_adaptor(); + +public: + /// Apply changes + void applyView(); + + std::vector modules_; + + /// + bool initialiseParams(std::string const &); + /// + void clearParams() {} + /// + void dispatchParams(); + /// + bool isBufferDependent() const { return false; } + + /// various file pickers + QString browsebind(QString const & file) const; + QString browseUI(QString const & file) const; + QString browsekbmap(QString const & file) const; + + /// general browse + QString browse(QString const & file, QString const & title) const; + + /// set a color + void setColor(ColorCode col, QString const & hex); + + /// update the screen fonts after change + void updateScreenFonts(); + + /// adjust the prefs paper sizes + PAPER_SIZE toPaperSize(int i) const; + /// adjust the prefs paper sizes + int fromPaperSize(PAPER_SIZE papersize) const; + + LyXRC & rc() { return rc_; } + Converters & converters() { return converters_; } + Formats & formats() { return formats_; } + Movers & movers() { return movers_; } + +private: + /// + void addModule(PrefModule * module); + + /// temporary lyxrc + LyXRC rc_; + /// temporary converters + Converters converters_; + /// temporary formats + Formats formats_; + /// temporary movers + Movers movers_; + + /// A list of colors to be dispatched + std::vector colors_; + + bool redraw_gui_; + bool update_screen_font_; +}; + class PrefModule : public QWidget { Q_OBJECT public: - PrefModule(docstring const & t, - GuiPrefsDialog * form = 0, QWidget * parent = 0) - : QWidget(parent), title_(t), form_(form) + PrefModule(QString const & cat, QString const & t, + GuiPreferences * form) + : QWidget(form), category_(cat), title_(t), form_(form) {} virtual void apply(LyXRC & rc) const = 0; virtual void update(LyXRC const & rc) = 0; - docstring const & title() const { return title_; } + QString const & category() const { return category_; } + QString const & title() const { return title_; } protected: - docstring title_; - GuiPrefsDialog * form_; + QString category_; + QString title_; + GuiPreferences * form_; Q_SIGNALS: void changed(); @@ -77,7 +161,7 @@ class PrefPlaintext : public PrefModule, public Ui::PrefPlaintextUi { Q_OBJECT public: - PrefPlaintext(QWidget * parent = 0); + PrefPlaintext(GuiPreferences * form); virtual void apply(LyXRC & rc) const; virtual void update(LyXRC const & rc); @@ -88,18 +172,21 @@ class PrefDate : public PrefModule, public Ui::PrefDateUi { Q_OBJECT public: - PrefDate(QWidget * parent = 0); + PrefDate(GuiPreferences * form); virtual void apply(LyXRC & rc) const; virtual void update(LyXRC const & rc); + +private Q_SLOTS: + void on_DateED_textChanged(const QString &); }; -class PrefKeyboard : public PrefModule, public Ui::PrefKeyboardUi +class PrefInput : public PrefModule, public Ui::PrefInputUi { Q_OBJECT public: - PrefKeyboard(GuiPrefsDialog * form, QWidget * parent = 0); + PrefInput(GuiPreferences * form); virtual void apply(LyXRC & rc) const; virtual void update(LyXRC const & rc); @@ -110,7 +197,22 @@ private Q_SLOTS: void on_keymapCB_toggled(bool); private: - QString testKeymap(QString keymap); + QString testKeymap(QString const & keymap); +}; + + +class PrefCompletion : public PrefModule, public Ui::PrefCompletionUi +{ + Q_OBJECT +public: + PrefCompletion(GuiPreferences * form); + + virtual void apply(LyXRC & rc) const; + virtual void update(LyXRC const & rc); + virtual void enableCB(); +private Q_SLOTS: + void on_popupTextCB_clicked(); + void on_inlineTextCB_clicked(); }; @@ -118,10 +220,21 @@ class PrefLatex : public PrefModule, public Ui::PrefLatexUi { Q_OBJECT public: - PrefLatex(GuiPrefsDialog * form, QWidget * parent = 0); + PrefLatex(GuiPreferences * form); virtual void apply(LyXRC & rc) const; virtual void update(LyXRC const & rc); + +private Q_SLOTS: + void on_latexEncodingCB_stateChanged(int state); + void on_latexBibtexCO_activated(int n); + void on_latexIndexCO_activated(int n); + +private: + /// + std::set bibtex_alternatives; + /// + std::set index_alternatives; }; @@ -129,15 +242,15 @@ class PrefScreenFonts : public PrefModule, public Ui::PrefScreenFontsUi { Q_OBJECT public: - PrefScreenFonts(GuiPrefsDialog * form, QWidget * parent = 0); + PrefScreenFonts(GuiPreferences * form); virtual void apply(LyXRC & rc) const; virtual void update(LyXRC const & rc); private Q_SLOTS: - void select_roman(const QString&); - void select_sans(const QString&); - void select_typewriter(const QString&); + void selectRoman(const QString&); + void selectSans(const QString&); + void selectTypewriter(const QString&); }; @@ -145,23 +258,19 @@ class PrefColors : public PrefModule, public Ui::PrefColorsUi { Q_OBJECT public: - PrefColors(GuiPrefsDialog * form, QWidget * parent = 0); + PrefColors(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); private Q_SLOTS: - void change_color(); - void change_lyxObjects_selection(); + void changeColor(); + void changeLyxObjectsSelection(); private: - std::vector lcolors_; - // FIXME the use of mutable here is required due to the - // fact that initialization is not done in the controller - // but in the constructor. + std::vector lcolors_; std::vector curcolors_; std::vector newcolors_; - }; @@ -169,10 +278,13 @@ class PrefDisplay : public PrefModule, public Ui::PrefDisplayUi { Q_OBJECT public: - PrefDisplay(QWidget * parent = 0); + PrefDisplay(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); + +private Q_SLOTS: + void on_instantPreviewCO_currentIndexChanged(int); }; @@ -180,17 +292,20 @@ class PrefPaths : public PrefModule, public Ui::PrefPathsUi { Q_OBJECT public: - PrefPaths(GuiPrefsDialog * form, QWidget * parent = 0); + PrefPaths(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); private Q_SLOTS: - void select_templatedir(); - void select_tempdir(); - void select_backupdir(); - void select_workingdir(); - void select_lyxpipe(); + void selectExampledir(); + void selectTemplatedir(); + void selectTempdir(); + void selectBackupdir(); + void selectWorkingdir(); + void selectThesaurusdir(); + void selectHunspelldir(); + void selectLyxPipe(); }; @@ -199,13 +314,11 @@ class PrefSpellchecker : public PrefModule, public Ui::PrefSpellcheckerUi { Q_OBJECT public: - PrefSpellchecker(GuiPrefsDialog * form, QWidget * parent = 0); + PrefSpellchecker(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); -private Q_SLOTS: - void select_dict(); }; @@ -213,7 +326,7 @@ class PrefConverters : public PrefModule, public Ui::PrefConvertersUi { Q_OBJECT public: - PrefConverters(GuiPrefsDialog * form, QWidget * parent = 0); + PrefConverters(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); @@ -222,10 +335,10 @@ public Q_SLOTS: void updateGui(); private Q_SLOTS: - void update_converter(); - void switch_converter(); - void converter_changed(); - void remove_converter(); + void updateConverter(); + void switchConverter(); + void removeConverter(); + void changeConverter(); void on_cacheCB_stateChanged(int state); private: @@ -233,51 +346,46 @@ private: }; -class PrefCopiers : public PrefModule, public Ui::PrefCopiersUi -{ - Q_OBJECT -public: - PrefCopiers(GuiPrefsDialog * form, QWidget * parent = 0); - - void apply(LyXRC & rc) const; - void update(LyXRC const & rc); - - void updateView(); - -private Q_SLOTS: - void switch_copierLB(int nr); - void switch_copierCO(int nr); - void copiers_changed(); - void new_copier(); - void modify_copier(); - void remove_copier(); - -private: - void updateButtons(); -}; - - class PrefFileformats : public PrefModule, public Ui::PrefFileformatsUi { Q_OBJECT public: - PrefFileformats(GuiPrefsDialog * form, QWidget * parent = 0); + PrefFileformats(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); - void updateView(); + Q_SIGNALS: void formatsChanged(); -private: - void updateButtons(); private Q_SLOTS: - void switch_format(int); - void fileformat_changed(); - void new_format(); - void modify_format(); - void remove_format(); + void on_copierED_textEdited(const QString & s); + void on_extensionED_textEdited(const QString &); + void on_viewerED_textEdited(const QString &); + void on_editorED_textEdited(const QString &); + void on_shortcutED_textEdited(const QString &); + void on_formatED_editingFinished(); + void on_formatED_textChanged(const QString &); + void on_formatsCB_currentIndexChanged(int); + void on_formatsCB_editTextChanged(const QString &); + void on_formatNewPB_clicked(); + void on_formatRemovePB_clicked(); + void on_viewerCO_currentIndexChanged(int i); + void on_editorCO_currentIndexChanged(int i); + void setFlags(); + void updatePrettyname(); + +private: + Format & currentFormat(); + /// + void updateViewers(); + /// + void updateEditors(); + /// + LyXRC::Alternatives viewer_alternatives; + /// + LyXRC::Alternatives editor_alternatives; }; @@ -285,13 +393,13 @@ class PrefLanguage : public PrefModule, public Ui::PrefLanguageUi { Q_OBJECT public: - PrefLanguage(QWidget * parent = 0); + PrefLanguage(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); -private: - std::vector lang_; +private Q_SLOTS: + void on_uiLanguageCO_currentIndexChanged(int); }; @@ -299,7 +407,7 @@ class PrefPrinter : public PrefModule, public Ui::PrefPrinterUi { Q_OBJECT public: - PrefPrinter(QWidget * parent = 0); + PrefPrinter(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); @@ -310,61 +418,101 @@ class PrefUserInterface : public PrefModule, public Ui::PrefUi { Q_OBJECT public: - PrefUserInterface(GuiPrefsDialog * form, QWidget * parent = 0); + PrefUserInterface(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); public Q_SLOTS: - void select_ui(); - void select_bind(); - void on_loadWindowSizeCB_toggled(bool); - + void selectUi(); + void on_clearSessionPB_clicked(); }; -class PrefIdentity : public PrefModule, public Ui::PrefIdentityUi +class PrefEdit : public PrefModule, public Ui::PrefEditUi { Q_OBJECT public: - PrefIdentity(QWidget * parent = 0); + PrefEdit(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); }; -/// -class GuiPrefsDialog : public GuiDialog, public Ui::PrefsUi + + +class GuiShortcutDialog : public QDialog, public Ui::shortcutUi +{ +public: + GuiShortcutDialog(QWidget * parent); +}; + + +class PrefShortcuts : public PrefModule, public Ui::PrefShortcuts { Q_OBJECT public: - GuiPrefsDialog(LyXView & lv); + PrefShortcuts(GuiPreferences * form); void apply(LyXRC & rc) const; - void updateRc(LyXRC const & rc); + void update(LyXRC const & rc); + void updateShortcutsTW(); + void modifyShortcut(); + void removeShortcut(); + /// + void setItemType(QTreeWidgetItem * item, KeyMap::ItemType tag); + QTreeWidgetItem * insertShortcutItem(FuncRequest const & lfun, + KeySequence const & shortcut, KeyMap::ItemType tag); public Q_SLOTS: - void change_adaptor(); - -public: - // - void closeEvent(QCloseEvent * e); + void selectBind(); + void on_modifyPB_pressed(); + void on_newPB_pressed(); + void on_removePB_pressed(); + void on_searchLE_textEdited(); + /// + void on_shortcutsTW_itemSelectionChanged(); + void on_shortcutsTW_itemDoubleClicked(); /// - void add(PrefModule * module); + void shortcutOkPressed(); + void shortcutCancelPressed(); + void shortcutClearPressed(); + void shortcutRemovePressed(); + +private: /// - Converters & converters(); + GuiShortcutDialog * shortcut_; /// - Formats & formats(); + ButtonController shortcut_bc_; + /// category items + QTreeWidgetItem * editItem_; + QTreeWidgetItem * mathItem_; + QTreeWidgetItem * bufferItem_; + QTreeWidgetItem * layoutItem_; + QTreeWidgetItem * systemItem_; + // system_bind_ holds bindings from rc.bind_file + // user_bind_ holds \bind bindings from user.bind + // user_unbind_ holds \unbind bindings from user.bind + // When an item is inserted, it is added to user_bind_ + // When an item from system_bind_ is deleted, it is added to user_unbind_ + // When an item in user_bind_ or user_unbind_ is deleted, it is + // deleted (unbind) + KeyMap system_bind_; + KeyMap user_bind_; + KeyMap user_unbind_; /// - Movers & movers(); - /// parent controller - ControlPrefs & controller() const; - /// Apply changes - void applyView(); - /// update (do we need this?) - void update_contents(); + QString save_lfun_; +}; - std::vector modules_; + +class PrefIdentity : public PrefModule, public Ui::PrefIdentityUi +{ + Q_OBJECT +public: + PrefIdentity(GuiPreferences * form); + + void apply(LyXRC & rc) const; + void update(LyXRC const & rc); };