diff options
author | Tilman Roeder <tilman.roder@qt.io> | 2018-08-03 09:38:07 +0200 |
---|---|---|
committer | Tilman Roeder <tilman.roder@qt.io> | 2018-08-15 10:10:16 +0000 |
commit | 13e02b9aaea19ac21251d152a8fa69336ae76ebd (patch) | |
tree | a6320449c18251033d3a2557afaed6a8fcafbfc9 /optional/projectexplorer/binding.cpp | |
parent | efea0c2e4a2966d88f65cdab90f841f7905dee14 (diff) |
Initial commit
This is a quite large commit containing:
* The main extension that runs and initializes Python
* Some (example) bindings
* An initial build script for the main extension
* Optional binding and examples of how to create them
* An initial build script for the optional bindings
* A simple extension manager written in Python
* A few example Python extensions
* Some documentation (both in the code and as markdown files)
* A collection of helpful python scripts
* A small collection of unit tests
* A TODO list
For any additional details the code / docs should be consulted.
Change-Id: I3937886cfefa2f64d5a78013889a8e097eec8261
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'optional/projectexplorer/binding.cpp')
-rw-r--r-- | optional/projectexplorer/binding.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/optional/projectexplorer/binding.cpp b/optional/projectexplorer/binding.cpp new file mode 100644 index 0000000..a544beb --- /dev/null +++ b/optional/projectexplorer/binding.cpp @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Python Extensions Plugin for QtCreator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "binding.h" + +#include <QtCore/QDebug> +#include <QtCore/QString> + +#undef signals +#undef slots + +#include <sbkpython.h> +#include <sbkconverter.h> +#include <sbkmodule.h> + +#if PY_MAJOR_VERSION >= 3 +extern "C" PyObject *PyInit_QtCreatorBindingProjectExplorer(); +#else +extern "C" void initQtCreatorBindingProjectExplorer(); +#endif + +extern PyObject *SbkQtCreatorBindingProjectExplorerModuleObject; + +namespace PyUtil { + extern bool bindSubPyObject(const QString &moduleName, const QString &name, void *obj); +} + +void bind() +{ + // Init module + #if PY_MAJOR_VERSION >= 3 + const bool pythonInitialized = PyInit_QtCreatorBindingProjectExplorer() != nullptr; + #else + const bool pythonInitialized = true; + initQtCreatorBindingProjectExplorer(); + #endif + // Bind module into interpreter + bool pythonError = PyErr_Occurred() != nullptr; + if (pythonInitialized && !pythonError) { + PyUtil::bindSubPyObject("PythonExtension.QtCreator", "ProjectExplorer", (void *)SbkQtCreatorBindingProjectExplorerModuleObject); + } else { + if (pythonError) + PyErr_Print(); + qDebug() << "There was a problem initializing the ProjectExplorer bindings."; + + } +} |