]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiExternal.cpp
Use <cstdint> instead of <boost/cstdint.hpp>
[lyx.git] / src / frontends / qt4 / GuiExternal.cpp
index a7c84bef7a7350bc2d8db74afbff9a4aa8b3999d..7be6be0954a69e49f330522003ee9bf7b00fc34d 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "GuiExternal.h"
 
+#include "Buffer.h"
 #include "FuncRequest.h"
 #include "support/gettext.h"
 #include "Length.h"
@@ -79,17 +80,7 @@ char const * const origin_gui_strs[] = {
        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)
@@ -97,9 +88,8 @@ 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)),
@@ -168,9 +158,9 @@ GuiExternal::GuiExternal(GuiView & lv)
 
        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);
@@ -211,8 +201,16 @@ GuiExternal::GuiExternal(GuiView & lv)
        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)
@@ -220,6 +218,18 @@ GuiExternal::GuiExternal(GuiView & lv)
 
        // 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();
 }
 
 
@@ -269,8 +279,8 @@ void GuiExternal::bbChanged()
 
 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);
@@ -482,22 +492,15 @@ static void getCrop(external::ClipData & data,
 
 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);
@@ -526,13 +529,19 @@ void GuiExternal::updateContents()
 
 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();
 
@@ -552,7 +561,7 @@ void GuiExternal::updateTemplate()
        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);
 
@@ -565,8 +574,8 @@ void GuiExternal::updateTemplate()
        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())
@@ -593,7 +602,7 @@ void GuiExternal::updateTemplate()
 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();
@@ -619,9 +628,9 @@ void GuiExternal::applyView()
 }
 
 
-bool GuiExternal::initialiseParams(string const & data)
+bool GuiExternal::initialiseParams(string const & sdata)
 {
-       InsetExternal::string2params(data, buffer(), params_);
+       InsetExternal::string2params(sdata, buffer(), params_);
        return true;
 }
 
@@ -649,7 +658,7 @@ static QStringList templateFilters(QString const & template_name)
 
        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 += ")";
@@ -665,7 +674,7 @@ QString GuiExternal::browse(QString const & input,
        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);