From 8f287f5ffaff3d0306aae8e042e4e042a38b8614 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Sat, 1 Jun 2013 16:58:34 +0200 Subject: [PATCH] Implement option to set a global default output format for dics with non-tex fonts (#8706) --- src/BufferParams.cpp | 3 +- src/LyXRC.cpp | 18 +++ src/LyXRC.h | 3 + src/frontends/qt4/GuiPrefs.cpp | 31 ++++- src/frontends/qt4/ui/PrefFileformatsUi.ui | 137 ++++++++++++++-------- 5 files changed, 135 insertions(+), 57 deletions(-) diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 8c9f9d0d68..c98e1f9d97 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -2316,7 +2316,6 @@ string BufferParams::getDefaultOutputFormat() const && default_output_format != "default") return default_output_format; if (isDocBook() - || useNonTeXFonts || encoding().package() == Encoding::japanese) { vector const formats = exportableFormats(true); if (formats.empty()) @@ -2324,6 +2323,8 @@ string BufferParams::getDefaultOutputFormat() const // return the first we find return formats.front()->name(); } + if (useNonTeXFonts) + return lyxrc.default_otf_view_format; return lyxrc.default_view_format; } diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 6c7809c7e5..a794989d5b 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -93,6 +93,7 @@ LexerKeyword lyxrcTags[] = { { "\\def_file", LyXRC::RC_DEFFILE }, { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT }, { "\\default_length_unit", LyXRC::RC_DEFAULT_LENGTH_UNIT }, + { "\\default_otf_view_format", LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT }, { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT }, { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN }, { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS }, @@ -255,6 +256,7 @@ void LyXRC::setDefaults() document_path.erase(); view_dvi_paper_option.erase(); default_view_format = "pdf2"; + default_otf_view_format = "pdf4"; chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38"; bibtex_command = "bibtex"; fontenc = "default"; @@ -1162,6 +1164,10 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) break; } + case RC_DEFAULT_OTF_VIEW_FORMAT: + lexrc >> default_otf_view_format; + break; + case RC_DEFAULT_VIEW_FORMAT: lexrc >> default_view_format; break; @@ -2807,6 +2813,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; } + case RC_DEFAULT_OTF_VIEW_FORMAT: + if (ignore_system_lyxrc || + default_otf_view_format != system_lyxrc.default_otf_view_format) { + os << "\\default_otf_view_format " << default_otf_view_format << '\n'; + } + if (tag != RC_LAST) + break; case RC_DEFAULT_VIEW_FORMAT: if (ignore_system_lyxrc || default_view_format != system_lyxrc.default_view_format) { @@ -2929,6 +2942,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new) case LyXRC::RC_SCROLL_BELOW_DOCUMENT: case LyXRC::RC_DATE_INSERT_FORMAT: case LyXRC::RC_GUI_LANGUAGE: + case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT: case LyXRC::RC_DEFAULT_VIEW_FORMAT: case LyXRC::RC_DEFFILE: case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN: @@ -3162,6 +3176,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories."); break; + case RC_DEFAULT_OTF_VIEW_FORMAT: + str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts."); + break; + case RC_DEFAULT_VIEW_FORMAT: str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE]."); break; diff --git a/src/LyXRC.h b/src/LyXRC.h index 903d53f7e4..94914ccdbf 100644 --- a/src/LyXRC.h +++ b/src/LyXRC.h @@ -69,6 +69,7 @@ public: RC_DATE_INSERT_FORMAT, RC_DEFAULT_DECIMAL_POINT, RC_DEFAULT_LENGTH_UNIT, + RC_DEFAULT_OTF_VIEW_FORMAT, RC_DEFAULT_VIEW_FORMAT, RC_DEFFILE, RC_DIALOGS_ICONIFY_WITH_MAIN, @@ -420,6 +421,8 @@ public: /// std::string gui_language; /// + std::string default_otf_view_format; + /// std::string default_view_format; /// all available viewers Alternatives viewer_alternatives; diff --git a/src/frontends/qt4/GuiPrefs.cpp b/src/frontends/qt4/GuiPrefs.cpp index d4f5d8b38d..68f6aaeb63 100644 --- a/src/frontends/qt4/GuiPrefs.cpp +++ b/src/frontends/qt4/GuiPrefs.cpp @@ -1893,6 +1893,8 @@ PrefFileformats::PrefFileformats(GuiPreferences * form) this, SIGNAL(changed())); connect(defaultFormatCB, SIGNAL(activated(QString)), this, SIGNAL(changed())); + connect(defaultOTFFormatCB, SIGNAL(activated(QString)), + this, SIGNAL(changed())); connect(viewerCO, SIGNAL(activated(int)), this, SIGNAL(changed())); connect(editorCO, SIGNAL(activated(int)), @@ -1920,6 +1922,9 @@ void PrefFileformats::apply(LyXRC & rc) const QString const default_format = defaultFormatCB->itemData( defaultFormatCB->currentIndex()).toString(); rc.default_view_format = fromqstr(default_format); + QString const default_otf_format = defaultOTFFormatCB->itemData( + defaultOTFFormatCB->currentIndex()).toString(); + rc.default_otf_view_format = fromqstr(default_otf_format); } @@ -1930,9 +1935,12 @@ void PrefFileformats::update(LyXRC const & rc) bool const init = defaultFormatCB->currentText().isEmpty(); updateView(); if (init) { - int const pos = + int pos = defaultFormatCB->findData(toqstr(rc.default_view_format)); defaultFormatCB->setCurrentIndex(pos); + pos = defaultOTFFormatCB->findData(toqstr(rc.default_otf_view_format)); + defaultOTFFormatCB->setCurrentIndex(pos); + defaultOTFFormatCB->setCurrentIndex(pos); } } @@ -1941,35 +1949,48 @@ void PrefFileformats::updateView() { QString const current = formatsCB->currentText(); QString const current_def = defaultFormatCB->currentText(); + QString const current_def_otf = defaultOTFFormatCB->currentText(); // update comboboxes with formats formatsCB->blockSignals(true); defaultFormatCB->blockSignals(true); + defaultOTFFormatCB->blockSignals(true); formatsCB->clear(); defaultFormatCB->clear(); + defaultOTFFormatCB->clear(); form_->formats().sort(); Formats::const_iterator cit = form_->formats().begin(); Formats::const_iterator end = form_->formats().end(); for (; cit != end; ++cit) { formatsCB->addItem(qt_(cit->prettyname()), QVariant(form_->formats().getNumber(cit->name()))); - if (form_->converters().isReachable("latex", cit->name()) + if (cit->viewer().empty()) + continue; + if (form_->converters().isReachable("xhtml", cit->name()) || form_->converters().isReachable("dviluatex", cit->name()) - || form_->converters().isReachable("pdflatex", cit->name()) || form_->converters().isReachable("luatex", cit->name()) - || form_->converters().isReachable("xetex", cit->name())) + || form_->converters().isReachable("xetex", cit->name())) { + defaultFormatCB->addItem(qt_(cit->prettyname()), + QVariant(toqstr(cit->name()))); + defaultOTFFormatCB->addItem(qt_(cit->prettyname()), + QVariant(toqstr(cit->name()))); + } else if (form_->converters().isReachable("latex", cit->name()) + || form_->converters().isReachable("pdflatex", cit->name())) defaultFormatCB->addItem(qt_(cit->prettyname()), QVariant(toqstr(cit->name()))); } - // restore selection + // restore selections int item = formatsCB->findText(current, Qt::MatchExactly); formatsCB->setCurrentIndex(item < 0 ? 0 : item); on_formatsCB_currentIndexChanged(item < 0 ? 0 : item); item = defaultFormatCB->findText(current_def, Qt::MatchExactly); defaultFormatCB->setCurrentIndex(item < 0 ? 0 : item); + item = defaultOTFFormatCB->findText(current_def_otf, Qt::MatchExactly); + defaultOTFFormatCB->setCurrentIndex(item < 0 ? 0 : item); formatsCB->blockSignals(false); defaultFormatCB->blockSignals(false); + defaultOTFFormatCB->blockSignals(false); } diff --git a/src/frontends/qt4/ui/PrefFileformatsUi.ui b/src/frontends/qt4/ui/PrefFileformatsUi.ui index fd60ec2794..68b8784508 100644 --- a/src/frontends/qt4/ui/PrefFileformatsUi.ui +++ b/src/frontends/qt4/ui/PrefFileformatsUi.ui @@ -1,3 +1,4 @@ + PrefFileformatsUi @@ -6,16 +7,13 @@ 0 0 386 - 381 + 417 - - - - + @@ -26,6 +24,22 @@ + + + + true + + + 20 + + + QComboBox::InsertAtCurrent + + + 1 + + + @@ -40,6 +54,19 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -116,6 +143,16 @@ + + + + Ed&itor: + + + editorCO + + + @@ -123,6 +160,9 @@ + + + @@ -162,26 +202,30 @@ Specify the default output format when using (PDF)LaTeX - Default Format + Default Output Formats true - - + + - De&fault Output Format: + With &TeX fonts: defaultFormatCB - - + + + + The default output format for documents (except with non-TeX fonts) + + - + Qt::Horizontal @@ -194,6 +238,36 @@ + + + + With n&on-TeX fonts: + + + defaultFormatCB + + + + + + + The default output format for documents using non-TeX fonts + + + + + + + Qt::Horizontal + + + + 148 + 20 + + + + @@ -210,45 +284,6 @@ - - - - Ed&itor: - - - editorCO - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - true - - - 20 - - - QComboBox::InsertAtCurrent - - - 1 - - - -- 2.39.2