def __init__(self, *args): if len(args)==4: JRegion.__init__(self, args[0], args[1], args[2], args[3]) elif len(args)==1: JRegion.__init__(self, args[0]) else: raise Exception("Wrong number of parameters of Region's contructor")
def wait(self, target, timeout=None): if isinstance(target, int) or isinstance(target, long): target = float(target) if timeout == None: return JRegion.wait(self, target) else: return JRegion.wait(self, target, timeout)
def __init__(self, *args): if len(args) == 4: JRegion.__init__(self, args[0], args[1], args[2], args[3]) elif len(args) == 1: JRegion.__init__(self, args[0]) else: raise Exception( "Wrong number of parameters of Region's contructor")
def type(self, *args): if len(args) == 1: return JRegion.type(self, None, args[0], 0) if len(args) == 2: if __builtin__.type(args[1]) is types.IntType: return JRegion.type(self, None, args[0], args[1]) else: return JRegion.type(self, args[0], args[1], 0) return JRegion.type(self, args[0], args[1], args[2])
def wait(self, target, timeout=None): if isinstance(target, int) or isinstance(target, long) or isinstance(target, float): time.sleep(target) return if timeout == None: ret = JRegion.wait(self, target) else: ret = JRegion.wait(self, target, timeout) return ret
def wait(self, target, timeout=None): ttype = __builtin__.type(target) if ttype is types.IntType or ttype is types.FloatType: time.sleep(target) return if timeout == None: ret = JRegion.wait(self, target) else: ret = JRegion.wait(self, target, timeout) return ret
def wait(self, target, timeout=None): if isinstance(target, int) or isinstance(target, long) or isinstance( target, float): time.sleep(target) return if timeout == None: ret = JRegion.wait(self, target) else: ret = JRegion.wait(self, target, timeout) return ret
def __init__(self, *args): if DEBUG: print "**IN*** Jython INIT Region" if len(args)==4: JRegion.__init__(self, args[0], args[1], args[2], args[3]) elif len(args)==1: JRegion.__init__(self, args[0]) else: raise Exception("Wrong number of parameters of Region's contructor") self.setScriptingType("JythonRegion") self._global_funcs = None if DEBUG: print "**OUT** Jython INIT Region"
def __init__(self, *args): if DEBUG: print "**IN*** Jython INIT Region" if len(args) == 4: JRegion.__init__(self, args[0], args[1], args[2], args[3]) elif len(args) == 1: JRegion.__init__(self, args[0]) else: raise Exception( "Wrong number of parameters of Region's contructor") self.setScriptingType("JythonRegion") self._global_funcs = None if DEBUG: print "**OUT** Jython INIT Region"
def onChange(self, arg1, arg2=None): t_arg1 = __builtin__.type(arg1) if t_arg1 is types.IntType: min_size = arg1 handler = arg2 else: min_size = None handler = arg1 class AnonyObserver(SikuliEventAdapter): def targetChanged(self, event): handler(event) if min_size != None: return JRegion.onChange(self, min_size, AnonyObserver()) return JRegion.onChange(self, AnonyObserver())
def click(self, target, modifiers=0): try: return SikuliRegion.click(self, target, modifiers) except FindFailed, e: self.log.html_img("Find Filed", "images/" + getFilename(target)) self.log.screenshot(msg="Region", region=(self.getX(), self.getY(), self.getW(), self.getH())) raise e
def dragDrop(self,src, dest, modifiers=0): try: return SikuliRegion.dragDrop(self,src, dest, modifiers) except FindFailed, e: self.log.html_img("Find Filed", getFilename(src)+" or " + getFilename(src)) self.log.screenshot(msg="Region", region=(self.getX(), self.getY(), self.getW(), self.getH())) raise e
def _setLocationRelativeToRegion(comp, r_, side='left', offset=(0,0), expand=(0,0,0,0), \ horizontalalignment = 'center', \ verticalalignment = 'center'): r = Region(r_) # Offset (dx, dy) = offset r.x += dx r.y += dy # Side if (side == 'right'): comp.setLocationRelativeToRegion(r, Layout.RIGHT) elif (side == 'top'): comp.setLocationRelativeToRegion(r, Layout.TOP) elif (side == 'bottom'): comp.setLocationRelativeToRegion(r, Layout.BOTTOM) elif (side == 'left'): comp.setLocationRelativeToRegion(r, Layout.LEFT) elif (side == 'inside'): comp.setLocationRelativeToRegion(r, Layout.INSIDE) # Alignment if (horizontalalignment == 'left'): comp.setHorizontalAlignmentWithRegion(r, 0.0) elif (horizontalalignment == 'right'): comp.setHorizontalAlignmentWithRegion(r, 1.0) if (verticalalignment == 'top'): comp.setVerticalAlignmentWithRegion(r, 0.0) elif (verticalalignment == 'bottom'): comp.setVerticalAlignmentWithRegion(r, 1.0)
def doubleclick(self,target,modifiers=0): addFoundImage(getFilename(target)) try: return SikuliRegion.doubleClick(self, target, modifiers) except FindFailed, e: self.log.html_img("Find Filed", getFilename(target)) #"images/" + getFilename(target)) self.log.screenshot(msg="Region", region=(self.getX(), self.getY(), self.getW(), self.getH())) raise e
def mouseMove(self,target): addFoundImage(getFilename(target)) try: return SikuliRegion.mouseMove(self,target) except FindFailed, e: self.log.html_img("Find Filed", getFilename(target)) #"images/" + getFilename(target)) self.log.screenshot(msg="Region", region=(self.getX(), self.getY(), self.getW(), self.getH())) raise e
def onChange(self, arg1, arg2=None): if isinstance(arg1, int): min_size = arg1 handler = arg2 else: if (arg2 != None): raise Exception("onChange: Invalid parameters set") min_size = None handler = arg1 class AnonyObserver(SikuliEventAdapter): def targetChanged(self, event): handler(event) if min_size != None: return JRegion.onChange(self, min_size, AnonyObserver()) return JRegion.onChange(self, AnonyObserver())
def paste(self, *args): if len(args) == 1: target = None s = args[0] elif len(args) == 2: target = args[0] s = args[1] if isinstance(s, types.StringType): s = java.lang.String(s, "utf-8") return JRegion.paste(self, target, s)
def hotspot(target, message, side='right'): # TODO allow hotspot's positions to be automatically updated r = _getRegionFromTarget(target) txtcomp = SikuliGuideCallout(message) r1 = Region(r) r1.x -= 10 r1.w += 20 _setLocationRelativeToRegion(txtcomp, r1, side) txtcomp.setShadow(10, 2) comp = SikuliGuideHotspot(r, txtcomp, _g) _g.addToFront(comp) return comp
def _adjustRegion(r_, offset=(0, 0), expand=(0, 0, 0, 0)): r = Region(r_) # Offset (dx, dy) = offset r.x += dx r.y += dy # Expansion if isinstance(expand, tuple): (dt, dl, db, dr) = expand else: (dt, dl, db, dr) = (expand, expand, expand, expand) r.x -= dl r.y -= dt r.w = r.w + dl + dr r.h = r.h + dt + db return r
def testToJythonRegion(self): jr = JRegion(0, 0, 100, 100) pyr = JRegion.toJythonRegion(jr) self.assertEqual(jr.x, pyr.x) self.assertEqual(jr.y, pyr.y) self.assertEqual(jr.w, pyr.w) self.assertEqual(jr.h, pyr.h) try: with jr: self.fail("should not happen: __exit__ is not defined in Java.") except AttributeError,e: pass
def _adjustRegion(r_, offset = (0,0), expand=(0,0,0,0)): r = Region(r_) # Offset (dx,dy) = offset r.x += dx r.y += dy # Expansion if isinstance(expand, tuple): (dt,dl,db,dr) = expand else: (dt,dl,db,dr) = (expand,expand,expand,expand) r.x -= dl r.y -= dt r.w = r.w + dl + dr r.h = r.h + dt + db return r
def testToJythonRegion(self): jr = JRegion(0, 0, 100, 100) pyr = JRegion.toJythonRegion(jr) self.assertEqual(jr.x, pyr.x) self.assertEqual(jr.y, pyr.y) self.assertEqual(jr.w, pyr.w) self.assertEqual(jr.h, pyr.h) try: with jr: self.fail( "should not happen: __exit__ is not defined in Java.") except AttributeError, e: pass
def paste(self, *args): if len(args) == 1: target = None s = args[0] elif len(args) == 2: target = args[0] s = args[1] t_str = __builtin__.type(s) if t_str is types.UnicodeType: pass # do nothing elif t_str is types.StringType: s = java.lang.String(s, "utf-8") return JRegion.paste(self, target, s)
def observe(self, time=FOREVER, background=False): if not background: return JRegion.observe(self, time) else: if(self.getEvtMgr()) == None: Debug.error("Jython Region: observe: nothing to observe") return None else: r = (JRegion(self)) e = self.getEvtMgr() e.setRegion(r) r.setEvtMgr(e) r.setObserveScanRate(self.getObserveScanRate()) return r.observeInBackground(time)
def _show_steps(steps, timeout=None): # only keep callables steps = filter(lambda x: callable(x), steps) print steps n = len(steps) i = 0 while True: step = steps[i] step() msg = "Step %d of %d" % (i + 1, n) a = rectangle(Region(100, 100, 0, 0)) text((10, 50), msg, fontsize=10) if n == 1: # only one step addCloseButton(a) elif i == 0: # first step addNextButton(a) addCloseButton(a) elif i < n - 1: # between addPreviousButton(a) addNextButton(a) addCloseButton(a) elif i == n - 1: # final step addPreviousButton(a) addCloseButton(a) ret = _g.showNow() if (ret == "Previous" and i > 0): i = i - 1 elif (ret == "Next" and i < n - 1): i = i + 1 elif (ret == None and i < n - 1): # timeout i = i + 1 elif (ret == "Close"): return else: # some other transitions happened if (i < n - 1): i = i + 1 else: return
def setThrowException(self, flag): return JRegion.setThrowException(self, flag)
def keyUp(self, keys=None): return JRegion.keyUp(self, keys)
def keyDown(self, keys): return JRegion.keyDown(self, keys)
def observe(self, time=FOREVER, background=False): if background: return self.observeInBackground(time) else: return JRegion.observe(self, time)
def onVanish(self, target, handler): class AnonyObserver(SikuliEventAdapter): def targetVanished(self, event): handler(event) return JRegion.onVanish(self, target, AnonyObserver())
def _getRegionFromTarget(target): if isinstance(target, SikuliGuideComponent): return Region(target.getBounds()) else: return s.getRegionFromPSRM(target)
def _addComponentHelper(comp, target, side='best', margin=0, offset=(0, 0), horizontalalignment='center', verticalalignment='center', shadow='default'): # Margin if margin: if isinstance(margin, tuple): (dt, dl, db, dr) = margin else: (dt, dl, db, dr) = (margin, margin, margin, margin) comp.setMargin(dt, dl, db, dr) # Offset if offset: (x, y) = offset comp.setOffset(x, y) # Side if (side == 'right'): sideConstant = Layout.RIGHT elif (side == 'top'): sideConstant = Layout.TOP elif (side == 'bottom'): sideConstant = Layout.BOTTOM elif (side == 'left'): sideConstant = Layout.LEFT elif (side == 'inside'): sideConstant = Layout.INSIDE elif (side == 'over'): sideConstant = Layout.OVER # Alignment # if (horizontalalignment == 'left'): # comp.setHorizontalAlignmentWithRegion(r,0.0) # elif (horizontalalignment == 'right'): # # if (verticalalignment == 'top'): # comp.setVerticalAlignmentWithRegion(r,0.0) # elif (verticalalignment == 'bottom'): # comp.setVerticalAlignmentWithRegion(r,1.0) if isinstance(target, Region): # absolute location wrt a Region comp.setLocationRelativeToRegion(target, sideConstant) elif isinstance(target, tuple): # absolute location wrt a point (specified as (x,y)) comp.setLocationRelativeToRegion(Region(target[0], target[1], 1, 1), Layout.RIGHT) else: if isinstance(target, str): # relative location to a string (image filename) targetComponent = anchor(Pattern(target)) targetComponent.setOpacity(0) elif isinstance(target, Pattern): # relative location to a pattern targetComponent = anchor(target) targetComponent.setOpacity(0) elif isinstance(target, SikuliGuideComponent): targetComponent = target comp.setLocationRelativeToComponent(targetComponent, sideConstant) # set shadow, different sizes for different types of components if shadow == 'default': if (isinstance(comp, SikuliGuideCircle) or isinstance(comp, SikuliGuideRectangle) or isinstance(comp, SikuliGuideBracket)): comp.setShadow(5, 2) elif not (isinstance(comp, SikuliGuideSpotlight)): comp.setShadow(10, 2) # add the component to guide _g.addToFront(comp) return comp
def text(self): return JRegion.text(self).encode("utf8")
def onAppear(self, target, handler): class AnonyObserver(SikuliEventAdapter): def targetAppeared(self, event): handler(event) return JRegion.onAppear(self, target, AnonyObserver())
def setAutoWaitTimeout(self, sec): return JRegion.setAutoWaitTimeout(self, sec)
def findAll(self, target): ret = JRegion.findAll(self, target) return ret
def observe(self, waitTime=FOREVER, background=False): return JRegion.observeJ(waitTime, background)
def waitVanish(self, target, timeout=None): if timeout == None: ret = JRegion.waitVanish(self, target) else: ret = JRegion.waitVanish(self, target, timeout) return ret
def mouseDown(self, buttons): return JRegion.mouseDown(self, buttons)
def _getRegionFromTarget(target): if isinstance(target, Visual): return Region(target.getBounds()) else: return Screen().getRegionFromTarget(target)
def mouseUp(self, buttons=0): return JRegion.mouseUp(self, buttons)
def mouseMove(self, target): return JRegion.hover(self, target)
def getRegion(self): return Region(self.x, self.y, 1, 1)
def _addComponentHelper(comp, target, side='best', margin=0, offset=(0, 0), horizontalalignment='center', verticalalignment='center', font=None, fontsize=0, width=0, shadow='default', front=None, back=None, frame=None, text=None): # set the component's colors comp.setColors(front, back, frame, text) # set the component's font comp.setFont(font, fontsize) # set the components width if width > 0: comp.setMaxWidth(width) # Margin if margin: if isinstance(margin, tuple): (dt, dl, db, dr) = margin else: (dt, dl, db, dr) = (margin, margin, margin, margin) comp.setMargin(dt, dl, db, dr) # Offset if offset: (x, y) = offset comp.setOffset(x, y) # Side if (side == 'right'): sideConstant = Layout.RIGHT elif (side == 'top'): sideConstant = Layout.TOP elif (side == 'bottom'): sideConstant = Layout.BOTTOM elif (side == 'left'): sideConstant = Layout.LEFT elif (side == 'inside'): sideConstant = Layout.INSIDE elif (side == 'over'): sideConstant = Layout.OVER # Alignment # if (horizontalalignment == 'left'): # comp.setHorizontalAlignmentWithRegion(r,0.0) # elif (horizontalalignment == 'right'): # if (verticalalignment == 'top'): # comp.setVerticalAlignmentWithRegion(r,0.0) # elif (verticalalignment == 'bottom'): # comp.setVerticalAlignmentWithRegion(r,1.0) if isinstance(target, Region): # absolute location wrt a Region comp.setLocationRelativeToRegion(target, sideConstant) elif isinstance(target, tuple): # absolute location wrt a point (specified as (x,y)) comp.setLocationRelativeToRegion(Region(target[0], target[1], 1, 1), Layout.RIGHT) else: targetComponent = None if isinstance(target, str): # relative location to a string (image filename) targetComponent = anchor(Pattern(target)) targetComponent.setOpacity(0) elif isinstance(target, Pattern): # relative location to a pattern targetComponent = anchor(target) targetComponent.setOpacity(0) elif isinstance(target, SikuliGuideComponent): targetComponent = target if targetComponent: comp.setLocationRelativeToComponent(targetComponent, sideConstant) else: Debug.error("GuideComponentSetup: invalid target: ", target) return None # set shadow, different sizes for different types of components #TODO shadow handling if shadow == 'default': if (isinstance(comp, SikuliGuideCircle) or \ isinstance(comp, SikuliGuideRectangle) or \ isinstance(comp, SikuliGuideBracket)): comp.setShadow(5, 2) elif not (isinstance(comp, SikuliGuideSpotlight)): comp.setShadow(10, 2) # add the component to guide comp.updateComponent() _g.addToFront(comp) return comp
def getRegion(self): return Region(self.x1, self.y1, 1, 1).add(Location(self.x2, self.y2))