From fc97e4bb8ce52a2ff464bdad717a8a26abd37ad2 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sun, 22 May 2011 14:10:54 +0000 Subject: [PATCH] Convert CoverSearchResult lists correctly --- src/main.cpp | 1 + src/scripting/python/pythonengine.cpp | 34 +++++++++++++-------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index a67e824bf..2fd5d652c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -191,6 +191,7 @@ int main(int argc, char *argv[]) { qRegisterMetaType("CoverSearchResult"); qRegisterMetaType("CoverSearchResults"); + qRegisterMetaType >("QList"); qRegisterMetaType("Directory"); qRegisterMetaType("DirectoryList"); qRegisterMetaType("Subdirectory"); diff --git a/src/scripting/python/pythonengine.cpp b/src/scripting/python/pythonengine.cpp index 20ee8e7be..4d0bdcd42 100644 --- a/src/scripting/python/pythonengine.cpp +++ b/src/scripting/python/pythonengine.cpp @@ -72,6 +72,20 @@ PythonEngine::~PythonEngine() { PythonQt::cleanup(); } +template +static void RegisterListConverter(const char* other_class_name) { + typedef QList L; + PythonQtConv::registerMetaTypeToPythonConverter(qMetaTypeId(), + PythonQtConvertListOfValueTypeToPythonList); + PythonQtConv::registerMetaTypeToPythonConverter(QMetaType::type(other_class_name), + PythonQtConvertListOfValueTypeToPythonList); + + PythonQtConv::registerPythonToMetaTypeConverter(qMetaTypeId(), + PythonQtConvertPythonListToListOfValueType); + PythonQtConv::registerPythonToMetaTypeConverter(QMetaType::type(other_class_name), + PythonQtConvertPythonListToListOfValueType); +} + bool PythonEngine::EnsureInitialised() { if (initialised_) return true; @@ -92,23 +106,9 @@ bool PythonEngine::EnsureInitialised() { python_qt->addDecorators(new ObjectDecorators); // Register converters for list types - PythonQtConv::registerMetaTypeToPythonConverter(qMetaTypeId(), - PythonQtConvertListOfValueTypeToPythonList); - PythonQtConv::registerMetaTypeToPythonConverter(QMetaType::type("QList"), - PythonQtConvertListOfValueTypeToPythonList); - PythonQtConv::registerMetaTypeToPythonConverter(qMetaTypeId(), - PythonQtConvertListOfValueTypeToPythonList); - PythonQtConv::registerMetaTypeToPythonConverter(qMetaTypeId(), - PythonQtConvertListOfValueTypeToPythonList); - - PythonQtConv::registerPythonToMetaTypeConverter(qMetaTypeId(), - PythonQtConvertPythonListToListOfValueType); - PythonQtConv::registerPythonToMetaTypeConverter(QMetaType::type("QList"), - PythonQtConvertPythonListToListOfValueType); - PythonQtConv::registerPythonToMetaTypeConverter(qMetaTypeId(), - PythonQtConvertPythonListToListOfValueType); - PythonQtConv::registerPythonToMetaTypeConverter(qMetaTypeId(), - PythonQtConvertPythonListToListOfValueType); + RegisterListConverter("QList"); + RegisterListConverter("QList"); + RegisterListConverter("QList"); // Connect stdout, stderr connect(python_qt, SIGNAL(pythonStdOut(QString)), SLOT(PythonStdOut(QString)));