Krita Source Code Documentation
Loading...
Searching...
No Matches
utilities.h
Go to the documentation of this file.
1// This file is part of PyKrita, Krita' Python scripting plugin.
2//
3// A couple of useful macros and functions used inside of pykrita_engine.cpp and pykrita_plugin.cpp.
4//
5// SPDX-FileCopyrightText: 2006 Paul Giannaros <paul@giannaros.org>
6// SPDX-FileCopyrightText: 2012, 2013 Shaheed Haque <srhaque@theiet.org>
7//
8// SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
9//
10
11#ifndef __PYKRITA_UTILITIES_H__
12# define __PYKRITA_UTILITIES_H__
13
14#include <cmath>
15#include <Python.h>
16#include <QString>
17
18class KConfigBase;
19
21# define PQ(x) x.toUtf8().constData()
22
24
25namespace PyKrita
26{
34
41
48
55 void finalize();
56
72class Python
73{
74public:
75 Python();
76 ~Python();
77
81 static bool libraryLoad();
82
87 static bool setPath(const QStringList& scriptPaths);
88
93 static void ensureInitialized();
94
98 static void maybeFinalize();
99
103 static void libraryUnload();
104
106 static PyObject* unicode(const QString& string);
107
109 static QString unicode(PyObject* string);
110
112 static bool isUnicode(PyObject* string);
113
115 bool prependStringToList(PyObject* list, const QString& value);
116
129 void traceback(const QString& description);
130
134 QString lastTraceback(void) const;
135
139 bool functionCall(const char* functionName, const char* moduleName = PYKRITA_ENGINE);
140 PyObject* functionCall(const char* functionName, const char* moduleName, PyObject* arguments);
141
145 bool itemStringDel(const char* item, const char* moduleName = PYKRITA_ENGINE);
146
152 PyObject* itemString(const char* item, const char* moduleName = PYKRITA_ENGINE);
153
159 PyObject* itemString(const char* item, PyObject* dict);
160
164 bool itemStringSet(const char* item, PyObject* value, const char* moduleName = PYKRITA_ENGINE);
165
173 PyObject* moduleActions(const char* moduleName);
174
182 PyObject* moduleConfigPages(const char* moduleName);
183
189 PyObject* moduleDict(const char* moduleName = PYKRITA_ENGINE);
190
194 QString moduleHelp(const char* moduleName);
195
201 PyObject* moduleImport(const char* moduleName);
202
209 bool prependPythonPaths(const QString& path);
210
217 bool prependPythonPaths(const QStringList& paths);
218
219 static const char* PYKRITA_ENGINE;
220
221private:
223 bool prependPythonPaths(const QString&, PyObject*);
224 PyGILState_STATE m_state;
225 mutable QString m_traceback;
226
232 PyObject* kritaHandler(const char* moduleName, const char* handler);
233};
234
235} // namespace PyKrita
236#endif // __PYKRITA_UTILITIES_H__
237// krita: indent-width 4;
float value(const T *src, size_t ch)
QString moduleHelp(const char *moduleName)
static PyObject * unicode(const QString &string)
Convert a QString to a Python unicode object.
bool itemStringSet(const char *item, PyObject *value, const char *moduleName=PYKRITA_ENGINE)
static bool isUnicode(PyObject *string)
Test if a Python object is compatible with a QString.
PyGILState_STATE m_state
Definition utilities.h:224
bool prependStringToList(PyObject *list, const QString &value)
Prepend a QString to a list as a Python unicode object.
static void libraryUnload()
PyObject * moduleDict(const char *moduleName=PYKRITA_ENGINE)
bool itemStringDel(const char *item, const char *moduleName=PYKRITA_ENGINE)
static bool setPath(const QStringList &scriptPaths)
bool functionCall(const char *functionName, const char *moduleName=PYKRITA_ENGINE)
PyObject * moduleConfigPages(const char *moduleName)
static const char * PYKRITA_ENGINE
Definition utilities.h:219
PyObject * moduleImport(const char *moduleName)
static void ensureInitialized()
QString m_traceback
Definition utilities.h:225
PyObject * moduleActions(const char *moduleName)
bool prependPythonPaths(const QString &path)
void traceback(const QString &description)
PyObject * kritaHandler(const char *moduleName, const char *handler)
static bool libraryLoad()
PyObject * itemString(const char *item, const char *moduleName=PYKRITA_ENGINE)
static void maybeFinalize()
QString lastTraceback(void) const
@ INIT_UNINITIALIZED
Definition utilities.h:28
@ INIT_CANNOT_LOAD_PYKRITA_MODULE
Definition utilities.h:32
@ INIT_CANNOT_LOAD_PYTHON_LIBRARY
Definition utilities.h:30
@ INIT_CANNOT_SET_PYTHON_PATHS
Definition utilities.h:31
@ INIT_OK
Definition utilities.h:29
void finalize()
Definition utilities.cpp:99
InitResult initialize()
Definition utilities.cpp:44
PythonPluginManager * pluginManager()
Definition utilities.cpp:92