From: salome <> Date: Thu, 19 Jan 2006 08:35:27 +0000 (+0000) Subject: PN : pour Qxembed : 1eres modifications. La version n'est pas encore stable. X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=refs%2Fremotes%2Forigin%2FBR_Qxembed;p=modules%2Feficas.git PN : pour Qxembed : 1eres modifications. La version n'est pas encore stable. pour sauvegarde --- diff --git a/src/EFICASGUI/EFICASGUI.py b/src/EFICASGUI/EFICASGUI.py index e633072c..45c5e9c4 100644 --- a/src/EFICASGUI/EFICASGUI.py +++ b/src/EFICASGUI/EFICASGUI.py @@ -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(): diff --git a/src/EFICASGUI/eficasSalome.py b/src/EFICASGUI/eficasSalome.py index c2e61f59..89547ef7 100644 --- a/src/EFICASGUI/eficasSalome.py +++ b/src/EFICASGUI/eficasSalome.py @@ -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 + """