X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiPrefs.h;h=2a0405fb3ec337eb1a482fd30757f8fe31bf801a;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=00dd244292e323831ff85f23e5cf34f0c5fa6c42;hpb=fc36725282df43059aee9a821f098309ccdbd523;p=lyx.git diff --git a/src/frontends/qt4/GuiPrefs.h b/src/frontends/qt4/GuiPrefs.h index 00dd244292..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. */ @@ -12,35 +14,42 @@ #ifndef GUIPREFS_H #define GUIPREFS_H -#include "GuiDialogView.h" -#include "ControlPrefs.h" -#include "Color.h" +#include "GuiDialog.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_PrefCygwinPathUi.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; @@ -49,58 +58,135 @@ class Movers; namespace frontend { -class GuiPrefs; +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, - GuiPrefs * 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_; - GuiPrefs * form_; + QString category_; + QString title_; + GuiPreferences * form_; Q_SIGNALS: void changed(); }; -class PrefPlaintext : public PrefModule, public Ui::PrefPlaintextUi +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); }; -class PrefDate : public PrefModule, public Ui::PrefDateUi +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(GuiPrefs * form, QWidget * parent = 0); + PrefInput(GuiPreferences * form); virtual void apply(LyXRC & rc) const; virtual void update(LyXRC const & rc); @@ -111,121 +197,136 @@ private Q_SLOTS: void on_keymapCB_toggled(bool); private: - QString testKeymap(QString keymap); + QString testKeymap(QString const & keymap); }; -class PrefLatex : public PrefModule, public Ui::PrefLatexUi +class PrefCompletion : public PrefModule, public Ui::PrefCompletionUi { Q_OBJECT public: - PrefLatex(GuiPrefs * form, QWidget * parent = 0); + 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(); }; -class PrefScreenFonts : public PrefModule, public Ui::PrefScreenFontsUi +class PrefLatex : public PrefModule, public Ui::PrefLatexUi { Q_OBJECT public: - PrefScreenFonts(GuiPrefs * form, QWidget * parent = 0); + PrefLatex(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 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; }; -class PrefColors : public PrefModule, public Ui::PrefColorsUi +class PrefScreenFonts : public PrefModule, public Ui::PrefScreenFontsUi { Q_OBJECT public: - PrefColors(GuiPrefs * form, QWidget * parent = 0); + PrefScreenFonts(GuiPreferences * form); - void apply(LyXRC & rc) const; - void update(LyXRC const & rc); + virtual void apply(LyXRC & rc) const; + virtual void update(LyXRC const & rc); private Q_SLOTS: - void change_color(); - void change_lyxObjects_selection(); - -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 curcolors_; - std::vector newcolors_; - + void selectRoman(const QString&); + void selectSans(const QString&); + void selectTypewriter(const QString&); }; -class PrefCygwinPath : public PrefModule, public Ui::PrefCygwinPathUi +class PrefColors : public PrefModule, public Ui::PrefColorsUi { Q_OBJECT public: - PrefCygwinPath(QWidget * parent = 0); + PrefColors(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); + +private Q_SLOTS: + void changeColor(); + void changeLyxObjectsSelection(); + +private: + std::vector lcolors_; + std::vector curcolors_; + std::vector newcolors_; }; -class PrefDisplay : public PrefModule, public Ui::PrefDisplayUi +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); }; -class PrefPaths : public PrefModule, public Ui::PrefPathsUi +class PrefPaths : public PrefModule, public Ui::PrefPathsUi { Q_OBJECT public: - PrefPaths(GuiPrefs * 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(); }; -class PrefSpellchecker : public PrefModule, public Ui::PrefSpellcheckerUi +class PrefSpellchecker : public PrefModule, public Ui::PrefSpellcheckerUi { Q_OBJECT public: - PrefSpellchecker(GuiPrefs * form, QWidget * parent = 0); + PrefSpellchecker(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); -private Q_SLOTS: - void select_dict(); }; -class PrefConverters : public PrefModule, public Ui::PrefConvertersUi +class PrefConverters : public PrefModule, public Ui::PrefConvertersUi { Q_OBJECT public: - PrefConverters(GuiPrefs * form, QWidget * parent = 0); + PrefConverters(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); @@ -234,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: @@ -245,157 +346,176 @@ private: }; -class PrefCopiers : public PrefModule, public Ui::PrefCopiersUi +class PrefFileformats : public PrefModule, public Ui::PrefFileformatsUi { Q_OBJECT public: - PrefCopiers(GuiPrefs * form, QWidget * parent = 0); + PrefFileformats(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); + void updateView(); - void update(); +Q_SIGNALS: + void formatsChanged(); 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(); + 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: - void updateButtons(); + Format & currentFormat(); + /// + void updateViewers(); + /// + void updateEditors(); + /// + LyXRC::Alternatives viewer_alternatives; + /// + LyXRC::Alternatives editor_alternatives; }; -class PrefFileformats : public PrefModule, public Ui::PrefFileformatsUi +class PrefLanguage : public PrefModule, public Ui::PrefLanguageUi { Q_OBJECT public: - PrefFileformats(GuiPrefs * form, QWidget * parent = 0); + PrefLanguage(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); - void update(); -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_uiLanguageCO_currentIndexChanged(int); }; -class PrefLanguage : public PrefModule, public Ui::PrefLanguageUi +class PrefPrinter : public PrefModule, public Ui::PrefPrinterUi { Q_OBJECT public: - PrefLanguage(QWidget * parent = 0); + PrefPrinter(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); - -private: - std::vector lang_; }; -class PrefPrinter : public PrefModule, public Ui::PrefPrinterUi +class PrefUserInterface : public PrefModule, public Ui::PrefUi { Q_OBJECT public: - PrefPrinter(QWidget * parent = 0); + PrefUserInterface(GuiPreferences * form); void apply(LyXRC & rc) const; void update(LyXRC const & rc); + +public Q_SLOTS: + void selectUi(); + void on_clearSessionPB_clicked(); }; -class PrefUserInterface : public PrefModule, public Ui::PrefUi +class PrefEdit : public PrefModule, public Ui::PrefEditUi { Q_OBJECT public: - PrefUserInterface(GuiPrefs * form, QWidget * parent = 0); + PrefEdit(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); - }; -class PrefIdentity : public PrefModule, public Ui::PrefIdentityUi + +class GuiShortcutDialog : public QDialog, public Ui::shortcutUi { - Q_OBJECT public: - PrefIdentity(QWidget * parent = 0); - - void apply(LyXRC & rc) const; - void update(LyXRC const & rc); + GuiShortcutDialog(QWidget * parent); }; -/// -class GuiPrefsDialog : public QDialog, public Ui::PrefsUi + +class PrefShortcuts : public PrefModule, public Ui::PrefShortcuts { Q_OBJECT public: - GuiPrefsDialog(GuiPrefs *); + 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(); - -protected: - 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 shortcutOkPressed(); + void shortcutCancelPressed(); + void shortcutClearPressed(); + void shortcutRemovePressed(); private: - void add(PrefModule * module); - -private: - GuiPrefs * form_; - std::vector modules_; + /// + GuiShortcutDialog * shortcut_; + /// + 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_; + /// + QString save_lfun_; }; -class GuiPrefs : public GuiView +class PrefIdentity : public PrefModule, public Ui::PrefIdentityUi { + Q_OBJECT public: - GuiPrefs(Dialog &); - - Converters & converters(); - Formats & formats(); - Movers & movers(); - /// parent controller - ControlPrefs & controller() - { return static_cast(this->getController()); } - /// parent controller - ControlPrefs const & controller() const - { return static_cast(this->getController()); } -private: - /// Apply changes - virtual void apply(); - - /// update (do we need this?) - virtual void update_contents(); - - /// build the dialog - virtual void build_dialog(); + PrefIdentity(GuiPreferences * form); + void apply(LyXRC & rc) const; + void update(LyXRC const & rc); }; + } // namespace frontend } // namespace lyx