Skip to content

Commit

Permalink
Base: implement a way to test translator for testing purposes
Browse files Browse the repository at this point in the history
  • Loading branch information
wwmayer committed Oct 26, 2021
1 parent 8f9ea87 commit 4061c04
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
41 changes: 41 additions & 0 deletions src/Base/Translate.cpp
Expand Up @@ -24,6 +24,7 @@

#include "Translate.h"
#include <QCoreApplication>
#include <QFileInfo>

using namespace Base;

Expand Down Expand Up @@ -62,6 +63,12 @@ Translate::Translate()
&Translate::trNoop,
"QT_TR_NOOP_UTF8(sourcetext)\n"
"Same as QT_TR_NOOP");
add_varargs_method("installTranslator",
&Translate::installTranslator,
"Install a translator for testing purposes");
add_varargs_method("removeTranslators",
&Translate::removeTranslators,
"Remove test translators");
initialize("This module is the Translate module"); // register with Python
}

Expand Down Expand Up @@ -109,3 +116,37 @@ Py::Object Translate::trNoop(const Py::Tuple& args)
throw Py::Exception();
return Py::Object(arg1);
}

Py::Object Translate::installTranslator(const Py::Tuple& args)
{
char* Name;
if (!PyArg_ParseTuple(args.ptr(), "et","utf-8",&Name))
throw Py::Exception();
QString filename = QString::fromUtf8(Name);
PyMem_Free(Name);

bool ok = false;
QFileInfo fi(filename);
std::shared_ptr<QTranslator> translator(std::make_shared<QTranslator>(nullptr));
translator->setObjectName(fi.fileName());
if (translator->load(filename)) {
qApp->installTranslator(translator.get());
translators.push_back(translator);
ok = true;
}

return Py::Boolean(ok);
}

Py::Object Translate::removeTranslators(const Py::Tuple& args)
{
if (!PyArg_ParseTuple(args.ptr(), ""))
throw Py::Exception();
bool ok = true;
for (const auto& it : translators) {
ok &= QCoreApplication::removeTranslator(it.get());
}

translators.clear();
return Py::Boolean(ok);
}
9 changes: 9 additions & 0 deletions src/Base/Translate.h
Expand Up @@ -26,10 +26,14 @@

#include <CXX/Extensions.hxx>
#include <CXX/Objects.hxx>
#include <QTranslator>
#include <memory>
#include <list>
#ifndef FC_GLOBAL_H
#include <FCGlobal.h>
#endif


namespace Base {

class BaseExport Translate : public Py::ExtensionModule<Translate>
Expand All @@ -43,6 +47,11 @@ class BaseExport Translate : public Py::ExtensionModule<Translate>
Py::Object translateNoop(const Py::Tuple& args);
Py::Object translateNoop3(const Py::Tuple& args);
Py::Object trNoop(const Py::Tuple& args);
Py::Object installTranslator(const Py::Tuple& args);
Py::Object removeTranslators(const Py::Tuple& args);

private:
std::list<std::shared_ptr<QTranslator>> translators;
};

} // namespace Base
Expand Down

0 comments on commit 4061c04

Please sign in to comment.