diff -r 40cdaa4a847d -r 2989df16da36 src/eric7/UI/UserInterface.py --- a/src/eric7/UI/UserInterface.py Tue Jul 09 18:09:27 2024 +0200 +++ b/src/eric7/UI/UserInterface.py Wed Jul 10 13:52:29 2024 +0200 @@ -1953,44 +1953,6 @@ self.loadSessionAct.triggered.connect(self.__loadSessionFromFile) self.actions.append(self.loadSessionAct) - self.loadCrashSessionAct = EricAction( - self.tr("Load crash session"), - self.tr("Load crash session..."), - 0, - 0, - self, - "load_crash_session", - ) - self.loadCrashSessionAct.setStatusTip(self.tr("Load crash session")) - self.loadCrashSessionAct.setWhatsThis( - self.tr( - """<b>Load crash session...</b>""" - """<p>This presents a list of available crash session files""" - """ to select from and loads the selected one.</p>""" - ) - ) - self.loadCrashSessionAct.triggered.connect(self.__loadCrashSession) - self.actions.append(self.loadCrashSessionAct) - - self.cleanCrashSessionsAct = EricAction( - self.tr("Clean crash sessions"), - self.tr("Clean crash sessions..."), - 0, - 0, - self, - "clean_crash_sessions", - ) - self.cleanCrashSessionsAct.setStatusTip(self.tr("Clean crash sessions")) - self.cleanCrashSessionsAct.setWhatsThis( - self.tr( - """<b>Clean crash sessions...</b>""" - """<p>This asks for confirmation and deletes all stale crash session""" - """ files.</p>""" - ) - ) - self.cleanCrashSessionsAct.triggered.connect(self.__cleanCrashSessions) - self.actions.append(self.cleanCrashSessionsAct) - self.newWindowAct = EricAction( self.tr("New Window"), EricPixmapCache.getIcon("newWindow"), @@ -3866,11 +3828,7 @@ ############################################################## self.__menus["sessions"] = QMenu(self.tr("Sessions")) - self.__menus["sessions"].addAction(self.saveSessionAct) - self.__menus["sessions"].addAction(self.loadSessionAct) - self.__menus["sessions"].addSeparator() - self.__menus["sessions"].addAction(self.loadCrashSessionAct) - self.__menus["sessions"].addAction(self.cleanCrashSessionsAct) + self.__menus["sessions"].aboutToShow.connect(self.__showSessionsMenu) ############################################################## ## File menu @@ -7747,6 +7705,25 @@ if os.path.exists(fn): self.__tasksFile.readFile(fn) + @pyqtSlot() + def __showSessionsMenu(self): + """ + Private slot to mofify the state of some session actions. + """ + crashSessionsAvailable = bool(self.__getCrashedSessions()) + + menu = self.__menus["sessions"] + menu.clear() + menu.addAction(self.saveSessionAct) + menu.addAction(self.loadSessionAct) + menu.addSeparator() + act = menu.addAction(self.tr("Load crash session..."), self.__loadCrashSession) + act.setEnabled(crashSessionsAvailable) + act = menu.addAction( + self.tr("Clean crash sessions..."), self.__cleanCrashSessions + ) + act.setEnabled(crashSessionsAvailable) + def __writeSession(self, filename=""): """ Private slot to write the session data to a JSON file (.esj).