35 QLabel, |
35 QLabel, |
36 QComboBox, |
36 QComboBox, |
37 QVBoxLayout, |
37 QVBoxLayout, |
38 ) |
38 ) |
39 |
39 |
40 from EricWidgets import EricMessageBox |
40 from eric7.EricWidgets import EricMessageBox |
41 from EricGui.EricOverrideCursor import EricOverrideCursor |
41 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor |
42 |
42 |
43 import Utilities |
43 from eric7 import Preferences, Utilities |
44 import Preferences |
|
45 |
44 |
46 |
45 |
47 class SessionMetaData: |
46 class SessionMetaData: |
48 """ |
47 """ |
49 Class implementing a data structure to store meta data for a session. |
48 Class implementing a data structure to store meta data for a session. |
190 Private slot to save the current session state. |
189 Private slot to save the current session state. |
191 |
190 |
192 @param startTimer flag indicating to restart the timer |
191 @param startTimer flag indicating to restart the timer |
193 @type bool |
192 @type bool |
194 """ |
193 """ |
195 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
194 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
196 |
195 |
197 if not WebBrowserWindow.isPrivate(): |
196 if not WebBrowserWindow.isPrivate(): |
198 Preferences.setWebBrowser("SessionLastActivePath", self.__lastActiveSession) |
197 Preferences.setWebBrowser("SessionLastActivePath", self.__lastActiveSession) |
199 self.writeCurrentSession(self.__lastActiveSession) |
198 self.writeCurrentSession(self.__lastActiveSession) |
200 |
199 |
206 Public method to write the current session to the given file name. |
205 Public method to write the current session to the given file name. |
207 |
206 |
208 @param sessionFileName file name of the session |
207 @param sessionFileName file name of the session |
209 @type str |
208 @type str |
210 """ |
209 """ |
211 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
210 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
212 |
211 |
213 sessionData = {"Windows": []} |
212 sessionData = {"Windows": []} |
214 |
213 |
215 activeWindow = WebBrowserWindow.getWindow() |
214 activeWindow = WebBrowserWindow.getWindow() |
216 for window in WebBrowserWindow.mainWindows(): |
215 for window in WebBrowserWindow.mainWindows(): |
412 |
411 |
413 sessionData = self.readSessionFromFile(sessionFilePath) |
412 sessionData = self.readSessionFromFile(sessionFilePath) |
414 if not sessionData or not sessionData["Windows"]: |
413 if not sessionData or not sessionData["Windows"]: |
415 return |
414 return |
416 |
415 |
417 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
416 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
418 |
417 |
419 window = WebBrowserWindow.mainWindow() |
418 window = WebBrowserWindow.mainWindow() |
420 |
419 |
421 if (flags & SessionManager.SwitchSession) == SessionManager.SwitchSession: |
420 if (flags & SessionManager.SwitchSession) == SessionManager.SwitchSession: |
422 # save the current session |
421 # save the current session |
443 |
442 |
444 @param window reference to main window to restore to |
443 @param window reference to main window to restore to |
445 @type WebBrowserWindow |
444 @type WebBrowserWindow |
446 @param sessionData dictionary containing the session data |
445 @param sessionData dictionary containing the session data |
447 """ |
446 """ |
448 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
447 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
449 |
448 |
450 if window is None: |
449 if window is None: |
451 window = WebBrowserWindow.mainWindow() |
450 window = WebBrowserWindow.mainWindow() |
452 |
451 |
453 with EricOverrideCursor(): |
452 with EricOverrideCursor(): |
483 @param sessionFilePath name of the session file |
482 @param sessionFilePath name of the session file |
484 @type str |
483 @type str |
485 @param flags flags determining a rename or clone operation |
484 @param flags flags determining a rename or clone operation |
486 @type int |
485 @type int |
487 """ |
486 """ |
488 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
487 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
489 |
488 |
490 suggestedName = pathlib.Path(sessionFilePath).stem |
489 suggestedName = pathlib.Path(sessionFilePath).stem |
491 if flags & SessionManager.CloneSession: |
490 if flags & SessionManager.CloneSession: |
492 suggestedName += "_cloned" |
491 suggestedName += "_cloned" |
493 title = self.tr("Clone Session") |
492 title = self.tr("Clone Session") |
549 |
548 |
550 def saveSession(self): |
549 def saveSession(self): |
551 """ |
550 """ |
552 Public method to save the current session. |
551 Public method to save the current session. |
553 """ |
552 """ |
554 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
553 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
555 |
554 |
556 newName, ok = QInputDialog.getText( |
555 newName, ok = QInputDialog.getText( |
557 WebBrowserWindow.getWindow(), |
556 WebBrowserWindow.getWindow(), |
558 self.tr("Save Session"), |
557 self.tr("Save Session"), |
559 self.tr("Please enter a name for the session:"), |
558 self.tr("Please enter a name for the session:"), |
591 @param sessionFilePath file name of the session file to replace with |
590 @param sessionFilePath file name of the session file to replace with |
592 @type str |
591 @type str |
593 @return flag indicating success |
592 @return flag indicating success |
594 @rtype bool |
593 @rtype bool |
595 """ |
594 """ |
596 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
595 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
597 |
596 |
598 res = EricMessageBox.yesNo( |
597 res = EricMessageBox.yesNo( |
599 WebBrowserWindow.getWindow(), |
598 WebBrowserWindow.getWindow(), |
600 self.tr("Restore Backup"), |
599 self.tr("Restore Backup"), |
601 self.tr("""Are you sure you want to replace the current""" """ session?"""), |
600 self.tr("""Are you sure you want to replace the current""" """ session?"""), |
632 Public method to delete a session. |
631 Public method to delete a session. |
633 |
632 |
634 @param sessionFilePath file name of the session file to be deleted |
633 @param sessionFilePath file name of the session file to be deleted |
635 @type str |
634 @type str |
636 """ |
635 """ |
637 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
636 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
638 |
637 |
639 sfp = pathlib.Path(sessionFilePath) |
638 sfp = pathlib.Path(sessionFilePath) |
640 res = EricMessageBox.yesNo( |
639 res = EricMessageBox.yesNo( |
641 WebBrowserWindow.getWindow(), |
640 WebBrowserWindow.getWindow(), |
642 self.tr("Delete Session"), |
641 self.tr("Delete Session"), |
649 |
648 |
650 def newSession(self): |
649 def newSession(self): |
651 """ |
650 """ |
652 Public method to start a new session. |
651 Public method to start a new session. |
653 """ |
652 """ |
654 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
653 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
655 |
654 |
656 newName, ok = QInputDialog.getText( |
655 newName, ok = QInputDialog.getText( |
657 WebBrowserWindow.getWindow(), |
656 WebBrowserWindow.getWindow(), |
658 self.tr("New Session"), |
657 self.tr("New Session"), |
659 self.tr("Please enter a name for the new session:"), |
658 self.tr("Please enter a name for the new session:"), |
695 |
694 |
696 def showSessionManagerDialog(self): |
695 def showSessionManagerDialog(self): |
697 """ |
696 """ |
698 Public method to show the session manager dialog. |
697 Public method to show the session manager dialog. |
699 """ |
698 """ |
700 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
699 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
701 from .SessionManagerDialog import SessionManagerDialog |
700 from .SessionManagerDialog import SessionManagerDialog |
702 |
701 |
703 dlg = SessionManagerDialog(WebBrowserWindow.getWindow()) |
702 dlg = SessionManagerDialog(WebBrowserWindow.getWindow()) |
704 dlg.open() |
703 dlg.open() |
705 |
704 |
708 Public method to select a session to be restored. |
707 Public method to select a session to be restored. |
709 |
708 |
710 @return name of the session file to be restored |
709 @return name of the session file to be restored |
711 @rtype str |
710 @rtype str |
712 """ |
711 """ |
713 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
712 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
714 |
713 |
715 self.__fillMetaDataList() |
714 self.__fillMetaDataList() |
716 |
715 |
717 if self.__sessionMetaData: |
716 if self.__sessionMetaData: |
718 # skip, if no session file available |
717 # skip, if no session file available |