"""
sg = SalomePyQt.SalomePyQt()
dwl = sg.getDesktop().findChildren( QDockWidget )
- dw = filter(lambda a: a.windowTitle() == str( title ), dwl)
+ dw = [a for a in dwl if a.windowTitle() == str( title )]
if dw: return dw[0]
return None
dlg=GenericDialog()
dlg.displayAndWait()
if dlg.wasOk():
- print "OK has been pressed"
+ print("OK has been pressed")
else:
- print "Cancel has been pressed"
+ print("Cancel has been pressed")
if __name__ == "__main__":
TEST_GenericDialog()
test, attr = sobj.FindAttribute( "AttributeName" )
if test:
message = "My name is '%s'" % attr.Value()
- print message
+ print(message)
pass
def deleteSObjectSelected():
def TEST_getSObjectSelected():
mySObject, myEntry = getSObjectSelected()
myName = mySObject.GetName()
- print "The name of the selected object is %s"%myName
+ print("The name of the selected object is %s"%myName)
def TEST_showSObjectSelected():
showSObjectSelected()
__date__ ="$31 mars 2010 17:09:53$"
from qtsalome import *
from mytestdialog_ui import Ui_MyTestDialog
-from genericdialog import GenericDialog
+from .genericdialog import GenericDialog
class MyTestDialog(GenericDialog):
"""
dlg.displayAndWait()
if dlg.wasOk():
name = dlg.getData()
- print "The name has been modified to",name
+ print("The name has been modified to",name)
class DialogListener:
def onProcessEvent(self):
- print "onProcessEvent(): OK has been pressed"
+ print("onProcessEvent(): OK has been pressed")
import sys
sys.exit(0)
filename = str(filename)
exchange_variables = study_exchange_vars.loadExchangeVariablesFromXmlFile(filename)
self.setExchangeVariables(exchange_variables)
- except Exception, e:
+ except Exception as e:
QMessageBox.critical(self, self.tr("Error"),
self.tr("Cannot load file %s:\n%s" % (filename, e)))
filename = str(filename)
exchange_variables = self.getSelectedExchangeVariables()
exchange_variables.saveToXmlFile(filename)
- except Exception, e:
+ except Exception as e:
QMessageBox.critical(self, self.tr("Error"),
self.tr("Cannot save file %s:\n%s" % (filename, e)))
from salome.gui.dockwidgets import *
-print "-- Search dock windows by title"
+print("-- Search dock windows by title")
ob = findDockWidgetByTitle( "Object Browser" )
if ob:
- print "object browser:", ob
+ print("object browser:", ob)
else:
- print "object browser was not found"
+ print("object browser was not found")
pc = findDockWidgetByTitle( "Python Console" )
if pc:
- print "python console:", pc
+ print("python console:", pc)
else:
- print "python console was not found"
-print
+ print("python console was not found")
+print()
-print "-- Search dock windows by name"
+print("-- Search dock windows by name")
ob = findDockWidgetByName( "objectBrowserDock" )
if ob:
- print "object browser:", ob
+ print("object browser:", ob)
else:
- print "object browser was not found"
+ print("object browser was not found")
pc = findDockWidgetByName( "pythonConsoleDock" )
if pc:
- print "python console:", pc
+ print("python console:", pc)
else:
- print "python console was not found"
-print
+ print("python console was not found")
+print()
-print "-- Search dock windows by id"
+print("-- Search dock windows by id")
ob = findDockWidgetById( SalomePyQt.WT_ObjectBrowser )
if ob:
- print "object browser:", ob
+ print("object browser:", ob)
else:
- print "object browser was not found"
+ print("object browser was not found")
pc = findDockWidgetById( SalomePyQt.WT_PyConsole )
if pc:
- print "python console:", pc
+ print("python console:", pc)
else:
- print "python console was not found"
-print
+ print("python console was not found")
+print()
-print "-- Tabify dock windows"
+print("-- Tabify dock windows")
tabifyDockWidgets( findDockWidgetById( SalomePyQt.WT_ObjectBrowser ),
findDockWidgetById( SalomePyQt.WT_PyConsole ) )
#endif
#ifndef DISABLE_PYCONSOLE
- #include "LightApp_PyEditor.h"
#include "PyConsole_Interp.h"
+ #include "LightApp_PyEditor.h"
#include "PyConsole_Console.h"
#endif
PyErr_Print();
throw SALOME_Exception("Unable to invoke PVSERVER service!");
}
- return std::string(PyString_AsString(obj));
+ return std::string(PyUnicode_AsUTF8(obj));
}
static PyTypeObject PyStdOut_Type = {
/* The ob_type field must be initialized in the module init function
* to be portable to Windows without using C++. */
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
+ PyVarObject_HEAD_INIT(NULL, 0)
+ /* 0, */ /*ob_size*/
"PyOut", /*tp_name*/
sizeof(PyStdOut), /*tp_basicsize*/
0, /*tp_itemsize*/
return Py_None;
}
-static PyMethodDef Module_Methods[] =
+static PyMethodDef libSalomePy_methods[] =
{
{ "getRenderer", libSalomePy_getRenderer, METH_VARARGS },
{ "getRenderWindow", libSalomePy_getRenderWindow, METH_VARARGS },
{ NULL, NULL }
};
+struct module_state {
+ PyObject *error;
+};
+
+#define GETSTATE(m) ((struct module_state*)PyModule_GetState(m))
+
+static int libSalomePy_traverse(PyObject *m, visitproc visit, void *arg) {
+ Py_VISIT(GETSTATE(m)->error);
+ return 0;
+}
+
+static int libSalomePy_clear(PyObject *m) {
+ Py_CLEAR(GETSTATE(m)->error);
+ return 0;
+}
+
+static struct PyModuleDef moduledef = {
+ PyModuleDef_HEAD_INIT,
+ "libSalomePy",
+ NULL,
+ sizeof(struct module_state),
+ libSalomePy_methods,
+ NULL,
+ libSalomePy_traverse,
+ libSalomePy_clear,
+ NULL
+};
+
/*!
\brief Python module initialization.
\internal
*/
extern "C" SALOMEPY_EXPORT void initlibSalomePy()
{
- static char* modulename = (char*)"libSalomePy";
-
// init module
- PyObject* aModule = Py_InitModule( modulename, Module_Methods );
+ PyObject *aModule = PyModule_Create(&moduledef);
if( PyErr_Occurred() ) {
PyErr_Print();
return;
// File : SALOME_PYQT_ModuleLight.cxx
// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
-#include "SALOME_PYQT_DataModelLight.h"
#include "SALOME_PYQT_ModuleLight.h"
+#include "SALOME_PYQT_DataModelLight.h"
#include "SALOME_PYQT_PyModule.h"
#include "CAM_Application.h"
// and to get C API from sip : sipBuildResult for example
//
-#define INIT_FUNCTION initSalomePyQtGUILight
+#define INIT_FUNCTION PyInit_SalomePyQtGUILight
#if defined(SIP_STATIC_MODULE)
extern "C" void INIT_FUNCTION();
#else
PyErr_Print();
return -1;
}
- PyObject *r = PyEval_EvalCode((PyCodeObject *)code,_global_context,_local_context);
+ PyObject *r = PyEval_EvalCode((PyObject *)code,_global_context,_local_context);
Py_DECREF(code);
if(!r){
// parse the return value
// it should be a map: {integer:integer}
int aKey, aValue;
- if( key && PyInt_Check( key ) && value && PyInt_Check( value ) ) {
- aKey = PyInt_AsLong( key );
- aValue = PyInt_AsLong( value );
+ if( key && PyLong_Check( key ) && value && PyLong_Check( value ) ) {
+ aKey = PyLong_AsLong( key );
+ aValue = PyLong_AsLong( value );
myWindowsMap[ aKey ] = aValue;
}
}
else {
// parse the return value
// result can be one string...
- if ( PyString_Check( res2 ) ) {
- myViewMgrList.append( PyString_AsString( res2 ) );
+ if ( PyUnicode_Check( res2 ) ) {
+ myViewMgrList.append( PyUnicode_AsUTF8( res2 ) );
}
// ... or list of strings
else if ( PyList_Check( res2 ) ) {
int size = PyList_Size( res2 );
for ( int i = 0; i < size; i++ ) {
PyObject* value = PyList_GetItem( res2, i );
- if( value && PyString_Check( value ) ) {
- myViewMgrList.append( PyString_AsString( value ) );
+ if( value && PyUnicode_Check( value ) ) {
+ myViewMgrList.append( PyUnicode_AsUTF8( value ) );
}
}
}
else {
// parse the return value
// result can be one string...
- if ( PyString_Check( res ) ) {
- QString astr = PyString_AsString( res );
+ if ( PyUnicode_Check( res ) ) {
+ QString astr = PyUnicode_AsUTF8( res );
files.append( astr );
}
//also result can be a list...
int size = PyList_Size( res );
for ( int i = 0; i < size; i++ ) {
PyObject* value = PyList_GetItem( res, i );
- if ( value && PyString_Check( value ) ) {
- files.append( PyString_AsString( value ) );
+ if ( value && PyUnicode_Check( value ) ) {
+ files.append( PyUnicode_AsUTF8( value ) );
}
}
}
else {
// parse the return value
// result can be one string...
- if ( PyString_Check( res ) ) {
- QString astr = PyString_AsString( res );
+ if ( PyUnicode_Check( res ) ) {
+ QString astr = PyUnicode_AsUTF8( res );
//SCRUTE(astr);
files.append(astr);
}
int size = PyList_Size( res );
for ( int i = 0; i < size; i++ ) {
PyObject* value = PyList_GetItem( res, i );
- if( value && PyString_Check( value ) ) {
- files.append( PyString_AsString( value ) );
+ if( value && PyUnicode_Check( value ) ) {
+ files.append( PyUnicode_AsUTF8( value ) );
}
}
}
}
else {
// parse the return value, result chould be string
- if ( PyString_Check( res ) ) {
- ior = PyString_AsString( res );
+ if ( PyUnicode_Check( res ) ) {
+ ior = PyUnicode_AsUTF8( res );
}
}
}
k={}
for j in range(0,myHorNb):
k[j] = j*10+1
-ARealTable.AddRow(k.values())
+ARealTable.AddRow(list(k.values()))
ARealTable.SetRowTitle(1, "Frequency")
ARealTable.SetRowUnit(1, "Hz")
k[j] = math.log10(j*30*math.pi/180) * 20 + i * 15 + j*5
else:
k[j] = math.sin(j*30*math.pi/180) * 20 + i * 15 + j*5
- ARealTable.AddRow(k.values())
+ ARealTable.AddRow(list(k.values()))
ARealTable.SetRowTitle(i+1, "Power " + str(i))
ARealTable.SetRowUnit(i+1, "Wt")
ARealTable.SetTitle("Very useful data")
obj1 = myStudy.FindObjectID("0:1")
-if obj1 is None: print "Is null obj1 "
-else: print obj1.GetID()
+if obj1 is None: print("Is null obj1 ")
+else: print(obj1.GetID())
obj2 = myBuilder.NewObject(obj1)
-print "Obj2 ID = "+obj2.GetID()
+print("Obj2 ID = "+obj2.GetID())
myBuilder.Addreference(obj1, obj2)
(f, obj3) = obj1.ReferencedObject()
-print "Ref obj ID = "+obj3.GetID()
+print("Ref obj ID = "+obj3.GetID())
myBuilder.RemoveReference(obj1)
(f, obj4) = obj1.ReferencedObject()
-print "Ref is found ", f
+print("Ref is found ", f)
\ No newline at end of file
for j in range(0,20):
k[j] = j*10+1
l[j] = "C"+str(j+1)
-ARealTable.AddRow(k.values())
+ARealTable.AddRow(list(k.values()))
ARealTable.SetRowTitle(1, "Row 0")
ARealTable.SetRowUnit(1, "Hz")
-ARealTable.SetColumnTitles(l.values())
+ARealTable.SetColumnTitles(list(l.values()))
for i in range(1,11):
for j in range(1,21):
if j % 2 == 1:
k[j] = math.log10(j*30*math.pi/180) * 20 + i * 15 + j*5
else:
k[j] = math.sin(j*30*math.pi/180) * 20 + i * 15 + j*5
- ARealTable.AddRow(k.values())
+ ARealTable.AddRow(list(k.values()))
ARealTable.SetRowTitle(i+1, "Row " + str(i))
ARealTable.SetRowUnit(i+1, "Wt")
ARealTable.SetTitle("TEST table of real")
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-
+// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com)
+// Date : 22/06/2007
+//
#include "SUITApp_init_python.hxx"
#include <QString>
-bool SUIT_PYTHON::initialized = false;
+bool SUIT_PYTHON::initialized = false;
void SUIT_PYTHON::init_python(int argc, char **argv)
{
{
return;
}
- Py_SetProgramName(argv[0]);
+
+ wchar_t **changed_argv = new wchar_t*[argc]; // Setting arguments
+ for (int i = 0; i < argc; i++)
+ {
+ changed_argv[i] = Py_DecodeLocale(argv[i], NULL);
+ }
+
+ Py_SetProgramName(changed_argv[0]);
Py_Initialize(); // Initialize the interpreter
- PySys_SetArgv(argc, argv);
+
+ PySys_SetArgv(argc, changed_argv);
PyRun_SimpleString("import threading\n");
// VSR (22/09/2016): This is a workaround to prevent invoking qFatal() from PyQt5
// causing application aborting
script.remove( QRegExp("^python.*[\\s]+") );
QString cmd = script+" "+args;
- QString command = QString( "execfile(r\"%1\")" ).arg(cmd.trimmed());
+ QString command = QString( "exec(open(\"%1\").read())" ).arg(cmd.trimmed());
pyConsole->exec(command);
}
} // end for loop on pyfiles QStringList
{
onNewDoc();
- QString command = QString("execfile(r\"%1\")").arg(aFile);
+ QString command = QString("exec(open(\"%1\").read())").arg(aFile);
#ifndef DISABLE_PYCONSOLE
PyConsole_Console* pyConsole = pythonConsole();
if ( !aFile.isEmpty() )
{
- QString command = QString("execfile(r\"%1\")").arg(aFile);
+ QString command = QString("exec(open(\"%1\").read())").arg(aFile);
#ifndef DISABLE_PYCONSOLE
PyConsole_Console* pyConsole = pythonConsole();
SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
// load study from the temporary directory
- QString command = QString( "execfile(r\"%1\")" ).arg( theDumpScript );
+ QString command = QString( "exec(open(\"%1\").read())" ).arg( theDumpScript );
#ifndef DISABLE_PYCONSOLE
PyConsole_Console* pyConsole = app->pythonConsole();
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+#ifndef DISABLE_PYCONSOLE
+ #include "SalomeApp_PyInterp.h" // WARNING! This include must be the first!
+#endif
+
#include "SalomeApp_Study.h"
#include "SalomeApp_Module.h"
#include <LightApp_Displayer.h>
-#ifndef DISABLE_PYCONSOLE
- #include "SalomeApp_PyInterp.h" // WARNING! This include must be the first!
-#endif
-
#include "utilities.h"
#include "SALOMEDS_Tool.hxx"
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-import sys, os,signal,string,commands
+import sys, os,signal,string,subprocess
import runSalome
import orbmodule
import TestKiller
elif os.path.exists("/usr/bin/xterm"):
command = 'xterm -T "SALOME %s - Shell session" -e "%s/salome shell" &'%(version,kernel_appli_dir)
else:
- print "Neither xterm nor gnome-terminal nor konsole is installed."
+ print("Neither xterm nor gnome-terminal nor konsole is installed.")
if command is not "":
try:
subprocess.check_call(command, shell = True)
- except Exception, e:
- print "Error: ",e
+ except Exception as e:
+ print("Error: ",e)
salome_pluginsmanager.AddFunction('SALOME shell session',
This function creates the geometry on the specified study and with
given parameters.
'''
- print "TUBE: creating the geometry ..."
+ print("TUBE: creating the geometry ...")
studyId = study._get_StudyId()
geompy = geomtools.getGeompy(studyId)
studyId = study._get_StudyId()
geompy = geomtools.getGeompy(studyId)
- print "TUBE: creating a partition ..."
+ print("TUBE: creating a partition ...")
toolPlane = geompy.MakeFaceHW(2.1*length,2.1*radius,3)
partition = geompy.MakePartition([shape], [toolPlane], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
entry = geompy.addToStudy( partition, "TubeWithPartition" )
def createMesh(study, shape):
'''This function creates the mesh of the specified shape on the specified study'''
- print "TUBE: creating the mesh ..."
+ print("TUBE: creating the mesh ...")
import SMESH
from salome.smesh import smeshBuilder
smesh = smeshBuilder.New(study)
'''
This exports the mesh to the specified filename in the med format
'''
- print "TUBE: exporting mesh to file %s ..."%filename
+ print("TUBE: exporting mesh to file %s ..."%filename)
import SMESH
mesh.ExportMED(filename, 0, SMESH.MED_V2_2, 1 )
length=eval(str(self.txtLength.text()))
width=eval(str(self.txtWidth.text()))
except:
- print "pb a la saisie"
+ print("pb a la saisie")
return radius, length, width
tubedialog.exec_()
if tubedialog.wasOk():
radius, length, width = tubedialog.getData()
- print radius, length, width
+ print(radius, length, width)
def main( args ):
current_plugins_manager=None
def initialize(module,name,basemenuname,menuname):
- if not plugins.has_key(name):
+ if name not in plugins:
if module:
plugins[name]={}
else:
plugins[name]=[]
if module:
d=sgPyQt.getDesktop()
- if plugins[name].has_key(d):return
+ if d in plugins[name]:return
plugins[name][d]=PluginsManager(module,name,basemenuname,menuname)
else:
plugins[name].append(PluginsManager(module,name,basemenuname,menuname))
class PluginsManager:
def __init__(self,module,name,basemenuname,menuname):
self.name=name
- self.basemenuname=unicode(basemenuname, "utf-8")
- self.menuname=unicode(menuname, "utf-8")
+ self.basemenuname=basemenuname
+ self.menuname=menuname
self.module=module
self.registry={}
self.handlers={}
# MODULES plugins are supposed to be located in the
# installation folder of the module, in the subdirectory
# "share/salome/plugins". We first look for these directories.
- for key in os.environ.keys():
+ for key in list(os.environ.keys()):
if key.endswith("_ROOT_DIR"):
rootpath=os.environ[key]
dirpath=os.path.join(rootpath,PLUGIN_PATH_PATTERN)
sys.path.insert(0,directory)
logger.debug("The directory %s has been added to PYTHONPATH"%directory)
try:
- execfile(plugins_file,globals(),{})
+ exec(compile(open(plugins_file).read(), plugins_file, 'exec'),globals(),{})
except:
logger.fatal("Error while loading plugins from file %s"%plugins_file)
traceback.print_exc()
submenus[str(menu.title())]=menu
while len(names) > 1:
name=names.pop(0)
- if submenus.has_key(name):
+ if name in submenus:
amenu=submenus[name]
else:
amenu=QMenu(name,parentMenu)
// Author : Paul RASCLE, EDF
// Module : SALOME
+#include <Container_init_python.hxx>
#include <SALOME_NamingService.hxx>
#include <SALOME_ModuleCatalog_impl.hxx>
#include <SALOME_LifeCycleCORBA.hxx>
#include <SALOME_Event.h>
-#include <Container_init_python.hxx>
#include <ConnectionManager_i.hxx>
#include <RegistryService.hxx>
// File : PyConsole_Console.cxx
// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
-#include "PyConsole_Console.h"
#include "PyConsole_Interp.h"
+#include "PyConsole_Console.h"
#include "PyConsole_Editor.h"
#include <QAction>
- <Ctrl><Tab> : undoes auto-completion
*/
-#include "PyConsole_Editor.h"
#include "PyConsole_Interp.h"
+#include "PyConsole_Editor.h"
#include "PyConsole_Event.h"
#include "PyInterp_Dispatcher.h"
#include "PyConsole_Request.h"
cmd.prepend( QString( "%1." ).arg( dirArgument ) );
PyObject* str = PyRun_String( cmd.toStdString().c_str(), Py_eval_input, _global_context, _local_context );
- if ( !str || str == Py_None || !PyString_Check( str ) )
+ if ( !str || str == Py_None || !PyUnicode_Check( str ) )
{
if ( !str )
PyErr_Clear();
}
else {
- docString = QString( PyString_AsString( str ) );
+ docString = QString( PyUnicode_AsUTF8( str ) );
}
Py_XDECREF( str );
}
for ( int i = 0; i < n; i++ ) {
PyObject* it;
it = PySequence_GetItem( plst, i );
- QString s( PyString_AsString( it ) );
+ QString s( PyUnicode_AsUTF8( it ) );
// if the method is not from swig, not static (guessed from the reg exp) and matches
// what is already there
if ( s.startsWith( startMatch ) ) {
#ifndef PYCONSOLE_INTERP_H
#define PYCONSOLE_INTERP_H
-#include "PyConsole.h"
#include "PyInterp_Interp.h"
+#include "PyConsole.h"
#include <QStringList>
#include "PyInterp_Utils.h"
#include <pythread.h>
-#include <cStringIO.h>
+//#include <cStringIO.h>
#include <structmember.h>
#include <string>
#include <vector>
static PyTypeObject PyStdOut_Type = {
/* The ob_type field must be initialized in the module init function
* to be portable to Windows without using C++. */
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
+ PyVarObject_HEAD_INIT(NULL, 0)
+ /*0,*/ /*ob_size*/
"PyOut", /*tp_name*/
sizeof(PyStdOut), /*tp_basicsize*/
0, /*tp_itemsize*/
{
if (!Py_IsInitialized()){
// Python is not initialized
- Py_SetProgramName(_argv[0]);
+ wchar_t **changed_argv = new wchar_t*[_argc]; // Setting arguments
+ size_t mbslen;
+ for (int i = 0; i < _argc; i++)
+ {
+ changed_argv[i] = Py_DecodeLocale(_argv[i], NULL);
+ }
+
+ Py_SetProgramName(changed_argv[0]);
Py_Initialize(); // Initialize the interpreter
- PySys_SetArgv(_argc, _argv);
+ PySys_SetArgv(_argc, changed_argv);
PyEval_InitThreads(); // Create (and acquire) the Python global interpreter lock (GIL)
PyEval_ReleaseLock();
return 1;
}
else {
- PyObjWrapper r(PyEval_EvalCode((PyCodeObject *)(void *)v,global_ctxt, local_ctxt));
+ PyObjWrapper r(PyEval_EvalCode((PyObject *)(void *)v,global_ctxt, local_ctxt));
if(!r) {
// Execution error. We return -1
PyErr_Print();
for line in finput:
line = line[:-1]
line = line.replace( "__CLASSNAME__", className )
- print line
+ print(line)
pass
if options.verbose:
- print "Note that the following directives should be present in your CMakeLists.txt (or something like that): \n"
- print __msg_str.replace( "__CLASSNAME__", className )
+ print("Note that the following directives should be present in your CMakeLists.txt (or something like that): \n")
+ print(__msg_str.replace( "__CLASSNAME__", className ))
pass
pass