#include "GuiApplication.h"
#include "GuiBranches.h"
+#include "GuiIndices.h"
#include "GuiSelectionManager.h"
#include "LaTeXHighlighter.h"
#include "LengthCombo.h"
#include "FloatPlacement.h"
#include "Format.h"
#include "FuncRequest.h"
+#include "IndicesList.h"
#include "Language.h"
#include "LaTeXFeatures.h"
#include "Layout.h"
this, SLOT(change_adaptor()));
connect(pageLayoutModule->pagestyleCO, SIGNAL(activated(int)),
this, SLOT(change_adaptor()));
- connect(pageLayoutModule->backgroundTB, SIGNAL(clicked()),
+ connect(pageLayoutModule->backgroundPB, SIGNAL(clicked()),
this, SLOT(changeBackgroundColor()));
connect(pageLayoutModule->delbackgroundTB, SIGNAL(clicked()),
this, SLOT(deleteBackgroundColor()));
this, SLOT(change_adaptor()));
connect(biblioModule->bibtopicCB, SIGNAL(clicked()),
this, SLOT(change_adaptor()));
+ connect(biblioModule->bibtexCO, SIGNAL(activated(int)),
+ this, SLOT(bibtexChanged(int)));
+ connect(biblioModule->bibtexOptionsED, SIGNAL(textChanged(QString)),
+ this, SLOT(change_adaptor()));
// biblio
biblioModule->citeStyleCO->addItem(qt_("Author-year"));
biblioModule->citeStyleCO->addItem(qt_("Numerical"));
biblioModule->citeStyleCO->setCurrentIndex(0);
+
+ biblioModule->bibtexCO->clear();
+
+ biblioModule->bibtexCO->addItem(qt_("Default"), QString("default"));
+ for (set<string>::const_iterator it = lyxrc.bibtex_alternatives.begin();
+ it != lyxrc.bibtex_alternatives.end(); ++it) {
+ QString const command = toqstr(*it).left(toqstr(*it).indexOf(" "));
+ biblioModule->bibtexCO->addItem(command, command);
+ }
+
+ // indices
+ indicesModule = new GuiIndices;
+ connect(indicesModule, SIGNAL(changed()),
+ this, SLOT(change_adaptor()));
mathsModule = new UiWidget<Ui::MathsUi>;
branchesModule = new GuiBranches;
connect(branchesModule, SIGNAL(changed()),
this, SLOT(change_adaptor()));
+ connect(branchesModule, SIGNAL(renameBranches(docstring const &, docstring const &)),
+ this, SLOT(branchesRename(docstring const &, docstring const &)));
+ updateUnknownBranches();
// preamble
preambleModule = new PreambleModule;
docPS->addPanel(langModule, qt_("Language"));
docPS->addPanel(numberingModule, qt_("Numbering & TOC"));
docPS->addPanel(biblioModule, qt_("Bibliography"));
+ docPS->addPanel(indicesModule, qt_("Indexes"));
docPS->addPanel(pdfSupportModule, qt_("PDF Properties"));
docPS->addPanel(mathsModule, qt_("Math Options"));
docPS->addPanel(floatModule, qt_("Float Placement"));
if (!newColor.isValid())
return;
// set the button color
- pageLayoutModule->backgroundTB->setStyleSheet(
+ pageLayoutModule->backgroundPB->setStyleSheet(
colorButtonStyleSheet(newColor));
// save color
set_backgroundcolor = rgbFromHexName(fromqstr(newColor.name()));
void GuiDocument::deleteBackgroundColor()
{
// set the button color back to white
- pageLayoutModule->backgroundTB->setStyleSheet(
+ pageLayoutModule->backgroundPB->setStyleSheet(
colorButtonStyleSheet(QColor(Qt::white)));
// save white as the set color
set_backgroundcolor = rgbFromHexName("#ffffff");
}
+void GuiDocument::bibtexChanged(int n)
+{
+ biblioModule->bibtexOptionsED->setEnabled(n != 0);
+ changed();
+}
+
+
namespace {
// This is an insanely complicated attempt to make this sort of thing
// work with RTL languages.
bp_.use_bibtopic =
biblioModule->bibtopicCB->isChecked();
+ string const bibtex_command =
+ fromqstr(biblioModule->bibtexCO->itemData(
+ biblioModule->bibtexCO->currentIndex()).toString());
+ string const bibtex_options =
+ fromqstr(biblioModule->bibtexOptionsED->text());
+ if (bibtex_command == "default" || bibtex_options.empty())
+ bp_.bibtex_command = bibtex_command;
+ else
+ bp_.bibtex_command = bibtex_command + " " + bibtex_options;
+
+ // Indices
+ indicesModule->apply(bp_);
+
// language & quotes
if (langModule->defaultencodingRB->isChecked()) {
bp_.inputenc = "auto";
break;
case 3:
bp_.spacing().set(Spacing::Other,
- fromqstr(textLayoutModule->lspacingLE->text()));
+ widgetToDoubleStr(textLayoutModule->lspacingLE));
break;
}
bp_.footskip = widgetsToLength(m->footskipLE, m->footskipUnit);
bp_.columnsep = widgetsToLength(m->columnsepLE, m->columnsepUnit);
+ // branches
branchesModule->apply(bp_);
// PDF support
biblioModule->bibtopicCB->setChecked(
bp_.use_bibtopic);
+ string command;
+ string options =
+ split(bp_.bibtex_command, command, ' ');
+
+ int const bpos = biblioModule->bibtexCO->findData(toqstr(command));
+ if (bpos != -1) {
+ biblioModule->bibtexCO->setCurrentIndex(bpos);
+ biblioModule->bibtexOptionsED->setText(toqstr(options).trimmed());
+ } else {
+ biblioModule->bibtexCO->setCurrentIndex(0);
+ biblioModule->bibtexOptionsED->clear();
+ }
+ biblioModule->bibtexOptionsED->setEnabled(
+ biblioModule->bibtexCO->currentIndex() != 0);
+
+ // indices
+ indicesModule->update(bp_);
+
// language & quotes
int const pos = langModule->languageCO->findData(toqstr(
bp_.language->lang()));
textLayoutModule->lspacingCO->setCurrentIndex(nitem);
if (bp_.spacing().getSpace() == Spacing::Other) {
- textLayoutModule->lspacingLE->setText(
- toqstr(bp_.spacing().getValueAsString()));
+ doubleToWidget(textLayoutModule->lspacingLE,
+ bp_.spacing().getValueAsString());
}
setLSpacing(nitem);
pageLayoutModule->facingPagesCB->setChecked(
bp_.sides == TwoSides);
- pageLayoutModule->backgroundTB->setStyleSheet(
+ pageLayoutModule->backgroundPB->setStyleSheet(
colorButtonStyleSheet(rgb2qcolor(bp_.backgroundcolor)));
set_backgroundcolor = bp_.backgroundcolor;
lengthToWidgets(m->columnsepLE, m->columnsepUnit,
bp_.columnsep, defaultUnit);
+ // branches
+ updateUnknownBranches();
branchesModule->update(bp_);
// PDF support
// Make sure that the bc is in the INITIAL state
if (bc().policy().buttonStatus(ButtonPolicy::RESTORE))
bc().restore();
+
+ // clear changed branches cache
+ changedBranches_.clear();
}
dispatch(FuncRequest(LFUN_ALL_INSETS_TOGGLE,
"assign branch"));
}
+ // rename branches in the document
+ executeBranchRenaming();
+ // and clear changed branches cache
+ changedBranches_.clear();
+
+ // Generate the colours requested by indices.
+ IndicesList & indiceslist = params().indiceslist();
+ if (!indiceslist.empty()) {
+ IndicesList::const_iterator it = indiceslist.begin();
+ IndicesList::const_iterator const end = indiceslist.end();
+ for (; it != end; ++it) {
+ docstring const & current_index = it->shortcut();
+ Index const * index = indiceslist.findShortcut(current_index);
+ string const x11hexname = X11hexname(index->color());
+ // display the new color
+ docstring const str = current_index + ' ' + from_ascii(x11hexname);
+ dispatch(FuncRequest(LFUN_SET_COLOR, str));
+ }
+ }
// FIXME: If we used an LFUN, we would not need those two lines:
BufferView * bv = const_cast<BufferView *>(bufferview());
bv->processUpdateFlags(Update::Force | Update::FitCursor);
}
+void GuiDocument::updateUnknownBranches()
+{
+ list<docstring> used_branches;
+ buffer().getUsedBranches(used_branches);
+ list<docstring>::const_iterator it = used_branches.begin();
+ QStringList unknown_branches;
+ for (; it != used_branches.end() ; ++it) {
+ if (!buffer().params().branchlist().find(*it))
+ unknown_branches.append(toqstr(*it));
+ }
+ branchesModule->setUnknownBranches(unknown_branches);
+}
+
+
+void GuiDocument::branchesRename(docstring const & oldname, docstring const & newname)
+{
+ map<docstring, docstring>::iterator it = changedBranches_.begin();
+ for (; it != changedBranches_.end() ; ++it) {
+ if (it->second == oldname) {
+ // branch has already been renamed
+ it->second = newname;
+ return;
+ }
+ }
+ // store new name
+ changedBranches_[oldname] = newname;
+}
+
+
+void GuiDocument::executeBranchRenaming() const
+{
+ map<docstring, docstring>::const_iterator it = changedBranches_.begin();
+ for (; it != changedBranches_.end() ; ++it) {
+ docstring const arg = '"' + it->first + '"' + " " + '"' + it->second + '"';
+ dispatch(FuncRequest(LFUN_BRANCHES_RENAME, arg));
+ }
+}
+
+
Dialog * createGuiDocument(GuiView & lv) { return new GuiDocument(lv); }