]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
PN : pour Qxembed : 1eres modifications. La version n'est pas encore stable. BR_Qxembed origin/BR_Qxembed
authorsalome <>
Thu, 19 Jan 2006 08:35:27 +0000 (08:35 +0000)
committersalome <>
Thu, 19 Jan 2006 08:35:27 +0000 (08:35 +0000)
     pour sauvegarde

src/EFICASGUI/EFICASGUI.py
src/EFICASGUI/eficasSalome.py

index e633072c84290cd001b186e30a27e9d836d34dbf..45c5e9c4cf0c487f9449a7a030f221016f920b4f 100644 (file)
@@ -147,7 +147,7 @@ def runEficas():
    #eficasSalome.runEficas("ASTER",studyId=currentStudyId)   
    #ws = sgPyQt.getMainFrame()   
    #desktop=sgPyQt.getDesktop()   
-   eficasSalome.runEficas( "ASTER" )
+   eficasSalome.runEficas( "ASTER", parent=WORKSPACE )
    
 
 def runEficaspourHomard():
index c2e61f593f6f57d734614a686ccf55ad96f5c7fc..89547ef7c69bcadd5205a8c22789d2291b5535da 100644 (file)
@@ -46,7 +46,7 @@ import salome
 import meshGui
 import studyManager
 
-#from qxembed import QXEmbed
+from libqxembed import QXEmbed
 
 import SalomePyQt
 
@@ -112,19 +112,37 @@ class MyEficas( Tkinter.Toplevel, eficas.EFICAS ):
         #----------------------------------------------------------------------
         
         
-        """
         #------  embarcation dans une fenêtre qt pour mise au premier plan  ---
-        #embedded = QXEmbed( parent, "", qt.Qt.WDestructiveClose | qt.Qt.WStyle_Customize | qt.Qt.WStyle_StaysOnTop )        
-        embedded = QXEmbed( parent, "" )
-        #embedded.initialize()        
-        embedded.show()
-        embedded.embedTk( self.winfo_id() )        
-        size = embedded.sizeHint()
-        print 'CS_pbruno size (%s, %s )'%( size.width(), size.height () )
-        embedded.resize( size.width(), size.height () )
-        embedded.setWFlags(  qt.Qt.WDestructiveClose | qt.Qt.WStyle_Customize | qt.Qt.WStyle_StaysOnTop )
+
+        if parent is not None:
+            # _CS_gbo Cas 1: on s'appuie sur une fenêtre définie préalablement (parent).
+            # Dans ce cas, on programme le comportement du parent.
+            embedded = QXEmbed( parent, "")
+            embedded.embedTk( self.winfo_id() )
+            size = embedded.sizeHint()
+            embedded.resize( size.width(), size.height () )
+            #parent.resize( size.width(), size.height () )
+            parent.show()
+            # _CS_gbo Attention, il subsiste un pb au retaillage de
+            # la fenêtre après son affichage (jouer sur les show, je
+            # ne sais pas).
+            pass
+        else:
+            # _CS_gbo Cas 2: QXEmbed autonome (sans parent), on programme le comportement
+            # du QXEmbed.
+            refwindow = SalomePyQt.SalomePyQt().getDesktop()
+            embedded = QXEmbed( refwindow, "" , qt.Qt.WDestructiveClose | qt.Qt.WStyle_Tool)
+            embedded.embedTk( self.winfo_id() )
+            size = embedded.sizeHint()
+            print 'CS_pbruno size (%s, %s )'%( size.width(), size.height () )
+            embedded.resize( size.width(), size.height () )
+            #embedded.setWFlags(  qt.Qt.WDestructiveClose | qt.Qt.WStyle_Customize | qt.Qt.WStyle_StaysOnTop )
+            embedded.show()
+            pass        
+        
+        # On garde une référence pour la durée de vie de la fenêtre
+        self.embedded = embedded 
         #----------------------------------------------------------------------
-        """
         
         #--------------- spécialisation EFICAS dans SALOME  -------------------                
         self.parent = parent        
@@ -138,9 +156,11 @@ class MyEficas( Tkinter.Toplevel, eficas.EFICAS ):
         #----------------------------------------------------------------------    
         
     def quit(self): 
-        global appli        
+        global appli
         self.destroy()
         appli = None
+        self.parent.destroy()
+
         
                     
     def __studySync( self ):
@@ -437,12 +457,27 @@ class MyEficas( Tkinter.Toplevel, eficas.EFICAS ):
         
         
 #-------------------------------------------------------------------------------------------------------        
-#           Point d'entré lancement EFICAS
+#           Point d'entrée lancement EFICAS
 #
-def runEficas( code="ASTER", fichier=None ):
-    global appli    
+# _CS_gbo Il faut garder une référence globale pour
+# le cycle de vie de la fenêtre.
+mw=None
+def runEficas( code="ASTER", fichier=None, parent=None ):
+    global appli, mw    
     if not appli: #une seul instance possible!
-        appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier )
+
+        # On définit une fenêtre Qt support pour le QXEmbed
+        # qui va embarquer le Tk. C'est à cette fenêtre que
+        # l'on attribue le comportement de fenêtrage souhaité.
+        # _CS_gbo A terme, encapsuler dans MyEficas si cette
+        # solution devient définitive.
+        refwindow = SalomePyQt.SalomePyQt().getDesktop()
+       mw=qt.QDialog(refwindow, "Eficas", 0, qt.Qt.WDestructiveClose|qt.Qt.WStyle_Tool)
+       mw.setCaption("Eficas")
+       #mw.resize(400,400)
+       print "==========================="
+
+        appli = MyEficas( mw, code = code, fichier = fichier )
         
         
  
@@ -512,4 +547,4 @@ logger=ExtLogger( "eficasSalome.py" )
             print 'bizarre'
         
         embedded.grabKeyboard()
-        """
\ No newline at end of file
+        """