mirror of https://github.com/KLayout/klayout.git
Synonyms: connect/disconnect for events to get closer to PyQt5
This commit is contained in:
parent
1b3e8e14c5
commit
9cfc284b8c
|
|
@ -627,7 +627,9 @@ PYASignal::make_class (PyObject *module)
|
|||
|
||||
static PyMethodDef signal_methods[] = {
|
||||
{"add", (PyCFunction) &pya_signal_add, METH_VARARGS, "internal signal proxy object: += operator" },
|
||||
{"connect", (PyCFunction) &pya_signal_add, METH_VARARGS, "synonym to 'add' or '+='" },
|
||||
{"remove", (PyCFunction) &pya_signal_remove, METH_VARARGS, "internal signal proxy object: -= operator" },
|
||||
{"disconnect", (PyCFunction) &pya_signal_remove, METH_VARARGS, "synonym to 'remove' or '-='" },
|
||||
{"set", (PyCFunction) &pya_signal_set, METH_VARARGS, "internal signal proxy object: assignment" },
|
||||
{"clear", (PyCFunction) &pya_signal_clear, METH_NOARGS, "internal signal proxy object: clears all receivers" },
|
||||
{NULL, NULL},
|
||||
|
|
|
|||
|
|
@ -811,7 +811,11 @@ SignalHandler::define_class (VALUE module, const char *name)
|
|||
rb_define_method (klass, "set", (ruby_func) &SignalHandler::static_assign, 1);
|
||||
rb_define_method (klass, "clear", (ruby_func) &SignalHandler::static_clear, 0);
|
||||
rb_define_method (klass, "+", (ruby_func) &SignalHandler::static_add, 1);
|
||||
rb_define_method (klass, "add", (ruby_func) &SignalHandler::static_add, 1);
|
||||
rb_define_method (klass, "connect", (ruby_func) &SignalHandler::static_add, 1);
|
||||
rb_define_method (klass, "-", (ruby_func) &SignalHandler::static_remove, 1);
|
||||
rb_define_method (klass, "remove", (ruby_func) &SignalHandler::static_remove, 1);
|
||||
rb_define_method (klass, "disconnect", (ruby_func) &SignalHandler::static_remove, 1);
|
||||
}
|
||||
|
||||
void SignalHandler::call (const gsi::MethodBase *meth, gsi::SerialArgs &args, gsi::SerialArgs &ret) const
|
||||
|
|
|
|||
|
|
@ -1400,10 +1400,55 @@ class BasicTest(unittest.TestCase):
|
|||
def f4():
|
||||
n[0] = n[0] + 2
|
||||
|
||||
n[0] = 0
|
||||
e.e0(f4)
|
||||
e.s1()
|
||||
self.assertEqual( 4, n[0] )
|
||||
self.assertEqual( 2, n[0] )
|
||||
|
||||
# remove event handler -> no events triggered anymore
|
||||
n[0] = 0
|
||||
e.e0 -= f4
|
||||
e.s1()
|
||||
self.assertEqual( 0, n[0] )
|
||||
|
||||
# adding again will re-activate it
|
||||
e.e0 += f4
|
||||
n[0] = 0
|
||||
e.s1()
|
||||
self.assertEqual( 2, n[0] )
|
||||
|
||||
# two events at once
|
||||
def f5():
|
||||
n[0] = n[0] + 10
|
||||
n[0] = 0
|
||||
e.e0 += f5
|
||||
e.s1()
|
||||
self.assertEqual( 12, n[0] )
|
||||
|
||||
# clearing events
|
||||
e.e0.clear()
|
||||
e.s1()
|
||||
n[0] = 0
|
||||
self.assertEqual( 0, n[0] )
|
||||
|
||||
# synonyms: add, connect
|
||||
e.e0.add(f4)
|
||||
e.e0.connect(f5)
|
||||
n[0] = 0
|
||||
e.s1()
|
||||
self.assertEqual( 12, n[0] )
|
||||
|
||||
# synonyms: remove, disconnect
|
||||
e.e0.disconnect(f4)
|
||||
n[0] = 0
|
||||
e.s1()
|
||||
self.assertEqual( 10, n[0] )
|
||||
n[0] = 0
|
||||
e.e0.remove(f5)
|
||||
e.s1()
|
||||
self.assertEqual( 0, n[0] )
|
||||
|
||||
# another signal
|
||||
e.s2()
|
||||
self.assertEqual( 100, n[1] )
|
||||
e.m = 1
|
||||
|
|
|
|||
|
|
@ -1325,11 +1325,55 @@ class Basic_TestClass < TestBase
|
|||
assert_equal( 2, n0 )
|
||||
|
||||
# using lambda
|
||||
n0 = 0
|
||||
p = lambda { n0 += 2 }
|
||||
e.e0(&p)
|
||||
e.s1
|
||||
assert_equal( 4, n0 )
|
||||
assert_equal( 2, n0 )
|
||||
|
||||
# remove event handler -> no events triggered anymore
|
||||
n0 = 0
|
||||
e.e0 -= p
|
||||
e.s1
|
||||
assert_equal( 0, n0 )
|
||||
|
||||
# adding again will re-activate it
|
||||
e.e0 += p
|
||||
n0 = 0
|
||||
e.s1
|
||||
assert_equal( 2, n0 )
|
||||
|
||||
# two events at once
|
||||
pp = lambda { n0 += 10 }
|
||||
n0 = 0
|
||||
e.e0 += pp
|
||||
e.s1
|
||||
assert_equal( 12, n0 )
|
||||
|
||||
# clearing events
|
||||
e.e0.clear
|
||||
e.s1
|
||||
n0 = 0
|
||||
assert_equal( 0, n0 )
|
||||
|
||||
# synonyms: add, connect
|
||||
e.e0.add(p)
|
||||
e.e0.connect(pp)
|
||||
n0 = 0
|
||||
e.s1
|
||||
assert_equal( 12, n0 )
|
||||
|
||||
# synonyms: remove, disconnect
|
||||
e.e0.disconnect(p)
|
||||
n0 = 0
|
||||
e.s1
|
||||
assert_equal( 10, n0 )
|
||||
n0 = 0
|
||||
e.e0.remove(pp)
|
||||
e.s1
|
||||
assert_equal( 0, n0 )
|
||||
|
||||
# another signal
|
||||
e.s2
|
||||
assert_equal( 100, n1 )
|
||||
e.m = 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue