""" LDTP v2 Core. @author: Eitan Isaacson @author: Nagappan Alagappan @copyright: Copyright (c) 2009 Eitan Isaacson @copyright: Copyright (c) 2009-13 Nagappan Alagappan @license: LGPL http://ldtp.freedesktop.org This file may be distributed and/or modified under the terms of the GNU Lesser General Public License version 2 as published by the Free Software Foundation. This file is distributed without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See 'COPYING' in the source distribution for more information. Headers in this file shall remain intact. """ import re import pyatspi from utils import Utils class Menu(Utils): def selectmenuitem(self, window_name, object_name): """ Select (click) a menu item. @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. Or menu heirarchy @type object_name: string @return: 1 on success. @rtype: integer """ if re.search(';', object_name): obj = self._get_menu_hierarchy(window_name, object_name) else: obj = self._get_object(window_name, object_name) self._click_object(obj) return 1 def doesmenuitemexist(self, window_name, object_name, strict_hierarchy = False): """ Check a menu item exist. @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. Or menu heirarchy @type object_name: string @param strict_hierarchy: Mandate menu hierarchy if set to True @type object_name: boolean @return: 1 on success. @rtype: integer """ try: if strict_hierarchy or re.search(';', object_name): obj = self._get_menu_hierarchy(window_name, object_name, wait=False) else: obj = self._get_object(window_name, object_name, False) return 1 except: return 0 def listsubmenus(self, window_name, object_name): """ List children of menu item @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. Or menu heirarchy @type object_name: string @return: menu item in list on success. @rtype: list """ if re.search(';', object_name): obj = self._get_menu_hierarchy(window_name, object_name) else: obj = self._get_object(window_name, object_name) _children = [] for _child in self._list_objects(obj): if _child.name == '' or _child.name == 'Empty' or \ obj == _child: # If empty string don't add it to the list or # if the given object and child object matches continue _children.append(_child.name) return _children def menucheck(self, window_name, object_name): """ Check (click) a menu item. @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. Or menu heirarchy @type object_name: string @return: 1 on success. @rtype: integer """ if re.search(';', object_name): obj = self._get_menu_hierarchy(window_name, object_name) else: obj = self._get_object(window_name, object_name) if self._check_state(obj, pyatspi.STATE_CHECKED) == False: self._click_object(obj) return 1 def menuuncheck(self, window_name, object_name): """ Uncheck (click) a menu item. @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. Or menu heirarchy @type object_name: string @return: 1 on success. @rtype: integer """ if re.search(';', object_name): obj = self._get_menu_hierarchy(window_name, object_name) else: obj = self._get_object(window_name, object_name) if self._check_state(obj, pyatspi.STATE_CHECKED): self._click_object(obj) return 1 def menuitemenabled(self, window_name, object_name): """ Verify a menu item is enabled @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. Or menu heirarchy @type object_name: string @return: 1 on success. @rtype: integer """ try: if re.search(';', object_name): obj = self._get_menu_hierarchy(window_name, object_name, wait=False) else: obj = self._get_object(window_name, object_name, False) if self._check_state(obj, pyatspi.STATE_ENABLED): return 1 except: pass return 0 def verifymenucheck(self, window_name, object_name): """ Verify a menu item is checked @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. Or menu heirarchy @type object_name: string @return: 1 on success. @rtype: integer """ try: if re.search(';', object_name): obj = self._get_menu_hierarchy(window_name, object_name, wait=False) else: obj = self._get_object(window_name, object_name, False) if self._check_state(obj, pyatspi.STATE_CHECKED): return 1 except: pass return 0 def verifymenuuncheck(self, window_name, object_name): """ Verify a menu item is un-checked @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. Or menu heirarchy @type object_name: string @return: 1 on success. @rtype: integer """ try: if re.search(';', object_name): obj = self._get_menu_hierarchy(window_name, object_name, wait=False) else: obj = self._get_object(window_name, object_name, False) if not self._check_state(obj, pyatspi.STATE_CHECKED): return 1 except: pass return 0 def invokemenu(self, window_name, object_name): """ Invoke menu item. @param window_name: Window name to look for, either full name, LDTP's name convention, or a Unix glob. @type window_name: string @param object_name: Object name to look for, either full name, LDTP's name convention, or a Unix glob. @type object_name: string @return: 1 on success. @rtype: integer """ return self.press(window_name, object_name)