Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenFlipper-Free
OpenFlipper
Commits
9efe669f
Commit
9efe669f
authored
Jan 23, 2019
by
Jan Möbius
Browse files
Removed python interface as we found a simpler way to pass the pointers
parent
daa5ab33
Changes
6
Hide whitespace changes
Inline
Side-by-side
BasePlugin/PythonFunctions.cc
0 → 100644
View file @
9efe669f
#include
"PythonFunctions.hh"
#include
"PythonFunctionsCore.hh"
#include
<map>
#include
<iostream>
std
::
map
<
QString
,
QObject
*>
map_
;
void
setPluginPointer
(
QString
_name
,
QObject
*
_pointer
)
{
map_
[
_name
]
=
_pointer
;
std
::
cerr
<<
"Set: "
<<
_name
.
toStdString
()
<<
std
::
endl
;
}
QObject
*
getPluginPointer
(
QString
_name
)
{
auto
it
=
map_
.
find
(
_name
);
if
(
it
!=
map_
.
end
()
)
{
return
it
->
second
;
}
else
{
std
::
cerr
<<
"No plugin found with name "
<<
_name
.
toStdString
()
<<
" for PythonFunctions"
<<
std
::
endl
;
return
nullptr
;
}
}
BasePlugin/PythonFunctions.hh
0 → 100644
View file @
9efe669f
#include
<OpenFlipper/common/GlobalDefines.hh>
#include
<QObject>
#include
<QString>
DLLEXPORT
QObject
*
getPluginPointer
(
QString
_name
);
BasePlugin/PythonFunctionsCore.hh
0 → 100644
View file @
9efe669f
#include
<OpenFlipper/common/GlobalDefines.hh>
#include
<QObject>
#include
<QString>
DLLEXPORT
void
setPluginPointer
(
QString
_name
,
QObject
*
_pointer
);
BasePlugin/PythonInterface.hh
deleted
100644 → 0
View file @
daa5ab33
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
#pragma once
/** \file PythonInterface.hh
*
* Interface for enabling Python Interfacing for this plugin. \ref pythonInterfacePage
*/
/** \brief Interface class for exporting functions to python
*
* \n
* \ref pythonInterfacePage "Detailed description"
* \n
*
*/
class
PythonInterface
{
private
slots
:
/** \brief This function will be called by the core to send the current this pointer to the plugin
*
*
* As we need a this pointer to the plugin to call it from pythonn code, we need to pass it
* into our shared plugin to make it available there. As a plugin is semantically a singleton
* we can't have multiple this pointers.
*
* The corresponding function has to be implemented inside the plugin!
*
* @param _pluginPointer Pointer to the plugin instance
*/
virtual
void
setPluginPointer
(
QObject
*
_pluginPointer
)
{};
public
:
/// Destructor
virtual
~
PythonInterface
()
{};
};
/** \page pythonInterfacePage Python Interface
\n
\n
TODO!!!!!
*/
Q_DECLARE_INTERFACE
(
PythonInterface
,
"OpenFlipper.PythonInterface/1.0"
)
Core/PluginLoader.cc
View file @
9efe669f
...
...
@@ -67,7 +67,6 @@
#include
"OpenFlipper/BasePlugin/ViewModeInterface.hh"
#include
"OpenFlipper/BasePlugin/LoadSaveInterface.hh"
#include
"OpenFlipper/BasePlugin/INIInterface.hh"
#include
"OpenFlipper/BasePlugin/PythonInterface.hh"
#include
"OpenFlipper/BasePlugin/RPCInterface.hh"
#include
"OpenFlipper/BasePlugin/ScriptInterface.hh"
#include
"OpenFlipper/BasePlugin/SecurityInterface.hh"
...
...
@@ -82,6 +81,7 @@
#include
<OpenFlipper/common/FileTypes.hh>
#include
<OpenFlipper/common/PluginStorage.hh>
#include
<OpenFlipper/BasePlugin/PythonFunctionsCore.hh>
/**
* The number of plugins to load simultaneously.
...
...
@@ -776,6 +776,9 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
info
.
description
=
basePlugin
->
description
();
info
.
warnings
=
"BLA"
;
// Used by PythonFunctions to provide a mapping between Plugin name and Instance of the plugin
setPluginPointer
(
info
.
name
,
_plugin
);
QStringList
additionalPlugins
=
OpenFlipperSettings
().
value
(
"PluginControl/AdditionalPlugins"
,
QStringList
()).
toStringList
();
info
.
buildIn
=
!
additionalPlugins
.
contains
(
info
.
path
);
...
...
@@ -1340,23 +1343,6 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
plugin
,
SLOT
(
loadIniFileOptionsLast
(
INIFile
&
)
),
Qt
::
DirectConnection
);
}
#ifdef PYTHON_ENABLED
//Check if the plugin supports Python Interface
PythonInterface
*
pythonPlugin
=
qobject_cast
<
PythonInterface
*
>
(
plugin
);
if
(
pythonPlugin
)
{
QObject
*
currentPluginPointer
=
qobject_cast
<
QObject
*
>
(
plugin
);
if
(
currentPluginPointer
)
{
QMetaObject
::
invokeMethod
(
plugin
,
"setPluginPointer"
,
Qt
::
DirectConnection
,
Q_ARG
(
QObject
*
,
currentPluginPointer
)
)
;
}
else
{
emit
log
(
LOGWARN
,
tr
(
"Unable to set python plugin pointer!"
)
);
}
}
#endif
//Check if the plugin supports Selection-Interface
SelectionInterface
*
selectionPlugin
=
qobject_cast
<
SelectionInterface
*
>
(
plugin
);
if
(
selectionPlugin
&&
OpenFlipper
::
Options
::
gui
()
)
{
...
...
CoreApp/CMakeLists.txt
View file @
9efe669f
...
...
@@ -74,7 +74,8 @@ set (directories
${
WIN_EXTRA_DIRS
}
)
if
(
Python3_FOUND
)
if
(
PYTHON3_FOUND
)
include_directories
(
${
Python3_INCLUDE_DIRS
}
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment