def __init__( self, definition, parent, label="", insertAfter=None, radialPosition=None, button = 3, useInterToUI = True, replaceExistingMenu = False ) : menu = None if maya.cmds.window( parent, query=True, exists=True ) or maya.cmds.menuBarLayout( parent, query=True, exists=True ) : # parent is a window - we're sticking it in the menubar menu = maya.cmds.menu( label=label, parent=parent, allowOptionBoxes=True, tearOff=True ) elif maya.cmds.menu( parent, query=True, exists=True ) : if replaceExistingMenu: # parent is a menu - we're appending to it: menu = parent self.__postMenu( menu, definition, useInterToUI ) else: # parent is a menu - we're adding a submenu kw = {} if not (insertAfter is None) : kw["insertAfter"] = insertAfter if radialPosition : kw["radialPosition"] = radialPosition menu = maya.cmds.menuItem( label=label, parent=parent, tearOff=True, subMenu=True, allowOptionBoxes=True, **kw ) else : # assume parent is a control which can accept a popup menu menu = maya.cmds.popupMenu( parent=parent, button=button, allowOptionBoxes=True ) maya.cmds.menu( menu, edit=True, postMenuCommand = IECore.curry( self.__postMenu, menu, definition, useInterToUI ) ) UIElement.__init__( self, menu )
def __init__( self, definition, parent, label="", insertAfter=None, radialPosition=None, button = 3, replaceExistingMenu = False, keepCallback=False ) : if maya.cmds.window( parent, query=True, exists=True ) or maya.cmds.menuBarLayout( parent, query=True, exists=True ) : # parent is a window - we're sticking it in the menubar menu = maya.cmds.menu( label=label, parent=parent, allowOptionBoxes=True, tearOff=True ) elif maya.cmds.menu( parent, query=True, exists=True ) : if keepCallback: menu = parent elif replaceExistingMenu : # parent is a menu - we're appending to it: menu = parent self.__postMenu( menu, definition ) else : # parent is a menu - we're adding a submenu kw = {} if not (insertAfter is None) : kw["insertAfter"] = insertAfter if radialPosition : kw["radialPosition"] = radialPosition menu = maya.cmds.menuItem( label=label, parent=parent, tearOff=True, subMenu=True, allowOptionBoxes=True, **kw ) else : # assume parent is a control which can accept a popup menu menu = maya.cmds.popupMenu( parent=parent, button=button, allowOptionBoxes=True ) UIElement.__init__( self, menu ) if not keepCallback: maya.cmds.menu( menu, edit=True, postMenuCommand=functools.partial( self.__postMenu, menu, definition ) ) else: self._parseDefinition(parent, definition)
def __init__( self, node, rootParameter=None, buttonTitle="Select", autoCollapseDepth=2 ) : self._fnP = FnParameterisedHolder( node ) parameterised = self._fnP.getParameterised() self._rootParameter = rootParameter if rootParameter else parameterised[0].parameters() self._window = maya.cmds.window( title="%s: %s" % ( buttonTitle, node ), width=500, height=600 ) UIElement.__init__( self, self._window ) self._form = maya.cmds.formLayout() self._scroll = maya.cmds.scrollLayout( parent=self._form ) self._selector = ParameterSelector( self._rootParameter, self._scroll, autoCollapseDepth=autoCollapseDepth ) maya.cmds.formLayout( self._form, edit=True, attachForm=[ ( self._scroll, "top", 0 ), ( self._scroll, "left", 0 ), ( self._scroll, "right", 0 ), ( self._scroll, "bottom", 0 ), ], )
def filling_field(f_xpath, f_id, f_keys, assert_needed=False): if assert_needed: field = Element(browser, By.XPATH, f_xpath) field_class = field.get_attribute("class", False) assert "required" in field_class f_input = Element(browser, By.ID, f_id) f_input.enter_text(f_keys)
def __init__( self, node, rootParameter=None ) : fn = FnParameterisedHolder( node ) parameterised = fn.getParameterised() self.__parameterised = parameterised # Just using 'not' on a ClassVector takes its length, which equates to False if its empty. self.__rootParameter = rootParameter if rootParameter is not None else parameterised[0].parameters() self.__fnP = fn self.__envVar = parameterised[3].replace( "_PATHS", "_PRESET_PATHS" ) if self.__envVar not in os.environ : maya.cmds.confirmDialog( message="Environment variable not set:\n\n$%s\n\nPlease set "%self.__envVar+\ "this variable to point to one or more paths.\nPresets can then be loaded from these "+\ "locations.", button="OK" ) return paths = os.environ[self.__envVar] sp = IECore.SearchPath( os.path.expandvars( paths ), ":" ) self.__classLoader = IECore.ClassLoader( sp ) presets = self.__getPresets( parameterised[0], self.__rootParameter ) if not presets: maya.cmds.confirmDialog( message="No presets applicable to %s found in the current search paths ($%s)." % ( self.__rootParameter.name, self.__envVar ), button="OK" ) return self.__loadedPresets = {} self.__window = maya.cmds.window( title="Load: %s" % node, width=300, height=500 ) UIElement.__init__( self, self.__window ) self.__form = maya.cmds.formLayout() self.__infoColumn = PresetInfo( parent=self.__form ) self.__selector = PresetSelector( presets, self.__form, allowMultiSelection=True, selectCommand=self._createCallback( self.__selectionChanged ) ) self.__loadButton = maya.cmds.button( l="Load", parent=self.__form, height=30, c=self._createCallback( self.__doLoad ) ) if not presets: maya.cmds.control( self.__loadButton, edit=True, enable=False ) maya.cmds.formLayout( self.__form, edit=True, attachForm=[ ( self.__selector.list(), "top" , 0 ), ( self.__selector.list(), "left" , 0 ), ( self.__selector.list(), "right" , 0 ), ( self.__infoColumn.layout(), "left" , 5 ), ( self.__infoColumn.layout(), "right" , 0 ), ( self.__loadButton, "bottom", 0 ), ( self.__loadButton, "left" , 0 ), ( self.__loadButton, "right" , 0 ) ], attachControl=[ ( self.__selector.list(), "bottom", 4, self.__infoColumn.layout() ), ( self.__infoColumn.layout(), "bottom", 5, self.__loadButton ), ] ) maya.cmds.showWindow( self.__window )
def __init__( self, node, rootParameter=None ) : fn = FnParameterisedHolder( node ) parameterised = fn.getParameterised() self.__parameterised = parameterised # Just using 'not' on a ClassVector takes its length, which equates to False if its empty. self.__rootParameter = rootParameter if rootParameter is not None else parameterised[0].parameters() self.__fnP = fn self.__envVar = parameterised[3].replace( "_PATHS", "_PRESET_PATHS" ) if self.__envVar not in os.environ : maya.cmds.confirmDialog( message="Environment variable not set:\n\n$%s\n\nPlease set "%self.__envVar+\ "this variable to point to one or more paths.\nPresets can then be loaded from these "+\ "locations.", button="OK" ) return paths = os.environ[self.__envVar] sp = IECore.SearchPath( os.path.expandvars( paths ) ) self.__classLoader = IECore.ClassLoader( sp ) presets = self.__getPresets( parameterised[0], self.__rootParameter ) if not presets: maya.cmds.confirmDialog( message="No presets applicable to %s found in the current search paths ($%s)." % ( self.__rootParameter.name, self.__envVar ), button="OK" ) return self.__loadedPresets = {} self.__window = maya.cmds.window( title="Load: %s" % node, width=300, height=500 ) UIElement.__init__( self, self.__window ) self.__form = maya.cmds.formLayout() self.__infoColumn = PresetInfo( parent=self.__form ) self.__selector = PresetSelector( presets, self.__form, allowMultiSelection=True, selectCommand=self._createCallback( self.__selectionChanged ) ) self.__loadButton = maya.cmds.button( l="Load", parent=self.__form, height=30, c=self._createCallback( self.__doLoad ) ) if not presets: maya.cmds.control( self.__loadButton, edit=True, enable=False ) maya.cmds.formLayout( self.__form, edit=True, attachForm=[ ( self.__selector.list(), "top" , 0 ), ( self.__selector.list(), "left" , 0 ), ( self.__selector.list(), "right" , 0 ), ( self.__infoColumn.layout(), "left" , 5 ), ( self.__infoColumn.layout(), "right" , 0 ), ( self.__loadButton, "bottom", 0 ), ( self.__loadButton, "left" , 0 ), ( self.__loadButton, "right" , 0 ) ], attachControl=[ ( self.__selector.list(), "bottom", 4, self.__infoColumn.layout() ), ( self.__infoColumn.layout(), "bottom", 5, self.__loadButton ), ] ) maya.cmds.showWindow( self.__window )
def __init__(self, id, width, height, x, y, notSelectedimage, selectedImage, callback, text, fontRenderer): UIElement.__init__(self, id, width, height, x, y, notSelectedimage) self.isSelected = False self.imageSelected = pygame.transform.scale(selectedImage, (width, height)) self.imageNotSelected = pygame.transform.scale(notSelectedimage, (width, height)) self.callback = callback self.text = text self.fontRenderer = fontRenderer
def __init__(self, compoundParameter, **kw): self.__depth = kw["depth"] if "depth" in kw else 0 self.__autoCollapseDepth = kw[ "autoCollapseDepth"] if "autoCollapseDepth" in kw else 2 self.__parameter = compoundParameter self.__row = maya.cmds.rowLayout(numberOfColumns=2, columnWidth=(1, 20)) UIElement.__init__(self, self.__row) self.__checkbox = maya.cmds.checkBox(label="", cc=self._createCallback( self.syncState), value=True) name = compoundParameter.name if compoundParameter.name else "All Parameters" if "label" in compoundParameter: name = compoundParameter["label"].getTypedValue() collapsed = False if self.__depth < self.__autoCollapseDepth else True self.__frame = maya.cmds.frameLayout( label=name, labelIndent=5, marginWidth=5, borderVisible=False, collapsable=True, collapse=collapsed, ) self.__column = maya.cmds.columnLayout(adj=True) self.__children = {} for p in compoundParameter.values(): if isinstance(p, IECore.CompoundParameter): self.__children[p.name] = ParameterSelector.ParameterGroup( p, depth=self.__depth + 1, autoCollapseDepth=self.__autoCollapseDepth) else: self.__children[p.name] = ParameterSelector.Parameter( p, depth=self.__depth + 1) maya.cmds.setParent("..") maya.cmds.setParent("..") maya.cmds.setParent("..") maya.cmds.separator(style="none", height=3)
def title_screen(self, screen): """ description: - Title page :param screen: actual screen :return: result of game_loop """ start_btn = UIElement( center_position=(400, 100), font_size=30, bg_rgb=BLUE, text_rgb=WHITE, text="Start", action=GameState.NEWGAME, ) highscore_btn = UIElement( center_position=(400, 200), font_size=30, bg_rgb=BLUE, text_rgb=WHITE, text="Highscores", action=GameState.HIGHSCORE, ) settings_btn = UIElement( center_position=(400, 300), font_size=30, bg_rgb=BLUE, text_rgb=WHITE, text="Einstellungen", action=GameState.SETTINGS, ) quit_btn = UIElement( center_position=(400, 400), font_size=30, bg_rgb=BLUE, text_rgb=WHITE, text="Beenden", action=GameState.QUIT, ) play_music_btn = UIElement( center_position=(400, 500), font_size=30, bg_rgb=BLUE, text_rgb=WHITE, text="♫", action=GameState.PLAY_MUSIC, ) buttons = RenderUpdates(start_btn, quit_btn, settings_btn, highscore_btn, play_music_btn) return self.game_loop(screen, buttons, 0)
def __init__( self, compoundParameter, **kw ) : self.__depth = kw["depth"] if "depth" in kw else 0 self.__autoCollapseDepth = kw["autoCollapseDepth"] if "autoCollapseDepth" in kw else 2 self.__parameter = compoundParameter self.__row = maya.cmds.rowLayout( numberOfColumns = 2, columnWidth=( 1, 20 ) ) UIElement.__init__( self, self.__row ) self.__checkbox = maya.cmds.checkBox( label = "", cc=self._createCallback( self.syncState ), value=True ) name = compoundParameter.name if compoundParameter.name else "All Parameters" if "label" in compoundParameter: name = compoundParameter["label"].getTypedValue() collapsed = False if self.__depth < self.__autoCollapseDepth else True self.__frame = maya.cmds.frameLayout( label = name, labelIndent = 5, marginWidth = 5, borderVisible = False, collapsable = True, collapse = collapsed, ) self.__column = maya.cmds.columnLayout( adj=True ) self.__children = {} for p in compoundParameter.values() : if isinstance( p, IECore.CompoundParameter ) : self.__children[ p.name ] = ParameterSelector.ParameterGroup( p, depth = self.__depth+1, autoCollapseDepth = self.__autoCollapseDepth ) else: self.__children[ p.name ] = ParameterSelector.Parameter( p, depth=self.__depth+1 ) maya.cmds.setParent( ".." ) maya.cmds.setParent( ".." ) maya.cmds.setParent( ".." ) maya.cmds.separator( style="none", height=3 )
def play_level(self, screen, player): quit_btn = UIElement( center_position=(400, 400), font_size=30, bg_rgb=BLUE, text_rgb=WHITE, text="Beenden", action=GameState.QUIT, ) buttons = RenderUpdates(quit_btn) return self.game_loop(screen, buttons, 1)
def __init__( self, presets, parent=None, *args, **kwargs ) : oldParent = maya.cmds.setParent( q=True ) if not parent : parent = oldParent maya.cmds.setParent( parent ) self.__list = maya.cmds.textScrollList( *args, **kwargs ) UIElement.__init__( self, self.__list ) if not presets: maya.cmds.textScrollList( self.__list, edit=True, append="No presets found...", enable=False ) else : presetsByPath = {} for ( name, p ) in presets : print name, p path = os.path.dirname( p._cob ).rpartition( p.typeName() )[0] if path not in presetsByPath : presetsByPath[path] = [] presetsByPath[path].append( name ) for ( path, names ) in presetsByPath.items() : maya.cmds.textScrollList( self.__list, edit=True, append=path ) for name in names : maya.cmds.textScrollList( self.__list, edit=True, append=name ) maya.cmds.textScrollList( self.__list, edit=True, append="" ) maya.cmds.setParent( oldParent )
def __init__(self, presets, parent=None, *args, **kwargs): oldParent = maya.cmds.setParent(q=True) if not parent: parent = oldParent maya.cmds.setParent(parent) self.__list = maya.cmds.textScrollList(*args, **kwargs) UIElement.__init__(self, self.__list) if not presets: maya.cmds.textScrollList(self.__list, edit=True, append="No presets found...", enable=False) else: presetsByPath = {} for (name, p) in presets: print name, p path = os.path.dirname(p._cob).rpartition(p.typeName())[0] if path not in presetsByPath: presetsByPath[path] = [] presetsByPath[path].append(name) for (path, names) in presetsByPath.items(): maya.cmds.textScrollList(self.__list, edit=True, append=path) for name in names: maya.cmds.textScrollList(self.__list, edit=True, append=name) maya.cmds.textScrollList(self.__list, edit=True, append="") maya.cmds.setParent(oldParent)
# # Into existing tests: # - add a Browser object to the tests where you still have Selenium webdriver initialization # - update code of lines for WebDriverWait to use the new method from the Browser class - get_wd_wait # - update code to use new class UIElement in places instead of find_element_by* # May 14th, 2021 # student Evgeny Abdulin browser = Browser( "https://techskillacademy.net/brainbucket/index.php?route=account/login", "Firefox") driver = browser.get_driver() # sending a password to a login page password_login_input = Element(browser, By.ID, "input-password") password_login_input.enter_text("password") # clicking a button to go to the registration page, waiting until clickable new_registrant_btn = browser.get_wd_wait().until( ec.element_to_be_clickable( (By.XPATH, "//a[contains(text(), 'Continue')]"))) new_registrant_btn.click() # checking if title Register Account is visible register_title = browser.get_wd_wait().until( ec.visibility_of_element_located((By.XPATH, "//h1"))) # filling fields/checking 'required' on the registration page def filling_field(f_xpath, f_id, f_keys, assert_needed=False):
def __init__(self, id, width, height, x, y, image, filler): UIElement.__init__(self, id, width, height, x, y, image) self.fillPercent = 0.5 self.filler = filler self.logo = self.image self.id = id
def settings_page_highlited(self, screen, player, highlited_btn): """ description: - Settings page :param screen: actual screen :param player: player object :param highlited_btn: selected button :return: result of game_loop """ # Datenbank zum auslesen der aktuellen Einstellungen # ansicht der Settings seite zum Auswaehlen des Buttons L/R/Pause dbi = DatabaseInteract() sets = dbi.get_settings() heading = TextElement( center_position=(400, 80), font_size=25, bg_rgb=BLUE, text_rgb=WHITE, text="Einstellungen", ) return_btn = UIElement( center_position=(140, 570), font_size=20, bg_rgb=BLUE, text_rgb=WHITE, text="Zurück zum Hauptmenü", action=GameState.TITLE, ) move_left = TextElement( center_position=(400, 150), font_size=font_size_picker("move_left", highlited_btn), bg_rgb=BLUE, text_rgb=WHITE, text=f"Nach Links: {sets[1]}", ) move_right = TextElement( center_position=(400, 200), font_size=font_size_picker("move_right", highlited_btn), bg_rgb=BLUE, text_rgb=WHITE, text=f"Nach Rechts: {sets[3]}", ) shoot_ball = TextElement( center_position=(400, 250), font_size=font_size_picker("shoot_ball", highlited_btn), bg_rgb=BLUE, text_rgb=WHITE, text=f"Ball schiessen: {sets[8]}", ) do_pause = TextElement( center_position=(400, 300), font_size=font_size_picker("do_pause", highlited_btn), bg_rgb=BLUE, text_rgb=WHITE, text=f"Pausenmenü: {sets[5]}", ) if highlited_btn != 4: difficulty = TextElement( center_position=(400, 350), font_size=font_size_picker("difficulty", highlited_btn), bg_rgb=BLUE, text_rgb=WHITE, text=f"Schwierigkeit: {sets[7]}", ) else: difficulty = TextElement( center_position=(400, 350), font_size=font_size_picker("difficulty", highlited_btn), bg_rgb=BLUE, text_rgb=WHITE, text= f"Schwierigkeit: {sets[7]} (mit '+' und '-' anpassen max. 4 min. 1)", ) buttons = RenderUpdates(return_btn, move_left, move_right, do_pause, difficulty, heading, shoot_ball) return self.game_loop(screen, buttons, highlited_btn * -1)
def __init__(self, name, index, Location, width, height, active): UIElement.__init__(self, name, index, Location, width, height, active) self.img = None
def __init__(self, ID, width, height, x, y, color, text, fontRenderer): UIElement.__init__(self, ID, width, height, x, y) self.color = color self.id = ID self.fontRenderer = fontRenderer self.text = text
def settings_page(self, screen, player): """ description: - Settings page :param screen: actual screen :param player: player object :return: result of game_loop """ # Datenbank zum auslesen der aktuellen Einstellungen dbi = DatabaseInteract() sets = dbi.get_settings() heading = TextElement( center_position=(400, 80), font_size=25, bg_rgb=BLUE, text_rgb=WHITE, text="Einstellungen", ) return_btn = UIElement( center_position=(140, 570), font_size=20, bg_rgb=BLUE, text_rgb=WHITE, text="Zurück zum Hauptmenü", action=GameState.TITLE, ) move_left = UIElement( center_position=(400, 150), font_size=20, bg_rgb=BLUE, text_rgb=WHITE, text=f"Nach Links: {sets[1]}", action=GameState.SETTINGS_HIGHLITED_MOVE_LEFT, ) move_right = UIElement( center_position=(400, 200), font_size=20, bg_rgb=BLUE, text_rgb=WHITE, text=f"Nach Rechts: {sets[3]}", action=GameState.SETTINGS_HIGHLITED_MOVE_RIGHT, ) shoot_ball = UIElement( center_position=(400, 250), font_size=20, bg_rgb=BLUE, text_rgb=WHITE, text=f"Ball schiessen: {sets[8]}", action=GameState.SETTINGS_HIGHLITED_SHOOT_BALL, ) do_pause = UIElement( center_position=(400, 300), font_size=20, bg_rgb=BLUE, text_rgb=WHITE, text=f"Pausenmenü: {sets[5]}", action=GameState.SETTINGS_HIGHLITED_DO_PAUSE, ) difficulty = UIElement( center_position=(400, 350), font_size=20, bg_rgb=BLUE, text_rgb=WHITE, text=f"Schwierigkeit: {sets[7]}", action=GameState.SETTINGS_HIGHLITED_DIFFICULTY, ) buttons = RenderUpdates(return_btn, move_left, move_right, do_pause, difficulty, heading, shoot_ball) return self.game_loop(screen, buttons, 0)
# Exercise #2 # # Create Radiobutton/Checkbox class that will be inherited from UIElement class and will have a method # to select the radio button/checkbox if it's not selected. # May 14th, 2021 # student Evgeny Abdulin browser = Browser( "https://techskillacademy.net/brainbucket/index.php?route=account/login", "Firefox") driver = browser.get_driver() # sending a password to a login page password_login_input = Element(browser, By.ID, "input-password") password_login_input.enter_text("password") # clicking a button to go to the registration page, waiting until clickable new_registrant_btn = browser.get_wd_wait().until( ec.element_to_be_clickable( (By.XPATH, "//a[contains(text(), 'Continue')]"))) new_registrant_btn.click() # checking if title Register Account is visible register_title = browser.get_wd_wait().until( ec.visibility_of_element_located((By.XPATH, "//h1"))) # filling fields/checking 'required' on the registration page def filling_field(f_xpath, f_id, f_keys, assert_needed=False):
def __init__(self, id, width, height, x, y, image): UIElement.__init__(self, id, width, height, x, y, image) self.rect = Rect(x, y, width, height)