#include "BufferList.h"
#include "Color.h"
#include "ConverterCache.h"
-#include "support/debug.h"
+#include "FileDialog.h"
#include "FuncRequest.h"
-#include "support/gettext.h"
#include "GuiFontExample.h"
#include "GuiKeySymbol.h"
#include "KeyMap.h"
#include "paper.h"
#include "Session.h"
+#include "support/debug.h"
+#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"
#include "support/Package.h"
-#include "support/FileFilterList.h"
#include "graphics/GraphicsTypes.h"
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QValidator>
-#include <QCloseEvent>
#include <iomanip>
#include <sstream>
namespace lyx {
namespace frontend {
+/////////////////////////////////////////////////////////////////////
+//
+// Browser Helpers
+//
+/////////////////////////////////////////////////////////////////////
+
+/** Launch a file dialog and return the chosen file.
+ filename: a suggested filename.
+ title: the title of the dialog.
+ pattern: *.ps etc.
+ dir1 = (name, dir), dir2 = (name, dir): extra buttons on the dialog.
+*/
+QString browseFile(QString const & filename,
+ QString const & title,
+ support::FileFilterList const & filters,
+ bool save = false,
+ QString const & label1 = QString(),
+ QString const & dir1 = QString(),
+ QString const & label2 = QString(),
+ QString const & dir2 = QString())
+{
+ QString lastPath = ".";
+ if (!filename.isEmpty())
+ lastPath = onlyPath(filename);
+
+ FileDialog dlg(title, LFUN_SELECT_FILE_SYNC);
+ dlg.setButton2(label1, dir1);
+ dlg.setButton2(label2, dir2);
+
+ FileDialog::Result result;
+
+ if (save)
+ result = dlg.save(lastPath, filters, onlyFilename(filename));
+ else
+ result = dlg.open(lastPath, filters, onlyFilename(filename));
+
+ return result.second;
+}
+
+
+/** Wrapper around browseFile which tries to provide a filename
+* relative to the user or system directory. The dir, name and ext
+* parameters have the same meaning as in the
+* support::LibFileSearch function.
+*/
+QString browseLibFile(QString const & dir,
+ QString const & name,
+ QString const & ext,
+ QString const & title,
+ support::FileFilterList const & filters)
+{
+ // FIXME UNICODE
+ QString const label1 = qt_("System files|#S#s");
+ QString const dir1 =
+ toqstr(addName(package().system_support().absFilename(), fromqstr(dir)));
+
+ QString const label2 = qt_("User files|#U#u");
+ QString const dir2 =
+ toqstr(addName(package().user_support().absFilename(), fromqstr(dir)));
+
+ QString const result = browseFile(toqstr(
+ libFileSearch(dir, name, ext).absFilename()),
+ title, filters, false, dir1, dir2);
+
+ // remove the extension if it is the default one
+ QString noextresult;
+ if (getExtension(result) == ext)
+ noextresult = removeExtension(result);
+ else
+ noextresult = result;
+
+ // remove the directory, if it is the default one
+ QString const file = onlyFilename(noextresult);
+ if (toqstr(libFileSearch(dir, file, ext).absFilename()) == result)
+ return file;
+ else
+ return noextresult;
+}
+
+
+/** Launch a file dialog and return the chosen directory.
+ pathname: a suggested pathname.
+ title: the title of the dialog.
+ dir1 = (name, dir), dir2 = (name, dir): extra buttons on the dialog.
+*/
+QString browseDir(QString const & pathname,
+ QString const & title,
+ QString const & label1 = QString(),
+ QString const & dir1 = QString(),
+ QString const & label2 = QString(),
+ QString const & dir2 = QString())
+{
+ QString lastPath = ".";
+ if (!pathname.isEmpty())
+ lastPath = onlyPath(pathname);
+
+ FileDialog dlg(title, LFUN_SELECT_FILE_SYNC);
+ dlg.setButton1(label1, dir1);
+ dlg.setButton2(label2, dir2);
+
+ FileDialog::Result const result =
+ dlg.opendir(lastPath, onlyFilename(pathname));
+
+ return result.second;
+}
+
+
+} // namespace frontend
+
+QString browseRelFile(QString const & filename, QString const & refpath,
+ QString const & title, FileFilterList const & filters, bool save,
+ QString const & label1, QString const & dir1,
+ QString const & label2, QString const & dir2)
+{
+ QString const fname = toqstr(makeAbsPath(
+ fromqstr(filename), fromqstr(refpath)).absFilename());
+
+ QString const outname =
+ frontend::browseFile(fname, title, filters, save, label1, dir1, label2, dir2);
+
+ QString const reloutname =
+ toqstr(makeRelPath(qstring_to_ucs4(outname), qstring_to_ucs4(refpath)));
+
+ if (reloutname.startsWith("../"))
+ return outname;
+ else
+ return reloutname;
+}
+
/////////////////////////////////////////////////////////////////////
//
//
/////////////////////////////////////////////////////////////////////
-template<class A>
-static size_t findPos_helper(vector<A> const & vec, A const & val)
-{
- typedef typename vector<A>::const_iterator Cit;
+namespace frontend {
- Cit it = find(vec.begin(), vec.end(), val);
- if (it == vec.end())
- return 0;
- return distance(vec.begin(), it);
+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");
+
+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;
}
if (!foundry.empty())
fontname += " [" + toqstr(foundry) + ']';
- for (int i = 0; i < cb->count(); ++i) {
+ for (int i = 0; i != cb->count(); ++i) {
if (cb->itemText(i) == fontname) {
cb->setCurrentIndex(i);
return;
/////////////////////////////////////////////////////////////////////
PrefPlaintext::PrefPlaintext(QWidget * parent)
- : PrefModule(_("Plain text"), 0, parent)
+ : PrefModule(qt_(catOutput), qt_("Plain text"), 0, parent)
{
setupUi(this);
connect(plaintextLinelengthSB, SIGNAL(valueChanged(int)),
/////////////////////////////////////////////////////////////////////
PrefDate::PrefDate(QWidget * parent)
- : PrefModule(_("Date format"), 0, parent)
+ : PrefModule(qt_(catOutput), qt_("Date format"), 0, parent)
{
setupUi(this);
connect(DateED, SIGNAL(textChanged(QString)),
/////////////////////////////////////////////////////////////////////
//
-// PrefKeyboard
+// PrefInput
//
/////////////////////////////////////////////////////////////////////
-PrefKeyboard::PrefKeyboard(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("Keyboard"), form, parent)
+PrefInput::PrefInput(GuiPreferences * form, QWidget * parent)
+ : PrefModule(qt_(catEditing), qt_("Keyboard/Mouse"), form, parent)
{
setupUi(this);
this, SIGNAL(changed()));
connect(secondKeymapED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+ connect(mouseWheelSpeedSB, SIGNAL(valueChanged(double)),
+ this, SIGNAL(changed()));
}
-void PrefKeyboard::apply(LyXRC & rc) const
+void PrefInput::apply(LyXRC & rc) const
{
// FIXME: can derive CB from the two EDs
rc.use_kbmap = keymapCB->isChecked();
rc.primary_kbmap = internal_path(fromqstr(firstKeymapED->text()));
rc.secondary_kbmap = internal_path(fromqstr(secondKeymapED->text()));
+ rc.mouse_wheel_speed = mouseWheelSpeedSB->value();
}
-void PrefKeyboard::update(LyXRC const & rc)
+void PrefInput::update(LyXRC const & rc)
{
// FIXME: can derive CB from the two EDs
keymapCB->setChecked(rc.use_kbmap);
firstKeymapED->setText(toqstr(external_path(rc.primary_kbmap)));
secondKeymapED->setText(toqstr(external_path(rc.secondary_kbmap)));
+ mouseWheelSpeedSB->setValue(rc.mouse_wheel_speed);
}
-QString PrefKeyboard::testKeymap(QString keymap)
+QString PrefInput::testKeymap(QString keymap)
{
- return toqstr(form_->browsekbmap(from_utf8(internal_path(fromqstr(keymap)))));
+ return form_->browsekbmap(toqstr(internal_path(fromqstr(keymap))));
}
-void PrefKeyboard::on_firstKeymapPB_clicked(bool)
+void PrefInput::on_firstKeymapPB_clicked(bool)
{
QString const file = testKeymap(firstKeymapED->text());
if (!file.isEmpty())
}
-void PrefKeyboard::on_secondKeymapPB_clicked(bool)
+void PrefInput::on_secondKeymapPB_clicked(bool)
{
QString const file = testKeymap(secondKeymapED->text());
if (!file.isEmpty())
}
-void PrefKeyboard::on_keymapCB_toggled(bool keymap)
+void PrefInput::on_keymapCB_toggled(bool keymap)
{
firstKeymapLA->setEnabled(keymap);
secondKeymapLA->setEnabled(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
/////////////////////////////////////////////////////////////////////
PrefLatex::PrefLatex(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("LaTeX"), form, parent)
+ : PrefModule(qt_(catOutput), qt_("LaTeX"), form, parent)
{
setupUi(this);
connect(latexEncodingED, SIGNAL(textChanged(QString)),
/////////////////////////////////////////////////////////////////////
PrefScreenFonts::PrefScreenFonts(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("Screen fonts"), form, parent)
+ : PrefModule(qt_(catLookAndFeel), qt_("Screen fonts"), form, parent)
{
setupUi(this);
pixmapCacheCB->setChecked(rc.use_pixmap_cache);
#if defined(Q_WS_X11)
- pixmapCacheGB->setEnabled(false);
+ pixmapCacheCB->setEnabled(false);
#endif
}
} // namespace anon
PrefColors::PrefColors(GuiPreferences * form, QWidget * parent)
- : PrefModule( _("Colors"), form, parent)
+ : PrefModule(qt_(catLookAndFeel), qt_("Colors"), form, parent)
{
setupUi(this);
change_lyxObjects_selection();
}
+
void PrefColors::change_color()
{
int const row = lyxObjectsLW->currentRow();
/////////////////////////////////////////////////////////////////////
PrefDisplay::PrefDisplay(QWidget * parent)
- : PrefModule(_("Graphics"), 0, parent)
+ : PrefModule(qt_(catLookAndFeel), qt_("Graphics"), 0, parent)
{
setupUi(this);
connect(instantPreviewCO, SIGNAL(activated(int)),
/////////////////////////////////////////////////////////////////////
PrefPaths::PrefPaths(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("Paths"), form, parent)
+ : PrefModule(QString(), qt_("Paths"), form, parent)
{
setupUi(this);
connect(exampleDirPB, SIGNAL(clicked()), this, SLOT(select_exampledir()));
void PrefPaths::select_exampledir()
{
- docstring file(form_->browsedir(
- from_utf8(internal_path(fromqstr(exampleDirED->text()))),
- _("Select directory for example files")));
- if (!file.empty())
- exampleDirED->setText(toqstr(file));
+ QString file = form_->browsedir(internalPath(exampleDirED->text()),
+ qt_("Select directory for example files"));
+ if (!file.isEmpty())
+ exampleDirED->setText(file);
}
void PrefPaths::select_templatedir()
{
- docstring file(form_->browsedir(
- from_utf8(internal_path(fromqstr(templateDirED->text()))),
- _("Select a document templates directory")));
- if (!file.empty())
- templateDirED->setText(toqstr(file));
+ QString file = form_->browsedir(internalPath(templateDirED->text()),
+ qt_("Select a document templates directory"));
+ if (!file.isEmpty())
+ templateDirED->setText(file);
}
void PrefPaths::select_tempdir()
{
- docstring file(form_->browsedir(
- from_utf8(internal_path(fromqstr(tempDirED->text()))),
- _("Select a temporary directory")));
- if (!file.empty())
- tempDirED->setText(toqstr(file));
+ QString file = form_->browsedir(internalPath(tempDirED->text()),
+ qt_("Select a temporary directory"));
+ if (!file.isEmpty())
+ tempDirED->setText(file);
}
void PrefPaths::select_backupdir()
{
- docstring file(form_->browsedir(
- from_utf8(internal_path(fromqstr(backupDirED->text()))),
- _("Select a backups directory")));
- if (!file.empty())
- backupDirED->setText(toqstr(file));
+ QString file = form_->browsedir(internalPath(backupDirED->text()),
+ qt_("Select a backups directory"));
+ if (!file.isEmpty())
+ backupDirED->setText(file);
}
void PrefPaths::select_workingdir()
{
- docstring file(form_->browsedir(
- from_utf8(internal_path(fromqstr(workingDirED->text()))),
- _("Select a document directory")));
- if (!file.empty())
- workingDirED->setText(toqstr(file));
+ QString file = form_->browsedir(internalPath(workingDirED->text()),
+ qt_("Select a document directory"));
+ if (!file.isEmpty())
+ workingDirED->setText(file);
}
void PrefPaths::select_lyxpipe()
{
- docstring file(form_->browse(
- from_utf8(internal_path(fromqstr(lyxserverDirED->text()))),
- _("Give a filename for the LyX server pipe")));
- if (!file.empty())
- lyxserverDirED->setText(toqstr(file));
+ QString file = form_->browse(internalPath(lyxserverDirED->text()),
+ qt_("Give a filename for the LyX server pipe"));
+ if (!file.isEmpty())
+ lyxserverDirED->setText(file);
}
/////////////////////////////////////////////////////////////////////
PrefSpellchecker::PrefSpellchecker(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("Spellchecker"), form, parent)
+ : PrefModule(qt_(catLanguage), qt_("Spellchecker"), form, parent)
{
setupUi(this);
void PrefSpellchecker::select_dict()
{
- docstring file(form_->browsedict(
- from_utf8(internal_path(fromqstr(persDictionaryED->text())))));
- if (!file.empty())
- persDictionaryED->setText(toqstr(file));
+ QString file = form_->browsedict(internalPath(persDictionaryED->text()));
+ if (!file.isEmpty())
+ persDictionaryED->setText(file);
}
PrefConverters::PrefConverters(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("Converters"), form, parent)
+ : PrefModule(qt_(catFiles), qt_("Converters"), form, parent)
{
setupUi(this);
PrefFileformats::PrefFileformats(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("File formats"), form, parent)
+ : PrefModule(qt_(catFiles), qt_("File formats"), form, parent)
{
setupUi(this);
formatED->setValidator(new FormatNameValidator(formatsCB, form_->formats()));
/////////////////////////////////////////////////////////////////////
PrefLanguage::PrefLanguage(QWidget * parent)
- : PrefModule(_("Language"), 0, parent)
+ : PrefModule(qt_(catLanguage), qt_("Language"), 0, parent)
{
setupUi(this);
- connect(rtlCB, SIGNAL(clicked()),
+ connect(rtlGB, SIGNAL(clicked()),
+ this, SIGNAL(changed()));
+ connect(visualCursorRB, SIGNAL(clicked()),
+ this, SIGNAL(changed()));
+ connect(logicalCursorRB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(markForeignCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
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);
}
}
void PrefLanguage::apply(LyXRC & rc) const
{
// FIXME: remove rtl_support bool
- rc.rtl_support = rtlCB->isChecked();
+ rc.rtl_support = rtlGB->isChecked();
+ rc.visual_cursor = rtlGB->isChecked() && visualCursorRB->isChecked();
rc.mark_foreign_language = markForeignCB->isChecked();
rc.language_auto_begin = autoBeginCB->isChecked();
rc.language_auto_end = autoEndCB->isChecked();
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()]);
}
void PrefLanguage::update(LyXRC const & rc)
{
// FIXME: remove rtl_support bool
- rtlCB->setChecked(rc.rtl_support);
+ rtlGB->setChecked(rc.rtl_support);
+ if (rc.visual_cursor)
+ visualCursorRB->setChecked(true);
+ else
+ logicalCursorRB->setChecked(true);
markForeignCB->setChecked(rc.mark_foreign_language);
autoBeginCB->setChecked(rc.language_auto_begin);
autoEndCB->setChecked(rc.language_auto_end);
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);
}
/////////////////////////////////////////////////////////////////////
PrefPrinter::PrefPrinter(QWidget * parent)
- : PrefModule(_("Printer"), 0, parent)
+ : PrefModule(qt_(catOutput), qt_("Printer"), 0, parent)
{
setupUi(this);
/////////////////////////////////////////////////////////////////////
PrefUserInterface::PrefUserInterface(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("User interface"), form, parent)
+ : PrefModule(qt_(catLookAndFeel), qt_("User interface"), form, parent)
{
setupUi(this);
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)),
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()),
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.open_buffers_in_tabs = openDocumentsInTabsCB->isChecked();
}
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)
autoSaveCB->setChecked(rc.make_backup);
lastfilesSB->setValue(rc.num_lastfiles);
tooltipCB->setChecked(rc.use_tooltip);
+ openDocumentsInTabsCB->setChecked(rc.open_buffers_in_tabs);
}
void PrefUserInterface::select_ui()
{
- docstring const name =
- from_utf8(internal_path(fromqstr(uiFileED->text())));
- docstring file = form_->browseUI(name);
- if (!file.empty())
- uiFileED->setText(toqstr(file));
+ QString file = form_->browseUI(internalPath(uiFileED->text()));
+ if (!file.isEmpty())
+ 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);
}
PrefShortcuts::PrefShortcuts(GuiPreferences * form, QWidget * parent)
- : PrefModule(_("Shortcuts"), form, parent)
+ : PrefModule(qt_(catEditing), qt_("Shortcuts"), form, parent)
{
setupUi(this);
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
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,
// 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;
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"));
}
void PrefShortcuts::select_bind()
{
- docstring const name =
- from_utf8(internal_path(fromqstr(bindFileED->text())));
- docstring file = form_->browsebind(name);
- if (!file.empty()) {
- bindFileED->setText(toqstr(file));
+ QString file = form_->browsebind(internalPath(bindFileED->text()));
+ if (!file.isEmpty()) {
+ bindFileED->setText(file);
system_bind_ = KeyMap();
- system_bind_.read(to_utf8(file));
+ system_bind_.read(fromqstr(file));
updateShortcutsTW();
}
}
// 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: {
// become System again.
user_unbind_.unbind(shortcut, func);
setItemType(items[i], System);
- removePB->setText(toqstr("Remove"));
+ removePB->setText(qt_("Remo&ve"));
break;
}
case UserExtraUnbind: {
/////////////////////////////////////////////////////////////////////
PrefIdentity::PrefIdentity(QWidget * parent)
- : PrefModule(_("Identity"), 0, parent)
+ : PrefModule(QString(), qt_("Identity"), 0, parent)
{
setupUi(this);
/////////////////////////////////////////////////////////////////////
GuiPreferences::GuiPreferences(GuiView & lv)
- : GuiDialog(lv, "prefs"), update_screen_font_(false)
+ : GuiDialog(lv, "prefs", qt_("Preferences")), update_screen_font_(false)
{
setupUi(this);
- setViewTitle(_("Preferences"));
QDialog::setModal(false);
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 PrefKeyboard(this));
+ add(new PrefInput(this));
+ add(new PrefCompletion(this));
add(new PrefPaths(this));
add(converters);
add(formats);
- prefsPS->setCurrentPanel(_("User interface"));
+ prefsPS->setCurrentPanel(qt_("User interface"));
// FIXME: hack to work around resizing bug in Qt >= 4.2
// bug verified with Qt 4.2.{0-3} (JSpitzm)
#if QT_VERSION >= 0x040200
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);
}
-void GuiPreferences::closeEvent(QCloseEvent * e)
-{
- slotClose();
- e->accept();
-}
-
-
void GuiPreferences::change_adaptor()
{
changed();
}
-docstring const GuiPreferences::browsebind(docstring const & file) const
+QString GuiPreferences::browsebind(QString const & file) const
{
- return browseLibFile(from_ascii("bind"), file, from_ascii("bind"),
- _("Choose bind file"),
+ return browseLibFile("bind", file, "bind", qt_("Choose bind file"),
FileFilterList(_("LyX bind files (*.bind)")));
}
-docstring const GuiPreferences::browseUI(docstring const & file) const
+QString GuiPreferences::browseUI(QString const & file) const
{
- return browseLibFile(from_ascii("ui"), file, from_ascii("ui"),
- _("Choose UI file"),
+ return browseLibFile("ui", file, "ui", qt_("Choose UI file"),
FileFilterList(_("LyX UI files (*.ui)")));
}
-docstring const GuiPreferences::browsekbmap(docstring const & file) const
+QString GuiPreferences::browsekbmap(QString const & file) const
{
- return browseLibFile(from_ascii("kbd"), file, from_ascii("kmap"),
- _("Choose keyboard map"),
+ return browseLibFile("kbd", file, "kmap", qt_("Choose keyboard map"),
FileFilterList(_("LyX keyboard maps (*.kmap)")));
}
-docstring const GuiPreferences::browsedict(docstring const & file) const
+QString GuiPreferences::browsedict(QString const & file) const
{
- if (lyxrc.use_spell_lib)
- return browseFile(file,
- _("Choose personal dictionary"),
- FileFilterList(_("*.pws")));
- else
- return browseFile(file,
- _("Choose personal dictionary"),
- FileFilterList(_("*.ispell")));
+ return browseFile(file, qt_("Choose personal dictionary"),
+ FileFilterList(lyxrc.use_spell_lib ? _("*.pws") : _("*.ispell")));
}
-docstring const GuiPreferences::browse(docstring const & file,
- docstring const & title) const
+QString GuiPreferences::browse(QString const & file,
+ QString const & title) const
{
return browseFile(file, title, FileFilterList(), true);
}
-docstring const GuiPreferences::browsedir(docstring const & path,
- docstring const & title) const
+QString GuiPreferences::browsedir(QString const & path,
+ QString const & title) const
{
return browseDir(path, title);
}