...
At the __exit__, further commands are no longer routed to that window;
if it was a nested context, window is switched to the outer context,
WHEN there are commands in it (i.e. on the first command). This seems
pretty intuitive to me:
with notepad1:
^S
with notepad2:
^S
write('something')
...
What I am most afraid of: that the window that's currently the
context "disappears":
notepad = start("Notepad")
with notepad:
press(ALT + TAB)
write("Am I in Notepad now?")
Alt-tab needs to be handled by a wrapper function that gives you the
object of the window you've switched to:
otherwin = alt_tab()
with otherwin:
...
If window is changed within 'with' block, the rest of block should be
ignored. Perhaps there could also be a way to switch this behaviour off,
for the entire script or for current block only.
What do you think of designs #3 and #4?
...
These are ok, too, but I feel it's much easier to send commands to a
wrong window vs. context managers. The same command in a different
window can have vastly different and dangerous effect. In other python
code that's generally not common at all, and would be bad style:
lst = lst1
lst.append('x')
del lst[3]
lst.insert(0, 'a')
lst = lst2
del lst[2]
lst.append('y')
lst = lst3
lst.insert(0, 'x')
lst += [1,2]
I think current window should also be acquired explicitly:
with get_current_window():
type("some kind of snippet")
For usage when a command should apply to all types of windows.