]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiPrefs.cpp
Complete the removal of the embedding stuff. Maybe. It's hard to be sure we got every...
[lyx.git] / src / frontends / qt4 / GuiPrefs.cpp
index ff288c34daca9cd864c32b2f8796b7bcb0b4af78..1b781fb45a7fbe8251b0a6bb12d7a3a6d446f751 100644 (file)
@@ -35,6 +35,7 @@
 #include "support/FileFilterList.h"
 #include "support/FileName.h"
 #include "support/filetools.h"
+#include "support/foreach.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
 #include "support/os.h"
@@ -77,13 +78,6 @@ namespace frontend {
 //
 /////////////////////////////////////////////////////////////////////
 
-FileName libFileSearch(QString const & dir, QString const & name,
-                               QString const & ext = QString())
-{
-       return support::libFileSearch(fromqstr(dir), fromqstr(name), fromqstr(ext));
-}
-
-
 /** Launch a file dialog and return the chosen file.
        filename: a suggested filename.
        title: the title of the dialog.
@@ -144,8 +138,8 @@ QString browseLibFile(QString const & dir,
 
        // remove the extension if it is the default one
        QString noextresult;
-       if (toqstr(getExtension(fromqstr(result))) == ext)
-               noextresult = toqstr(removeExtension(fromqstr(result)));
+       if (getExtension(result) == ext)
+               noextresult = removeExtension(result);
        else
                noextresult = result;
 
@@ -216,15 +210,18 @@ QString browseRelFile(QString const & filename, QString const & refpath,
 
 namespace frontend {
 
-template<class A>
-static size_t findPos_helper(vector<A> const & vec, A const & val)
-{
-       typedef typename vector<A>::const_iterator Cit;
+string const catLookAndFeel = N_("Look & Feel");
+string const catEditing = N_("Editing");
+string const catLanguage = N_("Language Settings");
+string const catOutput = N_("Output");
+string const catFiles = N_("File Handling");
 
-       Cit it = find(vec.begin(), vec.end(), val);
-       if (it == vec.end())
-               return 0;
-       return distance(vec.begin(), it);
+static int findPos_helper(QStringList const & vec, QString const & val)
+{
+       for (int i = 0; i != vec.size(); ++i)
+               if (vec[i] == val)
+                       return i;
+       return 0;
 }
 
 
@@ -331,7 +328,7 @@ static void setComboxFont(QComboBox * cb, string const & family,
 /////////////////////////////////////////////////////////////////////
 
 PrefPlaintext::PrefPlaintext(QWidget * parent)
-       : PrefModule(qt_("Plain text"), 0, parent)
+       : PrefModule(qt_(catOutput), qt_("Plain text"), 0, parent)
 {
        setupUi(this);
        connect(plaintextLinelengthSB, SIGNAL(valueChanged(int)),
@@ -362,7 +359,7 @@ void PrefPlaintext::update(LyXRC const & rc)
 /////////////////////////////////////////////////////////////////////
 
 PrefDate::PrefDate(QWidget * parent)
-       : PrefModule(qt_("Date format"), 0, parent)
+       : PrefModule(qt_(catOutput), qt_("Date format"), 0, parent)
 {
        setupUi(this);
        connect(DateED, SIGNAL(textChanged(QString)),
@@ -389,7 +386,7 @@ void PrefDate::update(LyXRC const & rc)
 /////////////////////////////////////////////////////////////////////
 
 PrefInput::PrefInput(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("Keyboard/Mouse"), form, parent)
+       : PrefModule(qt_(catEditing), qt_("Keyboard/Mouse"), form, parent)
 {
        setupUi(this);
 
@@ -399,22 +396,6 @@ PrefInput::PrefInput(GuiPreferences * form, QWidget * parent)
                this, SIGNAL(changed()));
        connect(secondKeymapED, SIGNAL(textChanged(QString)),
                this, SIGNAL(changed()));
-       connect(inlineDelaySB, SIGNAL(valueChanged(double)),
-               this, SIGNAL(changed()));
-       connect(inlineMathCB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
-       connect(inlineTextCB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
-       connect(inlineDotsCB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
-       connect(popupDelaySB, SIGNAL(valueChanged(double)),
-               this, SIGNAL(changed()));
-       connect(popupMathCB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
-       connect(popupTextCB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
-       connect(popupAfterCompleteCB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
        connect(mouseWheelSpeedSB, SIGNAL(valueChanged(double)),
                this, SIGNAL(changed()));
 }
@@ -426,15 +407,6 @@ void PrefInput::apply(LyXRC & rc) const
        rc.use_kbmap = keymapCB->isChecked();
        rc.primary_kbmap = internal_path(fromqstr(firstKeymapED->text()));
        rc.secondary_kbmap = internal_path(fromqstr(secondKeymapED->text()));
-       rc.completion_inline_delay = inlineDelaySB->value();
-       rc.completion_inline_math = inlineMathCB->isChecked();
-       rc.completion_inline_text = inlineTextCB->isChecked();
-       rc.completion_inline_dots = inlineDotsCB->isChecked() ? 13 : -1;
-       rc.completion_popup_delay = popupDelaySB->value();
-       rc.completion_popup_math = popupMathCB->isChecked();
-       rc.completion_popup_text = popupTextCB->isChecked();
-       rc.completion_popup_after_complete
-       = popupAfterCompleteCB->isChecked();
        rc.mouse_wheel_speed = mouseWheelSpeedSB->value();
 }
 
@@ -445,14 +417,6 @@ void PrefInput::update(LyXRC const & rc)
        keymapCB->setChecked(rc.use_kbmap);
        firstKeymapED->setText(toqstr(external_path(rc.primary_kbmap)));
        secondKeymapED->setText(toqstr(external_path(rc.secondary_kbmap)));
-       inlineDelaySB->setValue(rc.completion_inline_delay);
-       inlineMathCB->setChecked(rc.completion_inline_math);
-       inlineTextCB->setChecked(rc.completion_inline_text);
-       inlineDotsCB->setChecked(rc.completion_inline_dots != -1);
-       popupDelaySB->setValue(rc.completion_popup_delay);
-       popupMathCB->setChecked(rc.completion_popup_math);
-       popupTextCB->setChecked(rc.completion_popup_text);
-       popupAfterCompleteCB->setChecked(rc.completion_popup_after_complete);
        mouseWheelSpeedSB->setValue(rc.mouse_wheel_speed);
 }
 
@@ -490,6 +454,68 @@ void PrefInput::on_keymapCB_toggled(bool keymap)
 }
 
 
+/////////////////////////////////////////////////////////////////////
+//
+// PrefCompletion
+//
+/////////////////////////////////////////////////////////////////////
+
+PrefCompletion::PrefCompletion(GuiPreferences * form, QWidget * parent)
+       : PrefModule(qt_(catEditing), qt_("Input Completion"), form, parent)
+{
+       setupUi(this);
+
+       connect(inlineDelaySB, SIGNAL(valueChanged(double)),
+               this, SIGNAL(changed()));
+       connect(inlineMathCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(inlineTextCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(inlineDotsCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(popupDelaySB, SIGNAL(valueChanged(double)),
+               this, SIGNAL(changed()));
+       connect(popupMathCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(popupTextCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(popupAfterCompleteCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(cursorTextCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+}
+
+
+void PrefCompletion::apply(LyXRC & rc) const
+{
+       rc.completion_inline_delay = inlineDelaySB->value();
+       rc.completion_inline_math = inlineMathCB->isChecked();
+       rc.completion_inline_text = inlineTextCB->isChecked();
+       rc.completion_inline_dots = inlineDotsCB->isChecked() ? 13 : -1;
+       rc.completion_popup_delay = popupDelaySB->value();
+       rc.completion_popup_math = popupMathCB->isChecked();
+       rc.completion_popup_text = popupTextCB->isChecked();
+       rc.completion_cursor_text = cursorTextCB->isChecked();
+       rc.completion_popup_after_complete =
+               popupAfterCompleteCB->isChecked();
+}
+
+
+void PrefCompletion::update(LyXRC const & rc)
+{
+       inlineDelaySB->setValue(rc.completion_inline_delay);
+       inlineMathCB->setChecked(rc.completion_inline_math);
+       inlineTextCB->setChecked(rc.completion_inline_text);
+       inlineDotsCB->setChecked(rc.completion_inline_dots != -1);
+       popupDelaySB->setValue(rc.completion_popup_delay);
+       popupMathCB->setChecked(rc.completion_popup_math);
+       popupTextCB->setChecked(rc.completion_popup_text);
+       cursorTextCB->setChecked(rc.completion_cursor_text);
+       popupAfterCompleteCB->setChecked(rc.completion_popup_after_complete);
+}
+
+
+
 /////////////////////////////////////////////////////////////////////
 //
 // PrefLatex
@@ -497,7 +523,7 @@ void PrefInput::on_keymapCB_toggled(bool keymap)
 /////////////////////////////////////////////////////////////////////
 
 PrefLatex::PrefLatex(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("LaTeX"), form, parent)
+       : PrefModule(qt_(catOutput), qt_("LaTeX"), form, parent)
 {
        setupUi(this);
        connect(latexEncodingED, SIGNAL(textChanged(QString)),
@@ -564,7 +590,7 @@ void PrefLatex::update(LyXRC const & rc)
 /////////////////////////////////////////////////////////////////////
 
 PrefScreenFonts::PrefScreenFonts(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("Screen fonts"), form, parent)
+       : PrefModule(qt_(catLookAndFeel), qt_("Screen fonts"), form, parent)
 {
        setupUi(this);
 
@@ -738,7 +764,7 @@ struct ColorSorter
 } // namespace anon
 
 PrefColors::PrefColors(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("Colors"), form, parent)
+       : PrefModule(qt_(catLookAndFeel), qt_("Colors"), form, parent)
 {
        setupUi(this);
 
@@ -802,6 +828,7 @@ void PrefColors::update(LyXRC const & /*rc*/)
        change_lyxObjects_selection();
 }
 
