]> SALOME platform Git repositories - samples/pyhello.git/blobdiff - src/PYHELLOGUI/PYHELLOGUI.py
Salome HOME
Copyright update 2022
[samples/pyhello.git] / src / PYHELLOGUI / PYHELLOGUI.py
index a7d71fddeb71faa8c2d7fae24e4cd731e72cd2eb..ad8ec68feaeff708894f94e3fe1f071eeb7decb6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2022  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 qtsalome 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
@@ -107,21 +118,15 @@ class GUIcontext:
 # 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()
 
 ################################################
@@ -130,27 +135,12 @@ 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:
@@ -160,25 +150,6 @@ def _hasChildren( sobj ):
         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 studyID not in __study2context__:
-        __study2context__[studyID] = GUIcontext()
-        pass
-    __current_context__ = __study2context__[studyID]
-    return __current_context__
-
 ###
 # increment object counter in the map
 ###
@@ -194,7 +165,7 @@ def _getSelection():
     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
 
@@ -205,7 +176,7 @@ def _getSelection():
 # 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 )
@@ -218,65 +189,51 @@ def initialize():
 # 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()
     selcount, selected = _getSelection()
     if verbose() : print(selcount, selected)
     if selcount == 1:
@@ -448,50 +405,52 @@ def ShowHELLO():
 ###
 def CreateObject():
     global __objectid__
-    default_name = str( sgPyQt.stringSetting( "PYHELLO", "def_obj_name", GUIcontext.DEFAULT_NAME ) ).strip()
+    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 ).strip()
-        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
 
@@ -499,10 +458,9 @@ def DeleteAll():
 # 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:
@@ -516,30 +474,28 @@ def ShowMe():
 # 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",
@@ -550,7 +506,7 @@ def Rename():
             if not ok or not name: return
             attr = builder.FindOrCreateAttribute( sobj, "AttributeName" )
             attr.SetValue( name )
-            sg.updateObjBrowser( True )
+            sg.updateObjBrowser()
             pass
         pass
     pass