Remove ModRepositoryBridgeWrapper since it is not needed anymore.

This commit is contained in:
Mikaël Capelle
2020-05-11 23:26:29 +02:00
parent 6b88cee9d8
commit f0f949c4ef
2 changed files with 8 additions and 211 deletions
+7 -11
View File
@@ -379,17 +379,13 @@ BOOST_PYTHON_MODULE(mobase)
.def("invalidationActive", bpy::pure_virtual(&IProfile::invalidationActive))
;
bpy::class_<ModRepositoryBridgeWrapper, boost::noncopyable>("ModRepositoryBridge")
.def(bpy::init<IModRepositoryBridge*>())
.def("requestDescription", &ModRepositoryBridgeWrapper::requestDescription)
.def("requestFiles", &ModRepositoryBridgeWrapper::requestFiles)
.def("requestFileInfo", &ModRepositoryBridgeWrapper::requestFileInfo)
.def("requestToggleEndorsement", &ModRepositoryBridgeWrapper::requestToggleEndorsement)
.def("onFilesAvailable", &ModRepositoryBridgeWrapper::onFilesAvailable)
.def("onFileInfoAvailable", &ModRepositoryBridgeWrapper::onFileInfoAvailable)
.def("onDescriptionAvailable", &ModRepositoryBridgeWrapper::onDescriptionAvailable)
.def("onEndorsementToggled", &ModRepositoryBridgeWrapper::onEndorsementToggled)
.def("onRequestFailed", &ModRepositoryBridgeWrapper::onRequestFailed)
bpy::class_<IModRepositoryBridgeWrapper, boost::noncopyable>("ModRepositoryBridge")
.def(bpy::init<bpy::optional<QObject*>>())
.def("requestDescription", &IModRepositoryBridge::requestDescription)
.def("requestFiles", &IModRepositoryBridge::requestFiles)
.def("requestFileInfo", &IModRepositoryBridge::requestFileInfo)
.def("requestDownloadURL", &IModRepositoryBridge::requestDownloadURL)
.def("requestToggleEndorsement", &IModRepositoryBridge::requestToggleEndorsement)
Q_DELEGATE(IModRepositoryBridge, QObject, "_object")
;
+1 -200
View File
@@ -31,206 +31,6 @@
extern MOBase::IOrganizer *s_Organizer;
using MOBase::ModRepositoryFileInfo;
/**
* @brief Wrapper class for the bridge to a mod repository. Awkward: This may be
* unnecessary but I didn't manage to figure out how to correctly connect python
* code to C++ signals
*/
class ModRepositoryBridgeWrapper : public QObject
{
Q_OBJECT
public:
ModRepositoryBridgeWrapper()
: m_Wrapped(s_Organizer->createNexusBridge())
{
}
ModRepositoryBridgeWrapper(MOBase::IModRepositoryBridge *wrapped)
: m_Wrapped(wrapped)
{
}
~ModRepositoryBridgeWrapper()
{
delete m_Wrapped;
}
void requestDescription(QString gameName, int modID, QVariant userData)
{ m_Wrapped->requestDescription(gameName, modID, userData); }
void requestFiles(QString gameName, int modID, QVariant userData)
{ m_Wrapped->requestFiles(gameName, modID, userData); }
void requestFileInfo(QString gameName, int modID, int fileID, QVariant userData)
{ m_Wrapped->requestFileInfo(gameName, modID, fileID, userData); }
void requestToggleEndorsement(QString gameName, int modID, QString modVersion, bool endorse, QVariant userData)
{ m_Wrapped->requestToggleEndorsement(gameName, modID, modVersion, endorse, userData); }
void onFilesAvailable(boost::python::object callback) {
m_FilesAvailableHandler = callback;
connect(m_Wrapped, SIGNAL(filesAvailable(int,QVariant,const QList<ModRepositoryFileInfo>&)),
this, SLOT(filesAvailable(int,QVariant,const QList<ModRepositoryFileInfo>&)),
Qt::UniqueConnection);
}
void onDescriptionAvailable(boost::python::object callback) {
m_DescriptionAvailableHandler = callback;
connect(m_Wrapped, SIGNAL(descriptionAvailable(int,QVariant,QVariant)),
this, SLOT(descriptionAvailable(int,QVariant,QVariant)),
Qt::UniqueConnection);
}
void onFileInfoAvailable(boost::python::object callback) {
m_FileInfoHandler = callback;
connect(m_Wrapped, SIGNAL(fileInfoAvailable(int,int,QVariant,QVariant)),
this, SLOT(fileInfoAvailable(int,int,QVariant,QVariant)),
Qt::UniqueConnection);
}
void onEndorsementToggled(boost::python::object callback) {
m_EndorsementToggledHandler = callback;
connect(m_Wrapped, SIGNAL(endorsementToggled(int,QVariant,QVariant)),
this, SLOT(endorsementToggled(int,QVariant,QVariant)),
Qt::UniqueConnection);
}
void onTrackingToggled(boost::python::object callback) {
m_TrackingToggledHandler = callback;
connect(m_Wrapped, SIGNAL(trackingToggled(int,QVariant,bool)),
this, SLOT(trackingToggled(int,QVariant,bool)),
Qt::UniqueConnection);
}
void onRequestFailed(boost::python::object callback) {
m_FailedHandler = callback;
connect(m_Wrapped, SIGNAL(requestFailed(int,int,QVariant,QString)),
this, SLOT(requestFailed(int,int,QVariant,QString)),
Qt::UniqueConnection);
}
private:
Q_DISABLE_COPY(ModRepositoryBridgeWrapper)
private Q_SLOTS:
void filesAvailable(int modID, QVariant userData, const QList<ModRepositoryFileInfo> &resultData)
{
if (m_FilesAvailableHandler.is_none()) {
qCritical("no handler connected");
return;
}
try {
GILock lock;
m_FilesAvailableHandler(modID, userData, resultData);
} catch (const boost::python::error_already_set&) {
throw pyexcept::PythonError();
}
}
void descriptionAvailable(int modID, QVariant userData, const QVariant resultData)
{
try {
if (m_DescriptionAvailableHandler.is_none()) {
qCritical("no handler connected");
return;
}
try {
GILock lock;
m_DescriptionAvailableHandler(modID, userData, resultData);
} catch (const boost::python::error_already_set&) {
throw pyexcept::PythonError();
}
} catch (const std::exception &e) {
qCritical("failed to report event: %s", e.what());
} catch (...) {
qCritical("failed to report event");
}
}
void fileInfoAvailable(int modID, int fileID, QVariant userData, const QVariant resultData) {
try {
if (m_FileInfoHandler.is_none()) {
qCritical("no handler connected");
return;
}
try {
GILock lock;
m_FileInfoHandler(modID, fileID, userData, resultData);
} catch (const boost::python::error_already_set&) {
throw pyexcept::PythonError();
}
} catch (const std::exception &e) {
qCritical("failed to report event: %s", e.what());
} catch (...) {
qCritical("failed to report event");
}
}
void endorsementToggled(int modID, QVariant userData, const QVariant resultData)
{
try {
if (m_EndorsementToggledHandler.is_none()) {
qCritical("no handler connected");
return;
}
try {
GILock lock;
m_EndorsementToggledHandler(modID, userData, resultData);
} catch (const boost::python::error_already_set&) {
throw pyexcept::PythonError();
}
} catch (const std::exception &e) {
qCritical("failed to report event: %s", e.what());
} catch (...) {
qCritical("failed to report event");
}
}
void trackingToggled(int modID, QVariant userData, bool tracked)
{
try {
if (m_TrackingToggledHandler.is_none()) {
qCritical("no handler connected");
return;
}
try {
GILock lock;
m_TrackingToggledHandler(modID, userData, tracked);
} catch (const boost::python::error_already_set&) {
throw pyexcept::PythonError();
}
} catch (const std::exception &e) {
qCritical("failed to report event: %s", e.what());
} catch (...) {
qCritical("failed to report event");
}
}
void requestFailed(int modID, int fileID, QVariant userData, const QString &errorMessage)
{
try {
GILock lock;
m_FailedHandler(modID, fileID, userData, errorMessage);
} catch (const boost::python::error_already_set&) {
throw pyexcept::PythonError();
}
}
private:
MOBase::IModRepositoryBridge *m_Wrapped;
boost::python::object m_FilesAvailableHandler;
boost::python::object m_DescriptionAvailableHandler;
boost::python::object m_FileInfoHandler;
boost::python::object m_EndorsementToggledHandler;
boost::python::object m_TrackingToggledHandler;
boost::python::object m_FailedHandler;
};
struct IProfileWrapper: MOBase::IProfile, boost::python::wrapper<MOBase::IProfile>
{
virtual QString name() const override { return this->get_override("name")(); }
@@ -249,6 +49,7 @@ struct IDownloadManagerWrapper: MOBase::IDownloadManager, boost::python::wrapper
struct IModRepositoryBridgeWrapper: MOBase::IModRepositoryBridge, boost::python::wrapper<MOBase::IModRepositoryBridge>
{
using IModRepositoryBridge::IModRepositoryBridge;
virtual void requestDescription(QString gameName, int modID, QVariant userData) { this->get_override("requestDescription")(gameName, modID, userData); }
virtual void requestFiles(QString gameName, int modID, QVariant userData) { this->get_override("requestFiles")(gameName, modID, userData); }
virtual void requestFileInfo(QString gameName, int modID, int fileID, QVariant userData) { this->get_override("requestFileInfo")(gameName, modID, fileID, userData); }