+
 void PrefColors::change_color()
 {
        int const row = lyxObjectsLW->currentRow();
@@ -836,7 +863,7 @@ void PrefColors::change_lyxObjects_selection()
 /////////////////////////////////////////////////////////////////////
 
 PrefDisplay::PrefDisplay(QWidget * parent)
-       : PrefModule(qt_("Graphics"), 0, parent)
+       : PrefModule(qt_(catLookAndFeel), qt_("Graphics"), 0, parent)
 {
        setupUi(this);
        connect(instantPreviewCO, SIGNAL(activated(int)),
@@ -907,7 +934,7 @@ void PrefDisplay::update(LyXRC const & rc)
 /////////////////////////////////////////////////////////////////////
 
 PrefPaths::PrefPaths(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("Paths"), form, parent)
+       : PrefModule(QString(), qt_("Paths"), form, parent)
 {
        setupUi(this);
        connect(exampleDirPB, SIGNAL(clicked()), this, SLOT(select_exampledir()));
@@ -1020,7 +1047,7 @@ void PrefPaths::select_lyxpipe()
 /////////////////////////////////////////////////////////////////////
 
 PrefSpellchecker::PrefSpellchecker(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("Spellchecker"), form, parent)
+       : PrefModule(qt_(catLanguage), qt_("Spellchecker"), form, parent)
 {
        setupUi(this);
 
@@ -1129,7 +1156,7 @@ void PrefSpellchecker::select_dict()
 
 
 PrefConverters::PrefConverters(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("Converters"), form, parent)
+       : PrefModule(qt_(catFiles), qt_("Converters"), form, parent)
 {
        setupUi(this);
 
@@ -1399,7 +1426,7 @@ string FormatPrettynameValidator::str(Formats::const_iterator it) const
 
 
 PrefFileformats::PrefFileformats(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("File formats"), form, parent)
+       : PrefModule(qt_(catFiles), qt_("File formats"), form, parent)
 {
        setupUi(this);
        formatED->setValidator(new FormatNameValidator(formatsCB, form_->formats()));
@@ -1598,7 +1625,7 @@ void PrefFileformats::on_formatRemovePB_clicked()
 /////////////////////////////////////////////////////////////////////
 
 PrefLanguage::PrefLanguage(QWidget * parent)
-       : PrefModule(qt_("Language"), 0, parent)
+       : PrefModule(qt_(catLanguage), qt_("Language"), 0, parent)
 {
        setupUi(this);
 
@@ -1630,13 +1657,11 @@ PrefLanguage::PrefLanguage(QWidget * parent)
        defaultLanguageCO->clear();
 
        // store the lang identifiers for later
-       vector<LanguagePair> const langs = getLanguageData(false);
-       vector<LanguagePair>::const_iterator lit  = langs.begin();
-       vector<LanguagePair>::const_iterator lend = langs.end();
-       lang_.clear();
-       for (; lit != lend; ++lit) {
-               defaultLanguageCO->addItem(toqstr(lit->first));
-               lang_.push_back(lit->second);
+       //foreach (LanguagePair const & lpair, languageData(false)) {
+       QList<LanguagePair> l = languageData(false);
+       foreach (LanguagePair const & lpair, l) {
+               defaultLanguageCO->addItem(lpair.first);
+               lang_.append(lpair.second);
        }
 }
 
@@ -1654,7 +1679,7 @@ void PrefLanguage::apply(LyXRC & rc) const
        rc.language_package = fromqstr(languagePackageED->text());
        rc.language_command_begin = fromqstr(startCommandED->text());
        rc.language_command_end = fromqstr(endCommandED->text());
-       rc.default_language = lang_[defaultLanguageCO->currentIndex()];
+       rc.default_language = fromqstr(lang_[defaultLanguageCO->currentIndex()]);
 }
 
 
@@ -1675,7 +1700,7 @@ void PrefLanguage::update(LyXRC const & rc)
        startCommandED->setText(toqstr(rc.language_command_begin));
        endCommandED->setText(toqstr(rc.language_command_end));
 
-       int const pos = int(findPos_helper(lang_, rc.default_language));
+       int const pos = findPos_helper(lang_, toqstr(rc.default_language));
        defaultLanguageCO->setCurrentIndex(pos);
 }
 
@@ -1687,7 +1712,7 @@ void PrefLanguage::update(LyXRC const & rc)
 /////////////////////////////////////////////////////////////////////
 
 PrefPrinter::PrefPrinter(QWidget * parent)
-       : PrefModule(qt_("Printer"), 0, parent)
+       : PrefModule(qt_(catOutput), qt_("Printer"), 0, parent)
 {
        setupUi(this);
 
@@ -1785,7 +1810,7 @@ void PrefPrinter::update(LyXRC const & rc)
 /////////////////////////////////////////////////////////////////////
 
 PrefUserInterface::PrefUserInterface(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("User interface"), form, parent)
+       : PrefModule(qt_(catLookAndFeel), qt_("User interface"), form, parent)
 {
        setupUi(this);
 
@@ -1793,6 +1818,8 @@ PrefUserInterface::PrefUserInterface(GuiPreferences * form, QWidget * parent)
                autoSaveSB, SLOT(setEnabled(bool)));
        connect(autoSaveCB, SIGNAL(toggled(bool)),
                TextLabel1, SLOT(setEnabled(bool)));
+       connect(openDocumentsInTabsCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
        connect(uiFilePB, SIGNAL(clicked()),
                this, SLOT(select_ui()));
        connect(uiFileED, SIGNAL(textChanged(QString)),
@@ -1803,12 +1830,6 @@ PrefUserInterface::PrefUserInterface(GuiPreferences * form, QWidget * parent)
                this, SIGNAL(changed()));
        connect(allowGeometrySessionCB, SIGNAL(clicked()),
                this, SIGNAL(changed()));
-       connect(cursorFollowsCB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
-       connect(sortEnvironmentsCB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
-       connect(macroEditStyleCO, SIGNAL(activated(int)),
-               this, SIGNAL(changed()));
        connect(autoSaveSB, SIGNAL(valueChanged(int)),
                this, SIGNAL(changed()));
        connect(autoSaveCB, SIGNAL(clicked()),
@@ -1817,16 +1838,6 @@ PrefUserInterface::PrefUserInterface(GuiPreferences * form, QWidget * parent)
                this, SIGNAL(changed()));
        connect(tooltipCB, SIGNAL(toggled(bool)),
                this, SIGNAL(changed()));
-       connect(fullscreenLimitGB, SIGNAL(clicked()),
-               this, SIGNAL(changed()));
-       connect(fullscreenWidthSB, SIGNAL(valueChanged(int)),
-               this, SIGNAL(changed()));
-       connect(toggleTabbarCB, SIGNAL(toggled(bool)),
-               this, SIGNAL(changed()));
-       connect(toggleScrollbarCB, SIGNAL(toggled(bool)),
-               this, SIGNAL(changed()));
-       connect(toggleToolbarsCB, SIGNAL(toggled(bool)),
-               this, SIGNAL(changed()));
        lastfilesSB->setMaximum(maxlastfiles);
 }
 
@@ -1837,22 +1848,11 @@ void PrefUserInterface::apply(LyXRC & rc) const
        rc.use_lastfilepos = restoreCursorCB->isChecked();
        rc.load_session = loadSessionCB->isChecked();
        rc.allow_geometry_session = allowGeometrySessionCB->isChecked();
-       rc.cursor_follows_scrollbar = cursorFollowsCB->isChecked();
-       rc.sort_layouts = sortEnvironmentsCB->isChecked();
-       switch (macroEditStyleCO->currentIndex()) {
-               case 0: rc.macro_edit_style = LyXRC::MACRO_EDIT_INLINE_BOX; break;
-               case 1: rc.macro_edit_style = LyXRC::MACRO_EDIT_INLINE; break;
-               case 2: rc.macro_edit_style = LyXRC::MACRO_EDIT_LIST;   break;
-       }
        rc.autosave = autoSaveSB->value() * 60;
        rc.make_backup = autoSaveCB->isChecked();
        rc.num_lastfiles = lastfilesSB->value();
        rc.use_tooltip = tooltipCB->isChecked();
-       rc.full_screen_toolbars = toggleToolbarsCB->isChecked();
-       rc.full_screen_scrollbar = toggleScrollbarCB->isChecked();
-       rc.full_screen_tabbar = toggleTabbarCB->isChecked();
-       rc.full_screen_width = fullscreenWidthSB->value();
-       rc.full_screen_limit = fullscreenLimitGB->isChecked();
+       rc.open_buffers_in_tabs = openDocumentsInTabsCB->isChecked();
 }
 
 
@@ -1862,9 +1862,6 @@ void PrefUserInterface::update(LyXRC const & rc)
        restoreCursorCB->setChecked(rc.use_lastfilepos);
        loadSessionCB->setChecked(rc.load_session);
        allowGeometrySessionCB->setChecked(rc.allow_geometry_session);
-       cursorFollowsCB->setChecked(rc.cursor_follows_scrollbar);
-       sortEnvironmentsCB->setChecked(rc.sort_layouts);
-       macroEditStyleCO->setCurrentIndex(rc.macro_edit_style);
        // convert to minutes
        int mins(rc.autosave / 60);
        if (rc.autosave && !mins)
@@ -1873,12 +1870,7 @@ void PrefUserInterface::update(LyXRC const & rc)
        autoSaveCB->setChecked(rc.make_backup);
        lastfilesSB->setValue(rc.num_lastfiles);
        tooltipCB->setChecked(rc.use_tooltip);
-       toggleScrollbarCB->setChecked(rc.full_screen_scrollbar);
-       toggleToolbarsCB->setChecked(rc.full_screen_toolbars);
-       toggleTabbarCB->setChecked(rc.full_screen_tabbar);
-       fullscreenWidthSB->setValue(rc.full_screen_width);
-       fullscreenLimitGB->setChecked(rc.full_screen_limit);
-
+       openDocumentsInTabsCB->setChecked(rc.open_buffers_in_tabs);
 }
 
 
@@ -1889,6 +1881,69 @@ void PrefUserInterface::select_ui()
                uiFileED->setText(file);
 }
 
+/////////////////////////////////////////////////////////////////////
+//
+// PrefEdit
+//
+/////////////////////////////////////////////////////////////////////
+
+PrefEdit::PrefEdit(GuiPreferences * form, QWidget * parent)
+       : PrefModule(qt_(catEditing), qt_("Control"), form, parent)
+{
+       setupUi(this);
+
+       connect(cursorFollowsCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(sortEnvironmentsCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(groupEnvironmentsCB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(macroEditStyleCO, SIGNAL(activated(int)),
+               this, SIGNAL(changed()));
+       connect(fullscreenLimitGB, SIGNAL(clicked()),
+               this, SIGNAL(changed()));
+       connect(fullscreenWidthSB, SIGNAL(valueChanged(int)),
+               this, SIGNAL(changed()));
+       connect(toggleTabbarCB, SIGNAL(toggled(bool)),
+               this, SIGNAL(changed()));
+       connect(toggleScrollbarCB, SIGNAL(toggled(bool)),
+               this, SIGNAL(changed()));
+       connect(toggleToolbarsCB, SIGNAL(toggled(bool)),
+               this, SIGNAL(changed()));
+}
+
+
+void PrefEdit::apply(LyXRC & rc) const
+{
+       rc.cursor_follows_scrollbar = cursorFollowsCB->isChecked();
+       rc.sort_layouts = sortEnvironmentsCB->isChecked();
+       rc.group_layouts = groupEnvironmentsCB->isChecked();
+       switch (macroEditStyleCO->currentIndex()) {
+               case 0: rc.macro_edit_style = LyXRC::MACRO_EDIT_INLINE_BOX; break;
+               case 1: rc.macro_edit_style = LyXRC::MACRO_EDIT_INLINE; break;
+               case 2: rc.macro_edit_style = LyXRC::MACRO_EDIT_LIST;   break;
+       }
+       rc.full_screen_toolbars = toggleToolbarsCB->isChecked();
+       rc.full_screen_scrollbar = toggleScrollbarCB->isChecked();
+       rc.full_screen_tabbar = toggleTabbarCB->isChecked();
+       rc.full_screen_width = fullscreenWidthSB->value();
+       rc.full_screen_limit = fullscreenLimitGB->isChecked();
+}
+
+
+void PrefEdit::update(LyXRC const & rc)
+{
+       cursorFollowsCB->setChecked(rc.cursor_follows_scrollbar);
+       sortEnvironmentsCB->setChecked(rc.sort_layouts);
+       groupEnvironmentsCB->setChecked(rc.group_layouts);
+       macroEditStyleCO->setCurrentIndex(rc.macro_edit_style);
+       toggleScrollbarCB->setChecked(rc.full_screen_scrollbar);
+       toggleToolbarsCB->setChecked(rc.full_screen_toolbars);
+       toggleTabbarCB->setChecked(rc.full_screen_tabbar);
+       fullscreenWidthSB->setValue(rc.full_screen_width);
+       fullscreenLimitGB->setChecked(rc.full_screen_limit);
+}
+
 
 /////////////////////////////////////////////////////////////////////
 //
@@ -1905,7 +1960,7 @@ GuiShortcutDialog::GuiShortcutDialog(QWidget * parent) : QDialog(parent)
 
 
 PrefShortcuts::PrefShortcuts(GuiPreferences * form, QWidget * parent)
-       : PrefModule(qt_("Shortcuts"), form, parent)
+       : PrefModule(qt_(catEditing), qt_("Shortcuts"), form, parent)
 {
        setupUi(this);
 
@@ -1988,23 +2043,23 @@ void PrefShortcuts::updateShortcutsTW()
        shortcutsTW->clear();
 
        editItem_ = new QTreeWidgetItem(shortcutsTW);
-       editItem_->setText(0, toqstr("Cursor, Mouse and Editing functions"));
+       editItem_->setText(0, qt_("Cursor, Mouse and Editing functions"));
        editItem_->setFlags(editItem_->flags() & ~Qt::ItemIsSelectable);
 
        mathItem_ = new QTreeWidgetItem(shortcutsTW);
-       mathItem_->setText(0, toqstr("Mathematical Symbols"));
+       mathItem_->setText(0, qt_("Mathematical Symbols"));
        mathItem_->setFlags(mathItem_->flags() & ~Qt::ItemIsSelectable);
        
        bufferItem_ = new QTreeWidgetItem(shortcutsTW);
-       bufferItem_->setText(0, toqstr("Buffer and Window"));
+       bufferItem_->setText(0, qt_("Buffer and Window"));
        bufferItem_->setFlags(bufferItem_->flags() & ~Qt::ItemIsSelectable);
        
        layoutItem_ = new QTreeWidgetItem(shortcutsTW);
-       layoutItem_->setText(0, toqstr("Font, Layouts and Textclasses"));
+       layoutItem_->setText(0, qt_("Font, Layouts and Textclasses"));
        layoutItem_->setFlags(layoutItem_->flags() & ~Qt::ItemIsSelectable);
 
        systemItem_ = new QTreeWidgetItem(shortcutsTW);
-       systemItem_->setText(0, toqstr("System and Miscellaneous"));
+       systemItem_->setText(0, qt_("System and Miscellaneous"));
        systemItem_->setFlags(systemItem_->flags() & ~Qt::ItemIsSelectable);
 
        // listBindings(unbound=true) lists all bound and unbound lfuns
@@ -2058,14 +2113,14 @@ void PrefShortcuts::setItemType(QTreeWidgetItem * item, item_type tag)
 QTreeWidgetItem * PrefShortcuts::insertShortcutItem(FuncRequest const & lfun,
                KeySequence const & seq, item_type tag)
 {
-       kb_action action = lfun.action;
+       FuncCode action = lfun.action;
        string const action_name = lyxaction.getActionName(action);
        QString const lfun_name = toqstr(from_utf8(action_name) 
-                       + " " + lfun.argument());
+                       + ' ' + lfun.argument());
        QString const shortcut = toqstr(seq.print(KeySequence::ForGui));
        item_type item_tag = tag;
 
-       QTreeWidgetItem * newItem = NULL;
+       QTreeWidgetItem * newItem = 0;
        // for unbind items, try to find an existing item in the system bind list
        if (tag == UserUnbind) {
                QList<QTreeWidgetItem*> const items = shortcutsTW->findItems(lfun_name, 
@@ -2080,13 +2135,13 @@ QTreeWidgetItem * PrefShortcuts::insertShortcutItem(FuncRequest const & lfun,
                // unmatched removed?).
                if (!newItem) {
                        item_tag = UserExtraUnbind;
-                       return NULL;
+                       return 0;
                }
        }
        if (!newItem) {
                switch(lyxaction.getActionType(action)) {
                case LyXAction::Hidden:
-                       return NULL;
+                       return 0;
                case LyXAction::Edit:
                        newItem = new QTreeWidgetItem(editItem_);
                        break;
@@ -2126,9 +2181,9 @@ void PrefShortcuts::on_shortcutsTW_itemSelectionChanged()
        
        item_type tag = static_cast<item_type>(items[0]->data(0, Qt::UserRole).toInt());
        if (tag == UserUnbind)
-               removePB->setText(toqstr("Restore"));
+               removePB->setText(qt_("Res&tore"));
        else
-               removePB->setText(toqstr("Remove"));
+               removePB->setText(qt_("Remo&ve"));
 }
 
 
@@ -2183,7 +2238,7 @@ void PrefShortcuts::on_removePB_pressed()
                        // but add an user unbind item
                        user_unbind_.bind(shortcut, func);
                        setItemType(items[i], UserUnbind);
-                       removePB->setText(toqstr("Restore"));
+                       removePB->setText(qt_("Res&tore"));
                        break;
                }
                case UserBind: {
@@ -2203,7 +2258,7 @@ void PrefShortcuts::on_removePB_pressed()
                        // become System again.
                        user_unbind_.unbind(shortcut, func);
                        setItemType(items[i], System);
-                       removePB->setText(toqstr("Remove"));
+                       removePB->setText(qt_("Remo&ve"));
                        break;
                }
                case UserExtraUnbind: {
@@ -2298,7 +2353,7 @@ void PrefShortcuts::shortcut_clearPB_pressed()
 /////////////////////////////////////////////////////////////////////
 
 PrefIdentity::PrefIdentity(QWidget * parent)
-       : PrefModule(qt_("Identity"), 0, parent)
+       : PrefModule(QString(), qt_("Identity"), 0, parent)
 {
        setupUi(this);
 
@@ -2343,11 +2398,13 @@ GuiPreferences::GuiPreferences(GuiView & lv)
        connect(restorePB, SIGNAL(clicked()), this, SLOT(slotRestore()));
 
        add(new PrefUserInterface(this));
+       add(new PrefEdit(this));
        add(new PrefShortcuts(this));
        add(new PrefScreenFonts(this));
        add(new PrefColors(this));
        add(new PrefDisplay);
        add(new PrefInput(this));
+       add(new PrefCompletion(this));
 
        add(new PrefPaths(this));
 
@@ -2385,8 +2442,11 @@ GuiPreferences::GuiPreferences(GuiView & lv)
 
 void GuiPreferences::add(PrefModule * module)
 {
-       BOOST_ASSERT(module);
-       prefsPS->addPanel(module, module->title());
+       LASSERT(module, /**/);
+       if (module->category().isEmpty())
+               prefsPS->addPanel(module, module->title());
+       else
+               prefsPS->addPanel(module, module->title(), module->category());
        connect(module, SIGNAL(changed()), this, SLOT(change_adaptor()));
        modules_.push_back(module);
 }