* 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.
*/
#define GUIPREFS_H
#include "GuiDialog.h"
-#include "ControlPrefs.h"
-#include "Color.h"
-#include "LyXRC.h"
+
+#include "ColorCode.h"
+#include "Converter.h"
#include "Format.h"
+#include "KeyMap.h"
+#include "lfuns.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_PrefColorsUi.h"
#include "ui_PrefDisplayUi.h"
#include "ui_PrefPathsUi.h"
+#include "ui_PrefShortcutsUi.h"
#include "ui_PrefSpellcheckerUi.h"
#include "ui_PrefConvertersUi.h"
#include "ui_PrefFileformatsUi.h"
#include "ui_PrefPrinterUi.h"
#include "ui_PrefUi.h"
#include "ui_PrefIdentityUi.h"
+#include "ui_ShortcutUi.h"
#include <QDialog>
#include <QValidator>
+#include <string>
#include <vector>
+
namespace lyx {
class Converters;
namespace frontend {
-class GuiPrefsDialog;
+class GuiPreferences;
class PrefModule : public QWidget
{
Q_OBJECT
public:
PrefModule(docstring const & t,
- GuiPrefsDialog * form = 0, QWidget * parent = 0)
+ GuiPreferences * form = 0, QWidget * parent = 0)
: QWidget(parent), title_(t), form_(form)
{}
protected:
docstring title_;
- GuiPrefsDialog * form_;
+ GuiPreferences * form_;
Q_SIGNALS:
void changed();
};
-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, QWidget * parent = 0);
virtual void apply(LyXRC & rc) const;
virtual void update(LyXRC const & rc);
{
Q_OBJECT
public:
- PrefLatex(GuiPrefsDialog * form, QWidget * parent = 0);
+ PrefLatex(GuiPreferences * form, QWidget * parent = 0);
virtual void apply(LyXRC & rc) const;
virtual void update(LyXRC const & rc);
{
Q_OBJECT
public:
- PrefScreenFonts(GuiPrefsDialog * form, QWidget * parent = 0);
+ PrefScreenFonts(GuiPreferences * form, QWidget * parent = 0);
virtual void apply(LyXRC & rc) const;
virtual void update(LyXRC const & rc);
{
Q_OBJECT
public:
- PrefColors(GuiPrefsDialog * form, QWidget * parent = 0);
+ PrefColors(GuiPreferences * form, QWidget * parent = 0);
void apply(LyXRC & rc) const;
void update(LyXRC const & rc);
void change_lyxObjects_selection();
private:
- std::vector<Color_color> lcolors_;
+ std::vector<ColorCode> 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.
{
Q_OBJECT
public:
- PrefPaths(GuiPrefsDialog * form, QWidget * parent = 0);
+ PrefPaths(GuiPreferences * form, QWidget * parent = 0);
void apply(LyXRC & rc) const;
void update(LyXRC const & rc);
private Q_SLOTS:
+ void select_exampledir();
void select_templatedir();
void select_tempdir();
void select_backupdir();
{
Q_OBJECT
public:
- PrefSpellchecker(GuiPrefsDialog * form, QWidget * parent = 0);
+ PrefSpellchecker(GuiPreferences * form, QWidget * parent = 0);
void apply(LyXRC & rc) const;
void update(LyXRC const & rc);
{
Q_OBJECT
public:
- PrefConverters(GuiPrefsDialog * form, QWidget * parent = 0);
+ PrefConverters(GuiPreferences * form, QWidget * parent = 0);
void apply(LyXRC & rc) const;
void update(LyXRC const & rc);
{
Q_OBJECT
public:
- PrefFileformats(GuiPrefsDialog * form, QWidget * parent = 0);
+ PrefFileformats(GuiPreferences * form, QWidget * parent = 0);
void apply(LyXRC & rc) const;
void update(LyXRC const & rc);
{
Q_OBJECT
public:
- PrefUserInterface(GuiPrefsDialog * form, QWidget * parent = 0);
+ PrefUserInterface(GuiPreferences * form, QWidget * parent = 0);
void apply(LyXRC & rc) const;
void update(LyXRC const & rc);
public Q_SLOTS:
void select_ui();
+};
+
+
+class GuiShortcutDialog : public QDialog, public Ui::shortcutUi
+{
+public:
+ GuiShortcutDialog(QWidget * parent);
+};
+
+
+class PrefShortcuts : public PrefModule, public Ui::PrefShortcuts
+{
+ Q_OBJECT
+private:
+ enum item_type {
+ System, //< loaded from a bind file
+ UserBind, //< \bind loaded from user.bind
+ UserUnbind, //< \unbind loaded from user.bind, with corresponding
+ //< entry in system bind file
+ UserExtraUnbind //< \unbind loaded from user.bind, without
+ //< corresponding entry in system bind file.
+ };
+public:
+ PrefShortcuts(GuiPreferences * form, QWidget * parent = 0);
+
+ void apply(LyXRC & rc) const;
+ void update(LyXRC const & rc);
+ void updateShortcutsTW();
+ ///
+ void setItemType(QTreeWidgetItem * item, item_type tag);
+ QTreeWidgetItem * insertShortcutItem(FuncRequest const & lfun,
+ KeySequence const & shortcut, item_type tag);
+
+public Q_SLOTS:
void select_bind();
- void on_loadWindowSizeCB_toggled(bool);
+ void on_newPB_pressed();
+ void on_removePB_pressed();
+ void on_searchLE_textEdited();
+ ///
+ void on_shortcutsTW_itemSelectionChanged();
+ void shortcut_okPB_pressed();
+ void shortcut_clearPB_pressed();
+ void on_shortcutsTW_itemDoubleClicked();
+private:
+ ///
+ 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_;
};
void update(LyXRC const & rc);
};
-///
-class GuiPrefsDialog : public GuiDialog, public Ui::PrefsUi
+
+class GuiPreferences : public GuiDialog, public Ui::PrefsUi
{
Q_OBJECT
public:
- GuiPrefsDialog(LyXView & lv);
+ GuiPreferences(GuiView & lv);
void apply(LyXRC & rc) const;
void updateRc(LyXRC const & rc);
void change_adaptor();
public:
- //
- void closeEvent(QCloseEvent * e);
///
void add(PrefModule * module);
- ///
- Converters & converters();
- ///
- Formats & formats();
- ///
- Movers & movers();
- /// parent controller
- ControlPrefs & controller();
/// Apply changes
void applyView();
/// update (do we need this?)
void updateContents();
std::vector<PrefModule *> modules_;
+
+ ///
+ bool initialiseParams(std::string const &);
+ ///
+ void clearParams() {}
+ ///
+ void dispatchParams();
+ ///
+ bool isBufferDependent() const { return false; }
+
+ /// various file pickers
+ docstring const browsebind(docstring const & file) const;
+ docstring const browseUI(docstring const & file) const;
+ docstring const browsekbmap(docstring const & file) const;
+ docstring const browsedict(docstring const & file) const;
+
+ /// general browse
+ docstring const browse(docstring const & file,
+ docstring const & title) const;
+
+ /// browse directory
+ docstring const browsedir(docstring const & path,
+ docstring const & title) const;
+
+ /// set a color
+ void setColor(ColorCode col, std::string 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:
+ /// 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<std::string> colors_;
+
+ bool redraw_gui_;
+ bool update_screen_font_;
};