Source code for iterm2.window

#!/usr/bin/python
# This is python 2.7 on macOS 10.12.

from __future__ import print_function

import _depfuture as depfuture
import session
from _sharedstate import get_socket, wait
import _socket as socket
import api_pb2
import tab

[docs]class AbstractWindow(object): def __repr__(self): raise NotImplementedError("unimplemented")
[docs] def get_status(self): raise NotImplementedError("unimplemented")
[docs] def get_window_id(self): raise NotImplementedError("unimplemented")
[docs] def get_tabs(self): raise NotImplementedError("unimplemented")
[docs] def create_tab(self, profile=None, command=None, index=None): raise NotImplementedError("unimplemented")
[docs] def pretty_str(self, indent=""): s = indent + "Window id=%s\n" % self.get_window_id() for t in self.get_tabs(): s += t.pretty_str(indent=indent + " ") return s
[docs]class FutureWindow(AbstractWindow): def __init__(self, future): self.future = future self.window = None self.status = None def __repr__(self): return "<FutureWindow status=%s window=%s>" % (str(self.get_status()), repr(self._get_window()))
[docs] def get_window_id(self): return self._get_window().get_window_id()
[docs] def get_tabs(self): return self._get_window().get_tabs()
[docs] def create_tab(self, profile=None, command=None, index=None): if self.future is None: return self._get_window().create_tab(profile=profile, command=command, index=index) def create_inner(response): return get_socket().request_create_tab( profile=profile, window=self.get_window_id(), index=index, command=command) createTabFuture = depfuture.DependentFuture(self.future, create_inner) return tab.FutureTab(createTabFuture);
[docs] def get_status(self): self._parse_if_needed() return self.status
def _get_window(self): self._parse_if_needed() return self.window def _parse_if_needed(self): if self.future is not None: self._parse(self.future.get()) self.future = None def _parse(self, response): self.status = response.status if self.status == api_pb2.CreateTabResponse.OK: s = session.Session(response.session_id) t = tab.Tab(response.tab_id, [ s ]) self.window = Window(response.window_id, [ t ])
[docs]class Window(AbstractWindow): def __init__(self, window_id, tabs): self.window_id = window_id self.tabs = tabs def __repr__(self): return "<Window id=%s tabs=%s>" % (self.window_id, self.tabs)
[docs] def get_window_id(self): return self.window_id
[docs] def get_tabs(self): return self.tabs
[docs] def create_tab(self, profile=None, command=None, index=None): return tab.FutureTab(get_socket().request_create_tab( profile=profile, window=self.window_id, index=index, command=command))