Exemplo n.º 1
0
def createPopupMenu(popup, context):
    """
    This method is called when popup menu is requested by the user (right click).
    Should analyze the selection and fill in the popup menu with the corresponding actions.

    @type popup: C{QPopupMenu}
    @param popup: popup menu from the Object Browser.
    @type context: C{String}
    @param context: equal to 'ObjectBrowser' or 'VTKViewer' for example.
    """
    #log.debug("createPopupMenu -> context = %s" % context)

    study = CFDSTUDYGUI_DataModel._getStudy()
    dsk = sgPyQt.getDesktop()
    ActionHandler = _DesktopMgr.getActionHandler(dsk)

    #log.debug("createPopupMenu -> SelectedCount = %s" % sg.SelectedCount())

    if sg.SelectedCount() > 0:
        # Custom Popup menu added or removed regards to the type of the object
        for i in range(sg.SelectedCount()):
            entry = sg.getSelected(i)
            if entry != '':
                sobj = study.FindObjectID(entry)
                if sobj is not None:
                    test, anAttr = sobj.FindAttribute("AttributeLocalID")
                    if test:
                        id = anAttr._narrow(SALOMEDS.AttributeLocalID).Value()
                        if id >= 0:

                            if sobj.GetFatherComponent().GetName() == "Mesh":
                                if CFDSTUDYGUI_DataModel.getMeshFromMesh(
                                        sobj) == None:
                                    meshGroupObject, group = CFDSTUDYGUI_DataModel.getMeshFromGroup(
                                        sobj)
                                    if meshGroupObject != None:
                                        ActionHandler.customPopup(id, popup)
                                        if sg.SelectedCount() > 1:
                                            popup.removeAction(
                                                ActionHandler.commonAction(
                                                    CFDSTUDYGUI_ActionsHandler.
                                                    DisplayOnlyGroupMESHAction)
                                            )
                                else:
                                    ActionHandler.customPopup(id, popup)
                                    popup.removeAction(
                                        ActionHandler.commonAction(
                                            CFDSTUDYGUI_ActionsHandler.
                                            DisplayOnlyGroupMESHAction))

                            else:
                                ActionHandler.customPopup(id, popup)
                                fathername = sobj.GetFather().GetName()
                                if fathername in ["RESU", "RESU_COUPLING"]:
                                    if CFDSTUDYGUI_DataModel.checkType(sobj, CFDSTUDYGUI_DataModel.dict_object["RESUSubFolder"]) or \
                                        CFDSTUDYGUI_DataModel.checkType(sobj, CFDSTUDYGUI_DataModel.dict_object["RESU_COUPLINGSubFolder"]):
                                        ActionHandler.customPopup(id, popup)
                                        ActionHandler.commonAction(
                                            ActionHandler.RemoveAction
                                        ).setEnabled(True)
Exemplo n.º 2
0
def tabObjectBrowser():
    """
    tabify DockWidgets which contains QTreeView:
    Object Browser and CFDSTUDY tree
    """
    dsk = sgPyQt.getDesktop()
    ldock = dsk.findChildren(QDockWidget)
    ldocktree = []

    # FIXME: if either Salome objectBrowser or Code_Saturne BrowserForm
    # is renamed, this must be updated. Other treeview objects with
    # the same names in this list could aslo be spurioulsly docked,
    # so this test should be improved. grouping all QTreeView objects
    # should be avoided absolutely, as some of those objets may appear
    # at a lower level (this was the cause of an extremely irritating
    # bug in previous versions).

    for i in ldock:
        lo = i.findChildren(QTreeView)
        if len(lo):
            if hasattr(lo[0], "parent"):
                p = lo[0].parent()
                if str(p.objectName()) in (
                        'objectBrowser',  # Salome OB
                        'BrowserForm'):  # Code_Saturne browser
                    ldocktree.append(i)
    for i in range(1, len(ldocktree)):
        dsk.tabifyDockWidget(ldocktree[0], ldocktree[i])
