#include "GuiPrefs.h"
+#include "ColorCache.h"
#include "FileDialog.h"
#include "GuiApplication.h"
#include "GuiFontExample.h"
#include "BufferList.h"
#include "Color.h"
#include "ConverterCache.h"
+#include "FontEnums.h"
#include "FuncRequest.h"
#include "KeyMap.h"
#include "KeySequence.h"
#include "frontends/alert.h"
#include "frontends/Application.h"
+#include "frontends/FontLoader.h"
#include <QAbstractItemModel>
#include <QCheckBox>
//
/////////////////////////////////////////////////////////////////////
-PrefPlaintext::PrefPlaintext(QWidget * parent)
- : PrefModule(qt_(catOutput), qt_("Plain text"), 0, parent)
+PrefPlaintext::PrefPlaintext(GuiPreferences * form)
+ : PrefModule(qt_(catOutput), qt_("Plain text"), form)
{
setupUi(this);
connect(plaintextLinelengthSB, SIGNAL(valueChanged(int)),
//
/////////////////////////////////////////////////////////////////////
-PrefDate::PrefDate(QWidget * parent)
- : PrefModule(qt_(catOutput), qt_("Date format"), 0, parent)
+PrefDate::PrefDate(GuiPreferences * form)
+ : PrefModule(qt_(catOutput), qt_("Date format"), form)
{
setupUi(this);
connect(DateED, SIGNAL(textChanged(QString)),
//
/////////////////////////////////////////////////////////////////////
-PrefInput::PrefInput(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catEditing), qt_("Keyboard/Mouse"), form, parent)
+PrefInput::PrefInput(GuiPreferences * form)
+ : PrefModule(qt_(catEditing), qt_("Keyboard/Mouse"), form)
{
setupUi(this);
}
-QString PrefInput::testKeymap(QString keymap)
+QString PrefInput::testKeymap(QString const & keymap)
{
- return form_->browsekbmap(toqstr(internal_path(fromqstr(keymap))));
+ return form_->browsekbmap(internalPath(keymap));
}
//
/////////////////////////////////////////////////////////////////////
-PrefCompletion::PrefCompletion(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catEditing), qt_("Input Completion"), form, parent)
+PrefCompletion::PrefCompletion(GuiPreferences * form)
+ : PrefModule(qt_(catEditing), qt_("Input Completion"), form)
{
setupUi(this);
//
/////////////////////////////////////////////////////////////////////
-PrefLatex::PrefLatex(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catOutput), qt_("LaTeX"), form, parent)
+PrefLatex::PrefLatex(GuiPreferences * form)
+ : PrefModule(qt_(catOutput), qt_("LaTeX"), form)
{
setupUi(this);
connect(latexEncodingED, SIGNAL(textChanged(QString)),
//
/////////////////////////////////////////////////////////////////////
-PrefScreenFonts::PrefScreenFonts(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catLookAndFeel), qt_("Screen fonts"), form, parent)
+PrefScreenFonts::PrefScreenFonts(GuiPreferences * form)
+ : PrefModule(qt_(catLookAndFeel), qt_("Screen fonts"), form)
{
setupUi(this);
} // namespace anon
-PrefColors::PrefColors(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catLookAndFeel), qt_("Colors"), form, parent)
+PrefColors::PrefColors(GuiPreferences * form)
+ : PrefModule(qt_(catLookAndFeel), qt_("Colors"), form)
{
setupUi(this);
{
for (unsigned int i = 0; i < lcolors_.size(); ++i)
if (curcolors_[i] != newcolors_[i])
- form_->setColor(lcolors_[i], fromqstr(newcolors_[i]));
+ form_->setColor(lcolors_[i], newcolors_[i]);
}
//
/////////////////////////////////////////////////////////////////////
-PrefDisplay::PrefDisplay(QWidget * parent)
- : PrefModule(qt_(catLookAndFeel), qt_("Graphics"), 0, parent)
+PrefDisplay::PrefDisplay(GuiPreferences * form)
+ : PrefModule(qt_(catLookAndFeel), qt_("Graphics"), form)
{
setupUi(this);
connect(instantPreviewCO, SIGNAL(activated(int)),
//
/////////////////////////////////////////////////////////////////////
-PrefPaths::PrefPaths(GuiPreferences * form, QWidget * parent)
- : PrefModule(QString(), qt_("Paths"), form, parent)
+PrefPaths::PrefPaths(GuiPreferences * form)
+ : PrefModule(QString(), qt_("Paths"), form)
{
setupUi(this);
connect(exampleDirPB, SIGNAL(clicked()), this, SLOT(select_exampledir()));
//
/////////////////////////////////////////////////////////////////////
-PrefSpellchecker::PrefSpellchecker(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catLanguage), qt_("Spellchecker"), form, parent)
+PrefSpellchecker::PrefSpellchecker(GuiPreferences * form)
+ : PrefModule(qt_(catLanguage), qt_("Spellchecker"), form)
{
setupUi(this);
/////////////////////////////////////////////////////////////////////
-PrefConverters::PrefConverters(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catFiles), qt_("Converters"), form, parent)
+PrefConverters::PrefConverters(GuiPreferences * form)
+ : PrefModule(qt_(catFiles), qt_("Converters"), form)
{
setupUi(this);
Formats::const_iterator cit = form_->formats().begin();
Formats::const_iterator end = form_->formats().end();
for (; cit != end; ++cit) {
- converterFromCO->addItem(toqstr(cit->prettyname()));
- converterToCO->addItem(toqstr(cit->prettyname()));
+ converterFromCO->addItem(qt_(cit->prettyname()));
+ converterToCO->addItem(qt_(cit->prettyname()));
}
// currentRowChanged(int) is also triggered when updating the listwidget
Converters::const_iterator ccit = form_->converters().begin();
Converters::const_iterator cend = form_->converters().end();
for (; ccit != cend; ++ccit) {
- string const name =
- ccit->From->prettyname() + " -> " + ccit->To->prettyname();
+ QString const name =
+ qt_(ccit->From->prettyname()) + " -> " + qt_(ccit->To->prettyname());
int type = form_->converters().getNumber(ccit->From->name(), ccit->To->name());
- new QListWidgetItem(toqstr(name), convertersLW, type);
+ new QListWidgetItem(name, convertersLW, type);
}
convertersLW->sortItems(Qt::AscendingOrder);
convertersLW->blockSignals(false);
/////////////////////////////////////////////////////////////////////
//
-// PrefFileformats
+// FormatValidator
//
/////////////////////////////////////////////////////////////////////
-//
+
+class FormatValidator : public QValidator
+{
+public:
+ FormatValidator(QWidget *, Formats const & f);
+ void fixup(QString & input) const;
+ QValidator::State validate(QString & input, int & pos) const;
+private:
+ virtual QString toString(Format const & format) const = 0;
+ int nr() const;
+ Formats const & formats_;
+};
+
+
FormatValidator::FormatValidator(QWidget * parent, Formats const & f)
: QValidator(parent), formats_(f)
{
Formats::const_iterator cit = formats_.begin();
Formats::const_iterator end = formats_.end();
for (; cit != end; ++cit) {
- string const name = str(cit);
+ QString const name = toString(*cit);
if (distance(formats_.begin(), cit) == nr()) {
- input = toqstr(name);
+ input = name;
return;
}
}
Formats::const_iterator end = formats_.end();
bool unknown = true;
for (; unknown && cit != end; ++cit) {
- string const name = str(cit);
+ QString const name = toString(*cit);
if (distance(formats_.begin(), cit) != nr())
- unknown = toqstr(name) != input;
+ unknown = name != input;
}
if (unknown && !input.isEmpty())
}
-FormatNameValidator::FormatNameValidator(QWidget * parent, Formats const & f)
- : FormatValidator(parent, f)
-{
-}
+/////////////////////////////////////////////////////////////////////
+//
+// FormatNameValidator
+//
+/////////////////////////////////////////////////////////////////////
-string FormatNameValidator::str(Formats::const_iterator it) const
+class FormatNameValidator : public FormatValidator
{
- return it->name();
-}
-
+public:
+ FormatNameValidator(QWidget * parent, Formats const & f)
+ : FormatValidator(parent, f)
+ {}
+private:
+ QString toString(Format const & format) const
+ {
+ return toqstr(format.name());
+ }
+};
-FormatPrettynameValidator::FormatPrettynameValidator(QWidget * parent, Formats const & f)
- : FormatValidator(parent, f)
-{
-}
+/////////////////////////////////////////////////////////////////////
+//
+// FormatPrettynameValidator
+//
+/////////////////////////////////////////////////////////////////////
-string FormatPrettynameValidator::str(Formats::const_iterator it) const
+class FormatPrettynameValidator : public FormatValidator
{
- return it->prettyname();
-}
+public:
+ FormatPrettynameValidator(QWidget * parent, Formats const & f)
+ : FormatValidator(parent, f)
+ {}
+private:
+ QString toString(Format const & format) const
+ {
+ return qt_(format.prettyname());
+ }
+};
+
+/////////////////////////////////////////////////////////////////////
+//
+// PrefFileformats
+//
+/////////////////////////////////////////////////////////////////////
-PrefFileformats::PrefFileformats(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catFiles), qt_("File formats"), form, parent)
+PrefFileformats::PrefFileformats(GuiPreferences * form)
+ : PrefModule(qt_(catFiles), qt_("File formats"), form)
{
setupUi(this);
formatED->setValidator(new FormatNameValidator(formatsCB, form_->formats()));
}
+namespace {
+
+string const l10n_shortcut(string const prettyname, string const shortcut)
+{
+ if (shortcut.empty())
+ return string();
+
+ string l10n_format =
+ to_utf8(_(prettyname + '|' + shortcut));
+ return split(l10n_format, '|');
+}
+
+}; // namespace anon
+
+
void PrefFileformats::apply(LyXRC & /*rc*/) const
{
}
Formats::const_iterator cit = form_->formats().begin();
Formats::const_iterator end = form_->formats().end();
for (; cit != end; ++cit)
- formatsCB->addItem(toqstr(cit->prettyname()),
- QVariant(form_->formats().getNumber(cit->name())) );
+ formatsCB->addItem(qt_(cit->prettyname()),
+ QVariant(form_->formats().getNumber(cit->name())));
// restore selection
int const item = formatsCB->findText(current, Qt::MatchExactly);
formatED->setText(toqstr(f.name()));
copierED->setText(toqstr(form_->movers().command(f.name())));
extensionED->setText(toqstr(f.extension()));
- shortcutED->setText(toqstr(f.shortcut()));
+ shortcutED->setText(
+ toqstr(l10n_shortcut(f.prettyname(), f.shortcut())));
viewerED->setText(toqstr(f.viewer()));
editorED->setText(toqstr(f.editor()));
documentCB->setChecked((f.documentFormat()));
void PrefFileformats::on_shortcutED_textEdited(const QString & s)
{
- currentFormat().setShortcut(fromqstr(s));
+ string const new_shortcut = fromqstr(s);
+ if (new_shortcut == l10n_shortcut(currentFormat().prettyname(),
+ currentFormat().shortcut()))
+ return;
+ currentFormat().setShortcut(new_shortcut);
changed();
}
void PrefFileformats::updatePrettyname()
{
- string const newname = fromqstr(formatsCB->currentText());
- if (newname == currentFormat().prettyname())
+ QString const newname = formatsCB->currentText();
+ if (newname == qt_(currentFormat().prettyname()))
return;
- currentFormat().setPrettyname(newname);
+ currentFormat().setPrettyname(fromqstr(newname));
formatsChanged();
updateView();
changed();
//
/////////////////////////////////////////////////////////////////////
-PrefLanguage::PrefLanguage(QWidget * parent)
- : PrefModule(qt_(catLanguage), qt_("Language"), 0, parent)
+PrefLanguage::PrefLanguage(GuiPreferences * form)
+ : PrefModule(qt_(catLanguage), qt_("Language"), form)
{
setupUi(this);
//
/////////////////////////////////////////////////////////////////////
-PrefPrinter::PrefPrinter(QWidget * parent)
- : PrefModule(qt_(catOutput), qt_("Printer"), 0, parent)
+PrefPrinter::PrefPrinter(GuiPreferences * form)
+ : PrefModule(qt_(catOutput), qt_("Printer"), form)
{
setupUi(this);
//
/////////////////////////////////////////////////////////////////////
-PrefUserInterface::PrefUserInterface(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catLookAndFeel), qt_("User interface"), form, parent)
+PrefUserInterface::PrefUserInterface(GuiPreferences * form)
+ : PrefModule(qt_(catLookAndFeel), qt_("User interface"), form)
{
setupUi(this);
uiFileED->setText(file);
}
+
/////////////////////////////////////////////////////////////////////
//
// PrefEdit
//
/////////////////////////////////////////////////////////////////////
-PrefEdit::PrefEdit(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catEditing), qt_("Control"), form, parent)
+PrefEdit::PrefEdit(GuiPreferences * form)
+ : PrefModule(qt_(catEditing), qt_("Control"), form)
{
setupUi(this);
}
-PrefShortcuts::PrefShortcuts(GuiPreferences * form, QWidget * parent)
- : PrefModule(qt_(catEditing), qt_("Shortcuts"), form, parent)
+PrefShortcuts::PrefShortcuts(GuiPreferences * form)
+ : PrefModule(qt_(catEditing), qt_("Shortcuts"), form)
{
setupUi(this);
KeyMap::BindingList::const_iterator it = bindinglist.begin();
KeyMap::BindingList::const_iterator it_end = bindinglist.end();
for (; it != it_end; ++it)
- insertShortcutItem(it->request, it->sequence, item_type(it->tag));
+ insertShortcutItem(it->request, it->sequence, ItemType(it->tag));
shortcutsTW->sortItems(0, Qt::AscendingOrder);
QList<QTreeWidgetItem*> items = shortcutsTW->selectedItems();
}
-void PrefShortcuts::setItemType(QTreeWidgetItem * item, item_type tag)
+void PrefShortcuts::setItemType(QTreeWidgetItem * item, ItemType tag)
{
item->setData(0, Qt::UserRole, QVariant(tag));
QFont font;
QTreeWidgetItem * PrefShortcuts::insertShortcutItem(FuncRequest const & lfun,
- KeySequence const & seq, item_type tag)
+ KeySequence const & seq, ItemType tag)
{
FuncCode action = lfun.action;
string const action_name = lyxaction.getActionName(action);
QString const lfun_name = toqstr(from_utf8(action_name)
+ ' ' + lfun.argument());
QString const shortcut = toqstr(seq.print(KeySequence::ForGui));
- item_type item_tag = tag;
+ ItemType item_tag = tag;
QTreeWidgetItem * newItem = 0;
// for unbind items, try to find an existing item in the system bind list
if (items.isEmpty())
return;
- item_type tag = static_cast<item_type>(items[0]->data(0, Qt::UserRole).toInt());
+ ItemType tag = static_cast<ItemType>(items[0]->data(0, Qt::UserRole).toInt());
if (tag == UserUnbind)
removePB->setText(qt_("Res&tore"));
else
string shortcut = fromqstr(items[i]->data(1, Qt::UserRole).toString());
string lfun = fromqstr(items[i]->text(0));
FuncRequest func = lyxaction.lookupFunc(lfun);
- item_type tag = static_cast<item_type>(items[i]->data(0, Qt::UserRole).toInt());
+ ItemType tag = static_cast<ItemType>(items[i]->data(0, Qt::UserRole).toInt());
switch (tag) {
case System: {
//
/////////////////////////////////////////////////////////////////////
-PrefIdentity::PrefIdentity(QWidget * parent)
- : PrefModule(QString(), qt_("Identity"), 0, parent)
+PrefIdentity::PrefIdentity(GuiPreferences * form)
+ : PrefModule(QString(), qt_("Identity"), form)
{
setupUi(this);
connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
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));
+ addModule(new PrefUserInterface(this));
+ addModule(new PrefEdit(this));
+ addModule(new PrefShortcuts(this));
+ addModule(new PrefScreenFonts(this));
+ addModule(new PrefColors(this));
+ addModule(new PrefDisplay(this));
+ addModule(new PrefInput(this));
+ addModule(new PrefCompletion(this));
- add(new PrefPaths(this));
+ addModule(new PrefPaths(this));
- add(new PrefIdentity);
+ addModule(new PrefIdentity(this));
- add(new PrefLanguage);
- add(new PrefSpellchecker(this));
+ addModule(new PrefLanguage(this));
+ addModule(new PrefSpellchecker(this));
- add(new PrefPrinter);
- add(new PrefDate);
- add(new PrefPlaintext);
- add(new PrefLatex(this));
+ addModule(new PrefPrinter(this));
+ addModule(new PrefDate(this));
+ addModule(new PrefPlaintext(this));
+ addModule(new PrefLatex(this));
PrefConverters * converters = new PrefConverters(this);
PrefFileformats * formats = new PrefFileformats(this);
connect(formats, SIGNAL(formatsChanged()),
converters, SLOT(updateGui()));
- add(converters);
- add(formats);
+ addModule(converters);
+ addModule(formats);
prefsPS->setCurrentPanel(qt_("User interface"));
// FIXME: hack to work around resizing bug in Qt >= 4.2
}
-void GuiPreferences::add(PrefModule * module)
+void GuiPreferences::addModule(PrefModule * module)
{
LASSERT(module, /**/);
if (module->category().isEmpty())
}
-void GuiPreferences::setColor(ColorCode col, string const & hex)
+void GuiPreferences::setColor(ColorCode col, QString const & hex)
{
- colors_.push_back(lcolor.getLyXName(col) + ' ' + hex);
+ colors_.push_back(lcolor.getLyXName(col) + ' ' + fromqstr(hex));
}