itom  4.1.0
pythonPlugins.h
1 /* ********************************************************************
2  itom software
3  URL: http://www.uni-stuttgart.de/ito
4  Copyright (C) 2020, Institut fuer Technische Optik (ITO),
5  Universitaet Stuttgart, Germany
6 
7  This file is part of itom.
8 
9  itom is free software; you can redistribute it and/or modify it
10  under the terms of the GNU Library General Public Licence as published by
11  the Free Software Foundation; either version 2 of the Licence, or (at
12  your option) any later version.
13 
14  itom is distributed in the hope that it will be useful, but
15  WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
17  General Public Licence for more details.
18 
19  You should have received a copy of the GNU Library General Public License
20  along with itom. If not, see <http://www.gnu.org/licenses/>.
21 *********************************************************************** */
22 
23 #ifndef PYTHONPLUGINS
24 #define PYTHONPLUGINS
25 
26 #include <string>
27 
28 #ifndef Q_MOC_RUN
29  /* includes */
30  //python
31  // see http://vtk.org/gitweb?p=VTK.git;a=commitdiff;h=7f3f750596a105d48ea84ebfe1b1c4ca03e0bab3
32  #if (defined _DEBUG) && (defined WIN32)
33  #undef _DEBUG
34  #include "python/pythonWrapper.h"
35  #define _DEBUG
36  #else
37  #include "python/pythonWrapper.h"
38  #endif
39 #endif
40 
41 #include "../common/addInInterface.h"
42 //#include "pythonQtSignalMapper.h"
43 
44 namespace ito
45 {
46  class PythonQtSignalMapper; //forward declaration
60 {
61  public:
62  typedef struct
63  {
64  PyObject_HEAD
65  ito::AddInActuator *actuatorObj;
66  PyObject* base;
67  PyObject *weakreflist; /* List of weak references */
68  PythonQtSignalMapper *signalMapper;
70  }
72 
73  typedef struct
74  {
75  PyObject_HEAD
76  ito::AddInDataIO *dataIOObj;
77  PyObject* base;
78  PyObject *weakreflist; /* List of weak references */
79  PythonQtSignalMapper *signalMapper;
81  }
83 
84  // Actuator
85  static void PyActuatorPlugin_dealloc(PyActuatorPlugin *self);
86  static PyObject *PyActuatorPlugin_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
87  static int PyActuatorPlugin_init(PyActuatorPlugin *self, PyObject *args, PyObject *kwds);
88  static PyObject* PyActuatorPlugin_repr(PyActuatorPlugin *self);
89 
90  static PyObject *PyActuatorPlugin_name(PyActuatorPlugin *self);
91  static PyObject *PyActuatorPlugin_getParamList(PyActuatorPlugin *self);
92  static PyObject *PyActuatorPlugin_getParamListInfo(PyActuatorPlugin *self, PyObject *args);
94  static PyObject* PyActuatorPlugin_getExecFuncsInfo(PyActuatorPlugin* self, PyObject *args, PyObject *kwds);
95  static PyObject *PyActuatorPlugin_getParam(PyActuatorPlugin *self, PyObject *args);
96  static PyObject *PyActuatorPlugin_getParamInfo(PyActuatorPlugin *self, PyObject *args);
97  static PyObject *PyActuatorPlugin_setParam(PyActuatorPlugin *self, PyObject *args);
98  static PyObject *PyActuatorPlugin_getType(PyActuatorPlugin *self);
99  static PyObject *PyActuatorPlugin_execFunc(PyActuatorPlugin *self, PyObject *args, PyObject *kwds);
101  static PyObject *PyActuatorPlugin_showToolbox(PyActuatorPlugin *self);
102  static PyObject *PyActuatorPlugin_hideToolbox(PyActuatorPlugin *self);
103 
104  static PyObject *PyActuatorPlugin_connect(PyActuatorPlugin *self, PyObject* args, PyObject* kwds);
105  static PyObject *PyActuatorPlugin_disconnect(PyActuatorPlugin *self, PyObject* args, PyObject* kwds);
106  static PyObject *PyActuatorPlugin_info(PyActuatorPlugin *self, PyObject* args);
107  static PyObject *PyActuatorPlugin_setInterrupt(PyActuatorPlugin *self);
108 
109  static PyObject *PyActuatorPlugin_calib(PyActuatorPlugin *self, PyObject *args);
110  static PyObject *PyActuatorPlugin_setOrigin(PyActuatorPlugin *self, PyObject *args);
111  static PyObject *PyActuatorPlugin_getStatus(PyActuatorPlugin *self, PyObject *args);
112  static PyObject *PyActuatorPlugin_getPos(PyActuatorPlugin *self, PyObject *args);
113  static PyObject *PyActuatorPlugin_setPosAbs(PyActuatorPlugin *self, PyObject *args);
114  static PyObject *PyActuatorPlugin_setPosRel(PyActuatorPlugin *self, PyObject *args);
115 
116  static PyObject *PyActuatorPlugin_userMutex_tryLock(PyActuatorPlugin* self, PyObject* args, PyObject* kwds);
117  static PyObject *PyActuatorPlugin_userMutex_unlock(PyActuatorPlugin* self);
118 
119  static PyObject* PyActuatorPlugin_getCurrentStatus(PyActuatorPlugin *self, void *closure);
120  static PyObject* PyActuatorPlugin_getCurrentPositions(PyActuatorPlugin *self, void *closure);
121  static PyObject* PyActuatorPlugin_getTargetPositions(PyActuatorPlugin *self, void *closure);
122 
123  static PyMemberDef PyActuatorPlugin_members[];
124  static PyMethodDef PyActuatorPlugin_methods[];
125  static PyGetSetDef PyActuatorPlugin_getseters[];
126  static PyTypeObject PyActuatorPluginType;
127  static PyModuleDef PyActuatorPluginModule;
128 
129  static void paramBaseVectorDeleter(QVector<ito::ParamBase> *obj)
130  {
131  delete obj;
132  }
133 
134  //DataIO
135  static void PyDataIOPlugin_dealloc(PyDataIOPlugin *self);
136  static PyObject *PyDataIOPlugin_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
137  static int PyDataIOPlugin_init(PyDataIOPlugin *self, PyObject *args, PyObject *kwds);
138  static PyObject* PyDataIOPlugin_repr(PyDataIOPlugin *self);
139 
140  static PyObject *PyDataIOPlugin_name(PyDataIOPlugin *self);
141  static PyObject *PyDataIOPlugin_getParamList(PyDataIOPlugin *self);
142  static PyObject* PyDataIOPlugin_getParamListInfo(PyDataIOPlugin* self, PyObject *args);
143  static PyObject* PyDataIOPlugin_getExecFuncsList(PyActuatorPlugin* self);
144  static PyObject* PyDataIOPlugin_getExecFuncsInfo(PyDataIOPlugin* self, PyObject *args, PyObject *kwds);
145  static PyObject *PyDataIOPlugin_getParam(PyDataIOPlugin *self, PyObject *args);
146  static PyObject *PyDataIOPlugin_getParamInfo(PyDataIOPlugin *self, PyObject *args);
147  static PyObject *PyDataIOPlugin_setParam(PyDataIOPlugin *self, PyObject *args);
148  static PyObject *PyDataIOPlugin_getType(PyDataIOPlugin *self);
149  static PyObject *PyDataIOPlugin_execFunc(PyDataIOPlugin *self, PyObject *args, PyObject *kwds);
150  static PyObject *PyDataIOPlugin_showConfiguration(PyDataIOPlugin *self);
151  static PyObject *PyDataIOPlugin_showToolbox(PyDataIOPlugin *self);
152  static PyObject *PyDataIOPlugin_hideToolbox(PyDataIOPlugin *self);
153 
154  static PyObject *PyDataIOPlugin_startDevice(PyDataIOPlugin *self, PyObject *args);
155  static PyObject *PyDataIOPlugin_stopDevice(PyDataIOPlugin *self, PyObject *args);
156  static PyObject *PyDataIOPlugin_acquire(PyDataIOPlugin *self, PyObject *args);
157  static PyObject *PyDataIOPlugin_stop(PyDataIOPlugin *self);
158  static PyObject *PyDataIOPlugin_getVal(PyDataIOPlugin *self, PyObject *args);
159  static PyObject *PyDataIOPlugin_copyVal(PyDataIOPlugin *self, PyObject *args);
160  static PyObject *PyDataIOPlugin_setVal(PyDataIOPlugin *self, PyObject *args, PyObject* kwds);
161  static PyObject *PyDataIOPlugin_enableAutoGrabbing(PyDataIOPlugin *self, PyObject *args);
162  static PyObject *PyDataIOPlugin_disableAutoGrabbing(PyDataIOPlugin *self, PyObject *args);
163  static PyObject *PyDataIOPlugin_setAutoGrabbing(PyDataIOPlugin *self, PyObject *args);
164  static PyObject *PyDataIOPlugin_getAutoGrabbing(PyDataIOPlugin *self, PyObject *args);
165  static PyObject *PyDataIOPlugin_setAutoGrabbingInterval(PyDataIOPlugin *self, PyObject *args);
166  static PyObject *PyDataIOPlugin_getAutoGrabbingInterval(PyDataIOPlugin *self);
167  static PyObject *PyDataIOPlugin_connect(PyDataIOPlugin *self, PyObject *args, PyObject* kwds);
168  static PyObject *PyDataIOPlugin_disconnect(PyDataIOPlugin *self, PyObject *args, PyObject* kwds);
169  static PyObject *PyDataIOPlugin_info(PyDataIOPlugin* self, PyObject* args);
170 
171  static PyObject *PyDataIOPlugin_userMutex_tryLock(PyDataIOPlugin* self, PyObject* args, PyObject* kwds);
172  static PyObject *PyDataIOPlugin_userMutex_unlock(PyDataIOPlugin* self);
173 
174  static PyMemberDef PyDataIOPlugin_members[];
175  static PyMethodDef PyDataIOPlugin_methods[];
176  static PyTypeObject PyDataIOPluginType;
177  static PyModuleDef PyDataIOPluginModule;
178  static void PyDataIOPlugin_addTpDict(PyObject *tp_dict);
179  static void PyActuatorPlugin_addTpDict(PyObject* tp_dict);
180 
181 };
182 
183 } //end namespace ito
184 
185 #endif
static PyObject * PyActuatorPlugin_getParam(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:1828
static PyObject * PyDataIOPlugin_showToolbox(PyDataIOPlugin *self)
Definition: pythonPlugins.cpp:5458
static PyObject * PyActuatorPlugin_getExecFuncsInfo(PyActuatorPlugin *self, PyObject *args, PyObject *kwds)
Definition: pythonPlugins.cpp:1811
base class for all actuator plugin classes
Definition: addInInterface.h:738
static PyObject * PyDataIOPlugin_getType(PyDataIOPlugin *self)
Definition: pythonPlugins.cpp:5299
static PyObject * PyDataIOPlugin_stopDevice(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:3930
static PyObject * PyDataIOPlugin_showConfiguration(PyDataIOPlugin *self)
Definition: pythonPlugins.cpp:5446
static PyObject * PyDataIOPlugin_setParam(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:3785
static PyObject * PyDataIOPlugin_startDevice(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:3836
static PyObject * PyDataIOPlugin_getParamInfo(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:3798
static PyObject * PyActuatorPlugin_getStatus(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:2166
static PyObject * PyActuatorPlugin_setPosAbs(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:2941
static PyObject * PyDataIOPlugin_enableAutoGrabbing(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:4736
static PyObject * PyDataIOPlugin_getParamList(PyDataIOPlugin *self)
Definition: pythonPlugins.cpp:3715
base class for all dataIO plugin classes
Definition: addInInterface.h:661
bool userMutexLocked
true if the user mutex has been recently locked by Python
Definition: pythonPlugins.h:80
bool userMutexLocked
true if the user mutex has been recently locked by Python
Definition: pythonPlugins.h:69
static PyObject * PyActuatorPlugin_setParam(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:1842
Definition: pythonPlugins.h:73
static PyObject * PyActuatorPlugin_getType(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:2432
static PyObject * PyDataIOPlugin_acquire(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:4060
static PyObject * PyActuatorPlugin_setOrigin(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:2014
static PyObject * PyActuatorPlugin_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
Definition: pythonPlugins.cpp:1520
static PyObject * PyDataIOPlugin_getParamListInfo(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:3729
static PyObject * PyActuatorPlugin_showConfiguration(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:2469
Definition: apiFunctionsGraph.cpp:39
static PyObject * PyActuatorPlugin_name(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:1753
static PyObject * PyActuatorPlugin_getExecFuncsList(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:1796
static void PyDataIOPlugin_dealloc(PyDataIOPlugin *self)
Definition: pythonPlugins.cpp:3426
static PyObject * PyActuatorPlugin_setInterrupt(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:2499
static void PyActuatorPlugin_dealloc(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:1462
static int PyDataIOPlugin_init(PyDataIOPlugin *self, PyObject *args, PyObject *kwds)
Definition: pythonPlugins.cpp:3540
static PyObject * PyActuatorPlugin_setPosRel(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:3045
static PyObject * PyDataIOPlugin_disableAutoGrabbing(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:4810
static PyObject * PyActuatorPlugin_hideToolbox(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:2793
static int PyActuatorPlugin_init(PyActuatorPlugin *self, PyObject *args, PyObject *kwds)
Definition: pythonPlugins.cpp:1579
static PyObject * PyActuatorPlugin_getPos(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:2291
static PyObject * PyDataIOPlugin_getExecFuncsInfo(PyDataIOPlugin *self, PyObject *args, PyObject *kwds)
Definition: pythonPlugins.cpp:3756
class summing up the functionality of itom - hardware python plugins
Definition: pythonPlugins.h:59
static PyObject * PyDataIOPlugin_copyVal(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:4385
static PyObject * PyDataIOPlugin_setVal(PyDataIOPlugin *self, PyObject *args, PyObject *kwds)
Definition: pythonPlugins.cpp:4534
static PyObject * PyActuatorPlugin_getParamList(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:1767
static PyObject * PyDataIOPlugin_getExecFuncsList(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:3743
Definition: pythonPlugins.h:62
static PyObject * PyDataIOPlugin_stop(PyDataIOPlugin *self)
Definition: pythonPlugins.cpp:4123
static PyObject * PyDataIOPlugin_getVal(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:4220
static PyObject * PyActuatorPlugin_showToolbox(PyActuatorPlugin *self)
Definition: pythonPlugins.cpp:2483
static PyObject * PyActuatorPlugin_getParamInfo(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:1855
static PyObject * PyDataIOPlugin_hideToolbox(PyDataIOPlugin *self)
Definition: pythonPlugins.cpp:5470
static PyObject * PyDataIOPlugin_name(PyDataIOPlugin *self)
Definition: pythonPlugins.cpp:3671
static PyObject * PyActuatorPlugin_calib(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:1888
static PyObject * PyDataIOPlugin_getParam(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:3771
This class provides the possibility to redirect any signal emitted in an user-defined GUI to differen...
Definition: pythonQtSignalMapper.h:169
static PyObject * PyDataIOPlugin_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
Definition: pythonPlugins.cpp:3483
static PyObject * PyActuatorPlugin_getParamListInfo(PyActuatorPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:1782
static PyObject * PyDataIOPlugin_getAutoGrabbing(PyDataIOPlugin *self, PyObject *args)
Definition: pythonPlugins.cpp:4963