#include "PanelStack.h"
#include "paper.h"
#include "Session.h"
+#include "SpellChecker.h"
#include "support/debug.h"
#include "support/FileName.h"
this, SIGNAL(changed()));
connect(popupMathCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
+ connect(autocorrectionCB, SIGNAL(clicked()),
+ this, SIGNAL(changed()));
connect(popupTextCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(popupAfterCompleteCB, SIGNAL(clicked()),
}
+void PrefCompletion::on_inlineTextCB_clicked()
+{
+ enableCB();
+}
+
+
+void PrefCompletion::on_popupTextCB_clicked()
+{
+ enableCB();
+}
+
+
+void PrefCompletion::enableCB()
+{
+ cursorTextCB->setEnabled(
+ popupTextCB->isChecked() || inlineTextCB->isChecked());
+}
+
+
void PrefCompletion::apply(LyXRC & rc) const
{
rc.completion_inline_delay = inlineDelaySB->value();
rc.completion_inline_dots = inlineDotsCB->isChecked() ? 13 : -1;
rc.completion_popup_delay = popupDelaySB->value();
rc.completion_popup_math = popupMathCB->isChecked();
+ rc.autocorrection_math = autocorrectionCB->isChecked();
rc.completion_popup_text = popupTextCB->isChecked();
rc.completion_cursor_text = cursorTextCB->isChecked();
rc.completion_popup_after_complete =
inlineDotsCB->setChecked(rc.completion_inline_dots != -1);
popupDelaySB->setValue(rc.completion_popup_delay);
popupMathCB->setChecked(rc.completion_popup_math);
+ autocorrectionCB->setChecked(rc.autocorrection_math);
popupTextCB->setChecked(rc.completion_popup_text);
cursorTextCB->setChecked(rc.completion_cursor_text);
popupAfterCompleteCB->setChecked(rc.completion_popup_after_complete);
+ enableCB();
}
: PrefModule(qt_(catOutput), qt_("LaTeX"), form)
{
setupUi(this);
+ connect(latexEncodingCB, SIGNAL(clicked()),
+ this, SIGNAL(changed()));
connect(latexEncodingED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
connect(latexChecktexED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+ connect(latexBibtexCO, SIGNAL(activated(int)),
+ this, SIGNAL(changed()));
connect(latexBibtexED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+ connect(latexJBibtexED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
+ connect(latexIndexCO, SIGNAL(activated(int)),
+ this, SIGNAL(changed()));
connect(latexIndexED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+ connect(latexJIndexED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
connect(latexAutoresetCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(latexDviPaperED, SIGNAL(textChanged(QString)),
}
+void PrefLatex::on_latexEncodingCB_stateChanged(int state)
+{
+ latexEncodingED->setEnabled(state == Qt::Checked);
+}
+
+
+void PrefLatex::on_latexBibtexCO_activated(int n)
+{
+ QString const bibtex = latexBibtexCO->itemData(n).toString();
+ if (bibtex.isEmpty()) {
+ latexBibtexED->clear();
+ latexBibtexOptionsLA->setText(qt_("Co&mmand:"));
+ return;
+ }
+ for (LyXRC::CommandSet::const_iterator it = bibtex_alternatives.begin();
+ it != bibtex_alternatives.end(); ++it) {
+ QString const bib = toqstr(*it);
+ int ind = bib.indexOf(" ");
+ QString sel_command = bib.left(ind);
+ QString sel_options = ind < 0 ? QString() : bib.mid(ind + 1);
+ if (bibtex == sel_command) {
+ if (ind < 0)
+ latexBibtexED->clear();
+ else
+ latexBibtexED->setText(sel_options.trimmed());
+ }
+ }
+ latexBibtexOptionsLA->setText(qt_("&Options:"));
+}
+
+
+void PrefLatex::on_latexIndexCO_activated(int n)
+{
+ QString const index = latexIndexCO->itemData(n).toString();
+ if (index.isEmpty()) {
+ latexIndexED->clear();
+ latexIndexOptionsLA->setText(qt_("Co&mmand:"));
+ return;
+ }
+ for (LyXRC::CommandSet::const_iterator it = index_alternatives.begin();
+ it != index_alternatives.end(); ++it) {
+ QString const idx = toqstr(*it);
+ int ind = idx.indexOf(" ");
+ QString sel_command = idx.left(ind);
+ QString sel_options = ind < 0 ? QString() : idx.mid(ind + 1);
+ if (index == sel_command) {
+ if (ind < 0)
+ latexIndexED->clear();
+ else
+ latexIndexED->setText(sel_options.trimmed());
+ }
+ }
+ latexIndexOptionsLA->setText(qt_("Op&tions:"));
+}
+
+
void PrefLatex::apply(LyXRC & rc) const
{
- rc.fontenc = fromqstr(latexEncodingED->text());
+ // If bibtex is not empty, bibopt contains the options, otherwise
+ // it is a customized bibtex command with options.
+ QString const bibtex = latexBibtexCO->itemData(
+ latexBibtexCO->currentIndex()).toString();
+ QString const bibopt = latexBibtexED->text();
+ if (bibtex.isEmpty())
+ rc.bibtex_command = fromqstr(bibopt);
+ else if (bibopt.isEmpty())
+ rc.bibtex_command = fromqstr(bibtex);
+ else
+ rc.bibtex_command = fromqstr(bibtex) + " " + fromqstr(bibopt);
+
+ // If index is not empty, idxopt contains the options, otherwise
+ // it is a customized index command with options.
+ QString const index = latexIndexCO->itemData(
+ latexIndexCO->currentIndex()).toString();
+ QString const idxopt = latexIndexED->text();
+ if (index.isEmpty())
+ rc.index_command = fromqstr(idxopt);
+ else if (idxopt.isEmpty())
+ rc.index_command = fromqstr(index);
+ else
+ rc.index_command = fromqstr(index) + " " + fromqstr(idxopt);
+
+ if (latexEncodingCB->isChecked())
+ rc.fontenc = fromqstr(latexEncodingED->text());
+ else
+ rc.fontenc = "default";
rc.chktex_command = fromqstr(latexChecktexED->text());
- rc.bibtex_command = fromqstr(latexBibtexED->text());
- rc.index_command = fromqstr(latexIndexED->text());
+ rc.jbibtex_command = fromqstr(latexJBibtexED->text());
+ rc.jindex_command = fromqstr(latexJIndexED->text());
rc.nomencl_command = fromqstr(latexNomenclED->text());
rc.auto_reset_options = latexAutoresetCB->isChecked();
rc.view_dvi_paper_option = fromqstr(latexDviPaperED->text());
void PrefLatex::update(LyXRC const & rc)
{
- latexEncodingED->setText(toqstr(rc.fontenc));
+ latexBibtexCO->clear();
+
+ latexBibtexCO->addItem(qt_("Custom"), QString());
+ for (LyXRC::CommandSet::const_iterator it = rc.bibtex_alternatives.begin();
+ it != rc.bibtex_alternatives.end(); ++it) {
+ QString const command = toqstr(*it).left(toqstr(*it).indexOf(" "));
+ latexBibtexCO->addItem(command, command);
+ }
+
+ bibtex_alternatives = rc.bibtex_alternatives;
+
+ QString const bib = toqstr(rc.bibtex_command);
+ int ind = bib.indexOf(" ");
+ QString sel_command = bib.left(ind);
+ QString sel_options = ind < 0 ? QString() : bib.mid(ind + 1);
+
+ int pos = latexBibtexCO->findData(sel_command);
+ if (pos != -1) {
+ latexBibtexCO->setCurrentIndex(pos);
+ latexBibtexED->setText(sel_options.trimmed());
+ latexBibtexOptionsLA->setText(qt_("&Options:"));
+ } else {
+ latexBibtexED->setText(toqstr(rc.bibtex_command));
+ latexBibtexCO->setCurrentIndex(0);
+ latexBibtexOptionsLA->setText(qt_("Co&mmand:"));
+ }
+
+ latexIndexCO->clear();
+
+ latexIndexCO->addItem(qt_("Custom"), QString());
+ for (LyXRC::CommandSet::const_iterator it = rc.index_alternatives.begin();
+ it != rc.index_alternatives.end(); ++it) {
+ QString const command = toqstr(*it).left(toqstr(*it).indexOf(" "));
+ latexIndexCO->addItem(command, command);
+ }
+
+ index_alternatives = rc.index_alternatives;
+
+ QString const idx = toqstr(rc.index_command);
+ ind = idx.indexOf(" ");
+ sel_command = idx.left(ind);
+ sel_options = ind < 0 ? QString() : idx.mid(ind + 1);
+
+ pos = latexIndexCO->findData(sel_command);
+ if (pos != -1) {
+ latexIndexCO->setCurrentIndex(pos);
+ latexIndexED->setText(sel_options.trimmed());
+ latexIndexOptionsLA->setText(qt_("Op&tions:"));
+ } else {
+ latexIndexED->setText(toqstr(rc.index_command));
+ latexIndexCO->setCurrentIndex(0);
+ latexIndexOptionsLA->setText(qt_("Co&mmand:"));
+ }
+
+ if (rc.fontenc == "default") {
+ latexEncodingCB->setChecked(false);
+ latexEncodingED->setEnabled(false);
+ } else {
+ latexEncodingCB->setChecked(true);
+ latexEncodingED->setEnabled(true);
+ latexEncodingED->setText(toqstr(rc.fontenc));
+ }
latexChecktexED->setText(toqstr(rc.chktex_command));
- latexBibtexED->setText(toqstr(rc.bibtex_command));
- latexIndexED->setText(toqstr(rc.index_command));
+ latexJBibtexED->setText(toqstr(rc.jbibtex_command));
+ latexJIndexED->setText(toqstr(rc.jindex_command));
latexNomenclED->setText(toqstr(rc.nomencl_command));
latexAutoresetCB->setChecked(rc.auto_reset_options);
latexDviPaperED->setText(toqstr(rc.view_dvi_paper_option));
setupUi(this);
connect(screenRomanCO, SIGNAL(activated(QString)),
- this, SLOT(select_roman(QString)));
+ this, SLOT(selectRoman(QString)));
connect(screenSansCO, SIGNAL(activated(QString)),
- this, SLOT(select_sans(QString)));
+ this, SLOT(selectSans(QString)));
connect(screenTypewriterCO, SIGNAL(activated(QString)),
- this, SLOT(select_typewriter(QString)));
+ this, SLOT(selectTypewriter(QString)));
QFontDatabase fontdb;
QStringList families(fontdb.families());
rc.zoom = screenZoomSB->value();
rc.dpi = screenDpiSB->value();
- rc.font_sizes[FONT_SIZE_TINY] = fromqstr(screenTinyED->text());
- rc.font_sizes[FONT_SIZE_SCRIPT] = fromqstr(screenSmallestED->text());
- rc.font_sizes[FONT_SIZE_FOOTNOTE] = fromqstr(screenSmallerED->text());
- rc.font_sizes[FONT_SIZE_SMALL] = fromqstr(screenSmallED->text());
- rc.font_sizes[FONT_SIZE_NORMAL] = fromqstr(screenNormalED->text());
- rc.font_sizes[FONT_SIZE_LARGE] = fromqstr(screenLargeED->text());
- rc.font_sizes[FONT_SIZE_LARGER] = fromqstr(screenLargerED->text());
- rc.font_sizes[FONT_SIZE_LARGEST] = fromqstr(screenLargestED->text());
- rc.font_sizes[FONT_SIZE_HUGE] = fromqstr(screenHugeED->text());
- rc.font_sizes[FONT_SIZE_HUGER] = fromqstr(screenHugerED->text());
+ rc.font_sizes[FONT_SIZE_TINY] = widgetToDoubleStr(screenTinyED);
+ rc.font_sizes[FONT_SIZE_SCRIPT] = widgetToDoubleStr(screenSmallestED);
+ rc.font_sizes[FONT_SIZE_FOOTNOTE] = widgetToDoubleStr(screenSmallerED);
+ rc.font_sizes[FONT_SIZE_SMALL] = widgetToDoubleStr(screenSmallED);
+ rc.font_sizes[FONT_SIZE_NORMAL] = widgetToDoubleStr(screenNormalED);
+ rc.font_sizes[FONT_SIZE_LARGE] = widgetToDoubleStr(screenLargeED);
+ rc.font_sizes[FONT_SIZE_LARGER] = widgetToDoubleStr(screenLargerED);
+ rc.font_sizes[FONT_SIZE_LARGEST] = widgetToDoubleStr(screenLargestED);
+ rc.font_sizes[FONT_SIZE_HUGE] = widgetToDoubleStr(screenHugeED);
+ rc.font_sizes[FONT_SIZE_HUGER] = widgetToDoubleStr(screenHugerED);
rc.use_pixmap_cache = pixmapCacheCB->isChecked();
if (rc.font_sizes != oldrc.font_sizes
setComboxFont(screenTypewriterCO, rc.typewriter_font_name,
rc.typewriter_font_foundry);
- select_roman(screenRomanCO->currentText());
- select_sans(screenSansCO->currentText());
- select_typewriter(screenTypewriterCO->currentText());
+ selectRoman(screenRomanCO->currentText());
+ selectSans(screenSansCO->currentText());
+ selectTypewriter(screenTypewriterCO->currentText());
screenZoomSB->setValue(rc.zoom);
screenDpiSB->setValue(rc.dpi);
- screenTinyED->setText(toqstr(rc.font_sizes[FONT_SIZE_TINY]));
- screenSmallestED->setText(toqstr(rc.font_sizes[FONT_SIZE_SCRIPT]));
- screenSmallerED->setText(toqstr(rc.font_sizes[FONT_SIZE_FOOTNOTE]));
- screenSmallED->setText(toqstr(rc.font_sizes[FONT_SIZE_SMALL]));
- screenNormalED->setText(toqstr(rc.font_sizes[FONT_SIZE_NORMAL]));
- screenLargeED->setText(toqstr(rc.font_sizes[FONT_SIZE_LARGE]));
- screenLargerED->setText(toqstr(rc.font_sizes[FONT_SIZE_LARGER]));
- screenLargestED->setText(toqstr(rc.font_sizes[FONT_SIZE_LARGEST]));
- screenHugeED->setText(toqstr(rc.font_sizes[FONT_SIZE_HUGE]));
- screenHugerED->setText(toqstr(rc.font_sizes[FONT_SIZE_HUGER]));
+ doubleToWidget(screenTinyED, rc.font_sizes[FONT_SIZE_TINY]);
+ doubleToWidget(screenSmallestED, rc.font_sizes[FONT_SIZE_SCRIPT]);
+ doubleToWidget(screenSmallerED, rc.font_sizes[FONT_SIZE_FOOTNOTE]);
+ doubleToWidget(screenSmallED, rc.font_sizes[FONT_SIZE_SMALL]);
+ doubleToWidget(screenNormalED, rc.font_sizes[FONT_SIZE_NORMAL]);
+ doubleToWidget(screenLargeED, rc.font_sizes[FONT_SIZE_LARGE]);
+ doubleToWidget(screenLargerED, rc.font_sizes[FONT_SIZE_LARGER]);
+ doubleToWidget(screenLargestED, rc.font_sizes[FONT_SIZE_LARGEST]);
+ doubleToWidget(screenHugeED, rc.font_sizes[FONT_SIZE_HUGE]);
+ doubleToWidget(screenHugerED, rc.font_sizes[FONT_SIZE_HUGER]);
pixmapCacheCB->setChecked(rc.use_pixmap_cache);
#if defined(Q_WS_X11)
}
-void PrefScreenFonts::select_roman(const QString & name)
+void PrefScreenFonts::selectRoman(const QString & name)
{
screenRomanFE->set(QFont(name), name);
}
-void PrefScreenFonts::select_sans(const QString & name)
+void PrefScreenFonts::selectSans(const QString & name)
{
screenSansFE->set(QFont(name), name);
}
-void PrefScreenFonts::select_typewriter(const QString & name)
+void PrefScreenFonts::selectTypewriter(const QString & name)
{
screenTypewriterFE->set(QFont(name), name);
}
// End initialization
connect(colorChangePB, SIGNAL(clicked()),
- this, SLOT(change_color()));
+ this, SLOT(changeColor()));
connect(lyxObjectsLW, SIGNAL(itemSelectionChanged()),
- this, SLOT(change_lyxObjects_selection()));
+ this, SLOT(changeLyxObjectsSelection()));
connect(lyxObjectsLW, SIGNAL(itemActivated(QListWidgetItem*)),
- this, SLOT(change_color()));
+ this, SLOT(changeColor()));
}
lyxObjectsLW->item(i)->setIcon(QIcon(coloritem));
newcolors_[i] = curcolors_[i] = color.name();
}
- change_lyxObjects_selection();
+ changeLyxObjectsSelection();
}
-void PrefColors::change_color()
+void PrefColors::changeColor()
{
int const row = lyxObjectsLW->currentRow();
}
}
-void PrefColors::change_lyxObjects_selection()
+void PrefColors::changeLyxObjectsSelection()
{
colorChangePB->setDisabled(lyxObjectsLW->currentRow() < 0);
}
/////////////////////////////////////////////////////////////////////
PrefDisplay::PrefDisplay(GuiPreferences * form)
- : PrefModule(qt_(catLookAndFeel), qt_("Graphics"), form)
+ : PrefModule(qt_(catLookAndFeel), qt_("Display"), form)
{
setupUi(this);
connect(displayGraphicsCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
connect(instantPreviewCO, SIGNAL(activated(int)), this, SIGNAL(changed()));
+ connect(previewSizeSB, SIGNAL(valueChanged(double)), this, SIGNAL(changed()));
+ connect(paragraphMarkerCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+ if (instantPreviewCO->currentIndex() == 0)
+ previewSizeSB->setEnabled(false);
+ else
+ previewSizeSB->setEnabled(true);
+}
+
+
+void PrefDisplay::on_instantPreviewCO_currentIndexChanged(int index)
+{
+ if (index == 0)
+ previewSizeSB->setEnabled(false);
+ else
+ previewSizeSB->setEnabled(true);
}
}
rc.display_graphics = displayGraphicsCB->isChecked();
+ rc.preview_scale_factor = previewSizeSB->value();
+ rc.paragraph_markers = paragraphMarkerCB->isChecked();
// FIXME!! The graphics cache no longer has a changeDisplay method.
#if 0
displayGraphicsCB->setChecked(rc.display_graphics);
instantPreviewCO->setEnabled(rc.display_graphics);
+ previewSizeSB->setValue(rc.preview_scale_factor);
+ paragraphMarkerCB->setChecked(rc.paragraph_markers);
}
: PrefModule(QString(), qt_("Paths"), form)
{
setupUi(this);
- connect(exampleDirPB, SIGNAL(clicked()), this, SLOT(select_exampledir()));
- connect(templateDirPB, SIGNAL(clicked()), this, SLOT(select_templatedir()));
- connect(tempDirPB, SIGNAL(clicked()), this, SLOT(select_tempdir()));
- connect(backupDirPB, SIGNAL(clicked()), this, SLOT(select_backupdir()));
- connect(workingDirPB, SIGNAL(clicked()), this, SLOT(select_workingdir()));
- connect(lyxserverDirPB, SIGNAL(clicked()), this, SLOT(select_lyxpipe()));
- connect(thesaurusDirPB, SIGNAL(clicked()), this, SLOT(select_thesaurusdir()));
+
+ connect(workingDirPB, SIGNAL(clicked()), this, SLOT(selectWorkingdir()));
connect(workingDirED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
- connect(exampleDirED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
+
+ connect(templateDirPB, SIGNAL(clicked()), this, SLOT(selectTemplatedir()));
connect(templateDirED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
- connect(backupDirED, SIGNAL(textChanged(QString)),
+
+ connect(exampleDirPB, SIGNAL(clicked()), this, SLOT(selectExampledir()));
+ connect(exampleDirED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
- connect(tempDirED, SIGNAL(textChanged(QString)),
+
+ connect(backupDirPB, SIGNAL(clicked()), this, SLOT(selectBackupdir()));
+ connect(backupDirED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+
+ connect(lyxserverDirPB, SIGNAL(clicked()), this, SLOT(selectLyxPipe()));
connect(lyxserverDirED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+
+ connect(thesaurusDirPB, SIGNAL(clicked()), this, SLOT(selectThesaurusdir()));
connect(thesaurusDirED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+
+ connect(tempDirPB, SIGNAL(clicked()), this, SLOT(selectTempdir()));
+ connect(tempDirED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
+
+ connect(hunspellDirPB, SIGNAL(clicked()), this, SLOT(selectHunspelldir()));
+ connect(hunspellDirED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
+
connect(pathPrefixED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
}
rc.backupdir_path = internal_path(fromqstr(backupDirED->text()));
rc.tempdir_path = internal_path(fromqstr(tempDirED->text()));
rc.thesaurusdir_path = internal_path(fromqstr(thesaurusDirED->text()));
+ rc.hunspelldir_path = internal_path(fromqstr(hunspellDirED->text()));
rc.path_prefix = internal_path_list(fromqstr(pathPrefixED->text()));
// FIXME: should be a checkbox only
rc.lyxpipes = internal_path(fromqstr(lyxserverDirED->text()));
backupDirED->setText(toqstr(external_path(rc.backupdir_path)));
tempDirED->setText(toqstr(external_path(rc.tempdir_path)));
thesaurusDirED->setText(toqstr(external_path(rc.thesaurusdir_path)));
+ hunspellDirED->setText(toqstr(external_path(rc.hunspelldir_path)));
pathPrefixED->setText(toqstr(external_path_list(rc.path_prefix)));
// FIXME: should be a checkbox only
lyxserverDirED->setText(toqstr(external_path(rc.lyxpipes)));
}
-void PrefPaths::select_exampledir()
+void PrefPaths::selectExampledir()
{
QString file = browseDir(internalPath(exampleDirED->text()),
qt_("Select directory for example files"));
}
-void PrefPaths::select_templatedir()
+void PrefPaths::selectTemplatedir()
{
QString file = browseDir(internalPath(templateDirED->text()),
qt_("Select a document templates directory"));
}
-void PrefPaths::select_tempdir()
+void PrefPaths::selectTempdir()
{
QString file = browseDir(internalPath(tempDirED->text()),
qt_("Select a temporary directory"));
}
-void PrefPaths::select_backupdir()
+void PrefPaths::selectBackupdir()
{
QString file = browseDir(internalPath(backupDirED->text()),
qt_("Select a backups directory"));
}
-void PrefPaths::select_workingdir()
+void PrefPaths::selectWorkingdir()
{
QString file = browseDir(internalPath(workingDirED->text()),
qt_("Select a document directory"));
}
-void PrefPaths::select_thesaurusdir()
+void PrefPaths::selectThesaurusdir()
{
QString file = browseDir(internalPath(thesaurusDirED->text()),
qt_("Set the path to the thesaurus dictionaries"));
}
-void PrefPaths::select_lyxpipe()
+void PrefPaths::selectHunspelldir()
+{
+ QString file = browseDir(internalPath(hunspellDirED->text()),
+ qt_("Set the path to the Hunspell dictionaries"));
+ if (!file.isEmpty())
+ hunspellDirED->setText(file);
+}
+
+
+void PrefPaths::selectLyxPipe()
{
QString file = form_->browse(internalPath(lyxserverDirED->text()),
qt_("Give a filename for the LyX server pipe"));
{
setupUi(this);
- connect(persDictionaryPB, SIGNAL(clicked()), this, SLOT(select_dict()));
+#if defined(USE_ASPELL)
+ spellcheckerCB->addItem(qt_("aspell"), QString("aspell"));
+#endif
+#if defined(USE_ENCHANT)
+ spellcheckerCB->addItem(qt_("enchant"), QString("enchant"));
+#endif
+#if defined(USE_HUNSPELL)
+ spellcheckerCB->addItem(qt_("hunspell"), QString("hunspell"));
+#endif
- connect(altLanguageED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(escapeCharactersED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(persDictionaryED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(compoundWordCB, SIGNAL(clicked()),
- this, SIGNAL(changed()));
- connect(inputEncodingCB, SIGNAL(clicked()),
- this, SIGNAL(changed()));
- connect(spellcheckContinuouslyCB, SIGNAL(clicked()),
- this, SIGNAL(changed()));
+ if (theSpellChecker()) {
+ connect(spellcheckerCB, SIGNAL(currentIndexChanged(int)),
+ this, SIGNAL(changed()));
+ connect(altLanguageED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
+ connect(escapeCharactersED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
+ connect(compoundWordCB, SIGNAL(clicked()),
+ this, SIGNAL(changed()));
+ connect(spellcheckContinuouslyCB, SIGNAL(clicked()),
+ this, SIGNAL(changed()));
+ } else {
+ spellcheckerCB->setEnabled(false);
+ altLanguageED->setEnabled(false);
+ escapeCharactersED->setEnabled(false);
+ compoundWordCB->setEnabled(false);
+ spellcheckContinuouslyCB->setEnabled(false);
+ }
}
void PrefSpellchecker::apply(LyXRC & rc) const
{
- // FIXME: remove spellchecker_use_alt_lang
+ rc.spellchecker = fromqstr(spellcheckerCB->itemData(
+ spellcheckerCB->currentIndex()).toString());
rc.spellchecker_alt_lang = fromqstr(altLanguageED->text());
- rc.spellchecker_use_alt_lang = !rc.spellchecker_alt_lang.empty();
- // FIXME: remove spellchecker_use_esc_chars
rc.spellchecker_esc_chars = fromqstr(escapeCharactersED->text());
- rc.spellchecker_use_esc_chars = !rc.spellchecker_esc_chars.empty();
- // FIXME: remove spellchecker_use_pers_dict
- rc.spellchecker_pers_dict = internal_path(fromqstr(persDictionaryED->text()));
- rc.spellchecker_use_pers_dict = !rc.spellchecker_pers_dict.empty();
rc.spellchecker_accept_compound = compoundWordCB->isChecked();
- rc.spellchecker_use_input_encoding = inputEncodingCB->isChecked();
rc.spellcheck_continuously = spellcheckContinuouslyCB->isChecked();
}
void PrefSpellchecker::update(LyXRC const & rc)
{
- // FIXME: remove spellchecker_use_alt_lang
+ spellcheckerCB->setCurrentIndex(
+ spellcheckerCB->findData(toqstr(rc.spellchecker)));
altLanguageED->setText(toqstr(rc.spellchecker_alt_lang));
- // FIXME: remove spellchecker_use_esc_chars
escapeCharactersED->setText(toqstr(rc.spellchecker_esc_chars));
- // FIXME: remove spellchecker_use_pers_dict
- persDictionaryED->setText(toqstr(external_path(rc.spellchecker_pers_dict)));
compoundWordCB->setChecked(rc.spellchecker_accept_compound);
- inputEncodingCB->setChecked(rc.spellchecker_use_input_encoding);
spellcheckContinuouslyCB->setChecked(rc.spellcheck_continuously);
}
-void PrefSpellchecker::select_dict()
-{
- QString file = form_->browsedict(internalPath(persDictionaryED->text()));
- if (!file.isEmpty())
- persDictionaryED->setText(file);
-}
-
-
/////////////////////////////////////////////////////////////////////
//
setupUi(this);
connect(converterNewPB, SIGNAL(clicked()),
- this, SLOT(update_converter()));
+ this, SLOT(updateConverter()));
connect(converterRemovePB, SIGNAL(clicked()),
- this, SLOT(remove_converter()));
+ this, SLOT(removeConverter()));
connect(converterModifyPB, SIGNAL(clicked()),
- this, SLOT(update_converter()));
+ this, SLOT(updateConverter()));
connect(convertersLW, SIGNAL(currentRowChanged(int)),
- this, SLOT(switch_converter()));
+ this, SLOT(switchConverter()));
connect(converterFromCO, SIGNAL(activated(QString)),
- this, SLOT(converter_changed()));
+ this, SLOT(changeConverter()));
connect(converterToCO, SIGNAL(activated(QString)),
- this, SLOT(converter_changed()));
+ this, SLOT(changeConverter()));
connect(converterED, SIGNAL(textEdited(QString)),
- this, SLOT(converter_changed()));
+ this, SLOT(changeConverter()));
connect(converterFlagED, SIGNAL(textEdited(QString)),
- this, SLOT(converter_changed()));
+ this, SLOT(changeConverter()));
connect(converterNewPB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(converterRemovePB, SIGNAL(clicked()),
void PrefConverters::apply(LyXRC & rc) const
{
rc.use_converter_cache = cacheCB->isChecked();
- rc.converter_cache_maxage = int(maxAgeLE->text().toDouble() * 86400.0);
+ rc.converter_cache_maxage = int(widgetToDouble(maxAgeLE) * 86400.0);
}
{
cacheCB->setChecked(rc.use_converter_cache);
QString max_age;
- max_age.setNum(double(rc.converter_cache_maxage) / 86400.0, 'g', 6);
- maxAgeLE->setText(max_age);
+ doubleToWidget(maxAgeLE, (double(rc.converter_cache_maxage) / 86400.0), 'g', 6);
updateGui();
}
}
// currentRowChanged(int) is also triggered when updating the listwidget
- // block signals to avoid unnecessary calls to switch_converter()
+ // block signals to avoid unnecessary calls to switchConverter()
convertersLW->blockSignals(true);
convertersLW->clear();
}
-void PrefConverters::switch_converter()
+void PrefConverters::switchConverter()
{
int const cnr = convertersLW->currentItem()->type();
Converter const & c(form_->converters().get(cnr));
}
-void PrefConverters::converter_changed()
+void PrefConverters::changeConverter()
{
updateButtons();
}
// FIXME: user must
// specify unique from/to or it doesn't appear. This is really bad UI
// this is why we can use the same function for both new and modify
-void PrefConverters::update_converter()
+void PrefConverters::updateConverter()
{
Format const & from = form_->formats().get(converterFromCO->currentIndex());
Format const & to = form_->formats().get(converterToCO->currentIndex());
}
-void PrefConverters::remove_converter()
+void PrefConverters::removeConverter()
{
Format const & from = form_->formats().get(converterFromCO->currentIndex());
Format const & to = form_->formats().get(converterToCO->currentIndex());
this, SIGNAL(changed()));
connect(defaultFormatCB, SIGNAL(activated(QString)),
this, SIGNAL(changed()));
+ connect(viewerCO, SIGNAL(activated(int)),
+ this, SIGNAL(changed()));
+ connect(editorCO, SIGNAL(activated(int)),
+ this, SIGNAL(changed()));
}
void PrefFileformats::update(LyXRC const & rc)
{
+ viewer_alternatives = rc.viewer_alternatives;
+ editor_alternatives = rc.editor_alternatives;
bool const init = defaultFormatCB->currentText().isEmpty();
updateView();
if (init) {
- int const pos = defaultFormatCB->findData(toqstr(
- rc.default_view_format));
+ int const pos =
+ defaultFormatCB->findData(toqstr(rc.default_view_format));
defaultFormatCB->setCurrentIndex(pos);
}
}
extensionED->setText(toqstr(f.extension()));
shortcutED->setText(
toqstr(l10n_shortcut(f.prettyname(), f.shortcut())));
- viewerED->setText(toqstr(f.viewer()));
- editorED->setText(toqstr(f.editor()));
documentCB->setChecked((f.documentFormat()));
vectorCB->setChecked((f.vectorFormat()));
+ updateViewers();
+ updateEditors();
}
}
+namespace {
+ void updateComboBox(LyXRC::Alternatives const & alts,
+ string const & fmt, QComboBox * combo)
+ {
+ LyXRC::Alternatives::const_iterator it =
+ alts.find(fmt);
+ if (it != alts.end()) {
+ LyXRC::CommandSet const & cmds = it->second;
+ LyXRC::CommandSet::const_iterator sit =
+ cmds.begin();
+ LyXRC::CommandSet::const_iterator const sen =
+ cmds.end();
+ for (; sit != sen; ++sit) {
+ QString const qcmd = toqstr(*sit);
+ combo->addItem(qcmd, qcmd);
+ }
+ }
+ }
+}
+
+
+void PrefFileformats::updateViewers()
+{
+ Format const f = currentFormat();
+ viewerCO->blockSignals(true);
+ viewerCO->clear();
+ viewerCO->addItem(qt_("None"), QString());
+ updateComboBox(viewer_alternatives, f.name(), viewerCO);
+ viewerCO->addItem(qt_("Custom"), QString("custom viewer"));
+ viewerCO->blockSignals(false);
+
+ int pos = viewerCO->findData(toqstr(f.viewer()));
+ if (pos != -1) {
+ viewerED->clear();
+ viewerED->setEnabled(false);
+ viewerCO->setCurrentIndex(pos);
+ } else {
+ viewerED->setEnabled(true);
+ viewerED->setText(toqstr(f.viewer()));
+ viewerCO->setCurrentIndex(viewerCO->findData(toqstr("custom viewer")));
+ }
+}
+
+
+void PrefFileformats::updateEditors()
+{
+ Format const f = currentFormat();
+ editorCO->blockSignals(true);
+ editorCO->clear();
+ editorCO->addItem(qt_("None"), QString());
+ updateComboBox(editor_alternatives, f.name(), editorCO);
+ editorCO->addItem(qt_("Custom"), QString("custom editor"));
+ editorCO->blockSignals(false);
+
+ int pos = editorCO->findData(toqstr(f.editor()));
+ if (pos != -1) {
+ editorED->clear();
+ editorED->setEnabled(false);
+ editorCO->setCurrentIndex(pos);
+ } else {
+ editorED->setEnabled(true);
+ editorED->setText(toqstr(f.editor()));
+ editorCO->setCurrentIndex(editorCO->findData(toqstr("custom editor")));
+ }
+}
+
+
+void PrefFileformats::on_viewerCO_currentIndexChanged(int i)
+{
+ bool const custom = viewerCO->itemData(i).toString() == "custom viewer";
+ viewerED->setEnabled(custom);
+ if (!custom)
+ currentFormat().setViewer(fromqstr(viewerCO->itemData(i).toString()));
+}
+
+
+void PrefFileformats::on_editorCO_currentIndexChanged(int i)
+{
+ bool const custom = editorCO->itemData(i).toString() == "custom editor";
+ editorED->setEnabled(custom);
+ if (!custom)
+ currentFormat().setEditor(fromqstr(editorCO->itemData(i).toString()));
+}
+
+
Format & PrefFileformats::currentFormat()
{
int const i = formatsCB->currentIndex();
TextLabel1, SLOT(setEnabled(bool)));
connect(openDocumentsInTabsCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
+#if QT_VERSION < 0x040500
+ singleCloseTabButtonCB->setEnabled(false);
+#endif
+ connect(singleCloseTabButtonCB, SIGNAL(clicked()),
+ this, SIGNAL(changed()));
connect(uiFilePB, SIGNAL(clicked()),
- this, SLOT(select_ui()));
+ this, SLOT(selectUi()));
connect(uiFileED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
connect(restoreCursorCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(autoSaveCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
+ connect(backupCB, SIGNAL(clicked()),
+ this, SIGNAL(changed()));
connect(lastfilesSB, SIGNAL(valueChanged(int)),
this, SIGNAL(changed()));
connect(tooltipCB, SIGNAL(toggled(bool)),
rc.use_lastfilepos = restoreCursorCB->isChecked();
rc.load_session = loadSessionCB->isChecked();
rc.allow_geometry_session = allowGeometrySessionCB->isChecked();
- rc.autosave = autoSaveSB->value() * 60;
- rc.make_backup = autoSaveCB->isChecked();
+ rc.autosave = autoSaveCB->isChecked()? autoSaveSB->value() * 60 : 0;
+ rc.make_backup = backupCB->isChecked();
rc.num_lastfiles = lastfilesSB->value();
rc.use_tooltip = tooltipCB->isChecked();
rc.open_buffers_in_tabs = openDocumentsInTabsCB->isChecked();
+ rc.single_close_tab_button = singleCloseTabButtonCB->isChecked();
+#if QT_VERSION < 0x040500
+ rc.single_close_tab_button = true;
+#endif
}
loadSessionCB->setChecked(rc.load_session);
allowGeometrySessionCB->setChecked(rc.allow_geometry_session);
// convert to minutes
- int mins(rc.autosave / 60);
- if (rc.autosave && !mins)
- mins = 1;
+ bool autosave = rc.autosave > 0;
+ int mins = rc.autosave / 60;
+ if (!mins)
+ mins = 5;
autoSaveSB->setValue(mins);
- autoSaveCB->setChecked(rc.make_backup);
+ autoSaveCB->setChecked(autosave);
+ autoSaveSB->setEnabled(autosave);
+ backupCB->setChecked(rc.make_backup);
lastfilesSB->setValue(rc.num_lastfiles);
tooltipCB->setChecked(rc.use_tooltip);
openDocumentsInTabsCB->setChecked(rc.open_buffers_in_tabs);
+ singleCloseTabButtonCB->setChecked(rc.single_close_tab_button);
}
-void PrefUserInterface::select_ui()
+void PrefUserInterface::selectUi()
{
QString file = form_->browseUI(internalPath(uiFileED->text()));
if (!file.isEmpty())
this, SIGNAL(changed()));
connect(toggleTabbarCB, SIGNAL(toggled(bool)),
this, SIGNAL(changed()));
+ connect(toggleMenubarCB, SIGNAL(toggled(bool)),
+ this, SIGNAL(changed()));
connect(toggleScrollbarCB, SIGNAL(toggled(bool)),
this, SIGNAL(changed()));
connect(toggleToolbarsCB, SIGNAL(toggled(bool)),
rc.full_screen_toolbars = toggleToolbarsCB->isChecked();
rc.full_screen_scrollbar = toggleScrollbarCB->isChecked();
rc.full_screen_tabbar = toggleTabbarCB->isChecked();
+ rc.full_screen_menubar = toggleMenubarCB->isChecked();
rc.full_screen_width = fullscreenWidthSB->value();
rc.full_screen_limit = fullscreenLimitGB->isChecked();
}
toggleScrollbarCB->setChecked(rc.full_screen_scrollbar);
toggleToolbarsCB->setChecked(rc.full_screen_toolbars);
toggleTabbarCB->setChecked(rc.full_screen_tabbar);
+ toggleMenubarCB->setChecked(rc.full_screen_menubar);
fullscreenWidthSB->setValue(rc.full_screen_width);
fullscreenLimitGB->setChecked(rc.full_screen_limit);
}
// shortcutsTW->setSelectionMode(QAbstractItemView::MultiSelection);
connect(bindFilePB, SIGNAL(clicked()),
- this, SLOT(select_bind()));
+ this, SLOT(selectBind()));
connect(bindFileED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
connect(removePB, SIGNAL(clicked()),
connect(shortcut_->cancelPB, SIGNAL(clicked()),
shortcut_, SLOT(reject()));
connect(shortcut_->clearPB, SIGNAL(clicked()),
- this, SLOT(shortcut_clearPB_pressed()));
+ this, SLOT(shortcutClearPressed()));
connect(shortcut_->removePB, SIGNAL(clicked()),
- this, SLOT(shortcut_removePB_pressed()));
+ this, SLOT(shortcutRemovePressed()));
connect(shortcut_->okPB, SIGNAL(clicked()),
- this, SLOT(shortcut_okPB_pressed()));
+ this, SLOT(shortcutOkPressed()));
connect(shortcut_->cancelPB, SIGNAL(clicked()),
- this, SLOT(shortcut_cancelPB_pressed()));
+ this, SLOT(shortcutCancelPressed()));
}
// The good thing is that the menus are updated automatically.
theTopLevelKeymap().clear();
theTopLevelKeymap().read("site");
- theTopLevelKeymap().read(rc.bind_file);
- theTopLevelKeymap().read("user");
+ theTopLevelKeymap().read(rc.bind_file, 0, KeyMap::Fallback);
+ theTopLevelKeymap().read("user", 0, KeyMap::MissingOK);
}
system_bind_.read("site");
system_bind_.read(rc.bind_file);
// \unbind in user.bind is added to user_unbind_
- user_bind_.read("user", &user_unbind_);
+ user_bind_.read("user", &user_unbind_, KeyMap::MissingOK);
updateShortcutsTW();
}
}
-void PrefShortcuts::select_bind()
+void PrefShortcuts::selectBind()
{
QString file = form_->browsebind(internalPath(bindFileED->text()));
if (!file.isEmpty()) {
}
-void PrefShortcuts::shortcut_okPB_pressed()
+void PrefShortcuts::shortcutOkPressed()
{
QString const new_lfun = shortcut_->lfunLE->text();
FuncRequest func = lyxaction.lookupFunc(fromqstr(new_lfun));
}
-void PrefShortcuts::shortcut_cancelPB_pressed()
+void PrefShortcuts::shortcutCancelPressed()
{
shortcut_->shortcutWG->reset();
}
-void PrefShortcuts::shortcut_clearPB_pressed()
+void PrefShortcuts::shortcutClearPressed()
{
shortcut_->shortcutWG->reset();
}
-void PrefShortcuts::shortcut_removePB_pressed()
+void PrefShortcuts::shortcutRemovePressed()
{
shortcut_->shortcutWG->removeFromSequence();
}
}
-QString GuiPreferences::browsedict(QString const & file) const
-{
- return browseFile(file, qt_("Choose personal dictionary"),
- QStringList(qt_("*.pws")));
-}
-
-
QString GuiPreferences::browse(QString const & file,
QString const & title) const
{