← Back to team overview

sikuli-driver team mailing list archive

[Bug 905435] Re: X-1.0rc3: Region.onChange(handler, Integer) should give an error, instead of silently ignoring the Integer

 

When trying the duplication of an existing match, as mentioned above:

m1 = find("some-image.png")
m2 = Match(m1)

It gives:

sikuli.script.Match(): expected 2 or 6-7 args; got 1

When I tried a few things as second argument, it gave:

2nd arg can't be coerced to org.sikuli.script.IScreen

What can be specified as the second argument to make the above example
work?

-- 
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to Sikuli.
https://bugs.launchpad.net/bugs/905435

Title:
  X-1.0rc3: Region.onChange(handler, Integer) should give an error,
  instead of silently ignoring the Integer

Status in Sikuli:
  Fix Committed

Bug description:
  ***** problem

  using onChange(handler, integer) seems to work, but it is a wrong
  usage according to the API docs. In fact the second parameter is
  simply ignored in this case.

  This usage should give an error.

  ---------------------------------------

  The other observations here are due to the fact, that in some cases, a
  Match object does not work like a Region, which is a known problem.

  *** workaround
  cast the Match to a Region:

  matchRegion = Region(some_match)

  ------------------------------------------

  Problem: The Match.onChange() method does not reflect the same
  behavior as Region.onChange()

  --
  from sikuli.Sikuli import Match

  def test(event):
      print event

  region = Match(100,100,200,200, 2.5)
  region.onChange(test, 50)
  region.observe()

  ####
  Traceback (most recent call last):
    File "C:\work\killpy\test.py", line 7, in <module>
      region.onChange(test, 50)
  TypeError: onChange(): 1st arg can't be coerced to int

  ---
  Swapping, onChange arguments as follows:
  region.onChange(50, test)

  ####
  Traceback (most recent call last):
    File "C:\work\killpy\test.py", line 7, in <module>
      region.onChange(50, test)
  TypeError: onChange(): 2nd arg can't be coerced to org.sikuli.script.SikuliEventObserver
  --

  However, the following code does work:
  --
  from sikuli.Sikuli import Region

  def test(event):
      print event

  region = Region(100,100,200,200)
  region.onChange(test, 50)
  region.observe()

  ####
  ChangeEvent on Region[100,100 200x200]@Screen(0) E:Y, T:3.0 | 1 changes
  ChangeEvent on Region[100,100 200x200]@Screen(0) E:Y, T:3.0 | 1 changes
  ---

  However this does not reflect the documentation which states the
  minChangedSize as the 1st argument and the handler as the 2nd
  argument.  In reality it is flipped around.

  http://sikuli.org/docx/region.html?highlight=onchange#Region.onChange

To manage notifications about this bug go to:
https://bugs.launchpad.net/sikuli/+bug/905435/+subscriptions


References