def activate():
    """
    This method is called when GUI module is being activated.

    @rtype: C{True} or C{False}
    @return: C{True} only if the activation is successful.
    """
    log.debug("activate")
    dsk = sgPyQt.getDesktop()
    dsk.setTabPosition(Qt.RightDockWidgetArea,QTabWidget.South)
    dsk.setTabPosition(Qt.LeftDockWidgetArea,QTabWidget.South)

    ActionHandler = _DesktopMgr.getActionHandler(dsk)

    env_saturne, msg = CheckCFD_CodeEnv(CFD_Saturne)

    log.debug("activate -> env_saturne = %s" % env_saturne)

    if not env_saturne:
        QMessageBox.critical(ActionHandler.dskAgent().workspace(),
                             "Error", msg, QMessageBox.Ok, 0)
        return False

    if msg != "":
        mess = cfdstudyMess.trMessage(ObjectTR.tr("CFDSTUDY_INVALID_ENV"),[]) + " ; "+ msg
        cfdstudyMess.aboutMessage(msg)
        return False
    else:
        ActionHandler.DialogCollector.InfoDialog.setCode(env_saturne)

    ActionHandler._SalomeSelection.currentSelectionChanged.connect(ActionHandler.updateActions)

    ActionHandler.connectSolverGUI()

    # Hide the Python Console window layout
    for dock in sgPyQt.getDesktop().findChildren(QDockWidget):
        dockTitle = dock.windowTitle()
        log.debug("activate -> QDockWidget: %s" % dockTitle)
        if "Object Browser" in str(dockTitle):
            dock.raise_()
            dock.show()
            if dsk.dockWidgetArea(dock) == 0:
                dsk.addDockWidget(Qt.LeftDockWidgetArea,dock)
        if dockTitle in ("Python Console", "Console Python",  "Message Window"):
            dock.setVisible(False)
            dock.hide()
    return True
Exemplo n.º 4
0
 def removeDockWindow(self, studyCFDName, caseName, xmlName):
     """
     Close the CFD_study_dock_windows from remove  popup menu in object browser
     """
     log.debug("removeDockWindow -> %s %s %s" % (studyCFDName, caseName, xmlName))
     dsk = sgPyQt.getDesktop()
     if _c_CFDGUI != None:
         _c_CFDGUI.delDock(dsk, studyCFDName, caseName, xmlName)
def getObjectBrowserDock():
    dock = None
    dsk = sgPyQt.getDesktop()
    studyId = sgPyQt.getStudyId()
    for dock in dsk.findChildren(QDockWidget):
        dockTitle = str(dock.windowTitle())
        if (dockTitle == 'Object Browser'):
            return dock
Exemplo n.º 6
0
 def connectDockWindows(self):
     """
     Show all the dock windows of CFDSTUDY GUI, when activating Salome CFDSTUDY module
     """
     studyId = 1
     if _c_CFDGUI != None:
         _c_CFDGUI.showDocks(studyId)
         _c_CFDGUI.tabifyDockWindows(sgPyQt.getDesktop(), studyId)
Exemplo n.º 7
0
 def removeDockWindowfromStudyAndCaseNames(self, studyCFDName, caseName):
     """
     Close the CFD_study_dock_windows if opened from close Study popup menu into the object browser
     """
     log.debug("removeDockWindowfromStudyAndCaseNames -> %s %s" % (studyCFDName, caseName))
     dsk = sgPyQt.getDesktop()
     if _c_CFDGUI != None:
         _c_CFDGUI.delDockfromStudyAndCaseNames(dsk, studyCFDName, caseName)
Exemplo n.º 8
0
def getObjectBrowserDock():
    dock = None
    dsk = sgPyQt.getDesktop()
    studyId = sgPyQt.getStudyId()
    for dock in dsk.findChildren(QDockWidget):
        dockTitle = str(dock.windowTitle())
        if (dockTitle == 'Object Browser'):
            return dock
 def removeDockWindow(self, studyCFDName, caseName, xmlName):
     """
     Close the CFD_study_dock_windows from remove  popup menu in object browser
     """
     log.debug("removeDockWindow -> %s %s %s" % (studyCFDName, caseName, xmlName))
     dsk = sgPyQt.getDesktop()
     studyId = sgPyQt.getStudyId()
     if _c_CFDGUI != None:
        _c_CFDGUI.delDock(dsk, studyId, studyCFDName, caseName, xmlName)
Exemplo n.º 10
0
def deactivate():
    """
    This method is called when GUI module is being deactivated.
    """
    log.debug("deactivate")
    dsk = sgPyQt.getDesktop()
    ActionHandler = _DesktopMgr.getActionHandler(dsk)
    ActionHandler.disconnect(ActionHandler._SalomeSelection, SIGNAL('currentSelectionChanged()'), ActionHandler.updateActions)
    ActionHandler.disconnectSolverGUI()
Exemplo n.º 11
0
 def resizeObjBrowserDock(self):
     """
     called by closeStudy in CFDSTUDYGUI.py because the Object Browser size is stored into ~/.config/salome/SalomeApprc.xxx file xxx is the salome version
     """
     log.debug("resizeObjectBrowserDock")
     dsk = sgPyQt.getDesktop()
     if dsk != None:
         objectBrowserDockWindow = findObjectBrowserDockWindow()
         if objectBrowserDockWindow != None:
             dsk.resizeDocks({objectBrowserDockWindow}, {300},Qt.Horizontal)
    def connectDockWindows(self):
        """
        Show all the dock windows of CFDSTUDY GUI, when activating Salome CFDSTUDY module
        """
        studyId = sgPyQt.getStudyId()
        if _c_CFDGUI != None:
            _c_CFDGUI.showDocks(studyId)
            _c_CFDGUI.tabifyDockWindows(sgPyQt.getDesktop(),studyId)

        updateObjectBrowser()
Exemplo n.º 13
0
def setSettings():
    """
    Stores the selected CFD code and updates action according with current
    selection and study states in the dekstop manager.
    """
    log.debug("setSettings")

    dsk = sgPyQt.getDesktop()
    ActionHandler = _DesktopMgr.getActionHandler(dsk)
    ActionHandler.updateActions()
Exemplo n.º 14
0
 def resizeMainWindowDock(self,visible):
     """
     visible referred to Object Browser dock widget
     """
     log.debug("resizeMainWindowDock")
     dsk = sgPyQt.getDesktop()
     if dsk != None:
         dock = self.sender()
         if visible:
             dsk.resizeDocks({dock}, {900},Qt.Horizontal)
Exemplo n.º 15
0
def setSettings():
    """
    Stores the selected CFD code and updates action according with current
    selection and study states in the desktop manager.
    """
    log.debug("setSettings")

    dsk = sgPyQt.getDesktop()
    ActionHandler = _DesktopMgr.getActionHandler(dsk)
    ActionHandler.updateActions()
Exemplo n.º 16
0
def closeStudy():
    """
    This method is called when salome study is closed (Salome desktop button File -> close -> close w/o saving button) and Salome Main window desktop is already available
    """
    log.debug("closeStudy")
    if salome_version.getVersion() >= '7.5.0':
        dsk = sgPyQt.getDesktop()
        CFDSTUDYGUI_SolverGUI._c_CFDGUI.cleanAllDock(dsk)
        ActionHandler = _DesktopMgr.getActionHandler(dsk)
        ActionHandler._SolverGUI.resizeObjBrowserDock()
Exemplo n.º 17
0
def setWorkSpace(ws):
    """
    Stores the SALOME Workspace I{ws} into the Desktop Manager.

    @type ws: C{QWidget}
    @param ws: main window's central widget
    """
    log.debug("setWorkSpace")

    dsk = sgPyQt.getDesktop()
    _DesktopMgr.setWorkspace(dsk, ws)
Exemplo n.º 18
0
def findObjectBrowserDockWindow():
    dsk = sgPyQt.getDesktop()
    ldock = []
    if dsk != None:
        ldock = dsk.findChildren(QDockWidget)
    objectBrowserDockWindow = None
    if ldock != []:
        for i in ldock:
            if 'Object Browser' in str(i.windowTitle()):
                objectBrowserDockWindow = i
    return objectBrowserDockWindow
Exemplo n.º 19
0
def setWorkSpace(ws):
    """
    Stores the SALOME Workspace I{ws} into the Desktop Manager.

    @type ws: C{QWidget}
    @param ws: main window's central widget
    """
    log.debug("setWorkSpace")

    dsk = sgPyQt.getDesktop()
    _DesktopMgr.setWorkspace(dsk, ws)
    ActionHandler = _DesktopMgr.getActionHandler(dsk)
Exemplo n.º 20
0
def setWorkSpace(ws):
    """
    Stores the SALOME Workspace I{ws} into the Desktop Manager.

    @type ws: C{QWidget}
    @param ws: main window's central widget
    """
    log.debug("setWorkSpace")

    dsk = sgPyQt.getDesktop()
    _DesktopMgr.setWorkspace(dsk, ws)
    ActionHandler = _DesktopMgr.getActionHandler(dsk)
    ActionHandler.connectSolverGUI()
Exemplo n.º 21
0
def deactivate():
    """
    This method is called when GUI module is being deactivated.
    """
    log.debug("deactivate")
    dsk = sgPyQt.getDesktop()
    ActionHandler = _DesktopMgr.getActionHandler(dsk)

    ActionHandler._SalomeSelection.currentSelectionChanged.disconnect(ActionHandler.updateActions)

    ActionHandler.disconnectSolverGUI()
    ob = sgPyQt.getObjectBrowser()
    if ob != None:
        ob.collapseAll()
Exemplo n.º 22
0
def tabObjectBrowser():
    """
    tabify DockWidgets which contains QTreeView:
    Object Browser and CFDSTUDY tree
    """
    dsk = sgPyQt.getDesktop()
    ldock = dsk.findChildren(QDockWidget)
    ldocktree = []
    for i in ldock:
        lo = i.findChildren(QTreeView)
        if len(lo):
            ldocktree.append(i)
    for i in range(1, len(ldocktree)):
        dsk.tabifyDockWidget(ldocktree[0], ldocktree[i])
Exemplo n.º 23
0
    def resizeObjectBrowserDock(self,visible):
        """
        visible referred to Object Browser dock widget
        """
        log.debug("resizeObjectBrowserDock")
        dsk = sgPyQt.getDesktop()
        if dsk != None:
            if visible:
                objectBrowserDockWindow = findObjectBrowserDockWindow()
                dsk.resizeDocks({objectBrowserDockWindow}, {300},Qt.Horizontal)

            else:
                if self.dockMainWin != None :
                    dsk.resizeDocks({self.dockMainWin}, {900},Qt.Horizontal)
def tabObjectBrowser():
    """
    tabify DockWidgets which contains QTreeView:
    Object Browser and CFDSTUDY tree
    """
    dsk = sgPyQt.getDesktop()
    ldock = dsk.findChildren(QDockWidget)
    ldocktree = []
    for i in ldock:
        lo = i.findChildren(QTreeView)
        if len(lo):
            ldocktree.append(i)
    for i in range(1, len(ldocktree)):
        dsk.tabifyDockWidget(ldocktree[0], ldocktree[i])
Exemplo n.º 25
0
def tabifyCfdGui():
    """
    tabify DockWidgets which contains CFD study CASE QMainview :
    CFDSTUDY Main Window
    """
    log.debug("tabifyCfdGui")
    dsk = sgPyQt.getDesktop()
    ldockMainWin = []

    ldockMainWin = _c_CFDGUI.getDockListe()

    objectBrowserDockWindow = findObjectBrowserDockWindow()
    if len(ldockMainWin) >= 1:
        dsk.splitDockWidget(objectBrowserDockWindow,ldockMainWin[0],Qt.Horizontal)
        dsk.tabifyDockWidget(objectBrowserDockWindow,ldockMainWin[0])
    for i in range(1, len(ldockMainWin)):
        dsk.tabifyDockWidget(ldockMainWin[0], ldockMainWin[i])
        dsk.tabifyDockWidget(objectBrowserDockWindow, ldockMainWin[i])
Exemplo n.º 26
0
def createPopupMenu(popup, context):
    """
    This method is called when popup menu is requested by the user (right click).
    Should analyze the selection and fill in the popup menu with the corresponding actions.

    @type popup: C{QPopupMenu}
    @param popup: popup menu from the Object Browser.
    @type context: C{String}
    @param context: equal to 'ObjectBrowser' or 'VTKViewer' for example.
    """
    #log.debug("createPopupMenu -> context = %s" % context)

    study = CFDSTUDYGUI_DataModel._getStudy()
    dsk = sgPyQt.getDesktop()
    ActionHandler = _DesktopMgr.getActionHandler(dsk)

    #log.debug("createPopupMenu -> SelectedCount = %s" % sg.SelectedCount())

    if sg.SelectedCount() > 0:
        # Custom Popup menu added or removed regards to the type of the object
        for i in range(sg.SelectedCount()):
            entry = sg.getSelected(i)
            if entry != '':
                sobj = study.FindObjectID(entry)
                if sobj is not None:
                    test, anAttr = sobj.FindAttribute("AttributeLocalID")
                    if test:
                        id = anAttr._narrow(SALOMEDS.AttributeLocalID).Value()
                        if id >= 0:

                            if sobj.GetFatherComponent().GetName() == "Mesh":
                                if CFDSTUDYGUI_DataModel.getMeshFromMesh(sobj) == None:
                                    meshGroupObject,group = CFDSTUDYGUI_DataModel.getMeshFromGroup(sobj)
                                    if meshGroupObject != None:
                                        ActionHandler.customPopup(id, popup)
                                        if sg.SelectedCount() > 1:
                                            popup.removeAction(ActionHandler.commonAction(CFDSTUDYGUI_ActionsHandler.DisplayOnlyGroupMESHAction))
                                else:
                                    ActionHandler.customPopup(id, popup)
                                    popup.removeAction(ActionHandler.commonAction(CFDSTUDYGUI_ActionsHandler.DisplayOnlyGroupMESHAction))

                            else:
                                if not CFDSTUDYGUI_DataModel.isLinkPathObject(sobj):
                                    ActionHandler.customPopup(id, popup)
Exemplo n.º 27
0
def activate():
    """
    This method is called when GUI module is being activated.

    @rtype: C{True} or C{False}
    @return: C{True} only if the activation is successful.
    """
    log.debug("activate")
    global d_activation, studyId

    dsk = sgPyQt.getDesktop()
    studyId = sgPyQt.getStudyId()
    dsk.setTabPosition(Qt.RightDockWidgetArea,QTabWidget.South)
    dsk.setTabPosition(Qt.LeftDockWidgetArea,QTabWidget.South)

    if salome_version.getVersion() <= '7.4.0' :
        if salome.myStudy.FindComponent(__MODULE_NAME__) == None :
            CFDSTUDYGUI_SolverGUI._c_CFDGUI.cleanAllDock(sgPyQt.getDesktop())
            log.debug("activate ->  CFDSTUDYGUI_SolverGUI._c_CFDGUI.d_CfdCases = %s" % CFDSTUDYGUI_SolverGUI._c_CFDGUI.d_CfdCases)
    # instance of the CFDSTUDYGUI_ActionsHandler class for the current desktop
    ActionHandler = _DesktopMgr.getActionHandler(dsk)

    if studyId not in d_activation.keys():
        d_activation[studyId] = 1

    if d_activation[studyId] == 1:
        d_activation[studyId] = 0
        env_saturne, mess1 = CheckCFD_CodeEnv(CFD_Saturne)
        env_neptune, mess2 = CheckCFD_CodeEnv(CFD_Neptune)

        log.debug("activate -> env_saturne = %s" % env_saturne)
        log.debug("activate -> env_neptune = %s" % env_neptune)

        if not env_saturne and not env_neptune:
            QMessageBox.critical(ActionHandler.dskAgent().workspace(),
                                 "Error", mess1, QMessageBox.Ok, 0)
            QMessageBox.critical(ActionHandler.dskAgent().workspace(),
                                 "Error", mess2, QMessageBox.Ok, 0)
            d_activation[studyId] = 1
            return False

        if env_neptune:
            if mess2 != "":
                Error = "Error: "+ ObjectTR.tr("CFDSTUDY_INVALID_ENV")
                QMessageBox.critical(ActionHandler.dskAgent().workspace(),
                                     Error, mess2, QMessageBox.Ok, 0)
                d_activation[studyId] = 1
                return False
            else:
                ActionHandler.DialogCollector.InfoDialog.setCode(env_saturne, env_neptune)

        elif env_saturne:
            if mess1 != "":
                Error = "Error: "+ ObjectTR.tr("CFDSTUDY_INVALID_ENV")
                QMessageBox.critical(ActionHandler.dskAgent().workspace(),
                                     Error, mess1, QMessageBox.Ok, 0)
                d_activation[studyId] = 1
                return False
            else:
                ActionHandler.DialogCollector.InfoDialog.setCode(env_saturne, False)

        ActionHandler.slotStudyLocation()

    ActionHandler.connect(ActionHandler._SalomeSelection,
                          SIGNAL('currentSelectionChanged()'),
                          ActionHandler.updateActions)

    ActionHandler.connectSolverGUI()
    ActionHandler.updateObjBrowser()

    # Hide the Python Console window layout
    for dock in sgPyQt.getDesktop().findChildren(QDockWidget):
        dockTitle = dock.windowTitle()
        log.debug("activate -> QDockWidget: %s" % dockTitle)
        if dockTitle in (u"Python Console", u"Console Python",  u"Message Window"):
            dock.setVisible(False)

    return True
Exemplo n.º 28
0
    def launchGUI(self, WorkSpace, aCase, sobjXML, Args):
        """
        mw.dockWidgetBrowser is the Browser of the CFD MainView
        """
        log.debug("launchGUI")
        from code_saturne.cs_gui import process_cmd_line
        from code_saturne.Base.MainView import MainView
        if CFD_Code() == CFD_Saturne:
            from code_saturne.cs_package import package
        elif CFD_Code() == CFD_Neptune:
            from neptune_cfd.nc_package import package

        if sobjXML == None:
            Title = "unnamed"
        else:
            Title = sobjXML.GetName()

        self.Workspace = WorkSpace
        pkg = package()
        case, splash = process_cmd_line(Args)
        try:
            mw = MainView(pkg, case, aCase)
        except:
            mess = "Error in Opening CFD GUI"
            QMessageBox.warning(None, "Warning", mess, QMessageBox.Ok, QMessageBox.NoButton)
            return None

        # Put the standard panel of the MainView inside a QDockWidget
        # in the SALOME Desktop
        aTitle = self.setWindowTitle_CFD(mw, aCase, Title)
        dsk = sgPyQt.getDesktop()
#####
        objectBrowserDockWindow = findObjectBrowserDockWindow()

        self.mainWin = QMainWindow()
        self.mainWin.setWindowTitle(aTitle)
        self.mainWin.setCentralWidget(mw.centralwidget)
        self.mainWin.addDockWidget(Qt.LeftDockWidgetArea,mw.dockWidgetBrowser)
#####
        self.dockMainWin = QDockWidget(aTitle)
        self.dockMainWin.setWidget(self.mainWin)
##

        dsk.addDockWidget(Qt.LeftDockWidgetArea,self.dockMainWin)
        self.dockMainWin.setVisible(True)
        self.dockMainWin.show()
        self.dockMainWin.raise_()

        objectBrowserDockWindow.visibilityChanged["bool"].connect(self.resizeObjectBrowserDock)

        #Add Dock windows are managed by CFDGUI_Management class
        aStudyCFD = aCase.GetFather()
        aCaseCFD  = aCase
        xmlFileName = str(Title)
        _c_CFDGUI.set_d_CfdCases(self.dockMainWin, mw, aStudyCFD, aCaseCFD, xmlFileName, sobjXML)
        dockMain = _c_CFDGUI.getDockWithCFDNames(aStudyCFD.GetName(), aCaseCFD.GetName(), xmlFileName)
        if dockMain != None:
            dockMain.visibilityChanged["bool"].connect(self.resizeMainWindowDock)

        updateObjectBrowser()
        return mw
    def lauchGUI(self, WorkSpace, aCase, sobjXML, Args):
        """
        mw.dockWidgetBrowser is the Browser of the CFD MainView
        """
        log.debug("lauchGUI")
        from cs_gui import process_cmd_line

        if CFD_Code() == CFD_Saturne:
            from cs_package import package
            from code_saturne.Base.MainView import MainView
        elif CFD_Code() == CFD_Neptune:
            from nc_package import package
            from neptune_cfd.core.MainView import MainView

        if sobjXML == None:
            Title = "unnamed"
        else:
            Title = sobjXML.GetName()

        self.Workspace = WorkSpace
        pkg = package()
        case, splash = process_cmd_line(Args)
        mw = MainView(pkg, case, aCase)

        # Put the standard panel of the MainView inside a QDockWidget
        # in the SALOME Desktop
        aTitle = self.setWindowTitle_CFD(mw, aCase, Title)
        dsk = sgPyQt.getDesktop()
        dock = QDockWidget(aTitle)

        dock.setWidget(mw.frame)
        dock.setMinimumWidth(520)
        dsk.addDockWidget(Qt.RightDockWidgetArea, dock)

        dock.setVisible(True)
        dock.show()

        # Put the QTreeView of the MainView which is already inside a QDockWidget
        # in the SALOME Desktop
        BrowserTitle = aTitle  + " Browser"
        mw.dockWidgetBrowser.setWindowTitle(BrowserTitle)
        dsk.addDockWidget(Qt.LeftDockWidgetArea, mw.dockWidgetBrowser)

        mw.dockWidgetBrowser.setVisible(True)
        mw.dockWidgetBrowser.show()
        mw.dockWidgetBrowser.raise_()
        dock.raise_()

        #Add Dock windows are managed by CFDGUI_Management class
        studyId = sgPyQt.getStudyId()
        aStudyCFD = aCase.GetFather()
        aCaseCFD  = aCase
        xmlFileName = str(Title)
        _c_CFDGUI.set_d_CfdCases(studyId, dock, mw.dockWidgetBrowser, mw, aStudyCFD, aCaseCFD, xmlFileName, sobjXML)

        self.connect(dock, SIGNAL("visibilityChanged(bool)"), self.setdockWindowBrowserActivated)
        self.connect(mw.dockWidgetBrowser, SIGNAL("visibilityChanged(bool)"),self.setdockWindowActivated)

        self.connect(dock.toggleViewAction(), SIGNAL("toggled(bool)"), self.setdockWB)
        self.connect(mw.dockWidgetBrowser.toggleViewAction(), SIGNAL("toggled(bool)"), self.setdock)

        _c_CFDGUI.tabifyDockWindows(dsk, studyId)
        self.showDockWindows(studyId, xmlFileName, aCaseCFD.GetName(), aStudyCFD.GetName())
        updateObjectBrowser()

        return mw
Exemplo n.º 30
0
def closeStudy(aStudyId) :
    """
    This method is called when salome study is closed (Salome desktop button File -> close -> close w/o saving button) and Salome Main window desktop is already available
    """
    if salome_version.getVersion() >= '7.5.0' :
        CFDSTUDYGUI_SolverGUI._c_CFDGUI.cleanAllDock(sgPyQt.getDesktop())
Exemplo n.º 31
0
def activate():
    """
    This method is called when GUI module is being activated.

    @rtype: C{True} or C{False}
    @return: C{True} only if the activation is successful.
    """
    log.debug("activate")
    global d_activation, studyId
    dsk = sgPyQt.getDesktop()
    studyId = sgPyQt.getStudyId()
    dsk.setTabPosition(Qt.RightDockWidgetArea, QTabWidget.South)
    dsk.setTabPosition(Qt.LeftDockWidgetArea, QTabWidget.South)

    if salome_version.getVersion() <= '7.4.0':
        if salome.myStudy.FindComponent(__MODULE_NAME__) == None:
            CFDSTUDYGUI_SolverGUI._c_CFDGUI.cleanAllDock(sgPyQt.getDesktop())
            log.debug(
                "activate ->  CFDSTUDYGUI_SolverGUI._c_CFDGUI.d_CfdCases = %s"
                % CFDSTUDYGUI_SolverGUI._c_CFDGUI.d_CfdCases)
    # instance of the CFDSTUDYGUI_ActionsHandler class for the current desktop
    ActionHandler = _DesktopMgr.getActionHandler(dsk)

    if studyId not in list(d_activation.keys()):
        d_activation[studyId] = 1

    if d_activation[studyId] == 1:
        d_activation[studyId] = 0
        env_saturne, mess1 = CheckCFD_CodeEnv(CFD_Saturne)
        env_neptune, mess2 = CheckCFD_CodeEnv(CFD_Neptune)

        log.debug("activate -> env_saturne = %s" % env_saturne)
        log.debug("activate -> env_neptune = %s" % env_neptune)

        if not env_saturne and not env_neptune:
            QMessageBox.critical(ActionHandler.dskAgent().workspace(), "Error",
                                 mess1, QMessageBox.Ok, 0)
            QMessageBox.critical(ActionHandler.dskAgent().workspace(), "Error",
                                 mess2, QMessageBox.Ok, 0)
            d_activation[studyId] = 1
            return False

        if env_neptune:
            if mess2 != "":
                mess = cfdstudyMess.trMessage(
                    ObjectTR.tr("CFDSTUDY_INVALID_ENV"), []) + " ; " + mess2
                cfdstudyMess.aboutMessage(mess)
                d_activation[studyId] = 1
                return False
            else:
                ActionHandler.DialogCollector.InfoDialog.setCode(
                    env_saturne, env_neptune)

        elif env_saturne:
            if mess1 != "":
                mess = cfdstudyMess.trMessage(
                    ObjectTR.tr("CFDSTUDY_INVALID_ENV"), []) + " ; " + mess2
                cfdstudyMess.aboutMessage(mess)
                d_activation[studyId] = 1
                return False
            else:
                ActionHandler.DialogCollector.InfoDialog.setCode(
                    env_saturne, False)

    ActionHandler._SalomeSelection.currentSelectionChanged.connect(
        ActionHandler.updateActions)

    ActionHandler.connectSolverGUI()
    ActionHandler.updateObjBrowser()

    # Hide the Python Console window layout
    for dock in sgPyQt.getDesktop().findChildren(QDockWidget):
        dockTitle = dock.windowTitle()
        log.debug("activate -> QDockWidget: %s" % dockTitle)
        if dockTitle in ("Python Console", "Console Python", "Message Window"):
            dock.setVisible(False)

    return True
Exemplo n.º 32
0
    def launchGUI(self, WorkSpace, aCase, sobjXML, Args):
        """
        mw.dockWidgetBrowser is the Browser of the CFD MainView
        """
        log.debug("launchGUI")
        from cs_gui import process_cmd_line
        if CFD_Code() == CFD_Saturne:
            from cs_package import package
            from code_saturne.Base.MainView import MainView
        elif CFD_Code() == CFD_Neptune:
            from nc_package import package
            from neptune_cfd.core.MainView import MainView

        if sobjXML == None:
            Title = "unnamed"
        else:
            Title = sobjXML.GetName()

        self.Workspace = WorkSpace
        pkg = package()
        case, splash = process_cmd_line(Args)
        try:
            mw = MainView(pkg, case, aCase)
        except:
            mess = "Error in Opening CFD GUI"
            QMessageBox.warning(None, "Warning", mess, QMessageBox.Ok,
                                QMessageBox.NoButton)
            return None

        # Put the standard panel of the MainView inside a QDockWidget
        # in the SALOME Desktop
        aTitle = self.setWindowTitle_CFD(mw, aCase, Title)
        dsk = sgPyQt.getDesktop()
        dock = QDockWidget(aTitle)

        dock.setWidget(mw.frame)
        dock.setMinimumWidth(520)
        dsk.addDockWidget(Qt.RightDockWidgetArea, dock)
        dock.setVisible(True)
        dock.show()

        # Put the QTreeView of the MainView which is already inside a QDockWidget
        # in the SALOME Desktop
        BrowserTitle = aTitle + " Browser"
        mw.dockWidgetBrowser.setWindowTitle(BrowserTitle)
        dsk.addDockWidget(Qt.LeftDockWidgetArea, mw.dockWidgetBrowser)

        mw.dockWidgetBrowser.setVisible(True)
        mw.dockWidgetBrowser.show()
        mw.dockWidgetBrowser.raise_()
        dock.raise_()

        #Add Dock windows are managed by CFDGUI_Management class
        studyId = sgPyQt.getStudyId()
        aStudyCFD = aCase.GetFather()
        aCaseCFD = aCase
        xmlFileName = str(Title)
        _c_CFDGUI.set_d_CfdCases(studyId, dock, mw.dockWidgetBrowser, mw,
                                 aStudyCFD, aCaseCFD, xmlFileName, sobjXML)
        dock.visibilityChanged["bool"].connect(
            self.setdockWindowBrowserActivated)
        mw.dockWidgetBrowser.visibilityChanged["bool"].connect(
            self.setdockWindowActivated)
        dock.toggleViewAction().toggled["bool"].connect(self.setdockWB)
        mw.dockWidgetBrowser.toggleViewAction().toggled["bool"].connect(
            self.setdock)
        _c_CFDGUI.tabifyDockWindows(dsk, studyId)
        self.showDockWindows(studyId, xmlFileName, aCaseCFD.GetName(),
                             aStudyCFD.GetName())
        updateObjectBrowser()

        return mw
Exemplo n.º 33
0
def closeStudy(aStudyId):
    """
    This method is called when salome study is closed (Salome desktop button File -> close -> close w/o saving button) and Salome Main window desktop is already available
    """
    if salome_version.getVersion() >= '7.5.0':
        CFDSTUDYGUI_SolverGUI._c_CFDGUI.cleanAllDock(sgPyQt.getDesktop())