On Tuesday, March 26, 2013 2:41:38 PM UTC+1, Mitya Sirenef wrote: > ... > 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. I was skeptical of your suggestion at first but trying it out on an example script made me see its appeal: notepad_main = start("Notepad") with notepad_main: write("Hello World!") save_dialogue = press(CTRL + 's') with save_dialogue: write("test.txt", into="File name") click("Save") click("Close") Forcing the library user to always use the "with ..." seems like overkill though. I think the gained precision does not justify this burden on the library user. Hm.... -- http://mail.python.org/mailman/listinfo/python-list