# SUPPORTED=${QT_VERSION}
#fi
#SUPPORTED="Qt_`echo ${SUPPORTED} | sed -e 's/\./_/g'`"
- PYQT_SIPFLAGS=`python -c "from PyQt4 import pyqtconfig; print pyqtconfig.Configuration().pyqt_sip_flags"`
+ PYQT_SIPFLAGS=`python -c "from PyQt4 import pyqtconfig; print(pyqtconfig.Configuration().pyqt_sip_flags)"`
PYQT_SIPFLAGS="${PYQT_SIPFLAGS} -s .cc -c . ${PYQT_INCLUDES}"
break
fi
-#! /usr/bin/env python
+#! /usr/bin/env python3
# -*- coding: iso-8859-1 -*-
# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
#
# set additional environment
###
-set python_version=`python -c "import sys; print sys.version[:3]"`
+set python_version=`python -c "import sys; print(sys.version[:3])"`
set MY_PATH=""
set MY_LD_LIBRARY_PATH=""
# set additional environment
###
- local PVERSION=`python -c "import sys; print sys.version[:3]" 2>/dev/null`
+ local PVERSION=`python -c "import sys; print(sys.version[:3])" 2>/dev/null`
local MY_PATH=""
local MY_LD_LIBRARY_PATH=""
"""
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
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-__author__="gboulant"
-__date__ ="$31 mars 2010 17:09:53$"
-
from qtsalome import QDialog, QMessageBox
+from salome.gui.genericdialog_ui import Ui_GenericDialog
-from genericdialog_ui import Ui_GenericDialog
class GenericDialog(QDialog):
"""
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()
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-__author__="gboulant"
-__date__ ="$31 mars 2010 17:09:53$"
from qtsalome import *
-from mytestdialog_ui import Ui_MyTestDialog
-from genericdialog import GenericDialog
+from salome.gui.genericdialog import GenericDialog
+from salome.gui.mytestdialog_ui import Ui_MyTestDialog
+
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));
}
# --- SWIG part ---
SET_SOURCE_FILES_PROPERTIES(${_SWIG} PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(${_SWIG} PROPERTIES SWIG_DEFINITIONS "-shadow")
+SET_SOURCE_FILES_PROPERTIES(${_SWIG} PROPERTIES SWIG_FLAGS "-py3")
SWIG_ADD_MODULE(PVServer_ServiceLoader python ${_SWIG})
IF(WIN32)
SET_TARGET_PROPERTIES(_PVServer_ServiceLoader PROPERTIES DEBUG_OUTPUT_NAME _PVServer_ServiceLoader_d)
PyStdOut_write(PyStdOut *self, PyObject *args)
{
char *c;
- int l;
- if (!PyArg_ParseTuple(args, "t#:write",&c, &l))
+ if (!PyArg_ParseTuple(args, "s",&c))
return NULL;
*(self->out)=*(self->out)+c;
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*/
0, /*tp_new*/
0, /*tp_free*/
0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ 0, /*tp_finalize*/
};
PyObject * newPyStdOut( std::string& out )
if(obj == NULL) {
PyErr_Print();
- PyGILState_Release(gstate);
+ PyGILState_Release(gstate);
return result;
} else {
PyGILState_Release(gstate);
return result;
}
-
+
PyObject* coords = PyObject_CallFunction(func,(char*)"(d, d, i)", theMin, theMax, theNbStep );
-
+
if (coords == NULL){
fflush(stderr);
std::string err_description="";
*/
void Plot2d_AnalyticalParser::initScript() {
myScript.clear();
- myScript += "from math import * \n";
- myScript += "def Y(x): \n";
- myScript += " return ";
- myScript += "%1\n";
+ myScript += "from math import *\n";
+ myScript += "def Y(x):\n";
+ myScript += "\treturn %1\n";
- myScript += "def coordCalculator(xmin, xmax, nstep): \n";
- myScript += " coords = [] \n";
- myScript += " xstep = (xmax - xmin) / nstep \n";
- myScript += " n = 0 \n";
- myScript += " while n <= nstep : \n";
- myScript += " x = xmin + n*xstep \n";
- myScript += " try: \n";
- myScript += " y = Y(x) \n";
- myScript += " coords.append([x,y]) \n";
- myScript += " except ValueError, ZeroDivisionError: \n";
- myScript += " pass \n";
- myScript += " n = n+1 \n";
- myScript += " return coords \n";
+ myScript += "def coordCalculator(xmin, xmax, nstep):\n";
+ myScript += "\tcoords = []\n";
+ myScript += "\txstep = (xmax - xmin) / nstep\n";
+ myScript += "\tn = 0\n";
+ myScript += "\twhile n <= nstep :\n";
+ myScript += "\t\tx = xmin + n*xstep\n";
+ myScript += "\t\ttry:\n";
+ myScript += "\t\t\ty = Y(x)\n";
+ myScript += "\t\t\tcoords.append([x,y])\n";
+ myScript += "\t\texcept (ValueError, ZeroDivisionError):\n";
+ myScript += "\t\t\tpass\n";
+ myScript += "\t\tn = n+1\n";
+ myScript += "\treturn coords\n";
}
{ \
PyObject *w; \
int rc; \
- if ( ( w = PyInt_FromLong( i ) ) == NULL ) return; \
+ if ( ( w = PyLong_FromLong( i ) ) == NULL ) return NULL; \
rc = PyDict_SetItemString( aModuleDict, #i, w ); \
Py_DECREF( w ); \
- if ( rc < 0 ) return; \
+ if ( rc < 0 ) return NULL; \
}
//! View operation type
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()
+extern "C" SALOMEPY_EXPORT PyMODINIT_FUNC PyInit_libSalomePy(void)
{
- 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;
+ return NULL;
}
// get module's dictionary
PyObject *aModuleDict = PyModule_GetDict( aModule );
if ( aModuleDict == NULL )
- return;
+ return NULL;
// export View type enumeration
PUBLISH_ENUM( ViewFront );
PUBLISH_ENUM( ViewBottom );
PUBLISH_ENUM( ViewRight );
PUBLISH_ENUM( ViewLeft );
+
+ return aModule;
}
// 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
// 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 "SALOME_PYQT_Selector.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 );
}
}
}
# swig flags
SET_SOURCE_FILES_PROPERTIES(libSALOME_Swig.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libSALOME_Swig.i PROPERTIES SWIG_DEFINITIONS "-shadow")
+SET_SOURCE_FILES_PROPERTIES(libSALOME_Swig.i PROPERTIES SWIG_FLAGS "-py3")
SET_SOURCE_FILES_PROPERTIES(libSALOME_SwigPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "-DHAVE_CONFIG_H")
# additional preprocessor / compiler flags
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;
+#if PY_VERSION_HEX < 0x03050000
+static char*
+Py_EncodeLocale(const wchar_t *arg, size_t *size)
+{
+ return _Py_wchar2char(arg, size);
+}
+static wchar_t*
+Py_DecodeLocale(const char *arg, size_t *size)
+{
+ return _Py_char2wchar(arg, size);
+}
+#endif
+
+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',
-# -*- coding: utf-8 -*-
-#!/usr/bin/env python
+#!/usr/bin/env python3
# Copyright (C) 2010-2016 CEA/DEN, EDF R&D, OPEN CASCADE
#
# This library is free software; you can redistribute it and/or
This function creates the geometry on the specified study and with
given parameters.
'''
- print "TUBE: creating the geometry ..."
+ print("TUBE: creating the geometry ...")
geompy = geomtools.getGeompy()
radius_ext = radius
# meshing algorithm.
geompy = geomtools.getGeompy()
- 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(shape):
'''This function creates the mesh of the specified shape on the current study'''
- print "TUBE: creating the mesh ..."
+ print("TUBE: creating the mesh ...")
import SMESH
from salome.smesh import smeshBuilder
smesh = smeshBuilder.New()
'''
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.
+ searched = []
for key in os.environ.keys():
if key.endswith("_ROOT_DIR"):
rootpath=os.environ[key]
dirpath=os.path.join(rootpath,PLUGIN_PATH_PATTERN)
- if os.path.isdir(dirpath) and dirpath not in self.plugindirs:
+ if os.path.isdir(dirpath) and dirpath not in self.plugindirs + searched:
logger.debug("Looking for plugins in the directory %s ..."%dirpath)
walktree(dirpath,self.analyseFile)
+ if dirpath not in self.plugindirs and dirpath not in searched:
+ searched.append(dirpath)
# USER plugins directory
user_dir = os.path.expanduser("~/.config/salome/Plugins")
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>
if model is None or self._blockNotifications:
return
- if not self._modelViews.has_key(model):
+ if model not in self._modelViews:
return
for view in self._modelViews[model]:
method = "on%s" % what
if what != "" and what is not None and hasattr(view, method):
- exec "view.%s()" % method
+ exec("view.%s()" % method)
elif hasattr(view, "update"):
# Generic update:
view.update()
return -1
ps = control._plotManager.removeXYPlotSet(plot_set_id)
- for _, crv in ps._curves.items():
+ for _, crv in list(ps._curves.items()):
control.removeModelListeners(crv)
control.removeModelListeners(ps)
psets = control._plotManager._plotSets
if len(psets):
- control._plotManager.setCurrentPlotSet(psets.keys()[-1])
+ control._plotManager.setCurrentPlotSet(list(psets.keys())[-1])
return plot_set_id
@classmethod
gc.collect()
import resource
m = resource.getrusage(resource.RUSAGE_SELF)[2]*resource.getpagesize()/1e6
- print "** Used memory: %.2f Mb" % m
+ print("** Used memory: %.2f Mb" % m)
@classmethod
def DeleteCurrentItem(cls):
""" @return the first plot set whose name matches the provided name. Otherwise returns -1
"""
pm = cls.GetInstance()._plotManager
- for _, ps in pm._plotSets.items():
+ for _, ps in list(pm._plotSets.items()):
if ps._title == name:
return ps.getID()
return -1
""" @return two lists: plot set names, and corresponding plot set IDs
"""
pm = cls.GetInstance()._plotManager
- it = pm._plotSets.items()
+ it = list(pm._plotSets.items())
ids, inst, titles = [], [], []
if len(it):
- ids, inst = zip(*it)
+ ids, inst = list(zip(*it))
if len(inst):
titles = [i.getTitle() for i in inst]
return list(ids), titles
@return True if plot_set_id is the identifier of a valid and existing plot set.
"""
control = cls.GetInstance()
- return control._plotManager._plotSets.has_key(plot_set_id)
+ return plot_set_id in control._plotManager._plotSets
@classmethod
def GetSalomeViewID(cls, plot_set_id):
raise ValueError("Invalid marker: '%s'" % marker)
cont = cls.GetInstance()
- for mod, views in cont._modelViews.items():
+ for mod, views in list(cont._modelViews.items()):
if isinstance(mod, CurveModel) and mod.getID() == crv_id:
for v in views:
if isinstance(v, CurveView):
from XYView import XYView
cont = cls.GetInstance()
- for mod, views in cont._modelViews.items():
+ for mod, views in list(cont._modelViews.items()):
if isinstance(mod, XYPlotSetModel) and mod.getID() == ps_id:
for v in views:
if isinstance(v, XYView):
- exec "v.%s(*args, **kwargs)" % func
+ exec("v.%s(*args, **kwargs)" % func)
found = True
if not found:
raise Exception("Invalid plot set ID or plot set currently not displayed (ps_id=%d)!" % ps_id)
import matplotlib
matplotlib.use('Qt4Agg')
import matplotlib.pyplot as plt # must come after the PySide/PyQt4 switch!
- plt.rcParams['font.sans-serif'].insert(0, u"DejaVu Sans")
+ plt.rcParams['font.sans-serif'].insert(0, "DejaVu Sans")
except:
- print "Warning: could not switch matplotlib to 'Qt4agg' backend. Some characters might be displayed improperly!"
+ print("Warning: could not switch matplotlib to 'Qt4agg' backend. Some characters might be displayed improperly!")
-from PlotController import PlotController
+from .PlotController import PlotController
from TableModel import TableModel
from CurveModel import CurveModel
from PlotManager import PlotManager
@classmethod
def __log(cls, typ, msg):
- print "%s: %s" % (typ, msg)
+ print("%s: %s" % (typ, msg))
def trQ(tag, context="CURVEPLOT"):
""" @return a QString read from the translation file """
return len(self._plotSets) == 0
def setCurrentPlotSet(self, plotSetID, silent=False):
- if not self._plotSets.has_key(plotSetID) and plotSetID != -1:
+ if plotSetID not in self._plotSets and plotSetID != -1:
raise ValueError("Invalid plot set ID (%d)!" % plotSetID)
self._currentPlotSet = self._plotSets.get(plotSetID, None)
if not silent:
return self._currentPlotSet
def getPlotSetContainingCurve(self, curveID):
- for ps in self._plotSets.values():
- if ps._curves.has_key(curveID):
+ for ps in list(self._plotSets.values()):
+ if curveID in ps._curves:
return ps
return None
def removeXYPlotSet(self, plotSetID):
Logger.Debug("====> PlotManager::removeXYPlotSet() %d" % plotSetID)
- if not self._plotSets.has_key(plotSetID):
- print self._plotSets
+ if plotSetID not in self._plotSets:
+ print(self._plotSets)
raise ValueError("Plot set ID (%d) not found for deletion!" % plotSetID)
ps = self._plotSets.pop(plotSetID)
if self._currentPlotSet is ps:
return self._title
def setCurrentCurve(self, curveID, silent=False):
- if not self._curves.has_key(curveID) and curveID != -1:
+ if curveID not in self._curves and curveID != -1:
raise ValueError("Invalid curve ID (%d)!" % curveID)
self._currentCurve = self._curves.get(curveID, None)
if not silent:
self.notifyChange("AddCurve")
def removeCurve(self, curveID, silent=False):
- if not self._curves.has_key(curveID):
+ if curveID not in self._curves:
raise ValueError("Curve ID (%d) not found for deletion!" % curveID)
c = self._curves.pop(curveID)
if self._currentCurve is c:
raise Exception
import PyQt4
_use_pyqt = True
- print "Using PyQt4 run-time ..."
+ print("Using PyQt4 run-time ...")
except:
try:
import PySide
_use_pyqt = False
- print "Using PySide run-time ..."
+ print("Using PySide run-time ...")
except:
raise Exception("Neither PyQt4 nor PySide could be imported!")
if _use_pyqt: back = 'PyQt4'
else: back = 'PySide'
matplotlib.rcParams['backend.qt4'] = back
- print "Matplotlib found - Set matplotlib backend to '%s'!" % back
+ print("Matplotlib found - Set matplotlib backend to '%s'!" % back)
except:
# No matplotlib, silently discard err message.
pass
if _use_pyqt:
from PyQt4.uic import loadUi as loadUiGen
else:
- from pyside_dynamic import loadUi as loadUiGen
+ from .pyside_dynamic import loadUi as loadUiGen
trans = QTranslator()
for f in ts_files:
if not trans.load(f):
- print "could not load translation %s!" % f
+ print("could not load translation %s!" % f)
app.installTranslator(trans)
dw = app.desktop()
x, y = dw.width()*0.25, dw.height()*0.7
self.tmpBaselineDir = os.path.join(tempfile.gettempdir(), "curveplot_baselines")
if not os.path.isdir(self.tmpBaselineDir):
os.mkdir(self.tmpBaselineDir)
- print "### Rebuilding base lines. Reference files will be saved to '%s'" % self.tmpBaselineDir
+ print("### Rebuilding base lines. Reference files will be saved to '%s'" % self.tmpBaselineDir)
PlotController.WITH_CURVE_BROWSER = True
XYView._DEFAULT_LEGEND_STATE = True # always show legend by default
if not ret:
# Keep file if assert is false
self.keepDir = True
- print "[%s] -- Failed screenshot equality, or unable to open baseline file - directory is kept alive: %s" % (self.getTestName(), self.tmpDir)
+ print("[%s] -- Failed screenshot equality, or unable to open baseline file - directory is kept alive: %s" % (self.getTestName(), self.tmpDir))
return ret
def showTabWidget(self):
for _ in range(nC):
x, y = self.__generateRandomData(1000)
lx.append(x); ly.append(y)
- print "Done generating"
+ print("Done generating")
from time import time
t0 = time()
curveplot.LockRepaint()
for i in range(nC):
curveplot.AddCurve(lx[i], ly[i], append=True)
curveplot.UnlockRepaint()
- print "Elapsed: %.2f" % ( time() - t0)
+ print("Elapsed: %.2f" % ( time() - t0))
def clearPlotSet(self):
curveplot.ClearPlotSet()
def addPS(self):
# Also a test for unicode!
- curveplot.AddPlotSet(u'ça m embête')
+ curveplot.AddPlotSet('ça m embête')
def addTab(self):
pass
@Slot()
def memPrint(self):
i, t = curveplot.GetAllPlotSets()
- print zip(i, t)
+ print(list(zip(i, t)))
new_id = curveplot.CopyCurve(curve_id=0, plot_set_id=1)
- print "created curve: %d" % new_id
+ print("created curve: %d" % new_id)
import resource
m = resource.getrusage(resource.RUSAGE_SELF)[2]*resource.getpagesize()/1e6
- print "** Used memory: %.2f Mb" % m
+ print("** Used memory: %.2f Mb" % m)
if self.cnt >= 0 and self.cnt < self.MAX_CNT:
self.cnt += 1
QTimer.singleShot(self.timeLap, self, SLOT("curveSameFig()"))
def testAddCurve(self):
x, y = self.generateSine()
tw = self.showTabWidget()
- PlotController.AddCurve(x, y, curve_label="My curve", x_label=u"Lèés X (unicode!)", y_label=u"Et des ŷ", append=False)
+ PlotController.AddCurve(x, y, curve_label="My curve", x_label="Lèés X (unicode!)", y_label="Et des ŷ", append=False)
self.assertTrue(self.areScreenshotEqual(tw))
def testAddCurveAppend(self):
def testSetLabelX(self):
tw = self.showTabWidget()
ps_id = PlotController.AddPlotSet("My plotset")
- PlotController.SetXLabel(u"The X-s éà ", ps_id)
+ PlotController.SetXLabel("The X-s éà ", ps_id)
self.assertTrue(self.areScreenshotEqual(tw))
def testSetLabelY(self):
tw = self.showTabWidget()
ps_id = PlotController.AddPlotSet("My plotset")
- PlotController.SetYLabel(u"Tutu", ps_id)
- PlotController.SetYLabel(u"The Y-s uûà ç", ps_id)
+ PlotController.SetYLabel("Tutu", ps_id)
+ PlotController.SetYLabel("The Y-s uûà ç", ps_id)
self.assertTrue(self.areScreenshotEqual(tw))
def testSetPlotSetTitle(self):
tw = self.showTabWidget()
ps_id = PlotController.AddPlotSet("tutu")
PlotController.AddPlotSet("tata")
- PlotController.SetPlotSetTitle(u"un titre à é", ps_id)
+ PlotController.SetPlotSetTitle("un titre à é", ps_id)
PlotController.SetCurrentPlotSet(ps_id)
self.assertTrue(self.areScreenshotEqual(tw))
dlg_test.showLegendCheckBox.setChecked(True)
return True
dlg_test.exec_ = fun
- t = PlotController.GetInstance()._curveTabsView._XYViews.items()
+ t = list(PlotController.GetInstance()._curveTabsView._XYViews.items())
t[0][1].onSettings(dlg_test=dlg_test)
self.assertTrue(self.areScreenshotEqual(tw))
dlg_test.showLegendCheckBox.setChecked(True)
return True
dlg_test.exec_ = fun
- t = PlotController.GetInstance()._curveTabsView._XYViews.items()
+ t = list(PlotController.GetInstance()._curveTabsView._XYViews.items())
t[0][1].onSettings(dlg_test=dlg_test)
self.assertTrue(self.areScreenshotEqual(tw))
return pix
def accept(self):
- xminText = unicode(self.axisXMinEdit.text())
- xmaxText = unicode(self.axisXMaxEdit.text())
- yminText = unicode(self.axisYMinEdit.text())
- ymaxText = unicode(self.axisYMaxEdit.text())
+ xminText = str(self.axisXMinEdit.text())
+ xmaxText = str(self.axisXMaxEdit.text())
+ yminText = str(self.axisYMinEdit.text())
+ ymaxText = str(self.axisYMaxEdit.text())
if (yminText == "" or ymaxText == "") :
QtGui.QMessageBox.critical(self, "Plot settings", "A field \"YMin\" or \"YMax\" is empty")
else :
plotSets = self._model._plotSets
# The second (hidden) column in the tree bares the ID of the object and its nature (plotset or curve)
- for p in plotSets.values():
- item = QtGui.QTreeWidgetItem([unicode(p.getTitle()), unicode(p.getID()) + '_set'])
+ for p in list(plotSets.values()):
+ item = QtGui.QTreeWidgetItem([str(p.getTitle()), str(p.getID()) + '_set'])
treeWidget.addTopLevelItem(item)
- for c in p._curves.values():
- chld = QtGui.QTreeWidgetItem([unicode(c.getTitle()), unicode(c.getID()) + '_crv'])
+ for c in list(p._curves.values()):
+ chld = QtGui.QTreeWidgetItem([str(c.getTitle()), str(c.getID()) + '_crv'])
item.addChild(chld)
treeWidget.expandAll()
def mapModId2ViewId(self):
""" Gives a map from model ID (the model behind the XYView) to view ID
"""
- lst = [(v._model.getID(), view_id) for view_id, v in self._XYViews.items()]
+ lst = [(v._model.getID(), view_id) for view_id, v in list(self._XYViews.items())]
return dict(lst)
def update(self):
# Check list of tabs:
set_mod = set(self._model._plotSets.keys())
- set_view = set([ v._model.getID() for v in self._XYViews.values() ])
+ set_view = { v._model.getID() for v in list(self._XYViews.values()) }
mp = self.mapModId2ViewId()
# Deleted/Added curves:
newViews.append(self.createXYView(self._model._plotSets[a]))
# Now update all tabs individually (this will trigger creation of new ones if not already there):
- for v in self._XYViews.values() + newViews:
+ for v in list(self._XYViews.values()) + newViews:
# The update on newViews will trigger the SALOME view creation:
v.update()
if event.mouseevent.button == 1:
selected_id = -1
a = event.artist
- for crv_id, cv in self._curveViews.items():
+ for crv_id, cv in list(self._curveViews.items()):
if cv._mplLines[0] is a:
selected_id = crv_id
# Use the plotmanager so that other plot sets get their current reset:
return
action = self._curveActionGroup.checkedAction()
if action is self._pointsAction :
- for crv_view in self._curveViews.values():
+ for crv_view in list(self._curveViews.values()):
crv_view.setLineStyle("None")
elif action is self._linesAction :
- for crv_view in self._curveViews.values():
+ for crv_view in list(self._curveViews.values()):
crv_view.setLineStyle("-")
else :
raise NotImplementedError
point = event.canvas.mapToGlobal(QtCore.QPoint(event.x,canvasSize.height()-event.y))
self._popupMenu.exec_(point)
else :
- print "Press event on the other button"
+ print("Press event on the other button")
#if event.button == 3 :
# canvasSize = event.canvas.geometry()
# point = event.canvas.mapToGlobal(QtCore.QPoint(event.x,canvasSize.height()-event.y))
# self._popupMenu.show()
def onMotionEvent(self, event):
- print "OnMotionEvent ",event.button
+ print("OnMotionEvent ",event.button)
#if event.button == 3 :
# event.button = None
# return True
def onReleaseEvent(self, event):
- print "OnReleaseEvent ",event.button
+ print("OnReleaseEvent ",event.button)
#if event.button == 3 :
# event.button = None
# return False
// 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>
PyStdOut_write(PyStdOut *self, PyObject *args)
{
char *c;
- int l;
- if (!PyArg_ParseTuple(args, "t#:write",&c, &l))
+ if (!PyArg_ParseTuple(args, "s",&c))
return NULL;
if(self->_cb==NULL) {
if ( self->_iscerr )
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*/
0, /*tp_new*/
0, /*tp_free*/
0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ 0, /*tp_version_tag*/
+ 0, /*tp_finalize*/
};
#define PyStdOut_Check(v) ((v)->ob_type == &PyStdOut_Type)
{
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_SaveThread(); // release safely GIL
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();
#include <iostream>
#endif
+#if PY_VERSION_HEX < 0x03050000
+static char*
+Py_EncodeLocale(const wchar_t *arg, size_t *size)
+{
+ return _Py_wchar2char(arg, size);
+}
+static wchar_t*
+Py_DecodeLocale(const char *arg, size_t *size)
+{
+ return _Py_char2wchar(arg, size);
+}
+#endif
+
/**
* \class PyLockWrapper
* \brief Python GIL wrapper.
-#!/usr/bin/env python
+#!/usr/bin/env python3
# Copyright (C) 2010-2016 CEA/DEN, EDF R&D, OPEN CASCADE
#
# This library is free software; you can redistribute it and/or
"""
if __name__ == "__main__":
- from optparse import OptionParser
- import shutil, fileinput
+ from argparse import ArgumentParser
tool_path = os.path.dirname( os.path.abspath( sys.argv[0] ) )
- parser = OptionParser( description = __descr_str )
- parser.add_option( "-n", action="store", default="TestDialog", dest="className", metavar="className",
- help="specify the name of the class (default is TestDialog)" )
- parser.add_option( "-t", action="store", default="qdialog", dest="classType",
- choices=["qdialog", "gdialog"], metavar="classType",
+ parser = ArgumentParser( description = __descr_str )
+ parser.add_argument( "-n", action="store", default="TestDialog", dest="className", metavar="className",
+ help="specify the name of the class (default is TestDialog)" )
+ parser.add_argument( "-t", action="store", default="qdialog", dest="classType",
+ choices=["qdialog", "gdialog"], metavar="classType",
help="specify the type of the class (default is qdialog)" )
- parser.add_option( "-v", "--verbose", action="store_true", default=True, dest="verbose",
- help="verbose mode" )
- parser.add_option( "-s", "--silent", action="store_false", dest="verbose",
- help="silent mode" )
+ parser.add_argument( "-v", "--verbose", action="store_true", default=True, dest="verbose",
+ help="verbose mode" )
+ parser.add_argument( "-s", "--silent", action="store_false", dest="verbose",
+ help="silent mode" )
- (options, args) = parser.parse_args()
- className = options.className
- classType = options.classType
+ args = parser.parse_args()
+ className = args.className
+ classType = args.classType
for ext in [".cxx", ".h", ".ui"]:
file_dest = className + ext
else:
file_src = os.path.join( tool_path, "__GDIALOG__" + ext )
pass
- shutil.copyfile( file_src, file_dest )
- finput = fileinput.FileInput( file_dest, inplace=1 )
- for line in finput:
- line = line[:-1]
- line = line.replace( "__CLASSNAME__", className )
- 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 )
+
+ with open(file_src, 'r', encoding='utf-8') as fi, \
+ open(file_dest, 'w', encoding='utf-8') as fo:
+ for line in fi:
+ line = line[:-1]
+ line = line.replace( "__CLASSNAME__", className )
+ line = line + "\n"
+ fo.write(line)
+ pass
+
+ if args.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 ))
pass
pass