#include "GuiExternal.h"
+#include "Buffer.h"
#include "FuncRequest.h"
#include "support/gettext.h"
#include "Length.h"
N_("Top right"), N_("Bottom right"), N_("Baseline right")
};
-external::Template getTemplate(int i)
-{
- if (external::TemplateManager::get().getTemplates().empty())
- return Template();
- external::TemplateManager::Templates::const_iterator i1
- = external::TemplateManager::get().getTemplates().begin();
- advance(i1, i);
- return i1->second;
-}
-
-} // namespace anon
+} // namespace
GuiExternal::GuiExternal(GuiView & lv)
{
setupUi(this);
- connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK()));
- connect(applyPB, SIGNAL(clicked()), this, SLOT(slotApply()));
- connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
+ connect(buttonBox, SIGNAL(clicked(QAbstractButton *)),
+ this, SLOT(slotButtonBox(QAbstractButton *)));
/*
connect(displayGB, SIGNAL(toggled(bool)),
bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
- bc().setOK(okPB);
- bc().setApply(applyPB);
- bc().setCancel(closePB);
+ bc().setOK(buttonBox->button(QDialogButtonBox::Ok));
+ bc().setApply(buttonBox->button(QDialogButtonBox::Apply));
+ bc().setCancel(buttonBox->button(QDialogButtonBox::Cancel));
bc().addReadOnly(fileED);
bc().addReadOnly(browsePB);
external::TemplateManager::Templates::const_iterator i1, i2;
i1 = external::TemplateManager::get().getTemplates().begin();
i2 = external::TemplateManager::get().getTemplates().end();
+ QMap<QString, QString> localizedTemplates;
for (; i1 != i2; ++i1)
- externalCO->addItem(qt_(i1->second.guiName));
+ localizedTemplates.insert(qt_(i1->second.guiName), toqstr(i1->second.lyxName));
+ // Sort alphabetically by (localized) GUI name
+ QStringList keys = localizedTemplates.keys();
+ qSort(keys.begin(), keys.end(), SortLocaleAware);
+ for (QString & key : keys) {
+ QString const value = localizedTemplates[key];
+ externalCO->addItem(key, value);
+ }
// Fill the origins combo
for (size_t i = 0; i != sizeof(origins) / sizeof(origins[0]); ++i)
// add scale item
widthUnitCO->insertItem(0, qt_("Scale%"), "scale");
+
+ // remove all units from bb that depend on font or other dimensions
+ // we cannot use these, since we need to compare against absolute
+ // values from the image file.
+ xlUnitCO->noPercents();
+ xlUnitCO->removeFontDependent();
+ xrUnitCO->noPercents();
+ xrUnitCO->removeFontDependent();
+ ytUnitCO->noPercents();
+ ytUnitCO->removeFontDependent();
+ ybUnitCO->noPercents();
+ ybUnitCO->removeFontDependent();
}
void GuiExternal::browseClicked()
{
- int const choice = externalCO->currentIndex();
- QString const template_name = toqstr(getTemplate(choice).lyxName);
+ QString const template_name =
+ externalCO->itemData(externalCO->currentIndex()).toString();
QString const str = browse(fileED->text(), template_name);
if (!str.isEmpty()) {
fileED->setText(str);
void GuiExternal::updateContents()
{
+ if (params_.filename.empty())
+ tab->setCurrentIndex(0);
+
string const name =
params_.filename.outputFileName(fromqstr(bufferFilePath()));
fileED->setText(toqstr(name));
- int index = 0;
- external::TemplateManager::Templates::const_iterator i1, i2;
- i1 = external::TemplateManager::get().getTemplates().begin();
- i2 = external::TemplateManager::get().getTemplates().end();
- for (int i = 0; i1 != i2; ++i1, ++i) {
- if (i1->second.lyxName == params_.templatename()) {
- index = i;
- break;
- }
- }
-
- externalCO->setCurrentIndex(index);
+ externalCO->setCurrentIndex(
+ externalCO->findData(toqstr(params_.templatename())));
updateTemplate();
draftCB->setChecked(params_.draft);
void GuiExternal::updateTemplate()
{
- external::Template templ = getTemplate(externalCO->currentIndex());
- externalTB->setPlainText(qt_(templ.helpText));
+ external::TemplateManager const & etm =
+ external::TemplateManager::get();
+ external::Template const * const templ = etm.getTemplateByName(
+ fromqstr(externalCO->itemData(externalCO->currentIndex()).toString()));
+ externalTB->setPlainText(toqstr(translateIfPossible(
+ templ ? templ->helpText : docstring())));
+ if (!templ)
+ return;
// Ascertain which (if any) transformations the template supports
// and disable tabs and Group Boxes hosting unsupported transforms.
typedef vector<external::TransformID> TransformIDs;
- TransformIDs const transformIds = templ.transformIds;
+ TransformIDs const transformIds = templ->transformIds;
TransformIDs::const_iterator tr_begin = transformIds.begin();
TransformIDs::const_iterator const tr_end = transformIds.end();
optionsGB->setEnabled(found);
bool scaled = displayGB->isChecked() && displayGB->isEnabled() &&
- !isBufferReadonly() && (templ.preview_mode != PREVIEW_INSTANT);
+ !isBufferReadonly() && (templ->preview_mode != PREVIEW_INSTANT);
displayscaleED->setEnabled(scaled);
scaleLA->setEnabled(scaled);
extraED->clear();
extraFormatCO->clear();
- external::Template::Formats::const_iterator it = templ.formats.begin();
- external::Template::Formats::const_iterator end = templ.formats.end();
+ external::Template::Formats::const_iterator it = templ->formats.begin();
+ external::Template::Formats::const_iterator end = templ->formats.end();
for (; it != end; ++it) {
if (it->second.option_transformers.find(external::Extra) ==
it->second.option_transformers.end())
void GuiExternal::applyView()
{
params_.filename.set(fromqstr(fileED->text()), fromqstr(bufferFilePath()));
- params_.settemplate(getTemplate(externalCO->currentIndex()).lyxName);
+ params_.settemplate(fromqstr(externalCO->itemData(externalCO->currentIndex()).toString()));
params_.draft = draftCB->isChecked();
params_.lyxscale = displayscaleED->text().toInt();
}
-bool GuiExternal::initialiseParams(string const & data)
+bool GuiExternal::initialiseParams(string const & sdata)
{
- InsetExternal::string2params(data, buffer(), params_);
+ InsetExternal::string2params(sdata, buffer(), params_);
return true;
}
string filter;
if (et_ptr && et_ptr->fileRegExp != "" && et_ptr->fileRegExp != "*") {
- filter += et_ptr->guiName;
+ filter += to_utf8(_(et_ptr->guiName));
filter += " (";
filter += et_ptr->fileRegExp;
filter += ")";
QString const bufpath = bufferFilePath();
QStringList const filter = templateFilters(template_name);
- QString const label1 = qt_("Documents|#o#O");
+ QString const label1 = qt_("D&ocuments");
QString const dir1 = toqstr(lyxrc.document_path);
return browseRelToParent(input, bufpath, title, filter, false, label1, dir1);