-# Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
#
# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
# ---
#
import traceback
-import os
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
-from PYHELLO_utils import *
+from PYHELLO_utils import (moduleName, getObjectID, verbose,
+ moduleID, objectID, getEngineIOR, getEngine)
+from SalomePyQt import (SalomePyQt, WT_ObjectBrowser, WT_PyConsole, PT_Selector, # @UnresolvedImport
+ PT_String) # @UnresolvedImport
+from qtsalome import (QDialog, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, # @UnresolvedImport
+ QPushButton, QMessageBox, QInputDialog, Qt) # @UnresolvedImport
+from salome.kernel import termcolor
+from salome.kernel.logger import Logger
+import libSALOME_Swig
+
+
+logger = Logger(moduleName(), color=termcolor.RED_FG)
+
+import salome
################################################
# GUI context class
# Global variables
################################################
-# study-to-context map
-__study2context__ = {}
-# current context
-__current_context__ = None
# object counter
__objectid__ = 0
################################################
# Get SALOME PyQt interface
-import SalomePyQt
-sgPyQt = SalomePyQt.SalomePyQt()
+sgPyQt = SalomePyQt()
# Get SALOME Swig interface
-import libSALOME_Swig
sg = libSALOME_Swig.SALOMEGUI_Swig()
################################################
# Internal methods
################################################
-###
-# get active study ID
-###
-def _getStudyId():
- return sgPyQt.getStudyId()
-
-###
-# get active study
-###
-def _getStudy():
- studyId = _getStudyId()
- study = getStudyManager().GetStudyByID( studyId )
- return study
-
###
# returns True if object has children
###
def _hasChildren( sobj ):
if sobj:
- study = _getStudy()
- iter = study.NewChildIterator( sobj )
+ iter = salome.myStudy.NewChildIterator( sobj )
while iter.More():
name = iter.Value().GetName()
if name:
pass
return False
-###
-# get current GUI context
-###
-def _getContext():
- global __current_context__
- return __current_context__
-
-###
-# set and return current GUI context
-# study ID is passed as parameter
-###
-def _setContext( studyID ):
- global __study2context__, __current_context__
- if not __study2context__.has_key(studyID):
- __study2context__[studyID] = GUIcontext()
- pass
- __current_context__ = __study2context__[studyID]
- return __current_context__
-
###
# increment object counter in the map
###
selcount = sg.SelectedCount()
seltypes = {}
for i in range( selcount ):
- _incObjToMap( seltypes, getObjectID( _getStudy(), sg.getSelected( i ) ) )
+ _incObjToMap( seltypes, getObjectID( sg.getSelected( i ) ) )
pass
return selcount, seltypes
# called when module is initialized
# perform initialization actions
def initialize():
- if verbose() : print "PYHELLOGUI.initialize() : study : %d" % _getStudyId()
+ if verbose() : print("PYHELLOGUI.initialize()")
# set default preferences values
if not sgPyQt.hasSetting( "PYHELLO", "def_obj_name"):
sgPyQt.addSetting( "PYHELLO", "def_obj_name", GUIcontext.DEFAULT_NAME )
# called when module is initialized
# return map of popup windows to be used by the module
def windows():
- if verbose() : print "PYHELLOGUI.windows() : study : %d" % _getStudyId()
+ if verbose() : print("PYHELLOGUI.windows()")
wm = {}
- wm[SalomePyQt.WT_ObjectBrowser] = Qt.LeftDockWidgetArea
- wm[SalomePyQt.WT_PyConsole] = Qt.BottomDockWidgetArea
+ wm[WT_ObjectBrowser] = Qt.LeftDockWidgetArea
+ wm[WT_PyConsole] = Qt.BottomDockWidgetArea
return wm
# called when module is initialized
# return list of 2d/3d views to be used ny the module
def views():
- if verbose() : print "PYHELLOGUI.views() : study : %d" % _getStudyId()
+ if verbose() : print("PYHELLOGUI.views()")
return []
# called when module is initialized
# export module's preferences
def createPreferences():
- if verbose() : print "PYHELLOGUI.createPreferences() : study : %d" % _getStudyId()
- gid = sgPyQt.addPreference( "General" )
- gid = sgPyQt.addPreference( "Object creation", gid )
- pid = sgPyQt.addPreference( "Default name", gid, SalomePyQt.PT_String, "PYHELLO", "def_obj_name" )
- pid = sgPyQt.addPreference( "Default creation mode", gid, SalomePyQt.PT_Selector, "PYHELLO", "creation_mode" )
- strings = QStringList()
- strings.append( "Default name" )
- strings.append( "Generate name" )
- strings.append( "Ask name" )
- indexes = []
- indexes.append( QVariant(0) )
- indexes.append( QVariant(1) )
- indexes.append( QVariant(2) )
- sgPyQt.setPreferenceProperty( pid, "strings", QVariant( strings ) )
- sgPyQt.setPreferenceProperty( pid, "indexes", QVariant( indexes ) )
- pid = sgPyQt.addPreference( "Password", gid, SalomePyQt.PT_String, "PYHELLO", "Password" )
- sgPyQt.setPreferenceProperty( pid, "echo", QVariant( 2 ) )
+ if verbose():
+ print("PYHELLOGUI.createPreferences()")
+ gid = sgPyQt.addPreference("General")
+ gid = sgPyQt.addPreference("Object creation", gid)
+ sgPyQt.addPreference("Default name", gid, PT_String, "PYHELLO", "def_obj_name")
+ pid = sgPyQt.addPreference("Default creation mode", gid, PT_Selector, "PYHELLO", "creation_mode")
+ strings = ["Default name", "Generate name", "Ask name"]
+ indexes = [0, 1, 2]
+ sgPyQt.setPreferenceProperty(pid, "strings", strings)
+ sgPyQt.setPreferenceProperty(pid, "indexes", indexes)
+ pid = sgPyQt.addPreference("Password", gid, PT_String, "PYHELLO", "Password")
+ sgPyQt.setPreferenceProperty(pid, "echo", 2)
pass
# called when module is activated
# returns True if activating is successfull and False otherwise
def activate():
- if verbose() : print "PYHELLOGUI.activate() : study : %d" % _getStudyId()
- ctx = _setContext( _getStudyId() )
+ if verbose() : print("PYHELLOGUI.activate()")
+ GUIcontext()
return True
# called when module is deactivated
def deactivate():
- if verbose() : print "PYHELLOGUI.deactivate() : study : %d" % _getStudyId()
- pass
-
-# called when active study is changed
-# active study ID is passed as parameter
-def activeStudyChanged( studyID ):
- if verbose() : print "PYHELLOGUI.activeStudyChanged(): study : %d" % studyID
- ctx = _setContext( _getStudyId() )
+ if verbose() : print("PYHELLOGUI.deactivate()")
pass
# called when popup menu is invoked
# popup menu and menu context are passed as parameters
def createPopupMenu( popup, context ):
- if verbose() : print "PYHELLOGUI.createPopupMenu(): context = %s" % context
- ctx = _setContext( _getStudyId() )
- study = _getStudy()
+ if verbose() : print("PYHELLOGUI.createPopupMenu(): context = %s" % context)
selcount, selected = _getSelection()
- if verbose() : print selcount, selected
+ if verbose() : print(selcount, selected)
if selcount == 1:
# one object is selected
if moduleID() in selected:
# called when GUI action is activated
# action ID is passed as parameter
def OnGUIEvent( commandID ):
- if verbose() : print "PYHELLOGUI.OnGUIEvent(): command = %d" % commandID
- if dict_command.has_key( commandID ):
+ if verbose() : print("PYHELLOGUI.OnGUIEvent(): command = %d" % commandID)
+ if commandID in dict_command:
try:
dict_command[commandID]()
except:
traceback.print_exc()
else:
- if verbose() : print "The command is not implemented: %d" % commandID
+ if verbose() : print("The command is not implemented: %d" % commandID)
pass
# called when module's preferences are changed
# preference's resources section and setting name are passed as parameters
def preferenceChanged( section, setting ):
- if verbose() : print "PYHELLOGUI.preferenceChanged(): %s / %s" % ( section, setting )
+ if verbose() : print("PYHELLOGUI.preferenceChanged(): %s / %s" % ( section, setting ))
pass
# called when active view is changed
# view ID is passed as parameter
def activeViewChanged( viewID ):
- if verbose() : print "PYHELLOGUI.activeViewChanged(): %d" % viewID
+ if verbose() : print("PYHELLOGUI.activeViewChanged(): %d" % viewID)
pass
# called when active view is cloned
# cloned view ID is passed as parameter
def viewCloned( viewID ):
- if verbose() : print "PYHELLOGUI.viewCloned(): %d" % viewID
+ if verbose() : print("PYHELLOGUI.viewCloned(): %d" % viewID)
pass
# called when active view is viewClosed
# view ID is passed as parameter
def viewClosed( viewID ):
- if verbose() : print "PYHELLOGUI.viewClosed(): %d" % viewID
+ if verbose() : print("PYHELLOGUI.viewClosed(): %d" % viewID)
pass
# called when study is opened
# returns engine IOR
def engineIOR():
- if verbose() : print "PYHELLOGUI.engineIOR()"
+ if verbose() : print("PYHELLOGUI.engineIOR()")
return getEngineIOR()
# called to check if object can be dragged
# returns True if drag operation is allowed for this object
def isDraggable(what):
- if verbose() : print "PYHELLOGUI.isDraggable()"
+ if verbose() : print("PYHELLOGUI.isDraggable()")
# return True if object is draggable
return False
# called to check if object allows dropping on it
# returns True if drop operation is allowed for this object
def isDropAccepted(where):
- if verbose() : print "PYHELLOGUI.isDropAccepted()"
+ if verbose() : print("PYHELLOGUI.isDropAccepted()")
# return True if object accept drops
return False
# performs corresponding data re-arrangement if allowed
def dropObjects(what, where, row, action):
if verbose() :
- print "PYHELLOGUI.dropObjects()"
+ print("PYHELLOGUI.dropObjects()")
# 'what' is a list of entries of objects being dropped
- for i in what: print "- dropped:", i
+ for i in what: print("- dropped:", i)
# 'where' is a parent object's entry
- print "- dropping on:", where
+ print("- dropping on:", where)
# 'row' is an position in the parent's children list;
# -1 if appending to the end of children list is performed
- print "- dropping position:", row
+ print("- dropping position:", row)
# 'action' is a dropping action being performed:
# - 0x01 (Qt::CopyAction) for copy
# - 0x02 (Qt::MoveAction) for move
- print "- drop action:", action
+ print("- drop action:", action)
pass
pass
self.setModal( modal )
self.setWindowTitle( "HELLO!" )
vb = QVBoxLayout( self )
- vb.setMargin( 8 )
+ vb.setContentsMargins( 8, 8, 8, 8 )
hb0 = QHBoxLayout( self )
label = QLabel( "Prenom: ", self )
hb1 = QHBoxLayout( self )
bOk = QPushButton( "&OK", self )
bOk.setIcon( sgPyQt.loadIcon( 'PYHELLO', 'ICO_HANDSHAKE' ) )
- self.connect( bOk, SIGNAL( 'clicked()' ), self, SLOT( 'accept()' ) )
+ bOk.clicked.connect(self.accept)
hb1.addWidget( bOk )
hb1.addStretch( 10 )
bCancel = QPushButton( "&Cancel", self )
bCancel.setIcon( sgPyQt.loadIcon( 'PYHELLO', 'ICO_STOP' ) )
- self.connect( bCancel, SIGNAL( 'clicked()' ), self, SLOT( 'close()' ) )
+ bCancel.clicked.connect(self.close)
hb1.addWidget( bCancel )
-
vb.addLayout( hb1 )
pass
###
def CreateObject():
global __objectid__
- default_name = str( sgPyQt.stringSetting( "PYHELLO", "def_obj_name", GUIcontext.DEFAULT_NAME ).trimmed() )
+ default_name = sgPyQt.stringSetting("PYHELLO", "def_obj_name", GUIcontext.DEFAULT_NAME).strip()
try:
- if sgPyQt.action( GUIcontext.OPTION_3_ID ).isChecked():
+ if sgPyQt.action(GUIcontext.OPTION_3_ID).isChecked():
# request object name from the user
- name, ok = QInputDialog.getText( sgPyQt.getDesktop(),
- "Create Object",
- "Enter object name:",
- QLineEdit.Normal,
- default_name )
- if not ok: return
- name = str( name.trimmed() )
- elif sgPyQt.action( GUIcontext.OPTION_2_ID ).isChecked():
+ name, ok = QInputDialog.getText(sgPyQt.getDesktop(),
+ "Create Object",
+ "Enter object name:",
+ QLineEdit.Normal,
+ default_name)
+ if not ok:
+ return
+ name = name.strip()
+ elif sgPyQt.action(GUIcontext.OPTION_2_ID).isChecked():
# generate object name
- __objectid__ = __objectid__ + 1
- name = "%s %d" % ( default_name, __objectid__ )
+ __objectid__ = __objectid__ + 1
+ name = "%s %d" % (default_name, __objectid__)
else:
name = default_name
pass
pass
- except:
+ except Exception as e:
+ logger.debug(e)
# generate object name
- __objectid__ = __objectid__ + 1
- name = "%s %d" % ( default_name, __objectid__ )
+ __objectid__ = __objectid__ + 1
+ name = "%s %d" % (default_name, __objectid__)
pass
- if not name: return
- getEngine().createObject( _getStudy(), name )
- sg.updateObjBrowser( True )
+ if not name:
+ return
+ getEngine().createObject( name)
+ sg.updateObjBrowser()
pass
###
# Delete all objects
###
def DeleteAll():
- study = _getStudy()
- father = study.FindComponent( moduleName() )
+ father = salome.myStudy.FindComponent( moduleName() )
if father:
- iter = study.NewChildIterator( father )
- builder = study.NewBuilder()
+ iter = salome.myStudy.NewChildIterator( father )
+ builder = salome.myStudy.NewBuilder()
while iter.More():
sobj = iter.Value()
iter.Next()
builder.RemoveObjectWithChildren( sobj )
pass
- sg.updateObjBrowser( True )
+ sg.updateObjBrowser()
pass
pass
# Show object's name
###
def ShowMe():
- study = _getStudy()
entry = sg.getSelected( 0 )
if entry != '':
- sobj = study.FindObjectID( entry )
+ sobj = salome.myStudy.FindObjectID( entry )
if ( sobj ):
test, attr = sobj.FindAttribute( "AttributeName" )
if test:
# Delete selected object(s)
###
def Delete():
- study = _getStudy()
- builder = study.NewBuilder()
+ builder = salome.myStudy.NewBuilder()
if sg.SelectedCount() <= 0: return
for i in range( sg.SelectedCount() ):
entry = sg.getSelected( i )
if entry != '':
- sobj = study.FindObjectID( entry )
+ sobj = salome.myStudy.FindObjectID( entry )
if ( sobj ):
builder.RemoveObject( sobj )
pass
pass
pass
- sg.updateObjBrowser( True )
+ sg.updateObjBrowser()
pass
###
# Rename selected object
###
def Rename():
- study = _getStudy()
- builder = study.NewBuilder()
+ builder = salome.myStudy.NewBuilder()
entry = sg.getSelected( 0 )
if entry != '':
- sobj = study.FindObjectID( entry )
+ sobj = salome.myStudy.FindObjectID( entry )
if ( sobj ):
name, ok = QInputDialog.getText( sgPyQt.getDesktop(),
"Object name",
"Enter object name:",
QLineEdit.Normal,
sobj.GetName() )
- name = str( name.trimmed() )
+ name = str( name ).strip()
if not ok or not name: return
attr = builder.FindOrCreateAttribute( sobj, "AttributeName" )
attr.SetValue( name )
- sg.updateObjBrowser( True )
+ sg.updateObjBrowser()
pass
pass
pass
# Display password stored in the preferences
###
def Password():
- passwd = str( sgPyQt.stringSetting( "PYHELLO", "Password", GUIcontext.DEFAULT_PASSWD ).trimmed() )
+ passwd = str( sgPyQt.stringSetting( "PYHELLO", "Password", GUIcontext.DEFAULT_PASSWD ) ).strip()
QMessageBox.information(sgPyQt.getDesktop(),
"Password",
passwd)