mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 02:36:34 +01:00
PyFalkon: Install into standard plugin path
This commit is contained in:
parent
ee84b87d20
commit
2873cf45a9
@ -35,14 +35,7 @@ Plugins::Plugins(QObject* parent)
|
|||||||
, m_speedDial(new SpeedDial(this))
|
, m_speedDial(new SpeedDial(this))
|
||||||
{
|
{
|
||||||
loadSettings();
|
loadSettings();
|
||||||
|
loadPythonSupport();
|
||||||
m_pythonPlugin = new QLibrary(QSL("PyFalkonPrivate"), this);
|
|
||||||
m_pythonPlugin->setLoadHints(QLibrary::ExportExternalSymbolsHint);
|
|
||||||
if (!m_pythonPlugin->load()) {
|
|
||||||
qDebug() << "Failed to load python support plugin" << m_pythonPlugin->errorString();
|
|
||||||
delete m_pythonPlugin;
|
|
||||||
m_pythonPlugin = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Plugins::Plugin> Plugins::getAvailablePlugins()
|
QList<Plugins::Plugin> Plugins::getAvailablePlugins()
|
||||||
@ -168,6 +161,9 @@ void Plugins::loadAvailablePlugins()
|
|||||||
for (const QString &dir : qAsConst(dirs)) {
|
for (const QString &dir : qAsConst(dirs)) {
|
||||||
const auto files = QDir(dir).entryInfoList(QDir::Files);
|
const auto files = QDir(dir).entryInfoList(QDir::Files);
|
||||||
for (const QFileInfo &info : files) {
|
for (const QFileInfo &info : files) {
|
||||||
|
if (info.baseName() == QL1S("PyFalkon")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Plugin plugin = loadSharedLibraryPlugin(info.absoluteFilePath());
|
Plugin plugin = loadSharedLibraryPlugin(info.absoluteFilePath());
|
||||||
if (plugin.pluginSpec.name.isEmpty()) {
|
if (plugin.pluginSpec.name.isEmpty()) {
|
||||||
qWarning() << "Invalid plugin spec of" << info.absoluteFilePath() << "plugin";
|
qWarning() << "Invalid plugin spec of" << info.absoluteFilePath() << "plugin";
|
||||||
@ -209,6 +205,26 @@ void Plugins::refreshLoadedPlugins()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Plugins::loadPythonSupport()
|
||||||
|
{
|
||||||
|
const QStringList dirs = DataPaths::allPaths(DataPaths::Plugins);
|
||||||
|
for (const QString &dir : dirs) {
|
||||||
|
const auto files = QDir(dir).entryInfoList({QSL("PyFalkon*")}, QDir::Files);
|
||||||
|
for (const QFileInfo &info : files) {
|
||||||
|
m_pythonPlugin = new QLibrary(info.absoluteFilePath(), this);
|
||||||
|
m_pythonPlugin->setLoadHints(QLibrary::ExportExternalSymbolsHint);
|
||||||
|
if (!m_pythonPlugin->load()) {
|
||||||
|
qWarning() << "Failed to load python support plugin" << m_pythonPlugin->errorString();
|
||||||
|
delete m_pythonPlugin;
|
||||||
|
m_pythonPlugin = nullptr;
|
||||||
|
} else {
|
||||||
|
std::cout << "Falkon: Python plugin support initialized" << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Plugins::Plugin Plugins::loadPlugin(const QString &id)
|
Plugins::Plugin Plugins::loadPlugin(const QString &id)
|
||||||
{
|
{
|
||||||
QString name;
|
QString name;
|
||||||
|
@ -108,6 +108,7 @@ Q_SIGNALS:
|
|||||||
void pluginUnloaded(PluginInterface* plugin);
|
void pluginUnloaded(PluginInterface* plugin);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void loadPythonSupport();
|
||||||
Plugin loadPlugin(const QString &id);
|
Plugin loadPlugin(const QString &id);
|
||||||
Plugin loadInternalPlugin(const QString &name);
|
Plugin loadInternalPlugin(const QString &name);
|
||||||
Plugin loadSharedLibraryPlugin(const QString &name);
|
Plugin loadSharedLibraryPlugin(const QString &name);
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
|
||||||
|
|
||||||
# Enable policy to run automoc on generated files.
|
# Enable policy to run automoc on generated files.
|
||||||
if(POLICY CMP0071)
|
if(POLICY CMP0071)
|
||||||
cmake_policy(SET CMP0071 NEW)
|
cmake_policy(SET CMP0071 NEW)
|
||||||
@ -95,11 +92,10 @@ set( PyFalkon_SRCS
|
|||||||
${GENERATED_SOURCES}
|
${GENERATED_SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(PyFalkonPrivate SHARED ${PyFalkon_SRCS})
|
add_library(PyFalkon MODULE ${PyFalkon_SRCS})
|
||||||
set_target_properties(PyFalkonPrivate PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION "2")
|
install(TARGETS PyFalkon DESTINATION ${FALKON_INSTALL_PLUGINDIR})
|
||||||
install(TARGETS PyFalkonPrivate ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP)
|
|
||||||
|
|
||||||
target_include_directories(PyFalkonPrivate
|
target_include_directories(PyFalkon
|
||||||
PRIVATE
|
PRIVATE
|
||||||
${SHIBOKEN_INCLUDE_DIR}
|
${SHIBOKEN_INCLUDE_DIR}
|
||||||
${SHIBOKEN_PYTHON_INCLUDE_DIR}
|
${SHIBOKEN_PYTHON_INCLUDE_DIR}
|
||||||
@ -109,7 +105,7 @@ target_include_directories(PyFalkonPrivate
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}/PyFalkon
|
${CMAKE_CURRENT_BINARY_DIR}/PyFalkon
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(PyFalkonPrivate
|
target_link_libraries(PyFalkon
|
||||||
PRIVATE
|
PRIVATE
|
||||||
FalkonPrivate
|
FalkonPrivate
|
||||||
${PYTHON_LIBRARIES}
|
${PYTHON_LIBRARIES}
|
||||||
@ -119,4 +115,4 @@ target_link_libraries(PyFalkonPrivate
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Same as CONFIG += no_keywords to avoid syntax errors in object.h due to the usage of the word Slot
|
# Same as CONFIG += no_keywords to avoid syntax errors in object.h due to the usage of the word Slot
|
||||||
target_compile_definitions(PyFalkonPrivate PRIVATE QT_NO_KEYWORDS)
|
target_compile_definitions(PyFalkon PRIVATE QT_NO_KEYWORDS)
|
||||||
|
Loading…
Reference in New Issue
Block a user