summaryrefslogtreecommitdiff
path: root/qutebrowser/misc/sessions.py
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2019-11-25 16:42:47 +0100
committerFlorian Bruhin <me@the-compiler.org>2019-11-25 16:45:48 +0100
commit9b7c2c6a6f74ff574a66db8a1a113dcf976c73bf (patch)
treeac6a117f2bc3d71d0bc735eafa871e656005e08d /qutebrowser/misc/sessions.py
parent71e4e1788a21404599881848c1c5aec6222e4adb (diff)
downloadqutebrowser-9b7c2c6a6f74ff574a66db8a1a113dcf976c73bf.tar.gz
qutebrowser-9b7c2c6a6f74ff574a66db8a1a113dcf976c73bf.zip
Remove session-manager from objreg
See #640
Diffstat (limited to 'qutebrowser/misc/sessions.py')
-rw-r--r--qutebrowser/misc/sessions.py222
1 files changed, 109 insertions, 113 deletions
diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py
index 37a831956..c42bc7c41 100644
--- a/qutebrowser/misc/sessions.py
+++ b/qutebrowser/misc/sessions.py
@@ -66,7 +66,6 @@ def init(parent=None):
global session_manager
session_manager = SessionManager(base_path, parent)
- objreg.register('session-manager', session_manager, command_only=True)
@pyqtSlot()
@@ -121,13 +120,13 @@ class SessionManager(QObject):
_base_path: The path to store sessions under.
_last_window_session: The session data of the last window which was
closed.
- _current: The name of the currently loaded session, or None.
+ current: The name of the currently loaded session, or None.
did_load: Set when a session was loaded.
"""
def __init__(self, base_path, parent=None):
super().__init__(parent)
- self._current = None # type: typing.Optional[str]
+ self.current = None # type: typing.Optional[str]
self._base_path = base_path
self._last_window_session = None
self.did_load = False
@@ -278,8 +277,8 @@ class SessionManager(QObject):
if name is default:
name = config.val.session.default_name
if name is None:
- if self._current is not None:
- name = self._current
+ if self.current is not None:
+ name = self.current
else:
name = 'default'
return name
@@ -466,7 +465,7 @@ class SessionManager(QObject):
if data['windows']:
self.did_load = True
if not name.startswith('_') and not temp:
- self._current = name
+ self.current = name
def delete(self, name):
"""Delete a session."""
@@ -485,116 +484,113 @@ class SessionManager(QObject):
sessions.append(base)
return sorted(sessions)
- @cmdutils.register(instance='session-manager')
- @cmdutils.argument('name', completion=miscmodels.session)
- def session_load(self, name, clear=False, temp=False, force=False,
- delete=False):
- """Load a session.
- Args:
- name: The name of the session.
- clear: Close all existing windows.
- temp: Don't set the current session for :session-save.
- force: Force loading internal sessions (starting with an
- underline).
- delete: Delete the saved session once it has loaded.
- """
- if name.startswith('_') and not force:
- raise cmdutils.CommandError("{} is an internal session, use "
- "--force to load anyways."
- .format(name))
- old_windows = list(objreg.window_registry.values())
- try:
- self.load(name, temp=temp)
- except SessionNotFoundError:
- raise cmdutils.CommandError("Session {} not found!".format(name))
- except SessionError as e:
- raise cmdutils.CommandError("Error while loading session: {}"
- .format(e))
- else:
- if clear:
- for win in old_windows:
- win.close()
- if delete:
- try:
- self.delete(name)
- except SessionError as e:
- log.sessions.exception("Error while deleting session!")
- raise cmdutils.CommandError("Error while deleting "
- "session: {}".format(e))
- else:
- log.sessions.debug(
- "Loaded & deleted session {}.".format(name))
-
- @cmdutils.register(instance='session-manager')
- @cmdutils.argument('name', completion=miscmodels.session)
- @cmdutils.argument('win_id', value=cmdutils.Value.win_id)
- @cmdutils.argument('with_private', flag='p')
- def session_save(self, name: ArgType = default,
- current: bool = False,
- quiet: bool = False,
- force: bool = False,
- only_active_window: bool = False,
- with_private: bool = False,
- win_id: int = None) -> None:
- """Save a session.
+@cmdutils.register()
+@cmdutils.argument('name', completion=miscmodels.session)
+def session_load(name: str, *,
+ clear: bool = False,
+ temp: bool = False,
+ force: bool = False,
+ delete: bool = False) -> None:
+ """Load a session.
- Args:
- name: The name of the session. If not given, the session configured
- in session.default_name is saved.
- current: Save the current session instead of the default.
- quiet: Don't show confirmation message.
- force: Force saving internal sessions (starting with an underline).
- only_active_window: Saves only tabs of the currently active window.
- with_private: Include private windows.
- """
- if (not isinstance(name, Sentinel) and
- name.startswith('_') and
- not force):
- raise cmdutils.CommandError("{} is an internal session, use "
- "--force to save anyways."
- .format(name))
- if current:
- if self._current is None:
- raise cmdutils.CommandError("No session loaded currently!")
- name = self._current
- assert not name.startswith('_')
- try:
- if only_active_window:
- name = self.save(name, only_window=win_id,
- with_private=True)
+ Args:
+ name: The name of the session.
+ clear: Close all existing windows.
+ temp: Don't set the current session for :session-save.
+ force: Force loading internal sessions (starting with an underline).
+ delete: Delete the saved session once it has loaded.
+ """
+ if name.startswith('_') and not force:
+ raise cmdutils.CommandError("{} is an internal session, use --force "
+ "to load anyways.".format(name))
+ old_windows = list(objreg.window_registry.values())
+ try:
+ session_manager.load(name, temp=temp)
+ except SessionNotFoundError:
+ raise cmdutils.CommandError("Session {} not found!".format(name))
+ except SessionError as e:
+ raise cmdutils.CommandError("Error while loading session: {}"
+ .format(e))
+ else:
+ if clear:
+ for win in old_windows:
+ win.close()
+ if delete:
+ try:
+ session_manager.delete(name)
+ except SessionError as e:
+ log.sessions.exception("Error while deleting session!")
+ raise cmdutils.CommandError("Error while deleting session: {}"
+ .format(e))
else:
- name = self.save(name, with_private=with_private)
- except SessionError as e:
- raise cmdutils.CommandError("Error while saving session: {}"
- .format(e))
+ log.sessions.debug("Loaded & deleted session {}.".format(name))
+
+
+@cmdutils.register()
+@cmdutils.argument('name', completion=miscmodels.session)
+@cmdutils.argument('win_id', value=cmdutils.Value.win_id)
+@cmdutils.argument('with_private', flag='p')
+def session_save(name: ArgType = default, *,
+ current: bool = False,
+ quiet: bool = False,
+ force: bool = False,
+ only_active_window: bool = False,
+ with_private: bool = False,
+ win_id: int = None) -> None:
+ """Save a session.
+
+ Args:
+ name: The name of the session. If not given, the session configured in
+ session.default_name is saved.
+ current: Save the current session instead of the default.
+ quiet: Don't show confirmation message.
+ force: Force saving internal sessions (starting with an underline).
+ only_active_window: Saves only tabs of the currently active window.
+ with_private: Include private windows.
+ """
+ if not isinstance(name, Sentinel) and name.startswith('_') and not force:
+ raise cmdutils.CommandError("{} is an internal session, use --force "
+ "to save anyways.".format(name))
+ if current:
+ if session_manager.current is None:
+ raise cmdutils.CommandError("No session loaded currently!")
+ name = session_manager.current
+ assert not name.startswith('_')
+ try:
+ if only_active_window:
+ name = session_manager.save(name, only_window=win_id,
+ with_private=True)
else:
- if quiet:
- log.sessions.debug("Saved session {}.".format(name))
- else:
- message.info("Saved session {}.".format(name))
+ name = session_manager.save(name, with_private=with_private)
+ except SessionError as e:
+ raise cmdutils.CommandError("Error while saving session: {}".format(e))
+ else:
+ if quiet:
+ log.sessions.debug("Saved session {}.".format(name))
+ else:
+ message.info("Saved session {}.".format(name))
- @cmdutils.register(instance='session-manager')
- @cmdutils.argument('name', completion=miscmodels.session)
- def session_delete(self, name, force=False):
- """Delete a session.
- Args:
- name: The name of the session.
- force: Force deleting internal sessions (starting with an
- underline).
- """
- if name.startswith('_') and not force:
- raise cmdutils.CommandError("{} is an internal session, use "
- "--force to delete anyways."
- .format(name))
- try:
- self.delete(name)
- except SessionNotFoundError:
- raise cmdutils.CommandError("Session {} not found!".format(name))
- except SessionError as e:
- log.sessions.exception("Error while deleting session!")
- raise cmdutils.CommandError("Error while deleting session: {}"
- .format(e))
- else:
- log.sessions.debug("Deleted session {}.".format(name))
+@cmdutils.register()
+@cmdutils.argument('name', completion=miscmodels.session)
+def session_delete(name, *, force: bool = False) -> None:
+ """Delete a session.
+
+ Args:
+ name: The name of the session.
+ force: Force deleting internal sessions (starting with an underline).
+ """
+ if name.startswith('_') and not force:
+ raise cmdutils.CommandError("{} is an internal session, use --force "
+ "to delete anyways.".format(name))
+ try:
+ session_manager.delete(name)
+ except SessionNotFoundError:
+ raise cmdutils.CommandError("Session {} not found!".format(name))
+ except SessionError as e:
+ log.sessions.exception("Error while deleting session!")
+ raise cmdutils.CommandError("Error while deleting session: {}"
+ .format(e))
+ else:
+ log.sessions.debug("Deleted session {}.".format(name))