Salome HOME
DCQ : Merge with Ecole_ete_a6.
[modules/kernel.git] / src / SALOMEGUI / QAD_PyInterp_mono.cxx
1 //  SALOME SALOMEGUI : implementation of desktop and GUI kernel
2 //
3 //  Copyright (C) 2003  CEA/DEN, EDF R&D
4 //
5 //
6 //
7 //  File   : QAD_PyInterp_mono.cxx
8 //  Author : Paul RASCLE, EDF
9 //  Module : SALOME
10 //  $Header$
11
12
13 #include "QAD_PyInterp_mono.h"
14 #include "utilities.h"
15
16 using namespace std;
17
18 /*!
19  * constructor : only one Python interpreter, shared within SALOME studies.
20  * calls initialize method defined in base class, which calls virtual methods
21  * initstate & initcontext redefined here.
22  */
23 QAD_PyInterp_mono::QAD_PyInterp_mono(): PyInterp_base()
24 {
25 }
26
27 QAD_PyInterp_mono::~QAD_PyInterp_mono()
28 {
29 }
30
31 /*!
32  * EDF-CCAR
33  * When SALOME uses mono  Python interpreter feature,
34  * every study has its own context (dictionnary) but shares builtins
35  * and all the modules (sys, ...) with other studies.
36  * A module imported in a study is seen in another study (pros ans cons !).
37  */
38
39 void QAD_PyInterp_mono::initState()
40 {
41   _tstate = PyThreadState_Get();
42   PySys_SetArgv(PyInterp_base::_argc,PyInterp_base::_argv);      // initialize sys.argv
43 }
44
45 void QAD_PyInterp_mono::initContext()
46 {
47   _g = PyDict_New();          // create interpreter dictionnary context
48   PyObject *bimod = PyImport_ImportModule("__builtin__");
49   PyDict_SetItemString(_g, "__builtins__", bimod);
50   Py_DECREF(bimod);
51 }
52