]> SALOME platform Git repositories - modules/paravis.git/commitdiff
Salome HOME
Turning PARAVIS into a Light module
authorabn <adrien.bruneton@cea.fr>
Thu, 23 Apr 2015 09:58:23 +0000 (11:58 +0200)
committervsr <vsr@opencascade.com>
Thu, 30 Apr 2015 12:26:54 +0000 (15:26 +0300)
13 files changed:
idl/PVSERVER_Gen.idl
resources/SalomeApp.xml.in
src/ENGINE/PVSERVER.py
src/ENGINE/PVSERVER_utils.py
src/PVGUI/CMakeLists.txt
src/PVGUI/PVGUI_DataModel.cxx
src/PVGUI/PVGUI_DataModel.h
src/PVGUI/PVGUI_Module.cxx
src/PVGUI/PVGUI_Module.h
src/PVGUI/PVGUI_Module_actions.cxx
src/PVGUI/PVGUI_Module_widgets.cxx
src/PVGUI/PVGUI_Tools.cxx [deleted file]
src/PVGUI/PVGUI_Tools.h [deleted file]

index 54911b78b12fe4e4604c7bb8e9191eb9563300d3..fffe78bc6319f191f58c0a8e1e96a24c4f6113f4 100644 (file)
@@ -59,16 +59,6 @@ module PVSERVER_ORB {
      */
     boolean StopPVServer();
     
-    /*! Gets the last trace string pushed by the GUI onto the engine.
-     */
-    string GetPythonTraceString();
-    
-    /*! HACK!! For now ParaView's trace mechanism is implemented in such away that asking the trace
-     * outside the GUI provides an incomplete script. Hence the GUI regularly pushes to the engine
-     * the latest status of the trace which is then returned by GetPythonTraceString().
-     */
-    void PutPythonTraceStringToEngine(in string trace);
-    
     /*! Indicates if the GUI process is already connected to the pvserver. 
      * This avoids multiple attempts to connect from a single thread (makes ParaView crash). */ 
     void SetGUIConnected(in boolean isConnected);
index 01efa0981ac316b9de977b59b6ecb81bda3d846e..e33817d41a83ead15c8b6852d6c2866cb8d2c695 100644 (file)
@@ -26,8 +26,6 @@
     <parameter name="icon" value="pqAppIcon22.png"/>
     <parameter name="version" value="@SALOMEPARAVIS_VERSION@"/>
     <parameter name="singleton" value="true"/>
-    <!-- Lists all additional popup items separated by ':' -->
-    <parameter name="popupitems" value="importmed"/>
     <parameter name="show_color_legend" value="0"/>
   </section>
   <section name="resources">
     <!-- ParaView pixmaps -->
     <parameter name="ParaView" value="%PVHOME%/include/paraview-%PVVERSION%/Qt/Components/Resources/Icons"/>
   </section>
-  <section name="importmed">
-    <parameter name="title" value="Load to ParaView"/>
-    <parameter name="objectid" value="VISU.RESULT"/>
-    <parameter name="method" value="onImportFromVisu"/>
-  </section>
-  <!-- ParaViS shortcuts -->
-  <section name="shortcuts:ParaViS">
-    <parameter name="Create new ParaView view" value="Ctrl+Alt+F"/>
-  </section>
  <section name="windows_geometry">
   <parameter name="PARAVIS" value="#00 #00 #00 #FF #00 #00 #00 #00 #FD #00 #00 #00 #03 #00 #00 #00 #00 #00 #00 #01 #19 #00 #00 #02 #D5 #FC #02 #00 #00 #00 #09 #FB #00 #00 #00 #26 #00 #70 #00 #69 #00 #70 #00 #65 #00 #6C #00 #69 #00 #6E #00 #65 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #59 #00 #00 #01 #15 #00 #00 #00 #53 #00 #FF #FF #FF #FC #00 #00 #01 #76 #00 #00 #01 #B8 #00 #00 #00 #B6 #01 #00 #00 #16 #FA #00 #00 #00 #00 #01 #00 #00 #00 #02 #FB #00 #00 #00 #1C #00 #70 #00 #72 #00 #6F #00 #70 #00 #65 #00 #72 #00 #74 #00 #69 #00 #65 #00 #73 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #01 #19 #00 #FF #FF #FF #FB #00 #00 #00 #1E #00 #69 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #2C #00 #73 #00 #65 #00 #6C #00 #65 #00 #63 #00 #74 #00 #69 #00 #6F #00 #6E #00 #49 #00 #6E #00 #73 #00 #70 #00 #65 #00 #63 #00 #74 #00 #6F #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #30 #00 #FF #FF #FF #FB #00 #00 #00 #38 #00 #6D #00 #75 #00 #6C #00 #74 #00 #69 #00 #42 #00 #6C #00 #6F #00 #63 #00 #6B #00 #49 #00 #6E #00 #73 #00 #70 #00 #65 #00 #63 #00 #74 #00 #6F #00 #72 #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #65 #00 #FF #FF #FF #FB #00 #00 #00 #28 #00 #63 #00 #6F #00 #6D #00 #70 #00 #61 #00 #72 #00 #61 #00 #74 #00 #69 #00 #76 #00 #65 #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #01 #32 #00 #FF #FF #FF #FB #00 #00 #00 #24 #00 #63 #00 #6F #00 #6C #00 #6F #00 #72 #00 #4D #00 #61 #00 #70 #00 #45 #00 #64 #00 #69 #00 #74 #00 #6F #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #7D #00 #FF #FF #FF #FB #00 #00 #00 #26 #00 #70 #00 #69 #00 #70 #00 #65 #00 #6C #00 #69 #00 #6E #00 #65 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #7B #00 #00 #00 #F0 #00 #00 #00 #00 #00 #00 #00 #00 #FC #00 #00 #01 #F7 #00 #00 #01 #37 #00 #00 #00 #00 #00 #FF #FF #FF #FA #00 #00 #00 #00 #01 #00 #00 #00 #01 #FB #00 #00 #00 #1C #00 #70 #00 #72 #00 #6F #00 #70 #00 #65 #00 #72 #00 #74 #00 #69 #00 #65 #00 #73 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #FB #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #01 #A1 #00 #00 #01 #8D #00 #00 #00 #53 #00 #FF #FF #FF #00 #00 #00 #01 #00 #00 #00 #00 #00 #00 #00 #00 #FC #02 #00 #00 #00 #02 #FB #00 #00 #00 #2C #00 #63 #00 #6F #00 #6C #00 #6C #00 #61 #00 #62 #00 #6F #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #01 #03 #00 #FF #FF #FF #FB #00 #00 #00 #26 #00 #6D #00 #65 #00 #6D #00 #6F #00 #72 #00 #79 #00 #49 #00 #6E #00 #73 #00 #70 #00 #65 #00 #63 #00 #74 #00 #6F #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #01 #29 #00 #FF #FF #FF #00 #00 #00 #03 #00 #00 #04 #DF #00 #00 #00 #53 #FC #01 #00 #00 #00 #03 #FC #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #FF #FF #FF #FA #FF #FF #FF #FF #01 #00 #00 #00 #02 #FB #00 #00 #00 #22 #00 #61 #00 #6E #00 #69 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #56 #00 #69 #00 #65 #00 #77 #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #02 #33 #00 #FF #FF #FF #FB #00 #00 #00 #24 #00 #73 #00 #74 #00 #61 #00 #74 #00 #69 #00 #73 #00 #74 #00 #69 #00 #63 #00 #73 #00 #56 #00 #69 #00 #65 #00 #77 #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #01 #21 #00 #00 #04 #DF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #1A #00 #6C #00 #6F #00 #67 #00 #57 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #05 #30 #00 #00 #00 #D0 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #DF #00 #00 #02 #D5 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #01 #00 #00 #00 #02 #FC #00 #00 #00 #03 #00 #00 #00 #02 #00 #00 #00 #05 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #CE #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #26 #00 #4D #00 #61 #00 #69 #00 #6E #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #01 #A7 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #14 #00 #56 #00 #43 #00 #52 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #02 #E4 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #24 #00 #63 #00 #75 #00 #72 #00 #72 #00 #65 #00 #6E #00 #74 #00 #54 #00 #69 #00 #6D #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #03 #AC #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #05 #00 #00 #00 #1E #00 #76 #00 #61 #00 #72 #00 #69 #00 #61 #00 #62 #00 #6C #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2A #00 #72 #00 #65 #00 #70 #00 #72 #00 #65 #00 #73 #00 #65 #00 #6E #00 #74 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #01 #7A #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #63 #00 #61 #00 #6D #00 #65 #00 #72 #00 #61 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #02 #1E #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #16 #00 #61 #00 #78 #00 #65 #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #03 #43 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #4D #00 #61 #00 #63 #00 #72 #00 #6F #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #03 #CD #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #02 #00 #00 #00 #0C #00 #43 #00 #6F #00 #6D #00 #6D #00 #6F #00 #6E #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #18 #00 #44 #00 #61 #00 #74 #00 #61 #00 #41 #00 #6E #00 #61 #00 #6C #00 #79 #00 #73 #00 #69 #00 #73 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00"/>
  </section>
index 6b9060132c1c0ba767fc1f8b89470d2f3a38a41b..46ca5ab1245cadbc8d69b1f93d5801b34398a9c4 100644 (file)
@@ -21,7 +21,6 @@
 
 import PVSERVER_ORB__POA
 import SALOME_ComponentPy
-import SALOME_DriverPy
 import SALOMEDS
 import SALOME
 import PVSERVER_utils
@@ -46,7 +45,6 @@ class PVSERVER_Impl:
     def __init__(self):
         self.pvserverPort = -1
         self.pvserverPop = None  # Popen object from subprocess module
-        self.lastTrace = ""
         self.isGUIConnected = False  # whether there is an active connection from the GUI.
         try:
             import paraview
@@ -133,12 +131,6 @@ class PVSERVER_Impl:
                 return True
         MESSAGE("[PVSERVER] Nothing to kill.")
         return False
-    
-    def PutPythonTraceStringToEngine( self, t ):
-        self.lastTrace = t
-        
-    def GetPythonTraceString(self):
-        return self.lastTrace
       
     def SetGUIConnected( self, isConnected ):
         self.isGUIConnected = isConnected
@@ -148,20 +140,17 @@ class PVSERVER_Impl:
     
 class PVSERVER(PVSERVER_ORB__POA.PVSERVER_Gen,
               SALOME_ComponentPy.SALOME_ComponentPy_i,
-              SALOME_DriverPy.SALOME_DriverPy_i,
               PVSERVER_Impl):
     """
     Construct an instance of PVSERVER module engine.
     The class PVSERVER implements CORBA interface PVSERVER_Gen (see PVSERVER_Gen.idl).
     It is inherited from the classes SALOME_ComponentPy_i (implementation of
-    Engines::EngineComponent CORBA interface - SALOME component) and SALOME_DriverPy_i
-    (implementation of SALOMEDS::Driver CORBA interface - SALOME module's engine).
+    Engines::EngineComponent CORBA interface - SALOME component).
     """
     def __init__ ( self, orb, poa, contID, containerName, instanceName, 
                    interfaceName ):
         SALOME_ComponentPy.SALOME_ComponentPy_i.__init__(self, orb, poa,
                     contID, containerName, instanceName, interfaceName, 0)
-        SALOME_DriverPy.SALOME_DriverPy_i.__init__(self, interfaceName)
         PVSERVER_Impl.__init__(self)
         #
         self._naming_service = SALOME_ComponentPy.SALOME_NamingServicePy_i( self._orb )
@@ -170,7 +159,7 @@ class PVSERVER(PVSERVER_ORB__POA.PVSERVER_Gen,
     """ Override base class destroy to make sure we try to kill the pvserver
         before leaving.
     """
-    def destroy(self):    
+    def destroy(self):
         self.StopPVServer()
         # Invokes super():
         SALOME_ComponentPy.destroy(self)
@@ -182,72 +171,8 @@ class PVSERVER(PVSERVER_ORB__POA.PVSERVER_Gen,
         import salome_version
         return salome_version.getVersion("PARAVIS", True)
 
-    def GetIOR(self):
-        return PVSERVER_utils.getEngineIOR()
-
-    """
-    Create object.
     """
-    def createObject( self, study, name ):
-        MESSAGE("createObject()")
-        self._createdNew = True # used for getModifiedData method
-        builder = study.NewBuilder()
-        father  = findOrCreateComponent( study )
-        object  = builder.NewObject( father )
-        attr    = builder.FindOrCreateAttribute( object, "AttributeName" )
-        attr.SetValue( name )
-        attr    = builder.FindOrCreateAttribute( object, "AttributeLocalID" )
-        attr.SetValue( PVSERVER_utils.objectID() )
-        pass
-
+    Get engine IOR
     """
-    Dump module data to the Python script.
-    """
-    def DumpPython( self, study, isPublished, isMultiFile ):
-        MESSAGE("dumpPython()") 
-        abuffer = self.GetPythonTraceString().split("\n")
-        if isMultiFile:
-         abuffer       = [ "  " + s for s in abuffer ]
-          abuffer[0:0]  = [ "def RebuildData( theStudy ):" ]
-          abuffer      += [ "  pass" ]
-        abuffer += [ "\0" ]
-        return ("\n".join( abuffer ), 1)
-
-    """
-    Import file to restore module data
-    """
-    def importData(self, studyId, dataContainer, options):
-      MESSAGE("importData()")
-      # get study by Id
-      obj = self._naming_service.Resolve("myStudyManager")
-      myStudyManager = obj._narrow(SALOMEDS.StudyManager)
-      study = myStudyManager.GetStudyByID(studyId)
-      # create all objects from the imported stream
-      stream = dataContainer.get()
-      for objname in stream.split("\n"):
-        if len(objname) != 0:
-          self.createObject(study, objname)
-      self._createdNew = False # to store the modification of the study information later
-      return ["objects"] # identifier what is in this file
-    def getModifiedData(self, studyId):
-      MESSAGE("getModifiedData()")
-      if self._createdNew:
-        # get study by Id
-        obj = self._naming_service.Resolve("myStudyManager")
-        myStudyManager = obj._narrow(SALOMEDS.StudyManager)
-        study = myStudyManager.GetStudyByID(studyId)
-        # iterate all objects to get their names and store this information in stream
-        stream=""
-        father = study.FindComponent( moduleName() )
-        if father:
-            iter = study.NewChildIterator( father )
-            while iter.More():
-                name = iter.Value().GetName()
-                stream += name + "\n"
-                iter.Next()
-        # store stream to the temporary file to send it in DataContainer
-        dataContainer = SALOME_DataContainerPy_i(stream, "", "objects", False, True)
-        aVar = dataContainer._this()
-        return [aVar]
-      return []
+    def GetIOR(self):
+        return PVSERVER_utils.getEngineIOR()
index c16e41f36eb4b86298be4116ed34e608fbd8f5f3..85f203239c270fd034def936c42aa879852b2d19 100644 (file)
 # ---
 #
 __all__ = [
-    "moduleID",
-    "objectID",
-    "unknownID",
     "moduleName",
-    "modulePixmap",
     "verbose",
     "getORB",
     "getNS",
@@ -35,8 +31,6 @@ __all__ = [
     "getStudyManager",
     "getEngine",
     "getEngineIOR",
-    "findOrCreateComponent",
-    "getObjectID",
     ]
 
 from omniORB import CORBA
@@ -47,39 +41,12 @@ import SALOMEDS_Attributes_idl
 import PVSERVER_ORB
 import os
 
-###
-# Get PVSERVER module's ID
-###
-def moduleID():
-    MODULE_ID = 1000
-    return MODULE_ID
-
-###
-# Get PVSERVER object's ID
-###
-def objectID():
-    OBJECT_ID = 1010
-    return OBJECT_ID
-
-###
-# Get unknown ID
-###
-def unknownID():
-    FOREIGN_ID = -1
-    return FOREIGN_ID
-
 ###
 # Get PVSERVER module's name
 ###
 def moduleName():
     return "PVSERVER"
 
-###
-# Get module's pixmap name
-###
-def modulePixmap():
-    return "PVSERVER_small.png"
-
 ###
 # Get verbose level
 ### 
@@ -160,40 +127,3 @@ def getEngineIOR():
         IOR = getORB().object_to_string( getEngine() )
         pass
     return IOR
-
-###
-# Find or create PVSERVER component object in a study
-###
-def findOrCreateComponent( study ):
-    father = study.FindComponent( moduleName() )
-    if father is None:
-        builder = study.NewBuilder()
-        father = builder.NewComponent( moduleName() )
-        attr = builder.FindOrCreateAttribute( father, "AttributeName" )
-        attr.SetValue( moduleName() )
-        attr = builder.FindOrCreateAttribute( father, "AttributePixMap" )
-        attr.SetPixMap( modulePixmap() )
-        attr = builder.FindOrCreateAttribute( father, "AttributeLocalID" )
-        attr.SetValue( moduleID() )
-        try:
-            builder.DefineComponentInstance( father, getEngine() )
-            pass
-        except:
-            pass
-        pass
-    return father
-
-###
-# Get object's ID
-###
-def getObjectID( study, entry ):
-    ID = unknownID()
-    if study and entry:
-        sobj = study.FindObjectID( entry )
-        if sobj is not None:
-            test, anAttr = sobj.FindAttribute( "AttributeLocalID" )
-            if test: ID = anAttr._narrow( SALOMEDS.AttributeLocalID ).Value()
-            pass
-        pass
-    return ID
-    
index ae428bd933889dc1f3ef8d5d347d80ed3c98b079..f38ac61532d62482d6690ffbb116f1a239d9bc96 100644 (file)
@@ -30,7 +30,6 @@ INCLUDE_DIRECTORIES(${OMNIORB_INCLUDE_DIR}
     ${Boost_INCLUDE_DIRS}
     ${QT_INCLUDES}
     ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/view
     ${CMAKE_CURRENT_BINARY_DIR}
     )
 
@@ -48,13 +47,11 @@ SET(_link_LIBRARIES
   ${OMNIORB_LIBRARIES}
   ${QT_LIBRARIES}
   ${PYTHON_LIBS}
-  ${KERNEL_LDFLAGS} ${KERNEL_SalomeDS}
-  ${GUI_LDFLAGS} ${GUI_SalomeApp} ${GUI_LightApp} ${GUI_CAM} ${GUI_qtx} ${GUI_suit}   
+  ${KERNEL_LDFLAGS}
+  ${GUI_LDFLAGS} ${GUI_LightApp} ${GUI_CAM} ${GUI_qtx} ${GUI_suit}
                  ${GUI_SalomeObject} ${GUI_vtkTools}
-  ${MED_SalomeIDLMED}
   ${_PARAVIEW_APP_COMPO_LIB}
   ${GUI_PVViewer}
-  SalomeIDLPVServer
 )
 
 # --- headers ---
@@ -72,13 +69,8 @@ SET(_moc_HEADERS
   PVGUI_ParaViewSettingsPane.h
 )
 
-# header files / no moc processing
-SET(_other_HEADERS
-  PVGUI_Tools.h
-)
-
 # header files / to install
-SET(PVGUI_HEADERS ${_moc_HEADERS} ${_other_HEADERS} ${_ui_FORMS_HEADERS})
+SET(PVGUI_HEADERS ${_moc_HEADERS} ${_ui_FORMS_HEADERS})
 
 # --- resources ---
 
@@ -126,7 +118,6 @@ SET(_other_SOURCES
   PVGUI_Module.cxx
   PVGUI_Module_actions.cxx
   PVGUI_Module_widgets.cxx
-  PVGUI_Tools.cxx
   PVGUI_ParaViewSettingsPane.cxx
   PVGUI_DataModel.cxx
   )
index 1d90214f484c4df9d0163d35ac2aafac7701e75f..6c563e8d3425f3bd2fd60fe6a96e72a1c2e46297 100644 (file)
 // Author : Adrien Bruneton (CEA)
 //
 
+//Local includes
 #include "PVGUI_DataModel.h"
 #include "PVGUI_Module.h"
 
+// GUI includes
+#include <LightApp_Study.h>
+#include <CAM_DataObject.h>
+
+// Qt includes
 #include <QFile>
 #include <QTextStream>
 
@@ -33,19 +39,27 @@ PVGUI_DataModel::~PVGUI_DataModel()
 {}
 
 bool PVGUI_DataModel::dumpPython( const QString& path, CAM_Study* std,
-            bool multiFile, QStringList& listOfFiles)
+            bool isMultiFile, QStringList& listOfFiles)
 {
-  QString tmpFile("/tmp/kikou.py");
-  listOfFiles.push_back(tmpFile);
-  QFile file(tmpFile);
+
+  LightApp_Study* study = dynamic_cast<LightApp_Study*>( std );
+  if(!study)
+    return false;
+
+  std::string aTmpDir = study->GetTmpDir( path.toLatin1().constData(), isMultiFile );
+  std::string aFile = aTmpDir + "paravis_dump.tmp";
+
+  listOfFiles.append(aTmpDir.c_str());
+  listOfFiles.append("paravis_dump.tmp");
+
+  QFile file(aFile.c_str());
   if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
     return false;
 
-  //MESSAGE("[PARAVIS] dumpPython()")
   PVGUI_Module * mod = (PVGUI_Module *) getModule();
   QString trace(mod->getTraceString());
 
-  if (multiFile)
+  if (isMultiFile)
     {
       QStringList abuffer;
       abuffer.push_back(QString("def RebuildData( theStudy ):"));
@@ -66,3 +80,26 @@ bool PVGUI_DataModel::dumpPython( const QString& path, CAM_Study* std,
   return true;
 }
 
+/*-----------------------------------------------------------------------------------------*/
+bool PVGUI_DataModel::open( const QString& theName, CAM_Study* theStudy, QStringList theList) {
+  bool res = LightApp_DataModel::open(theName, theStudy, theList);
+  publishComponent(theStudy);
+  return res;
+}
+
+/*-----------------------------------------------------------------------------------------*/
+bool PVGUI_DataModel::create( CAM_Study* theStudy) {
+  bool res = LightApp_DataModel::create(theStudy);
+  publishComponent(theStudy);
+  return res;
+}
+/*-----------------------------------------------------------------------------------------*/
+void PVGUI_DataModel::publishComponent( CAM_Study* theStudy ) {
+  LightApp_Study* study = dynamic_cast<LightApp_Study*>( theStudy );
+  CAM_ModuleObject *aModelRoot = dynamic_cast<CAM_ModuleObject*>( root());
+  if( study && aModelRoot == NULL ) {
+    aModelRoot = createModuleObject( theStudy->root() );
+    aModelRoot->setDataModel( this );
+    setRoot(aModelRoot);
+  }
+}
index 7bd0f93e7f7b50dc57f5e6f6fe212a2513991c28..755e0e28075416b3cc8218d730f610bbb1772452 100644 (file)
@@ -40,7 +40,11 @@ public:
   virtual ~PVGUI_DataModel();
 
   virtual bool dumpPython( const QString&,  CAM_Study*, bool, QStringList& );
+  virtual bool open( const QString&, CAM_Study*, QStringList );
+  virtual bool create( CAM_Study* );
 
+private:
+  void publishComponent(CAM_Study*);
 };
 
 #endif /* PVGUIDATAMODEL_H_ */
index 0010354d5dbbf2657cc770fba0ac57cabcce12bb..a2c635481c51fa16b9da8e03c911f90c37c1f84d 100644 (file)
 #undef HAVE_FINITE            // VSR: avoid compilation warning on Linux : "HAVE_FINITE" redefined
 #endif
 #include <vtkPython.h> // Python first
-#include "PVGUI_Module.h"
 
-#include CORBA_SERVER_HEADER(SALOME_ModuleCatalog)
-#include CORBA_SERVER_HEADER(SALOMEDS)
+#include "PVGUI_Module.h"
 
 #include "PVViewer_ViewManager.h"
 #include "PVViewer_ViewWindow.h"
 #include "PVViewer_ViewModel.h"
-#include "PVGUI_Tools.h"
 #include "PVGUI_ParaViewSettingsPane.h"
 #include "PVViewer_GUIElements.h"
 #include "PVViewer_EngineWrapper.h"
 #include <SUIT_OverrideCursor.h>
 #include <SUIT_ExceptionHandler.h>
 
-#include <SALOME_LifeCycleCORBA.hxx>
-#include <SALOMEDS_SObject.hxx>
-
 #include <LightApp_SelectionMgr.h>
 #include <LightApp_NameDlg.h>
 #include <LightApp_Application.h>
-#include <SalomeApp_Application.h>  // should ultimately be a LightApp only
-#include <SalomeApp_Study.h>
+#include <LightApp_Study.h>
 #include <SALOME_ListIO.hxx>
-#include <SALOMEDS_Tool.hxx>
-#include <Utils_ORB_INIT.hxx>
-#include <Utils_SINGLETON.hxx>
 
 #include <QtxActionMenuMgr.h>
 #include <QtxActionToolMgr.h>
 #include <vtkSMTrace.h>
 #include <vtkSMSessionProxyManager.h>
 #include <vtkSMParaViewPipelineController.h>
+#include <vtkSmartPyObject.h>
 
 #include <pqApplicationCore.h>
 #include <pqPVApplicationCore.h>
 
 //----------------------------------------------------------------------------
 PVGUI_Module* ParavisModule = 0;
-PVSERVER_ORB::PVSERVER_Gen_var PVGUI_Module::MyEngine;
 
 /*!
   \mainpage
@@ -154,46 +144,6 @@ PVSERVER_ORB::PVSERVER_Gen_var PVGUI_Module::MyEngine;
          SALOME module wrapping ParaView GUI.
 */
 
-_PTR(SComponent)
-ClientFindOrCreateParavisComponent(_PTR(Study) theStudyDocument)
-{
-  _PTR(SComponent) aSComponent = theStudyDocument->FindComponent("PVSERVER");
-  if (!aSComponent) {
-    _PTR(StudyBuilder) aStudyBuilder = theStudyDocument->NewBuilder();
-    aStudyBuilder->NewCommand();
-    int aLocked = theStudyDocument->GetProperties()->IsLocked();
-    if (aLocked) theStudyDocument->GetProperties()->SetLocked(false);
-    aSComponent = aStudyBuilder->NewComponent("PVSERVER");
-    _PTR(GenericAttribute) anAttr =
-      aStudyBuilder->FindOrCreateAttribute(aSComponent, "AttributeName");
-    _PTR(AttributeName) aName (anAttr);
-
-    ORB_INIT& init = *SINGLETON_<ORB_INIT>::Instance();
-    CORBA::ORB_var anORB = init( qApp->argc(), qApp->argv() );
-
-    SALOME_NamingService *NamingService = new SALOME_NamingService( anORB );
-    CORBA::Object_var objVarN = NamingService->Resolve("/Kernel/ModulCatalog");
-    SALOME_ModuleCatalog::ModuleCatalog_var Catalogue =
-      SALOME_ModuleCatalog::ModuleCatalog::_narrow(objVarN);
-    SALOME_ModuleCatalog::Acomponent_var Comp = Catalogue->GetComponent( "PVSERVER" );
-    if (!Comp->_is_nil()) {
-      aName->SetValue(Comp->componentusername());
-    }
-
-    anAttr = aStudyBuilder->FindOrCreateAttribute(aSComponent, "AttributePixMap");
-    _PTR(AttributePixMap) aPixmap (anAttr);
-    aPixmap->SetPixMap( "pqAppIcon16.png" );
-
-    // Create Attribute parameters for future using
-    anAttr = aStudyBuilder->FindOrCreateAttribute(aSComponent, "AttributeParameter");
-
-    aStudyBuilder->DefineComponentInstance(aSComponent, PVGUI_Module::GetCPPEngine()->GetIOR());
-    if (aLocked) theStudyDocument->GetProperties()->SetLocked(true);
-    aStudyBuilder->CommitCommand();
-  }
-  return aSComponent;
-}
-
 /*!
   \brief Clean up function
 
@@ -212,18 +162,14 @@ void paravisCleanUp()
   \brief Constructor. Sets the default name for the module.
 */
 PVGUI_Module::PVGUI_Module()
-    : SalomeApp_Module( PARAVIS_MODULE_NAME ),
-    mySelectionControlsTb( -1 ),
+  : LightApp_Module( PARAVIS_MODULE_NAME ),
     mySourcesMenuId( -1 ),
     myFiltersMenuId( -1 ),
     myMacrosMenuId(-1),
-    myToolbarsMenuId(-1),
     myRecentMenuId(-1),
     myOldMsgHandler(0),
     myTraceWindow(0),
-    myStateCounter(0),
     myInitTimer(0),
-    myPushTraceTimer(0),
     myGuiElements(0)
 {
 #ifdef HAS_PV_DOC
@@ -251,40 +197,21 @@ PVGUI_Module::PVGUI_Module()
 */
 PVGUI_Module::~PVGUI_Module()
 {
-  if (myPushTraceTimer)
-    delete myPushTraceTimer;
   if (myInitTimer)
     delete myInitTimer;
 }
 
 /*!
* \brief Retrieve the PVSERVER CORBA engine.
* This uses the Python wrapper provided
* by the PVViewer code in GUI (class PVViewer_EngineWrapper).
* \sa GetCPPEngine()
- */
-PVViewer_EngineWrapper * PVGUI_Module::GetEngine()
+  \brief Retrieve the PVSERVER CORBA engine.
+  This uses the Python wrapper provided
+  by the PVViewer code in GUI (class PVViewer_EngineWrapper).
+  \sa GetCPPEngine()
+*/
+PVViewer_EngineWrapper* PVGUI_Module::GetEngine()
 {
   return PVViewer_EngineWrapper::GetInstance();
 }
 
-/*!
- * \brief Retrieve the PVSERVER CORBA engine.
- * Uses directly the standard Salome C++ mechanisms
- * (LifeCycleCorba).
- * \sa GetEngine()
- */
-PVSERVER_ORB::PVSERVER_Gen_var PVGUI_Module::GetCPPEngine()
-{
-  // initialize PARAVIS module engine (load, if necessary)
-  if ( CORBA::is_nil( MyEngine ) ) {
-      Engines::EngineComponent_var comp =
-          SalomeApp_Application::lcc()->FindOrLoad_Component( "FactoryServer", "PVSERVER" );
-      MyEngine = PVSERVER_ORB::PVSERVER_Gen::_narrow( comp );
- }
-  return MyEngine;
-}
-
 /*!
   \brief Create data model.
   \return module specific data model
@@ -295,9 +222,9 @@ CAM_DataModel* PVGUI_Module::createDataModel()
 }
 
 /*!
* \brief Get the ParaView application singleton.
- */
-pqPVApplicationCore * PVGUI_Module::GetPVApplication()
+  \brief Get the ParaView application singleton.
+*/
+pqPVApplicationCore* PVGUI_Module::GetPVApplication()
 {
   return PVViewer_ViewManager::GetPVApplication();
 }
@@ -310,9 +237,6 @@ void PVGUI_Module::initialize( CAM_Application* app )
 {
   LightApp_Module::initialize( app );
 
-  createActions();
-  createMenus();
-
   // Uncomment to debug ParaView initialization
   // "aa" used instead of "i" as GDB doesn't like "i" variables :)
   /*
@@ -418,12 +342,6 @@ void PVGUI_Module::initialize( CAM_Application* app )
       QObject::connect(myInitTimer, SIGNAL(timeout()), this, SLOT(onInitTimer()) );
       myInitTimer->setSingleShot(true);
       myInitTimer->start(0);
-
-      // Another timer to regularly push the trace onto the engine:
-      myPushTraceTimer = new QTimer(aDesktop);
-      QObject::connect(myPushTraceTimer, SIGNAL(timeout()), this, SLOT(onPushTraceTimer()) );
-      myPushTraceTimer->setSingleShot(false);
-      myPushTraceTimer->start(500);
     }
 
   this->VTKConnect = vtkEventQtSlotConnect::New();
@@ -466,7 +384,7 @@ void PVGUI_Module::onEndProgress()
 }
 
 void PVGUI_Module::onDataRepresentationUpdated() {
-  SalomeApp_Study* activeStudy = dynamic_cast<SalomeApp_Study*>(application()->activeStudy());
+  LightApp_Study* activeStudy = dynamic_cast<LightApp_Study*>(application()->activeStudy());
   if(!activeStudy) return;
   
   activeStudy->Modified();
@@ -534,6 +452,9 @@ void PVGUI_Module::windows( QMap<int, int>& m ) const
 */
 void PVGUI_Module::showView( bool toShow )
 {
+  // VSR: TODO: all below is not needed, if we use standard approach
+  // that consists in implementing viewManagers() function properly
+  // This should be done after we decide what to do with Log window.
   LightApp_Application* anApp = getApp();
   PVViewer_ViewManager* viewMgr =
     dynamic_cast<PVViewer_ViewManager*>( anApp->getViewManager( PVViewer_Viewer::Type(), false ) );
@@ -562,7 +483,6 @@ void PVGUI_Module::showHelpForProxy( const QString& groupname, const QString& pr
   pqHelpReaction::showProxyHelp(groupname, proxyname);
 }
 
-
 /*!
   \brief Slot to show the waiting state.
 */
@@ -632,7 +552,6 @@ bool PVGUI_Module::activateModule( SUIT_Study* study )
   if ( mySourcesMenuId != -1 ) menuMgr()->show(mySourcesMenuId);
   if ( myFiltersMenuId != -1 ) menuMgr()->show(myFiltersMenuId);
   if ( myMacrosMenuId != -1 ) menuMgr()->show(myMacrosMenuId);
-  if ( myToolbarsMenuId != -1 ) menuMgr()->show(myToolbarsMenuId);
 
   // Update the various menus with the content pre-loaded in myGuiElements
 //  QMenu* srcMenu = menuMgr()->findMenu( mySourcesMenuId );
@@ -665,9 +584,7 @@ bool PVGUI_Module::activateModule( SUIT_Study* study )
   }
 
   if ( myRecentMenuId != -1 ) menuMgr()->show(myRecentMenuId);
-
-  ClientFindOrCreateParavisComponent(PARAVIS::GetCStudy(this));
-
+  
   return isDone;
 }
 
@@ -713,7 +630,6 @@ bool PVGUI_Module::deactivateModule( SUIT_Study* study )
   menuMgr()->hide(mySourcesMenuId);
   menuMgr()->hide(myFiltersMenuId);
   menuMgr()->hide(myMacrosMenuId);
-  menuMgr()->hide(myToolbarsMenuId);
   setMenuShown( false );
   setToolShown( false );
 
@@ -741,28 +657,9 @@ bool PVGUI_Module::deactivateModule( SUIT_Study* study )
 void PVGUI_Module::onApplicationClosed( SUIT_Application* theApp )
 {
   PVViewer_ViewManager::ParaviewCleanup();
-
-  int aAppsNb = SUIT_Session::session()->applications().size();
-  if (aAppsNb == 1) {
-    deleteTemporaryFiles();
-  }
   CAM_Module::onApplicationClosed(theApp);
 }
 
-
-/*!
-  \brief Deletes temporary files created during import operation from VISU
-*/
-void PVGUI_Module::deleteTemporaryFiles()
-{
-  foreach(QString aFile, myTemporaryFiles) {
-    if (QFile::exists(aFile)) {
-      QFile::remove(aFile);
-    }
-  }
-}
-
-
 /*!
   \brief Called when study is closed.
 
@@ -772,110 +669,71 @@ void PVGUI_Module::deleteTemporaryFiles()
 */
 void PVGUI_Module::studyClosed(SUIT_Study* study)
 {
-  showView(false);
+  showView(false); // VSR: this seems to be not needed (all views are automatically closed)
   clearParaviewState();
+  //Re-start trace 
+  onRestartTrace();
 
   LightApp_Module::studyClosed(study);
 }
 
-/*!
-  \brief Called when study is opened.
-*/
-void PVGUI_Module::onModelOpened()
-{
-  _PTR(Study) studyDS = PARAVIS::GetCStudy(this);
-  if(!studyDS) {
-    return;
-  }
-
-  _PTR(SComponent) paravisComp =
-    studyDS->FindComponent(PARAVIS_MODULE_NAME);
-  if(!paravisComp) {
-    return;
-  }
-
-  _PTR(ChildIterator) anIter(studyDS->NewChildIterator(paravisComp));
-  for (; anIter->More(); anIter->Next()) {
-    _PTR(SObject) aSObj = anIter->Value();
-    _PTR(GenericAttribute) anAttr;
-    if (!aSObj->FindAttribute(anAttr, "AttributeLocalID")) {
-      continue;
-    }
-    _PTR(AttributeLocalID) anID(anAttr);
-    if (anID->Value() == PVSTATEID) {
-      myStateCounter++;
-    }
-  }
-}
-
-/*!
-\brief Returns IOR of current engine
-*/
-QString PVGUI_Module::engineIOR() const
-{
-  CORBA::String_var anIOR = GetCPPEngine()->GetIOR();
-  return QString(anIOR.in());
-}
-
 /*!
   \brief Open file of format supported by ParaView
 */
-void PVGUI_Module::openFile(const char* theName)
+void PVGUI_Module::openFile( const char* theName )
 {
   QStringList aFiles;
-  aFiles<<theName;
-  pqLoadDataReaction::loadData(aFiles);
+  aFiles << theName;
+  pqLoadDataReaction::loadData( aFiles );
 }
 
-/**!
* \brief Starts Python trace.
- *
* Start trace invoking the newly introduced C++ API (PV 4.2)
* (inspired from pqTraceReaction::start())
- */
+/*!
+  \brief Starts Python trace.
+  Start trace invoking the newly introduced C++ API (PV 4.2)
+  (inspired from pqTraceReaction::start())
+*/
 void PVGUI_Module::startTrace()
 {
   vtkSMSessionProxyManager* pxm = pqActiveObjects::instance().activeServer()->proxyManager();
 
   vtkSmartPointer<vtkSMProxy> proxy;
-  proxy.TakeReference(pxm->NewProxy("pythontracing", "PythonTraceOptions"));
-  if (proxy)
-    {
-      vtkNew<vtkSMParaViewPipelineController> controller;
-      controller->InitializeProxy(proxy);
-    }
+  proxy.TakeReference( pxm->NewProxy( "pythontracing", "PythonTraceOptions" ) );
+  if ( proxy ) {
+    vtkNew<vtkSMParaViewPipelineController> controller;
+    controller->InitializeProxy( proxy );
+  }
   vtkSMTrace* trace = vtkSMTrace::StartTrace();
-  if (proxy)
-    {
-      // Set manually the properties entered via the dialog box poping-up when requiring
-      // a trace start in PV4.2 (trace options)
-      trace->SetPropertiesToTraceOnCreate(vtkSMTrace::RECORD_USER_MODIFIED_PROPERTIES);
-      trace->SetFullyTraceSupplementalProxies(false);
-    }
+  if ( proxy ) {
+    // Set manually the properties entered via the dialog box poping-up when requiring
+    // a trace start in PV4.2 (trace options)
+    trace->SetPropertiesToTraceOnCreate( vtkSMTrace::RECORD_USER_MODIFIED_PROPERTIES );
+    trace->SetFullyTraceSupplementalProxies( false );
+  }
 }
 
-/**!
* \brief Stops Python trace.
- */
+/*!
+  \brief Stops Python trace.
+*/
 void PVGUI_Module::stopTrace()
 {
   vtkSMTrace::StopTrace();
 }
 
-/**!
* \brief Execute a Python script.
- */
-void PVGUI_Module::executeScript(const char *script)
+/*!
+  \brief Execute a Python script.
+*/
+void PVGUI_Module::executeScript( const char* script )
 {
 #ifndef WNT
   pqPythonManager* manager = qobject_cast<pqPythonManager*>(
-                             pqApplicationCore::instance()->manager("PYTHON_MANAGER"));
-  if (manager)  {
+                             pqApplicationCore::instance()->manager( "PYTHON_MANAGER" ) );
+  if ( manager )  {
     pqPythonDialog* pyDiag = manager->pythonShellDialog();
-    if (pyDiag) {
+    if ( pyDiag ) {
       pyDiag->runString(script);  
-      }
     }
+  }
 #endif
 }
 
@@ -905,44 +763,67 @@ void PVGUI_Module::executeScript(const char *script)
 /*!
   \brief Returns trace string
 */
-static const QString MYReplaceStr("paraview.simple");
 QString PVGUI_Module::getTraceString()
 {
-  vtkSMTrace *tracer = vtkSMTrace::GetActiveTracer();
-  if (!tracer) // trace is not started
-    return QString("");
-
-  QString traceString(tracer->GetCurrentTrace());
-  std::stringstream nl; nl << std::endl; // surely there is some Qt trick to do that in a portable way??
-  QString end_line(nl.str().c_str());
-  // 'import pvsimple' is necessary to fix the first call to DisableFirstRenderCamera in the paraview trace
-  // 'ShowParaviewView()' ensure there is an opened viewing window (otherwise SEGFAULT!)
-  traceString = "import pvsimple" + end_line +
-                "pvsimple.ShowParaviewView()" + end_line + traceString;
-
-  // Replace import "paraview.simple" by "pvsimple"
-  if ((!traceString.isNull()) && traceString.length() != 0) {
-    int aPos = traceString.indexOf(MYReplaceStr);
-    while (aPos != -1) {
-      traceString = traceString.replace(aPos, MYReplaceStr.length(), "pvsimple");
-      aPos = traceString.indexOf(MYReplaceStr, aPos);
+  QString traceString = "";
+
+  static const QString replaceStr( "paraview.simple" );
+  std::stringstream nl;
+  nl << std::endl; // surely there is some Qt trick to do that in a portable way??
+  QString end_line( nl.str().c_str() );
+
+  vtkSMTrace* tracer = vtkSMTrace::GetActiveTracer();
+  if ( tracer ) {
+    traceString = tracer->GetCurrentTrace();
+    // 'import pvsimple' is necessary to fix the first call to DisableFirstRenderCamera in the paraview trace
+    // 'ShowParaviewView()' ensure there is an opened viewing window (otherwise SEGFAULT!)
+    traceString = "import pvsimple" + end_line +
+      "pvsimple.ShowParaviewView()" + end_line + traceString;
+
+    // Replace import "paraview.simple" by "pvsimple"
+    if ( !traceString.isEmpty() ) {
+      int aPos = traceString.indexOf( replaceStr );
+      while ( aPos != -1 ) {
+        traceString = traceString.replace( aPos, replaceStr.length(), "pvsimple" );
+        aPos = traceString.indexOf( replaceStr, aPos );
+      }
     }
   }
 
+  // Save camera position to, which is no longer output by the tracer ...
+  VTK_PY_GIL_ENSURE
+  PyObject * mods(PySys_GetObject(const_cast<char*>("modules")));
+  PyObject * trace_mod(PyDict_GetItemString(mods, "paraview.smtrace"));  // module was already (really) imported by vtkSMTrace
+  if (PyModule_Check(trace_mod)) {
+      vtkSmartPyObject save_cam(PyObject_GetAttrString(trace_mod, const_cast<char*>("SaveCameras")));
+      vtkSmartPyObject camera_trace(PyObject_CallMethod(save_cam, const_cast<char*>("get_trace"), NULL));
+      // Convert to a single string
+      vtkSmartPyObject ret(PyString_FromString(end_line.toStdString().c_str()));
+      vtkSmartPyObject final_string(PyObject_CallMethod(ret, const_cast<char*>("join"),
+          const_cast<char*>("O"), (PyObject*)camera_trace));
+      if (PyString_CheckExact(final_string))
+        {
+          QString camera_qs(PyString_AsString(final_string));  // deep copy
+          traceString = traceString + end_line  + end_line + QString("#### saving camera placements for all active views")
+              + end_line + end_line + camera_qs + end_line;
+        }
+    }
+  VTK_PY_GIL_RELEASE
+
   return traceString;
 }
 
 /*!
   \brief Saves trace string to disk file
 */
-void PVGUI_Module::saveTrace(const char* theName)
+void PVGUI_Module::saveTrace( const char* theName )
 {
-  QFile file(theName);
-  if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
+  QFile file( theName );
+  if ( !file.open( QIODevice::WriteOnly | QIODevice::Text ) ) {
     MESSAGE( "Could not open file:" << theName );
     return;
   }
-  QTextStream out(&file);
+  QTextStream out( &file );
   out << getTraceString();
   file.close();
 }
@@ -950,9 +831,9 @@ void PVGUI_Module::saveTrace(const char* theName)
 /*!
   \brief Saves ParaView state to a disk file
 */
-void PVGUI_Module::saveParaviewState(const char* theFileName)
+void PVGUI_Module::saveParaviewState( const char* theFileName )
 {
-  pqApplicationCore::instance()->saveState(theFileName);
+  pqApplicationCore::instance()->saveState( theFileName );
 }
 
 /*!
@@ -960,20 +841,18 @@ void PVGUI_Module::saveParaviewState(const char* theFileName)
 */
 void PVGUI_Module::clearParaviewState()
 {
-  QAction* deleteAllAction = action(DeleteAllId);
-  if (deleteAllAction) {
-    deleteAllAction->activate(QAction::Trigger);
+  QAction* deleteAllAction = action( DeleteAllId );
+  if ( deleteAllAction ) {
+    deleteAllAction->activate( QAction::Trigger );
   }
 }
 
 /*!
   \brief Restores ParaView state from a disk file
-
-  If toClear == true, the current ojects will be deleted
 */
-void PVGUI_Module::loadParaviewState(const char* theFileName)
+void PVGUI_Module::loadParaviewState( const char* theFileName )
 {
-  pqApplicationCore::instance()->loadState(theFileName, getActiveServer());
+  pqApplicationCore::instance()->loadState( theFileName, getActiveServer() );
 }
 
 /*!
@@ -994,97 +873,30 @@ void PVGUI_Module::createPreferences()
   int aParaViewSettingsTab = addPreference( tr( "TIT_PVIEWSETTINGS" ) );
 
   setPreferenceProperty(aParaViewSettingsTab, "stretch", false );
-  int aPanel = addPreference(QString(), aParaViewSettingsTab, LightApp_Preferences::UserDefined, PARAVIS_MODULE_NAME, "");
+  int aPanel = addPreference( QString(), aParaViewSettingsTab,
+                              LightApp_Preferences::UserDefined, PARAVIS_MODULE_NAME, "" );
 
-  setPreferenceProperty(aPanel, "content", (qint64)(new PVGUI_ParaViewSettingsPane(0, getApp())));
+  setPreferenceProperty( aPanel, "content", (qint64)( new PVGUI_ParaViewSettingsPane( 0, getApp() ) ) );
 
   // Paravis settings tab
   int aParaVisSettingsTab = addPreference( tr( "TIT_PVISSETTINGS" ) );
-  addPreference( tr( "PREF_STOP_TRACE" ), aParaVisSettingsTab, LightApp_Preferences::Bool, PARAVIS_MODULE_NAME, "stop_trace");
+  addPreference( tr( "PREF_STOP_TRACE" ), aParaVisSettingsTab, 
+                 LightApp_Preferences::Bool, PARAVIS_MODULE_NAME, "stop_trace" );
 
-  addPreference( tr( "PREF_NO_EXT_PVSERVER" ), aParaVisSettingsTab, LightApp_Preferences::Bool, PARAVIS_MODULE_NAME, "no_ext_pv_server");
+  addPreference( tr( "PREF_NO_EXT_PVSERVER" ), aParaVisSettingsTab, 
+                 LightApp_Preferences::Bool, PARAVIS_MODULE_NAME, "no_ext_pv_server" );
 
-  int aSaveType = addPreference(tr( "PREF_SAVE_TYPE_LBL" ), aParaVisSettingsTab,
-                                LightApp_Preferences::Selector,
-                                PARAVIS_MODULE_NAME, "savestate_type");
+  int aSaveType = addPreference( tr( "PREF_SAVE_TYPE_LBL" ), aParaVisSettingsTab,
+                                 LightApp_Preferences::Selector,
+                                 PARAVIS_MODULE_NAME, "savestate_type" );
   QList<QVariant> aIndices;
   QStringList aStrings;
-  aIndices<<0<<1<<2;
-  aStrings<<tr("PREF_SAVE_TYPE_0");
-  aStrings<<tr("PREF_SAVE_TYPE_1");
-  aStrings<<tr("PREF_SAVE_TYPE_2");
-  setPreferenceProperty(aSaveType, "strings", aStrings);
-  setPreferenceProperty(aSaveType, "indexes", aIndices);
-}
-
-/*!
-  \brief Creates ParaViS context menu popup
-*/
-void PVGUI_Module::contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle)
-{
-  LightApp_Module::contextMenuPopup(theClient, theMenu, theTitle);
-
-  // Check if we are in Object Browser
-  SUIT_DataBrowser* ob = getApp()->objectBrowser();
-  bool isOBClient = (ob && theClient == ob->popupClientType());
-  if (!isOBClient) {
-    return;
-  }
-
-  // Get list of selected objects
-  LightApp_SelectionMgr* aSelectionMgr = getApp()->selectionMgr();
-  SALOME_ListIO aListIO;
-  aSelectionMgr->selectedObjects(aListIO);
-  if (aListIO.Extent() == 1 && aListIO.First()->hasEntry()) {
-    QString entry = QString(aListIO.First()->getEntry());
-
-    // Get active study
-    SalomeApp_Study* activeStudy =
-      dynamic_cast<SalomeApp_Study*>(getApp()->activeStudy());
-    if(!activeStudy) {
-      return;
-    }
-
-    // Get SALOMEDS client study
-    _PTR(Study) studyDS = activeStudy->studyDS();
-    if(!studyDS) {
-      return;
-    }
-
-    QString paravisDataType(PARAVIS_MODULE_NAME);
-    if(activeStudy && activeStudy->isComponent(entry) &&
-       activeStudy->componentDataType(entry) == paravisDataType) {
-      // ParaViS module object
-      theMenu->addSeparator();
-      theMenu->addAction(action(SaveStatePopupId));
-    }
-    else {
-      // Try to get state object
-      _PTR(SObject) stateSObj =
-          studyDS->FindObjectID(entry.toLatin1().constData());
-      if (!stateSObj) {
-          return;
-      }
-
-      // Check local id
-      _PTR(GenericAttribute) anAttr;
-      if (!stateSObj->FindAttribute(anAttr, "AttributeLocalID")) {
-          return;
-      }
-
-      _PTR(AttributeLocalID) anID(anAttr);
-
-      if (anID->Value() == PVSTATEID) {
-        // Paraview state object
-        theMenu->addSeparator();
-        theMenu->addAction(action(AddStatePopupId));
-        theMenu->addAction(action(CleanAndAddStatePopupId));
-        theMenu->addSeparator();
-        theMenu->addAction(action(ParaVisRenameId));
-        theMenu->addAction(action(ParaVisDeleteId));
-      }
-    }
-  }
+  aIndices << 0 << 1 << 2;
+  aStrings << tr("PREF_SAVE_TYPE_0");
+  aStrings << tr("PREF_SAVE_TYPE_1");
+  aStrings << tr("PREF_SAVE_TYPE_2");
+  setPreferenceProperty( aSaveType, "strings", aStrings );
+  setPreferenceProperty( aSaveType, "indexes", aIndices );
 }
 
 /*!
@@ -1112,294 +924,43 @@ void PVGUI_Module::onRestartTrace()
 }
 
 /*!
-  \brief Save state under the module root object.
+  \brief Called when view manager is added
 */
-void PVGUI_Module::onSaveMultiState()
-{
-  // Create state study object
-  
-  // Get SALOMEDS client study
-  _PTR(Study) studyDS = PARAVIS::GetCStudy(this);
-  if(!studyDS) {
-    return;
-  }
-
-  _PTR(SComponent) paravisComp = 
-      studyDS->FindComponent(PARAVIS_MODULE_NAME);
-  if(!paravisComp) {
-    return;
-  }
-
-  // Unlock the study if it is locked
-  bool isLocked = studyDS->GetProperties()->IsLocked();
-  if (isLocked) {
-    studyDS->GetProperties()->SetLocked(false);
-  }
-  
-  QString stateName = tr("SAVED_PARAVIEW_STATE_NAME") + 
-    QString::number(myStateCounter + 1);
-
-  _PTR(StudyBuilder) studyBuilder = studyDS->NewBuilder();
-  _PTR(SObject) newSObj = studyBuilder->NewObject(paravisComp);
-
-  // Set name
-  _PTR(GenericAttribute) anAttr;
-  anAttr = studyBuilder->FindOrCreateAttribute(newSObj, "AttributeName");
-  _PTR(AttributeName) nameAttr(anAttr);
-  
-  nameAttr->SetValue(stateName.toLatin1().constData());
-
-  // Set local id
-  anAttr = studyBuilder->FindOrCreateAttribute(newSObj, "AttributeLocalID");
-  _PTR(AttributeLocalID) localIdAttr(anAttr);
-  
-  localIdAttr->SetValue(PVSTATEID);
-
-  // Set file name
-  QString stateEntry = QString::fromStdString(newSObj->GetID());
-  // File name for state saving
-  QString tmpDir = QString::fromStdString(SALOMEDS_Tool::GetTmpDir());
-  QString fileName = QString("%1_paravisstate:%2").arg(tmpDir, stateEntry);
-
-  anAttr = studyBuilder->FindOrCreateAttribute(newSObj, "AttributeString");
-  _PTR(AttributeString) stringAttr(anAttr);
-  
-  stringAttr->SetValue(fileName.toLatin1().constData());
-
-  // Lock the study back if necessary
-  if (isLocked) {
-    studyDS->GetProperties()->SetLocked(true);
-  }
-  
-  // Save state
-  saveParaviewState(fileName.toLatin1().constData());
-  myTemporaryFiles.append(fileName);
-  
-  // Increment the counter
-  myStateCounter++;
-
-  updateObjBrowser();
-}
-
-/*!
-  \brief Restore the selected state by merging with the current one.
-*/
-void PVGUI_Module::onAddState()
-{
-  loadSelectedState(false);
-}
-
-/*!
-  \brief Clean the current state and restore the selected one.
-*/
-void PVGUI_Module::onCleanAddState()
-{
-  loadSelectedState(true);
-}
-
-/*!
-  \brief Rename the selected object.
-*/
-void PVGUI_Module::onRename()
-{
-  LightApp_SelectionMgr* aSelectionMgr = getApp()->selectionMgr();
-  SALOME_ListIO aListIO;
-  aSelectionMgr->selectedObjects(aListIO);
-  
-  if (aListIO.Extent() == 1 && aListIO.First()->hasEntry()) {
-    std::string entry = aListIO.First()->getEntry();
-    
-    // Get SALOMEDS client study 
-    _PTR(Study) studyDS = PARAVIS::GetCStudy(this);
-    if(!studyDS) {
-      return;
-    }
-    
-    // Unlock the study if it is locked
-    bool isLocked = studyDS->GetProperties()->IsLocked();
-    if (isLocked) {
-      studyDS->GetProperties()->SetLocked(false);
-    }
-    
-    // Rename the selected state object
-    _PTR(SObject) stateSObj = studyDS->FindObjectID(entry);
-    if (!stateSObj) {
-      return;
-    }
-    
-    _PTR(GenericAttribute) anAttr;
-    if (stateSObj->FindAttribute(anAttr, "AttributeName")) {
-      _PTR(AttributeName) nameAttr (anAttr);
-      QString newName = 
-          LightApp_NameDlg::getName(getApp()->desktop(), nameAttr->Value().c_str());
-      if (!newName.isEmpty()) {
-        nameAttr->SetValue(newName.toLatin1().constData());
-        aListIO.First()->setName(newName.toLatin1().constData());
-      }
-    }
-    
-    // Lock the study back if necessary
-    if (isLocked) {
-      studyDS->GetProperties()->SetLocked(true);
-    }
-    
-    // Update object browser
-    updateObjBrowser();
-    
-  }
-}
-
-/*!
-  \brief Delete the selected objects.
-*/
-void PVGUI_Module::onDelete()
-{
-  LightApp_SelectionMgr* aSelectionMgr = getApp()->selectionMgr();
-  SALOME_ListIO aListIO;
-  aSelectionMgr->selectedObjects(aListIO);
-  
-  if (aListIO.Extent() == 1 && aListIO.First()->hasEntry()) {
-    std::string entry = aListIO.First()->getEntry();
-    
-    // Get SALOMEDS client study 
-    _PTR(Study) studyDS = PARAVIS::GetCStudy(this);
-    if(!studyDS) {
-      return;
-    }
-    
-    // Unlock the study if it is locked
-    bool isLocked = studyDS->GetProperties()->IsLocked();
-    if (isLocked) {
-      studyDS->GetProperties()->SetLocked(false);
-    }
-    
-    // Remove the selected state from the study
-    _PTR(StudyBuilder) studyBuilder = studyDS->NewBuilder();
-    _PTR(SObject) stateSObj = studyDS->FindObjectID(entry);
-    studyBuilder->RemoveObject(stateSObj);
-    
-    // Lock the study back if necessary
-    if (isLocked) {
-      studyDS->GetProperties()->SetLocked(true);
-    }
-    
-    // Update object browser
-    updateObjBrowser();
-  }
-}
-
-/*!
- * \brief Slot called everytime the Python trace is pushed onto the CORBA engine.
- */
-void PVGUI_Module::onPushTraceTimer()
+void PVGUI_Module::onViewManagerAdded( SUIT_ViewManager* vm )
 {
-  //MESSAGE("onPushTraceTimer(): Pushing trace to engine...");
-  GetEngine()->PutPythonTraceStringToEngine(getTraceString().toStdString().c_str());
-}
-
-/*!
-  \brief Discover help project files from the resources.
-  \return name of the help file. 
-*/
-QString PVGUI_Module::getHelpFileName() {
-  QString aPVHome(getenv("PVHOME"));
-  if (aPVHome.isNull()) {
-    qWarning("Variable PVHOME is not defined");
-    return QString();
+  if ( PVViewer_ViewManager* pvvm = dynamic_cast<PVViewer_ViewManager*>( vm ) ) {
+    connect( pvvm, SIGNAL( viewCreated( SUIT_ViewWindow* ) ), 
+             this, SLOT( onPVViewCreated( SUIT_ViewWindow* ) ) );
+    connect( pvvm, SIGNAL( deleteView( SUIT_ViewWindow* ) ),
+             this,  SLOT( onPVViewDelete( SUIT_ViewWindow* ) ) );
   }
-  QChar aSep = QDir::separator();
-  //PARAVIEW_VERSION from the vtkPVConfig.h file
-  QString aFileName =  aPVHome + aSep + "share" + aSep + "doc" + aSep + "paraview-"+ PARAVIEW_VERSION + aSep + "paraview.qch";
-  return aFileName;
 }
 
-
 /*!
-  \brief Load selected paraview state
-
-  If toClear == true, the current state will be cleared
+  \brief Called when view manager is removed
 */
-void PVGUI_Module::loadSelectedState(bool toClear)
-{
-  QString fileName;
-
-  LightApp_SelectionMgr* aSelectionMgr = getApp()->selectionMgr();
-  SALOME_ListIO aListIO;
-  aSelectionMgr->selectedObjects(aListIO);
-  
-  if (aListIO.Extent() == 1 && aListIO.First()->hasEntry()) {
-    std::string entry = aListIO.First()->getEntry();
-    
-    // Get SALOMEDS client study 
-    _PTR(Study) studyDS = PARAVIS::GetCStudy(this);
-    if(!studyDS) {
-      return;
-    }
-
-    // Check local id
-    _PTR(SObject) stateSObj = studyDS->FindObjectID(entry);
-    _PTR(GenericAttribute) anAttr;
-    if (!stateSObj->FindAttribute(anAttr, "AttributeLocalID")) {
-      return;
-    }
-    _PTR(AttributeLocalID) anID(anAttr);
-    if (!anID->Value() == PVSTATEID) {
-      return;
-    }
-
-    // Get state file name
-    if (stateSObj->FindAttribute(anAttr, "AttributeString")) {
-      _PTR(AttributeString) aStringAttr(anAttr);
-      QString stringValue(aStringAttr->Value().c_str());
-
-      if (QFile::exists(stringValue)) {
-          fileName = stringValue;
-      }
-    }
-  }
-  
-  if (!fileName.isEmpty()) {
-    if (toClear) {
-      clearParaviewState();
-    }
-
-    loadParaviewState(fileName.toLatin1().constData());
-  } 
-  else {
-    SUIT_MessageBox::critical(getApp()->desktop(),
-                              tr("ERR_ERROR"),
-                              tr("ERR_STATE_CANNOT_BE_RESTORED"));
-  }
-}
-
-void PVGUI_Module::onViewManagerAdded( SUIT_ViewManager* vm )
-{
-  if (PVViewer_ViewManager* pvvm = dynamic_cast<PVViewer_ViewManager*>(vm)) {
-    connect(pvvm, SIGNAL(viewCreated(SUIT_ViewWindow*)), this, SLOT(onPVViewCreated(SUIT_ViewWindow*)));
-    connect(pvvm, SIGNAL(deleteView(SUIT_ViewWindow*)), this, SLOT(onPVViewDelete(SUIT_ViewWindow*)));
-    }
-}
-
 void PVGUI_Module::onViewManagerRemoved( SUIT_ViewManager* vm )
 {
-  if (PVViewer_ViewManager* pvvm = dynamic_cast<PVViewer_ViewManager*>(vm))
-    disconnect(pvvm, SIGNAL(viewCreated(SUIT_ViewWindow*)), this, SLOT(onPVViewCreated(SUIT_ViewWindow*)));
+  if ( PVViewer_ViewManager* pvvm = dynamic_cast<PVViewer_ViewManager*>( vm ) )
+    disconnect( pvvm, SIGNAL( viewCreated( SUIT_ViewWindow* ) ),
+                this, SLOT( onPVViewCreated( SUIT_ViewWindow* ) ) );
 }
 
-/*!Show toolbars at \a vw PV view window creating when PARAVIS is active.
+/*!
+  \brief Show toolbars at \a vw PV view window creating when PARAVIS is active.
 */
 void PVGUI_Module::onPVViewCreated( SUIT_ViewWindow* vw )
 {
-  myGuiElements->setToolBarVisible(true);
+  myGuiElements->setToolBarVisible( true );
   restoreDockWidgetsState();
 }
 
-/*!Save toolbars state at \a view view closing.
+/*!
+  \brief Save toolbars state at \a view view closing.
 */
-void PVGUI_Module::onPVViewDelete(SUIT_ViewWindow* view)
+void PVGUI_Module::onPVViewDelete( SUIT_ViewWindow* view )
 {
-  if (dynamic_cast<PVViewer_ViewWindow*>(view))
+  if ( dynamic_cast<PVViewer_ViewWindow*>( view ) )
     saveDockWidgetsState( false );
 }
 
index 64340d5fa254e98d2e175b591848c24764a9f0f9..fec7261981b6167685f2ca14a63ccf1096675327 100644 (file)
 #ifndef PVGUI_Module_H
 #define PVGUI_Module_H
 
-#include <SalomeApp_Module.h>
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(PVSERVER_Gen)
-
-#include <ostream>
-#include <vtkType.h>
-#include <QTimer>
-
-#include <pqVariableType.h>
+#include <LightApp_Module.h>
 
 class QMenu;
-class QDockWidget;
-class QToolBar;
-class vtkPVMain;
-class pqOptions;
-class pqServer;
-class pqMainWindowCore;
+class QTimer;
 class vtkEventQtSlotConnect;
+class pqServer;
 class pqPythonScriptEditor;
 class pqPVApplicationCore;
-class pqDataRepresentation;
-class pqRepresentation;
 class PVViewer_GUIElements;
 class PVViewer_EngineWrapper;
 class SUIT_ViewWindow;
 
-class PVGUI_Module : public SalomeApp_Module
+class PVGUI_Module: public LightApp_Module
 {
   Q_OBJECT
    
   //! Menu actions
-  enum { // Menu "File"
-     OpenFileId,
-
-     LoadStateId,
-     SaveStateId,
-
-     SaveDataId,
-     SaveScreenshotId,
-     ExportId,
-
-     SaveAnimationId,
-     SaveGeometryId,
-
-     ConnectId,
-     DisconnectId,
-
-     // Menu "Edit"
-     UndoId,
-     RedoId,
-
-     CameraUndoId,
-     CameraRedoId,
-
-     FindDataId,
-     ChangeInputId,
-     IgnoreTimeId,
-     DeleteId,
-     DeleteAllId,
-
-     SettingsId,
-     ViewSettingsId,
-
-     // Menu "View"
-     FullScreenId,
-
-     // Menu "Animation"
-     FirstFrameId,
-     PreviousFrameId,
-     PlayId,
-     NextFrameId,
-     LastFrameId,
-     LoopId,
-
-     // Menu "Tools"
-     CreateCustomFilterId,
-     ManageCustomFiltersId,
-     CreateLookmarkId,
-     ManageLinksId,
-     AddCameraLinkId,
-     ManagePluginsExtensionsId,
-     DumpWidgetNamesId,
-     RecordTestId,
-     RecordTestScreenshotId,
-     PlayTestId,
-     MaxWindowSizeId,
-     CustomWindowSizeId,
-     TimerLogId,
-     OutputWindowId,
-     PythonShellId,
-     ShowTraceId,
-     RestartTraceId,
-
-     // Menu "Help"
-     AboutParaViewId,
-     ParaViewHelpId,
-     EnableTooltipsId,
-
-     // Menu "Window" - "New Window"
-     ParaViewNewWindowId,
-
-     // "Save state" ParaVis module root object popup
-     SaveStatePopupId,
-
-     // "Add state" and "Reload state" popups
-     AddStatePopupId,
-     CleanAndAddStatePopupId,
-
-     // "Rename" and "Delete" popups (Object Browser)
-     ParaVisRenameId,
-     ParaVisDeleteId
+  enum {
+    //-----------
+    // Menu "File"
+    OpenFileId,
+    //-
+    LoadStateId,
+    SaveStateId,
+    //-
+    SaveDataId,
+    SaveScreenshotId,
+    ExportId,
+    //-
+    SaveAnimationId,
+    SaveGeometryId,
+    //-
+    ConnectId,
+    DisconnectId,
+    //-----------
+    // Menu "Edit"
+    UndoId,
+    RedoId,
+    //-
+    CameraUndoId,
+    CameraRedoId,
+    //-
+    FindDataId,
+    ChangeInputId,
+    IgnoreTimeId,
+    DeleteId,
+    DeleteAllId,
+    //-
+    SettingsId,             // not used
+    ViewSettingsId,         // not used
+    //-----------
+    // Menu "View"
+    FullScreenId,           // not used
+    //-----------
+    // Menu "Animation"
+    FirstFrameId,           // not used
+    PreviousFrameId,        // not used
+    PlayId,                 // not used
+    NextFrameId,            // not used
+    LastFrameId,            // not used
+    LoopId,                 // not used
+    //-----------
+    // Menu "Tools"
+    CreateCustomFilterId,
+    ManageCustomFiltersId,
+    CreateLookmarkId,       // not used
+    ManageLinksId,
+    AddCameraLinkId,
+    ManagePluginsExtensionsId,
+    DumpWidgetNamesId,      //  not used
+    RecordTestId,
+    RecordTestScreenshotId, // not used
+    PlayTestId,
+    MaxWindowSizeId,
+    CustomWindowSizeId,
+    TimerLogId,
+    OutputWindowId,
+    PythonShellId,
+    ShowTraceId,
+    RestartTraceId,
+    //-----------
+    // Menu "Help"
+    AboutParaViewId,
+    ParaViewHelpId,
+    EnableTooltipsId,       // not used
   };
 
 public:
   PVGUI_Module();
   ~PVGUI_Module();
 
-  virtual void           initialize( CAM_Application* );
-  virtual void           windows( QMap<int, int>& ) const;
-
-  virtual QString engineIOR() const;  // to be removed when becoming Light
+  virtual void initialize( CAM_Application* );
+  virtual void windows( QMap<int, int>& ) const;
 
-  void openFile(const char* theName);
-  void executeScript(const char *script);
-  void saveParaviewState(const char* theFileName);
-  void loadParaviewState(const char* theFileName);
+  void openFile( const char* );                   // not used inside PARAVIS
+  void executeScript( const char* );              // not used inside PARAVIS
+  void saveParaviewState( const char* );          // not used inside PARAVIS
+  void loadParaviewState( const char* );          // not used inside PARAVIS
   void clearParaviewState();
 
   QString getTraceString();
   void startTrace();
   void stopTrace();
-  void saveTrace(const char* theName);
+  void saveTrace( const char* );
 
   pqServer* getActiveServer();
 
   virtual void createPreferences();
 
-  virtual void contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle);
-
-  inline static PVViewer_EngineWrapper * GetEngine();
-  inline static PVSERVER_ORB::PVSERVER_Gen_var GetCPPEngine();  // to be removed once light!
-  inline static pqPVApplicationCore * GetPVApplication();
+  inline static PVViewer_EngineWrapper* GetEngine();
+  inline static pqPVApplicationCore* GetPVApplication(); // not used inside PARAVIS
 
   virtual CAM_DataModel* createDataModel();
-  void  fixAnimationScene();
-
-public slots:
-  //void onImportFromVisu(QString theEntry);
 
 private:
-  void deleteTemporaryFiles();
   //! Create actions for ParaView GUI operations
-  void                   pvCreateActions();
+  void pvCreateActions();
 
   //! Create menus for ParaView GUI operations duplicating menus in pqMainWindow ParaView class
-  void                   pvCreateMenus();
+  void pvCreateMenus();
 
   //! Create toolbars for ParaView GUI operations duplicating toolbars in pqMainWindow ParaView class
-  void                   pvCreateToolBars();
+  void pvCreateToolBars();
 
   //! Create dock widgets for ParaView widgets
-  void                   setupDockWidgets();
+  void setupDockWidgets();
 
   //! Save states of dockable ParaView widgets
-  void                   saveDockWidgetsState( bool hideWidgets = true );
+  void saveDockWidgetsState( bool = true );
 
   //! Restore states of dockable ParaView widgets
-  void                   restoreDockWidgetsState();
+  void restoreDockWidgetsState();
 
   //! Shows or hides ParaView view window
-  void                   showView( bool );    
-
-  //! Returns QMenu object for a given menu id
-  QMenu*                 getMenu( const int );
-  
-  //! Discover help project files from the resources.
-  QString getHelpFileName();
-
-  //! Create actions for ParaViS
-  void createActions();
-
-  //! Create menus for ParaViS
-  void createMenus();
-
-  //! Load selected state
-  void loadSelectedState(bool toClear);
+  void showView( bool );    
 
   //! Get list of embedded macros files
   QStringList getEmbeddedMacrosList();
@@ -227,17 +175,11 @@ private:
   void restoreCommonWindowsState();
 
 private slots:
-
   void showHelpForProxy( const QString&, const QString& );
   
-  void onPreAccept();
-  void onPostAccept();
-  void endWaitCursor();
-
-  //  void buildToolbarsMenu();
-
-  //void showParaViewHelp();
-  //void showHelp(const QString& url);
+  void onPreAccept();    // not used inside PARAVIS
+  void onPostAccept();   // not used inside PARAVIS
+  void endWaitCursor();  // not used inside PARAVIS
 
   void onDataRepresentationUpdated();
 
@@ -246,15 +188,6 @@ private slots:
   void onShowTrace();
   void onRestartTrace();
 
-//  void onNewParaViewWindow();
-
-  void onSaveMultiState();
-  void onAddState();
-  void onCleanAddState();
-
-  void onRename();
-  void onDelete();
-
 public slots:
   virtual bool           activateModule( SUIT_Study* );
   virtual bool           deactivateModule( SUIT_Study* );
@@ -262,8 +195,6 @@ public slots:
   virtual void           studyClosed( SUIT_Study* );
 
 protected slots:
-  virtual void           onModelOpened();
-  virtual void           onPushTraceTimer();
   virtual void           onInitTimer();
   virtual void           onViewManagerAdded( SUIT_ViewManager* );
   virtual void           onViewManagerRemoved( SUIT_ViewManager* );
@@ -271,10 +202,8 @@ protected slots:
   virtual void           onPVViewDelete( SUIT_ViewWindow* );
 
 private:
-  int                    mySelectionControlsTb;
   int                    mySourcesMenuId;
   int                    myFiltersMenuId;
-  int                    myToolbarsMenuId;
   int                    myMacrosMenuId;
   int                    myRecentMenuId;
   
@@ -287,26 +216,16 @@ private:
   typedef QMap<int, bool> DockWindowMap;         
   DockWindowMap           myCommonMap; 
 
-  QStringList            myTemporaryFiles;
-
-  QtMsgHandler           myOldMsgHandler;
-
-  vtkEventQtSlotConnect *VTKConnect;
+  QtMsgHandler            myOldMsgHandler;
 
-  pqPythonScriptEditor* myTraceWindow;
+  vtkEventQtSlotConnect*  VTKConnect;
 
-  int myStateCounter;
+  pqPythonScriptEditor*   myTraceWindow;
 
   //! Single shot timer used to connect to the PVServer, and start the trace.
-  QTimer             * myInitTimer;
-
-  //! Timer used to regularly push the Python trace to the engine.
-  QTimer             * myPushTraceTimer;
-
-  PVViewer_GUIElements * myGuiElements;
-
-  static PVSERVER_ORB::PVSERVER_Gen_var MyEngine;
+  QTimer*                 myInitTimer;
 
+  PVViewer_GUIElements*   myGuiElements;
 };
 
 #endif // PVGUI_Module_H
index c15332f0037286e5d42ee173a0cbd057489a3465..67f3d6cea892e03aaffe40a6774e37134bb1943c 100644 (file)
@@ -32,7 +32,6 @@
 #include <SUIT_Desktop.h>
 #include <SUIT_ResourceMgr.h>
 #include <SUIT_Session.h>
-#include <SalomeApp_Application.h>  // should ultimately be a LightApp only
 #include <LightApp_Application.h>
 
 #include <QAction>
@@ -366,7 +365,7 @@ void PVGUI_Module::pvCreateActions()
   connect(anAction, SIGNAL(triggered()), this, SLOT(onShowTrace()));
   registerAction(ShowTraceId, anAction);
 
-  //Show Trace
+  //Restart Trace
   anAction = new QAction(tr("MEN_RESTART_TRACE"), this);
   anAction->setToolTip(tr("TOP_RESTART_TRACE"));
   anAction->setStatusTip(tr("STB_RESTART_TRACE"));
@@ -461,13 +460,6 @@ void PVGUI_Module::pvCreateMenus()
 
   // --- Menu "View"
   aPVMnu = createMenu( tr( "MEN_DESK_VIEW" ), -1, -1 );
-  /*myToolbarsMenuId = createMenu( "Toolbars", aPVMnu );
-  aMenu = getMenu( myToolbarsMenuId );
-  if (aMenu) {
-    buildToolbarsMenu();
-    connect(aMenu, SIGNAL(aboutToShow()), this, SLOT(buildToolbarsMenu()));
-  }
-  createMenu( separator(), aPVMnu );*/
 
   createMenu( FullScreenId, aPVMnu );
   
@@ -539,119 +531,3 @@ void PVGUI_Module::pvCreateToolBars()
   PVViewer_GUIElements * guiElements = PVViewer_GUIElements::GetInstance(desk);
   guiElements->setToolBarVisible(true);
 }
-
-/*!
-  \brief Returns QMenu by its id.
-*/
-QMenu* PVGUI_Module::getMenu( const int id )
-{
-  QMenu* res = 0;
-  //SalomeApp_Application* anApp = getApp();
-  LightApp_Application* anApp = getApp();
-  SUIT_Desktop* desk = anApp->desktop();
-  if ( desk ){
-    QtxActionMenuMgr* menuMgr = desk->menuMgr();
-    res = menuMgr->findMenu( id );
-  }
-  return res;
-}
-
-/*!
-  \brief Returns list of ParaView toolbars
-*/
-/*QList<QToolBar*> PVGUI_Module::getParaViewToolbars()
-{
-  QList<QToolBar*> all_toolbars = application()->desktop()->findChildren<QToolBar*>();
-  // First two toolbars has to be ignored because they are not from ParaView
-  if (all_toolbars.size() > 2) {
-    all_toolbars.removeFirst();
-    all_toolbars.removeFirst();
-  }
-  return all_toolbars;
-  }*/
-
-
-
-/*!
-  \brief Builds a menu which referred to toolbars
-*/
-/*void PVGUI_Module::buildToolbarsMenu()
-{
-  SUIT_Desktop* desk = application()->desktop();
-  QMenu* aMenu = menuMgr()->findMenu( myToolbarsMenuId );
-  if (aMenu) {
-    aMenu->clear();
-    QList<QMenu*> child_menus = aMenu->findChildren<QMenu*>();
-    foreach (QMenu* menu, child_menus) {
-      delete menu;
-    }
-    QList<QToolBar*> all_toolbars = getParaViewToolbars();
-
-    // Add menus for all toolbars and actions from them.
-    // This puts menu actions for all toolbars making it possible to access all
-    // toolbar actions even when the toolbar are not visible.
-    // I wonder if I should ignore the pqMainControlsToolbar since those actions
-    // are already placed at other places.
-    foreach (QToolBar* toolbar, all_toolbars) {
-      QMenu* sub_menu = new QMenu(aMenu) << pqSetName(toolbar->windowTitle());
-      bool added = false;
-      foreach (QAction* action, toolbar->actions()) {
-        if (!action->text().isEmpty()) {
-          added = true;
-          sub_menu->addAction(action);
-        }
-      }
-      if (added) {
-        QAction* menu_action = aMenu->addMenu(sub_menu);
-        menu_action->setText(toolbar->windowTitle());
-      } else {
-        delete sub_menu;
-      }
-    }
-    disconnect(aMenu, SIGNAL(aboutToShow()), this, SLOT(buildToolbarsMenu()));
-  }
-  }*/
-
-/*!
-  \brief Create actions for ParaViS
-*/
-void PVGUI_Module::createActions()
-{
-  QAction* anAction;
-
-  // Save state under the module root object
-  anAction = new QAction(tr("MEN_SAVE_MULTI_STATE"), this);
-  connect(anAction, SIGNAL(triggered()), this, SLOT(onSaveMultiState()));
-  registerAction(SaveStatePopupId, anAction);
-
-  // Restore the selected state by merging with the current one
-  anAction = new QAction(tr("MEN_ADD_STATE"), this);
-  connect(anAction, SIGNAL(triggered()), this, SLOT(onAddState()));
-  registerAction(AddStatePopupId, anAction);
-
-  // Clean the current state and restore the selected one
-  anAction = new QAction(tr("MEN_CLEAN_ADD_STATE"), this);
-  connect(anAction, SIGNAL(triggered()), this, SLOT(onCleanAddState()));
-  registerAction(CleanAndAddStatePopupId, anAction);
-
-  // Rename the selected object (Object Browser)
-  anAction = new QAction(tr("MEN_PARAVIS_RENAME"), this);
-  connect(anAction, SIGNAL(triggered()), this, SLOT(onRename()));
-  registerAction(ParaVisRenameId, anAction);
-
-  // Delete the selected object (Object Browser)
-  anAction = new QAction(tr("MEN_PARAVIS_DELETE"), this);
-  connect(anAction, SIGNAL(triggered()), this, SLOT(onDelete()));
-  registerAction(ParaVisDeleteId, anAction);
-}
-
-/*!
-  \brief Create actions for ParaViS
-*/
-void PVGUI_Module::createMenus()
-{
-  // "Window" - "New Window" - "ParaView view" menu
-  int aWindowMenu = createMenu(tr( "MEN_DESK_WINDOW" ), -1, -1);
-  int aNewWindowMenu = createMenu(tr( "MEN_DESK_NEWWINDOW"), aWindowMenu, -1, -1);
-  createMenu(ParaViewNewWindowId, aNewWindowMenu);
-}
index a20a3af46b19fca2fc7a9c807e78068f775bdbd3..90898f24cc6cca01307c60cacf20ac0d18fc5d98 100644 (file)
@@ -28,7 +28,6 @@
 
 #include <QtxActionToolMgr.h>
 #include <LightApp_Application.h>
-#include <SalomeApp_Application.h>   // // should ultimately be a LightApp only
 #include <SUIT_Desktop.h>
 
 #include <QApplication>
@@ -414,15 +413,15 @@ void PVGUI_Module::restoreDockWidgetsState()
     dw->toggleViewAction()->setVisible( true );
   }
 
-    // restore toolbar breaks state
-    QMapIterator<QWidget*, bool> it2( myToolbarBreaks );
-    while( it2.hasNext() ) {
-        it2.next();
-        QToolBar* tb = qobject_cast<QToolBar*>( it2.key() );
-        if ( myToolbarBreaks[tb] )
-          desk->insertToolBarBreak( tb );
-    }
-
+  // restore toolbar breaks state
+  QMapIterator<QWidget*, bool> it2( myToolbarBreaks );
+  while( it2.hasNext() ) {
+    it2.next();
+    QToolBar* tb = qobject_cast<QToolBar*>( it2.key() );
+    if ( myToolbarBreaks[tb] )
+      desk->insertToolBarBreak( tb );
+  }
+  
   // restore toolbar visibility state
   QMapIterator<QWidget*, bool> it3( myToolbars );
   while( it3.hasNext() ) {
@@ -451,13 +450,10 @@ void PVGUI_Module::storeCommonWindowsState() {
   //     restoreCommonWindowsState() method, and at the moment of the ParaVis activation we call 
   //     this method.
 
-  //LightApp_Application* anApp = getApp();
-  SalomeApp_Application* anApp = getApp();
+  LightApp_Application* anApp = getApp();
   if(!anApp)
     return;
 
-//  int begin = SalomeApp_Application::WT_ObjectBrowser;
-//  int end = SalomeApp_Application::WT_NoteBook;
   int begin = LightApp_Application::WT_ObjectBrowser;
   int end = LightApp_Application::WT_User;
   for( int i = begin; i <= end; i++ ) {
@@ -466,15 +462,15 @@ void PVGUI_Module::storeCommonWindowsState() {
       QDockWidget* dock = 0;
       QWidget* w = wg->parentWidget();
       while ( w && !dock ) {
-          dock = ::qobject_cast<QDockWidget*>( w );
-          w = w->parentWidget();
+        dock = ::qobject_cast<QDockWidget*>( w );
+        w = w->parentWidget();
       }
       if(dock){
-          if(!myCommonMap.contains(i)){
-              myCommonMap.insert(i,dock->isVisible());
-          } else {
-              myCommonMap[i] = dock->isVisible();
-          }
+        if(!myCommonMap.contains(i)){
+          myCommonMap.insert(i,dock->isVisible());
+        } else {
+          myCommonMap[i] = dock->isVisible();
+        }
       }
     }
   }
@@ -484,8 +480,7 @@ void PVGUI_Module::storeCommonWindowsState() {
   \brief Restore visibility of the common dockable windows (OB, PyConsole, ... etc.)
 */
 void PVGUI_Module::restoreCommonWindowsState() {
-  SalomeApp_Application* anApp = getApp();
-//  LightApp_Application* anApp = getApp();
+  LightApp_Application* anApp = getApp();
   if(!anApp)
     return;
   DockWindowMap::const_iterator it = myCommonMap.begin();
@@ -495,11 +490,11 @@ void PVGUI_Module::restoreCommonWindowsState() {
       QDockWidget* dock = 0;
       QWidget* w = wg->parentWidget();
       while ( w && !dock ) {
-          dock = ::qobject_cast<QDockWidget*>( w );
-          w = w->parentWidget();
+        dock = ::qobject_cast<QDockWidget*>( w );
+        w = w->parentWidget();
       }
       if(dock) {
-          dock->setVisible(it.value());
+        dock->setVisible(it.value());
       }
     }
   }
diff --git a/src/PVGUI/PVGUI_Tools.cxx b/src/PVGUI/PVGUI_Tools.cxx
deleted file mode 100644 (file)
index f7764b6..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2010-2015  CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-//  File   : PVGUI_Tools.cxx
-//  Author : Vitaly Smetannikov
-//  Module : PARAVIS
-
-#include "PVGUI_Tools.h"
-#include "CAM_Module.h"
-#include "SALOME_LifeCycleCORBA.hxx"
-#include "SalomeApp_Application.h"
-#include "SalomeApp_Study.h"
-
-using namespace std;
-
-//=============================================================================
-namespace PARAVIS
-{
-  /**
-   *  Get current study.
-   */
-  _PTR(Study) GetCStudy(const CAM_Module* theModule)
-  {
-    if (theModule && theModule->application()) {
-      SalomeApp_Study* activeStudy = 
-          dynamic_cast<SalomeApp_Study*>(theModule->application()->activeStudy());
-      if (activeStudy) {
-          return activeStudy->studyDS();
-      }
-    }
-    
-    return _PTR(Study)();
-  }
-}
diff --git a/src/PVGUI/PVGUI_Tools.h b/src/PVGUI/PVGUI_Tools.h
deleted file mode 100644 (file)
index f5ed5fc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-// PARAVIS : ParaView wrapper SALOME module
-//
-// Copyright (C) 2010-2015  CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// File   : PVGUI_Tools.h
-// Author : Vitaly Smetannikov
-//
-
-#ifndef PVGUI_Tools_H
-#define PVGUI_Tools_H
-
-#include "SALOMEDSClient_Study.hxx"
-
-#define PVSTATEID 15555
-
-class CAM_Module;
-
-namespace PARAVIS 
-{
-  _PTR(Study)    GetCStudy(const CAM_Module* theModule);
-};
-
-#endif // PVGUI_Tools_H