#include "GuiDocument.h"
+#include "BulletsModule.h"
#include "CategorizedCombo.h"
+#include "FancyLineEdit.h"
#include "GuiApplication.h"
#include "GuiBranches.h"
#include "GuiIndices.h"
#include "GuiSelectionManager.h"
#include "LaTeXHighlighter.h"
-#include "LengthCombo.h"
-#include "PanelStack.h"
#include "Validator.h"
#include "LayoutFile.h"
#include "BranchList.h"
#include "buffer_funcs.h"
#include "Buffer.h"
-#include "BufferParams.h"
#include "BufferView.h"
#include "CiteEnginesList.h"
#include "Color.h"
#include <sstream>
#include <vector>
-#ifdef IN
-#undef IN
-#endif
-
// a style sheet for buttons
// this is for example used for the background color setting button
custom = 2
};
-} // anonymous namespace
-
-namespace lyx {
-
-RGBColor set_backgroundcolor;
+lyx::RGBColor set_backgroundcolor;
bool is_backgroundcolor;
-RGBColor set_fontcolor;
+lyx::RGBColor set_fontcolor;
bool is_fontcolor;
-RGBColor set_notefontcolor;
-RGBColor set_boxbgcolor;
+lyx::RGBColor set_notefontcolor;
+lyx::RGBColor set_boxbgcolor;
bool forced_fontspec_activation;
+} // anonymous namespace
+
+namespace lyx {
+
namespace {
// used when sorting the textclass list.
class less_textclass_avail_desc
- : public binary_function<string, string, int>
{
public:
bool operator()(string const & lhs, string const & rhs) const
public:
///
ModuleSelectionManager(QObject * parent,
- QTreeView * availableLV,
- QTreeView * selectedLV,
- QPushButton * addPB,
- QPushButton * delPB,
- QPushButton * upPB,
- QPushButton * downPB,
- QStandardItemModel * availableModel,
- GuiIdListModel * selectedModel,
+ QTreeView * availableLVarg,
+ QTreeView * selectedLVarg,
+ QPushButton * addPBarg,
+ QPushButton * delPBarg,
+ QPushButton * upPBarg,
+ QPushButton * downPBarg,
+ QStandardItemModel * availableModelarg,
+ GuiIdListModel * selectedModelarg,
GuiDocument const * container)
- : GuiSelectionManager(parent, availableLV, selectedLV, addPB, delPB,
- upPB, downPB, availableModel, selectedModel),
+ : GuiSelectionManager(parent, availableLVarg, selectedLVarg, addPBarg, delPBarg,
+ upPBarg, downPBarg, availableModelarg, selectedModelarg),
container_(container)
{}
///
{ excluded_modules_ = em.list(); }
private:
///
- virtual void updateAddPB();
+ void updateAddPB() override;
///
- virtual void updateUpPB();
+ void updateUpPB() override;
///
- virtual void updateDownPB();
+ void updateDownPB() override;
///
- virtual void updateDelPB();
+ void updateDelPB() override;
/// returns availableModel as a GuiIdListModel
QStandardItemModel * getAvailableModel()
{
return;
}
- // determine whether immediately succeding element requires this one
+ // determine whether immediately succeeding element requires this one
string const curmodname = getSelectedModel()->getIDString(curRow);
string const nextmodname = getSelectedModel()->getIDString(curRow + 1);
/////////////////////////////////////////////////////////////////////
PreambleModule::PreambleModule(QWidget * parent)
- : UiWidget<Ui::PreambleUi>(parent), current_id_(0)
+ : UiWidget<Ui::PreambleUi>(parent), current_id_(nullptr)
{
// This is not a memory leak. The object will be destroyed
// with this.
// https://stackoverflow.com/questions/13027091/how-to-override-tab-width-in-qt
const int tabStop = 4;
QFontMetrics metrics(preambleTE->currentFont());
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
+ // horizontalAdvance() is available starting in 5.11.0
+ // setTabStopDistance() is available starting in 5.10.0
+ preambleTE->setTabStopDistance(tabStop * metrics.horizontalAdvance(' '));
+#else
preambleTE->setTabStopWidth(tabStop * metrics.width(' '));
+#endif
}
LocalLayout::LocalLayout(QWidget * parent)
- : UiWidget<Ui::LocalLayoutUi>(parent), current_id_(0), validated_(false)
+ : UiWidget<Ui::LocalLayoutUi>(parent), current_id_(nullptr), validated_(false)
{
locallayoutTE->setFont(guiApp->typewriterSystemFont());
locallayoutTE->setWordWrapMode(QTextOption::NoWrap);
textLayoutModule->indentCO->addItem(qt_("Default"));
textLayoutModule->indentCO->addItem(qt_("Custom"));
- textLayoutModule->skipCO->addItem(qt_("SmallSkip"));
- textLayoutModule->skipCO->addItem(qt_("MedSkip"));
- textLayoutModule->skipCO->addItem(qt_("BigSkip"));
- textLayoutModule->skipCO->addItem(qt_("Custom"));
+ textLayoutModule->skipCO->addItem(qt_("Half line height"), VSpace::HALFLINE);
+ textLayoutModule->skipCO->addItem(qt_("Line height"), VSpace::FULLLINE);
+ textLayoutModule->skipCO->addItem(qt_("SmallSkip"), VSpace::SMALLSKIP);
+ textLayoutModule->skipCO->addItem(qt_("MedSkip"), VSpace::MEDSKIP);
+ textLayoutModule->skipCO->addItem(qt_("BigSkip"), VSpace::BIGSKIP);
+ textLayoutModule->skipCO->addItem(qt_("Custom"), VSpace::LENGTH);
textLayoutModule->lspacingCO->insertItem(
Spacing::Single, qt_("Single"));
textLayoutModule->lspacingCO->insertItem(
connect(masterChildModule->includeonlyRB, SIGNAL(toggled(bool)),
masterChildModule->childrenTW, SLOT(setEnabled(bool)));
connect(masterChildModule->includeonlyRB, SIGNAL(toggled(bool)),
- masterChildModule->maintainAuxCB, SLOT(setEnabled(bool)));
+ masterChildModule->maintainGB, SLOT(setEnabled(bool)));
connect(masterChildModule->includeallRB, SIGNAL(clicked()),
this, SLOT(change_adaptor()));
connect(masterChildModule->includeonlyRB, SIGNAL(clicked()),
this, SLOT(change_adaptor()));
- connect(masterChildModule->maintainAuxCB, SIGNAL(clicked()),
+ connect(masterChildModule->maintainCRNoneRB, SIGNAL(clicked()),
+ this, SLOT(change_adaptor()));
+ connect(masterChildModule->maintainCRMostlyRB, SIGNAL(clicked()),
+ this, SLOT(change_adaptor()));
+ connect(masterChildModule->maintainCRStrictRB, SIGNAL(clicked()),
this, SLOT(change_adaptor()));
masterChildModule->childrenTW->setColumnCount(2);
masterChildModule->childrenTW->headerItem()->setText(0, qt_("Child Document"));
this, SLOT(change_adaptor()));
connect(outputModule->mathoutCB, SIGNAL(currentIndexChanged(int)),
this, SLOT(change_adaptor()));
+ connect(outputModule->tableoutCB, SIGNAL(currentIndexChanged(int)),
+ this, SLOT(change_adaptor()));
connect(outputModule->shellescapeCB, SIGNAL(stateChanged(int)),
this, SLOT(shellescapeChanged()));
// language & quote
- // this must preceed font, since fonts depend on this
+ // this must precede font, since fonts depend on this
langModule = new UiWidget<Ui::LanguageUi>(this);
connect(langModule->languageCO, SIGNAL(activated(int)),
this, SLOT(change_adaptor()));
fontModule->fontsizeCO->addItem(qt_("11"));
fontModule->fontsizeCO->addItem(qt_("12"));
- fontModule->fontencCO->addItem(qt_("Automatic"), QString("auto"));
+ fontModule->fontencCO->addItem(qt_("Automatic[[encoding]]"), QString("auto"));
fontModule->fontencCO->addItem(qt_("Class Default"), QString("default"));
fontModule->fontencCO->addItem(qt_("Custom"), QString("custom"));
// tooltip sensu "KOMA-Script Article [Class 'scrartcl']"
QString tooltip = toqstr(bformat(_("%1$s [Class '%2$s']"), guiname, from_utf8(tc.latexname())));
if (!available) {
- docstring const output_type = (tc.outputType() == lyx::DOCBOOK) ? _("DocBook") : _("LaTeX");
+ docstring const output_type = _("LaTeX");
tooltip += '\n' + toqstr(bformat(_("Class not found by LyX. "
"Please check if you have the matching %1$s class "
"and all required packages (%2$s) installed."),
this, SLOT(change_adaptor()));
connect(pdfSupportModule->bookmarksopenGB, SIGNAL(toggled(bool)),
this, SLOT(change_adaptor()));
+ connect(pdfSupportModule->bookmarksopenGB, SIGNAL(toggled(bool)),
+ this, SLOT(bookmarksopenChanged(bool)));
connect(pdfSupportModule->bookmarksopenlevelSB, SIGNAL(valueChanged(int)),
this, SLOT(change_adaptor()));
connect(pdfSupportModule->breaklinksCB, SIGNAL(toggled(bool)),
changed();
}
+void GuiDocument::bookmarksopenChanged(bool state)
+{
+ pdfSupportModule->bookmarksopenlevelSB->setEnabled(state);
+ pdfSupportModule->bookmarksopenlevelLA->setEnabled(state);
+}
+
void GuiDocument::slotApply()
{
void GuiDocument::includeonlyClicked(QTreeWidgetItem * item, int)
{
- if (item == 0)
+ if (item == nullptr)
return;
string child = fromqstr(item->text(0));
if (isOK)
return;
isOK = true;
- // listingsTB->setTextColor("black");
+ // listingsModule->listingsTB->setTextColor("black");
listingsModule->listingsTB->setPlainText(
qt_("Input listings parameters below. "
"Enter ? for a list of parameters."));
} else {
isOK = false;
- // listingsTB->setTextColor("red");
+ // listingsModule->listingsTB->setTextColor("red");
listingsModule->listingsTB->setPlainText(msg);
}
}
void GuiDocument::setSkip(int item)
{
- bool const enable = (item == 3);
+ VSpace::VSpaceKind kind =
+ VSpace::VSpaceKind(textLayoutModule->skipCO->itemData(item).toInt());
+ bool const enable = (kind == VSpace::LENGTH);
textLayoutModule->skipLE->setEnabled(enable);
textLayoutModule->skipLengthCO->setEnabled(enable);
isValid();
Language const * lang = lyx::languages.getLanguage(
fromqstr(langModule->languageCO->itemData(i).toString()));
if (lang->babel().empty() && !lang->polyglossia().empty()
- && lang->requires() != "CJK" && lang->requires() != "japanese") {
+ && lang->required() != "CJK" && lang->required() != "japanese") {
// If we force to switch fontspec on, store
// current state (#8717)
if (fontModule->osFontsCB->isEnabled())
if (tex_fonts)
font = fontModule->fontsSansCO->itemData(
fontModule->fontsSansCO->currentIndex()).toString();
- bool scaleable = providesScale(font);
- fontModule->scaleSansSB->setEnabled(scaleable);
- fontModule->scaleSansLA->setEnabled(scaleable);
+ bool scalable = providesScale(font);
+ fontModule->scaleSansSB->setEnabled(scalable);
+ fontModule->scaleSansLA->setEnabled(scalable);
fontModule->fontSansOsfCB->setEnabled(providesOSF(font));
if (tex_fonts)
font = fontModule->fontsTypewriterCO->itemData(
fontModule->fontsTypewriterCO->currentIndex()).toString();
- scaleable = providesScale(font);
- fontModule->scaleTypewriterSB->setEnabled(scaleable);
- fontModule->scaleTypewriterLA->setEnabled(scaleable);
+ scalable = providesScale(font);
+ fontModule->scaleTypewriterSB->setEnabled(scalable);
+ fontModule->scaleTypewriterLA->setEnabled(scalable);
fontModule->fontTypewriterOsfCB->setEnabled(providesOSF(font));
if (tex_fonts)
font = fontModule->fontsRomanCO->itemData(
void GuiDocument::updateFontlist()
{
+ // reset the filters of the CategorizedCombos
+ fontModule->fontsRomanCO->resetFilter();
+ fontModule->fontsSansCO->resetFilter();
+ fontModule->fontsTypewriterCO->resetFilter();
fontModule->fontsRomanCO->clear();
fontModule->fontsSansCO->clear();
fontModule->fontsTypewriterCO->clear();
QFontDatabase fontdb;
QStringList families(fontdb.families());
- for (QStringList::Iterator it = families.begin(); it != families.end(); ++it) {
- fontModule->fontsRomanCO->addItem(*it, *it);
- fontModule->fontsSansCO->addItem(*it, *it);
- fontModule->fontsTypewriterCO->addItem(*it, *it);
+ for (auto const & family : families) {
+ fontModule->fontsRomanCO->addItem(family, family);
+ fontModule->fontsSansCO->addItem(family, family);
+ fontModule->fontsTypewriterCO->addItem(family, family);
}
return;
}
return;
QString const font =
fontModule->fontsSansCO->itemData(item).toString();
- bool const scaleable = providesScale(font);
- fontModule->scaleSansSB->setEnabled(scaleable);
- fontModule->scaleSansLA->setEnabled(scaleable);
+ bool const scalable = providesScale(font);
+ fontModule->scaleSansSB->setEnabled(scalable);
+ fontModule->scaleSansLA->setEnabled(scalable);
fontModule->fontSansOsfCB->setEnabled(providesOSF(font));
updateExtraOpts();
}
return;
QString const font =
fontModule->fontsTypewriterCO->itemData(item).toString();
- bool scaleable = providesScale(font);
- fontModule->scaleTypewriterSB->setEnabled(scaleable);
- fontModule->scaleTypewriterLA->setEnabled(scaleable);
+ bool scalable = providesScale(font);
+ fontModule->scaleTypewriterSB->setEnabled(scalable);
+ fontModule->scaleTypewriterLA->setEnabled(scalable);
fontModule->fontTypewriterOsfCB->setEnabled(providesOSF(font));
updateExtraOpts();
}
int nn = 0;
- for (size_t i = 0; i < pagestyles.size(); ++i)
- if (pagestyles[i].first == sel)
- nn = pageLayoutModule->pagestyleCO->findText(pagestyles[i].second);
+ for (auto const & pagestyle : pagestyles)
+ if (pagestyle.first == sel)
+ nn = pageLayoutModule->pagestyleCO->findText(pagestyle.second);
if (nn > 0)
pageLayoutModule->pagestyleCO->setCurrentIndex(nn);
biblioModule->citeEngineCO->currentIndex()).toString();
LyXCiteEngine const * ce = theCiteEnginesList[fromqstr(engine)];
- bool const citepack = ce->requires("biblatex.sty") || ce->requires("jurabib.sty")
- || ce->requires("natbib.sty");
+ bool const citepack = ce->required("biblatex.sty") || ce->required("jurabib.sty")
+ || ce->required("natbib.sty");
biblioModule->citePackageOptionsLE->setEnabled(citepack);
biblioModule->citePackageOptionsL->setEnabled(citepack);
}
int const toc = numberingModule->tocSL->value();
QString const no = qt_("No");
QString const yes = qt_("Yes");
- QTreeWidgetItem * item = 0;
+ QTreeWidgetItem * item = nullptr;
DocumentClass::const_iterator lit = tclass.begin();
DocumentClass::const_iterator len = tclass.end();
} else {
// if paragraphs are separated by a skip
bp_.paragraph_separation = BufferParams::ParagraphSkipSeparation;
- switch (textLayoutModule->skipCO->currentIndex()) {
- case 0:
- bp_.setDefSkip(VSpace(VSpace::SMALLSKIP));
- break;
- case 1:
- bp_.setDefSkip(VSpace(VSpace::MEDSKIP));
- break;
- case 2:
- bp_.setDefSkip(VSpace(VSpace::BIGSKIP));
+ VSpace::VSpaceKind spacekind =
+ VSpace::VSpaceKind(textLayoutModule->skipCO->itemData(textLayoutModule->skipCO->currentIndex()).toInt());
+ switch (spacekind) {
+ case VSpace::SMALLSKIP:
+ case VSpace::MEDSKIP:
+ case VSpace::BIGSKIP:
+ case VSpace::HALFLINE:
+ case VSpace::FULLLINE:
+ bp_.setDefSkip(VSpace(spacekind));
break;
- case 3:
- {
+ case VSpace::LENGTH: {
VSpace vs = VSpace(
widgetsToLength(textLayoutModule->skipLE,
textLayoutModule->skipLengthCO)
);
bp_.setDefSkip(vs);
break;
- }
+ }
default:
// this should never happen
bp_.setDefSkip(VSpace(VSpace::MEDSKIP));
bp_.addIncludedChildren(*it);
}
}
- bp_.maintain_unincluded_children =
- masterChildModule->maintainAuxCB->isChecked();
+ if (masterChildModule->maintainCRNoneRB->isChecked())
+ bp_.maintain_unincluded_children =
+ BufferParams::CM_None;
+ else if (masterChildModule->maintainCRMostlyRB->isChecked())
+ bp_.maintain_unincluded_children =
+ BufferParams::CM_Mostly;
+ else
+ bp_.maintain_unincluded_children =
+ BufferParams::CM_Strict;
+ updateIncludeonlyDisplay();
// Float Settings
bp_.float_placement = floatModule->getPlacement();
bp_.html_math_img_scale = outputModule->mathimgSB->value();
bp_.display_pixel_ratio = theGuiApp()->pixelRatio();
+ int tablefmt = outputModule->tableoutCB->currentIndex();
+ if (tablefmt == -1)
+ tablefmt = 0;
+ BufferParams::TableOutput const to =
+ static_cast<BufferParams::TableOutput>(tablefmt);
+ bp_.docbook_table_output = to;
+
bp_.save_transient_properties =
outputModule->saveTransientPropertiesCB->isChecked();
bp_.postpone_fragile_content =
setIndent(indent);
} else {
textLayoutModule->skipRB->setChecked(true);
- int skip = 0;
- switch (bp_.getDefSkip().kind()) {
- case VSpace::SMALLSKIP:
- skip = 0;
- break;
- case VSpace::MEDSKIP:
- skip = 1;
- break;
- case VSpace::BIGSKIP:
- skip = 2;
- break;
- case VSpace::LENGTH:
- {
- skip = 3;
+ VSpace::VSpaceKind skip = bp_.getDefSkip().kind();
+ textLayoutModule->skipCO->setCurrentIndex(textLayoutModule->skipCO->findData(skip));
+ if (skip == VSpace::LENGTH) {
string const length = bp_.getDefSkip().asLyXCommand();
lengthToWidgets(textLayoutModule->skipLE,
textLayoutModule->skipLengthCO,
length, default_unit);
- break;
- }
- default:
- skip = 0;
- break;
}
- textLayoutModule->skipCO->setCurrentIndex(skip);
- setSkip(skip);
+ setSkip(textLayoutModule->skipCO->currentIndex());
}
textLayoutModule->twoColumnCB->setChecked(
masterChildModule->setEnabled(true);
includeonlys_ = bp_.getIncludedChildren();
updateIncludeonlys();
+ updateIncludeonlyDisplay();
+ }
+ switch (bp_.maintain_unincluded_children) {
+ case BufferParams::CM_None:
+ masterChildModule->maintainCRNoneRB->setChecked(true);
+ break;
+ case BufferParams::CM_Mostly:
+ masterChildModule->maintainCRMostlyRB->setChecked(true);
+ break;
+ case BufferParams::CM_Strict:
+ default:
+ masterChildModule->maintainCRStrictRB->setChecked(true);
+ break;
}
- masterChildModule->maintainAuxCB->setChecked(
- bp_.maintain_unincluded_children);
// Float Settings
floatModule->setPlacement(bp_.float_placement);
langModule->languageCO->currentIndex()).toString()));
bool const need_fontspec =
lang->babel().empty() && !lang->polyglossia().empty()
- && lang->requires() != "CJK" && lang->requires() != "japanese";
+ && lang->required() != "CJK" && lang->required() != "japanese";
bool const os_fonts_available =
bp_.baseClass()->outputType() == lyx::LATEX
&& LaTeXFeatures::isAvailable("fontspec");
outputModule->strictCB->setChecked(bp_.html_be_strict);
outputModule->cssCB->setChecked(bp_.html_css_as_file);
+ outputModule->tableoutCB->setCurrentIndex(bp_.docbook_table_output);
+
outputModule->saveTransientPropertiesCB
->setChecked(bp_.save_transient_properties);
outputModule->postponeFragileCB
pdfSupportModule->bookmarksopenGB->setChecked(pdf.bookmarksopen);
pdfSupportModule->bookmarksopenlevelSB->setValue(pdf.bookmarksopenlevel);
+ pdfSupportModule->bookmarksopenlevelSB->setEnabled(pdf.bookmarksopen);
+ pdfSupportModule->bookmarksopenlevelLA->setEnabled(pdf.bookmarksopen);
pdfSupportModule->breaklinksCB->setChecked(pdf.breaklinks);
pdfSupportModule->pdfborderCB->setChecked(pdf.pdfborder);
unavbrush.setColor(Qt::gray);
for (modInfoStruct const & m : modInfoList) {
QStandardItem * item = new QStandardItem();
- QStandardItem * catItem = new QStandardItem();
+ QStandardItem * catItem;
QString const catname = m.category;
QList<QStandardItem *> fcats = modules_av_model_.findItems(catname, Qt::MatchExactly);
if (!fcats.empty())
catItem = fcats.first();
else {
+ catItem = new QStandardItem();
catItem->setText(catname);
catItem->setFont(catfont);
modules_av_model_.insertRow(i, catItem);
}
-void GuiDocument::updateIncludeonlys()
+void GuiDocument::updateIncludeonlyDisplay()
{
- masterChildModule->childrenTW->clear();
- QString const no = qt_("No");
- QString const yes = qt_("Yes");
-
if (includeonlys_.empty()) {
masterChildModule->includeallRB->setChecked(true);
masterChildModule->childrenTW->setEnabled(false);
- masterChildModule->maintainAuxCB->setEnabled(false);
+ masterChildModule->maintainGB->setEnabled(false);
} else {
masterChildModule->includeonlyRB->setChecked(true);
masterChildModule->childrenTW->setEnabled(true);
- masterChildModule->maintainAuxCB->setEnabled(true);
+ masterChildModule->maintainGB->setEnabled(true);
}
+}
+
+
+void GuiDocument::updateIncludeonlys()
+{
+ masterChildModule->childrenTW->clear();
+ QString const no = qt_("No");
+ QString const yes = qt_("Yes");
+
ListOfBuffers children = buffer().getChildren();
ListOfBuffers::const_iterator it = children.begin();
ListOfBuffers::const_iterator end = children.end();
else
all_unincluded = false;
}
- // Both if all childs are included and if none is included
+ // Both if all children are included and if none is included
// is equal to "include all" (i.e., omit \includeonly).
- // Thus, reset the GUI.
- if (!has_unincluded || all_unincluded) {
- masterChildModule->includeallRB->setChecked(true);
- masterChildModule->childrenTW->setEnabled(false);
+ if (!has_unincluded || all_unincluded)
includeonlys_.clear();
- }
- // If all are included, we need to update again.
- if (!has_unincluded)
- updateIncludeonlys();
}
void GuiDocument::updateContents()
{
- // Nothing to do here as the document settings is not cursor dependant.
+ // Nothing to do here as the document settings is not cursor dependent.
return;
}
BufferId GuiDocument::id() const
{
BufferView const * const view = bufferview();
- return view? &view->buffer() : 0;
+ return view? &view->buffer() : nullptr;
}