namespace {
- vector<string> getRequiredList(string const & modName)
- {
- LyXModule const * const mod = moduleList[modName];
- if (!mod)
- return vector<string>(); //empty such thing
- return mod->getRequiredModules();
- }
+vector<string> getRequiredList(string const & modName)
+{
+ LyXModule const * const mod = moduleList[modName];
+ if (!mod)
+ return vector<string>(); //empty such thing
+ return mod->getRequiredModules();
+}
- vector<string> getExcludedList(string const & modName)
- {
- LyXModule const * const mod = moduleList[modName];
- if (!mod)
- return vector<string>(); //empty such thing
- return mod->getExcludedModules();
- }
+vector<string> getExcludedList(string const & modName)
+{
+ LyXModule const * const mod = moduleList[modName];
+ if (!mod)
+ return vector<string>(); //empty such thing
+ return mod->getExcludedModules();
+}
- docstring getModuleDescription(string const & modName)
- {
- LyXModule const * const mod = moduleList[modName];
- if (!mod)
- return _("Module not found!");
- return _(mod->getDescription());
- }
+
+docstring getModuleDescription(string const & modName)
+{
+ LyXModule const * const mod = moduleList[modName];
+ if (!mod)
+ return _("Module not found!");
+ return _(mod->getDescription());
+}
- vector<string> getPackageList(string const & modName)
- {
- LyXModule const * const mod = moduleList[modName];
- if (!mod)
- return vector<string>(); //empty such thing
- return mod->getPackageList();
- }
+vector<string> getPackageList(string const & modName)
+{
+ LyXModule const * const mod = moduleList[modName];
+ if (!mod)
+ return vector<string>(); //empty such thing
+ return mod->getPackageList();
+}
- bool isModuleAvailable(string const & modName)
- {
- LyXModule * mod = moduleList[modName];
- if (!mod)
- return false;
- return mod->isAvailable();
- }
-} //anonymous namespace
+bool isModuleAvailable(string const & modName)
+{
+ LyXModule * mod = moduleList[modName];
+ if (!mod)
+ return false;
+ return mod->isAvailable();
+}
+
+} // anonymous namespace
+
+/////////////////////////////////////////////////////////////////////
+//
+// ModuleSelectionManager
+//
+/////////////////////////////////////////////////////////////////////
-ModuleSelMan::ModuleSelMan(
+ModuleSelectionManager::ModuleSelectionManager(
QListView * availableLV,
QListView * selectedLV,
QPushButton * addPB,
{}
-void ModuleSelMan::updateAddPB()
+void ModuleSelectionManager::updateAddPB()
{
int const arows = availableModel->rowCount();
QModelIndexList const availSels =
}
-void ModuleSelMan::updateDownPB()
+void ModuleSelectionManager::updateDownPB()
{
int const srows = selectedModel->rowCount();
if (srows == 0) {
find(reqs.begin(), reqs.end(), curModName) == reqs.end());
}
-void ModuleSelMan::updateUpPB()
+void ModuleSelectionManager::updateUpPB()
{
int const srows = selectedModel->rowCount();
if (srows == 0) {
upPB->setEnabled(find(reqs.begin(), reqs.end(), preModName) == reqs.end());
}
-void ModuleSelMan::updateDelPB()
+void ModuleSelectionManager::updateDelPB()
{
int const srows = selectedModel->rowCount();
if (srows == 0) {
//
/////////////////////////////////////////////////////////////////////
-PreambleModule::PreambleModule(): current_id_(0)
+PreambleModule::PreambleModule() : current_id_(0)
{
// This is not a memory leak. The object will be destroyed
// with this.
Coords::const_iterator it = preamble_coords_.find(current_id_);
if (it == preamble_coords_.end())
// First time we open this one.
- preamble_coords_[current_id_] = make_pair(0,0);
+ preamble_coords_[current_id_] = make_pair(0, 0);
else {
// Restore saved coords.
QTextCursor cur = preambleTE->textCursor();
connect(textLayoutModule->bypassCB, SIGNAL(clicked()),
this, SLOT(change_adaptor()));
connect(textLayoutModule->bypassCB, SIGNAL(clicked()),
- this, SLOT(set_listings_msg()));
+ this, SLOT(setListingsMessage()));
connect(textLayoutModule->listingsED, SIGNAL(textChanged()),
- this, SLOT(set_listings_msg()));
+ this, SLOT(setListingsMessage()));
textLayoutModule->listingsTB->setPlainText(
qt_("Input listings parameters on the right. Enter ? for a list of parameters."));
textLayoutModule->lspacingLE->setValidator(new QDoubleValidator(
langModule->languageCO->setModel(language_model);
// Always put the default encoding in the first position.
- // It is special because the displayed text is translated.
- langModule->encodingCO->addItem(qt_("LaTeX default"));
+ langModule->encodingCO->addItem(qt_("Language Default (no inputenc)"));
+ QStringList encodinglist;
Encodings::const_iterator it = encodings.begin();
Encodings::const_iterator const end = encodings.end();
for (; it != end; ++it)
- langModule->encodingCO->addItem(toqstr(it->latexName()));
+ encodinglist.append(qt_(it->guiName()));
+ encodinglist.sort();
+ langModule->encodingCO->addItems(encodinglist);
langModule->quoteStyleCO->addItem(qt_("``text''"));
langModule->quoteStyleCO->addItem(qt_("''text''"));
this, SLOT(change_adaptor()));
connect(latexModule->layoutPB, SIGNAL(clicked()),
this, SLOT(browseLayout()));
+ connect(latexModule->layoutPB, SIGNAL(clicked()),
+ this, SLOT(change_adaptor()));
connect(latexModule->childDocGB, SIGNAL(clicked()),
this, SLOT(change_adaptor()));
connect(latexModule->childDocLE, SIGNAL(textChanged(const QString &)),
this, SLOT(browseMaster()));
selectionManager =
- new ModuleSelMan(latexModule->availableLV, latexModule->selectedLV,
+ new ModuleSelectionManager(latexModule->availableLV,
+ latexModule->selectedLV,
latexModule->addPB, latexModule->deletePB,
latexModule->upPB, latexModule->downPB,
availableModel(), selectedModel());
}
-docstring GuiDocument::validate_listings_params()
+QString GuiDocument::validateListingsParameters()
{
// use a cache here to avoid repeated validation
// of the same parameters
- static string param_cache = string();
- static docstring msg_cache = docstring();
+ static string param_cache;
+ static QString msg_cache;
if (textLayoutModule->bypassCB->isChecked())
- return docstring();
+ return QString();
string params = fromqstr(textLayoutModule->listingsED->toPlainText());
if (params != param_cache) {
param_cache = params;
- msg_cache = InsetListingsParams(params).validate();
+ msg_cache = toqstr(InsetListingsParams(params).validate());
}
return msg_cache;
}
-void GuiDocument::set_listings_msg()
+void GuiDocument::setListingsMessage()
{
static bool isOK = true;
- docstring msg = validate_listings_params();
- if (msg.empty()) {
+ QString msg = validateListingsParameters();
+ if (msg.isEmpty()) {
if (isOK)
return;
isOK = true;
// listingsTB->setTextColor("black");
textLayoutModule->listingsTB->setPlainText(
- qt_("Input listings parameters on the right. Enter ? for a list of parameters."));
+ qt_("Input listings parameters on the right. "
+ "Enter ? for a list of parameters."));
} else {
isOK = false;
// listingsTB->setTextColor("red");
- textLayoutModule->listingsTB->setPlainText(toqstr(msg));
+ textLayoutModule->listingsTB->setPlainText(msg);
}
}
FileName layoutFile = support::makeAbsPath(fromqstr(file),
fromqstr(bufferFilepath()));
+ int const ret = Alert::prompt(_("Local layout file"),
+ _("The layout file you have selected is a local layout\n"
+ "file, not one in the system or user directory. Your\n"
+ "document may not work with this layout if you do not\n"
+ "keep the layout file in the document directory."),
+ 1, 1, _("&Set Layout"), _("&Cancel"));
+ if (ret == 1)
+ return;
+
// load the layout file
LayoutFileList & bcl = LayoutFileList::get();
string classname = layoutFile.onlyFileName();
- LayoutFileIndex name = bcl.addLayoutFile(
+ // this will update an existing layout if that layout has been loaded before.
+ LayoutFileIndex name = bcl.addLocalLayout(
classname.substr(0, classname.size() - 7),
- layoutFile.onlyPath().absFilename(),
- LayoutFileList::Local);
+ layoutFile.onlyPath().absFilename());
if (name.empty()) {
Alert::error(_("Error"),
latexModule->classCO->setCurrentIndex(0);
} else
latexModule->classCO->setCurrentIndex(idx);
+
classChanged();
}
if (idx < 0)
return;
string const classname = classes_model_.getIDString(idx);
- // check if this is a local layout file
- if (prefixIs(classname, LayoutFileList::localPrefix)) {
- int const ret = Alert::prompt(_("Local layout file"),
- _("The layout file you have selected is a local layout\n"
- "file, not one in the system or user directory. Your\n"
- "document may not work with this layout if you do not\n"
- "keep the layout file in the same directory."),
- 1, 1, _("&Set Layout"), _("&Cancel"));
- if (ret == 1) {
- // try to reset the layout combo
- setLayoutComboByIDString(bp_.baseClassID());
- return;
- }
- }
+
// FIXME Note that by doing things this way, we load the TextClass
// as soon as it is selected. So, if you use the scroll wheel when
// sitting on the combo box, we'll load a lot of TextClass objects
bp_.useClassDefaults();
paramsToDialog(bp_);
}
+ // FIXME There's a little bug here connected with auto_reset, namely,
+ // that, if the preceding is skipped and the user has changed the
+ // modules before changing the class, those changes will be lost on
+ // update. But maybe that's what we want?
+ updateSelectedModules();
}
int i = langModule->encodingCO->currentIndex();
if (i == 0)
params.inputenc = "default";
- else
- params.inputenc =
- fromqstr(langModule->encodingCO->currentText());
+ else {
+ QString const enc_gui =
+ langModule->encodingCO->currentText();
+ Encodings::const_iterator it = encodings.begin();
+ Encodings::const_iterator const end = encodings.end();
+ bool found = false;
+ for (; it != end; ++it) {
+ if (qt_(it->guiName()) == enc_gui) {
+ params.inputenc = it->latexName();
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ // should not happen
+ lyxerr << "GuiDocument::apply: Unknown encoding! Resetting to default" << endl;
+ params.inputenc = "default";
+ }
+ }
}
InsetQuotes::QuoteLanguage lga = InsetQuotes::EnglishQuotes;
}
// bullets
- params.user_defined_bullet(0) = bulletsModule->getBullet(0);
- params.user_defined_bullet(1) = bulletsModule->getBullet(1);
- params.user_defined_bullet(2) = bulletsModule->getBullet(2);
- params.user_defined_bullet(3) = bulletsModule->getBullet(3);
+ params.user_defined_bullet(0) = bulletsModule->bullet(0);
+ params.user_defined_bullet(1) = bulletsModule->bullet(1);
+ params.user_defined_bullet(2) = bulletsModule->bullet(2);
+ params.user_defined_bullet(3) = bulletsModule->bullet(3);
// packages
params.graphicsDriver =
vector<string> selModList;
for (int i = 0; i < srows; ++i)
params.addLayoutModule(modules_sel_model_.getIDString(i));
+ // update the list of removed modules
+ params.clearRemovedModules();
+ set<string> const & reqmods = params.baseClass()->defaultModules();
+ set<string>::const_iterator rit = reqmods.begin();
+ set<string>::const_iterator ren = reqmods.end();
+ // check each of the required modules
+ for (; rit != ren; rit++) {
+ vector<string>::const_iterator mit = params.getModules().begin();
+ vector<string>::const_iterator men = params.getModules().end();
+ bool found = false;
+ for (; mit != men; mit++) {
+ if (*rit == *mit) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ // the module isn't present so must have been removed by the user
+ params.addRemovedModule(*rit);
+ }
+ }
if (mathsModule->amsautoCB->isChecked()) {
params.use_amsmath = BufferParams::package_auto;
if (params.inputenc == "default") {
langModule->encodingCO->setCurrentIndex(0);
} else {
+ string enc_gui;
+ Encodings::const_iterator it = encodings.begin();
+ Encodings::const_iterator const end = encodings.end();
+ for (; it != end; ++it) {
+ if (it->latexName() == params.inputenc) {
+ enc_gui = it->guiName();
+ break;
+ }
+ }
int const i = langModule->encodingCO->findText(
- toqstr(params.inputenc));
+ qt_(enc_gui));
if (i >= 0)
langModule->encodingCO->setCurrentIndex(i);
else
bool GuiDocument::isValid()
{
- return validate_listings_params().empty()
+ return validateListingsParameters().isEmpty()
&& (textLayoutModule->skipCO->currentIndex() != 3
|| !textLayoutModule->skipLE->text().isEmpty());
}