Exemple #1
0
def connect(old, new, sender_str, receiver_str, existing_connections):
    sender_name, signal_name = sender_str.split(':')
    receiver_name, slot_name = receiver_str.split(':')

    if old == new:
        return
    if new not in (sender_name, receiver_name):
        return

    signals = []
    slots = []

    from openalea.core.service.plugin import plugin_instance_exists, plugin_instances

    if plugin_instance_exists('oalab.applet', sender_name):
        for sender in plugin_instances('oalab.applet', sender_name):
            if hasattr(sender, signal_name):
                signals.append(getattr(sender, signal_name))

    if plugin_instance_exists('oalab.applet', receiver_name):
        for receiver in plugin_instances('oalab.applet', receiver_name):
            if hasattr(receiver, slot_name):
                slots.append(getattr(receiver, slot_name))

    if signals and slots:
        for i, signal in enumerate(signals):
            for j, slot in enumerate(slots):
                connection = '%s_%d -> %s_%d' % (sender_str, i, receiver_str,
                                                 j)
                if connection not in existing_connections:
                    signal.connect(slot)
                    existing_connections.append(connection)
                else:
                    pass
Exemple #2
0
def connect(old, new, sender_str, receiver_str, existing_connections):
    sender_name, signal_name = sender_str.split(':')
    receiver_name, slot_name = receiver_str.split(':')

    if old == new:
        return
    if new not in (sender_name, receiver_name):
        return

    signals = []
    slots = []

    from openalea.core.service.plugin import plugin_instance_exists, plugin_instances

    if plugin_instance_exists('oalab.applet', sender_name):
        for sender in plugin_instances('oalab.applet', sender_name):
            if hasattr(sender, signal_name):
                signals.append(getattr(sender, signal_name))

    if plugin_instance_exists('oalab.applet', receiver_name):
        for receiver in plugin_instances('oalab.applet', receiver_name):
            if hasattr(receiver, slot_name):
                slots.append(getattr(receiver, slot_name))

    if signals and slots:
        for i, signal in enumerate(signals):
            for j, slot in enumerate(slots):
                connection = '%s_%d -> %s_%d' % (sender_str, i, receiver_str, j)
                if connection not in existing_connections:
                    signal.connect(slot)
                    existing_connections.append(connection)
                else:
                    pass
    def test_multiple_instance(self):
        # Assert weakref work correctly and plugin instances have been lost
        assert not plugin_instances('test.c1', 'MyPlugin1')

        objc1c1_0 = plugin_instance('test.c1', 'MyPlugin1')
        objc1c1_1 = new_plugin_instance('test.c1', 'MyPlugin1')
        objc1c1_2 = new_plugin_instance('test.c1', 'MyPlugin1')

        # Assert all object have been created correctly
        assert objc1c1_0
        assert objc1c1_1
        assert objc1c1_2

        # Assert all instances are different as we use new instead of instance
        assert objc1c1_0 is not objc1c1_1
        assert objc1c1_1 is not objc1c1_2

        objc1c2 = new_plugin_instance('test.c1', 'MyPlugin2')

        assert len(plugin_instances('test.c1', 'MyPlugin1')) == 3
        assert len(plugin_instances('test.c1')) == 4

        del objc1c1_2

        assert len(plugin_instances('test.c1', 'MyPlugin1')) == 2
        assert len(plugin_instances('test.c1')) == 3

        del objc1c2

        assert len(plugin_instances('test.c1', 'MyPlugin1')) == 2
        assert len(plugin_instances('test.c1', 'MyPlugin2')) == 0
        assert len(plugin_instances('test.c1')) == 2
Exemple #4
0
    def test_multiple_instance(self):
        # Assert weakref work correctly and plugin instances have been lost
        assert not plugin_instances('test.c1', 'MyPlugin1')

        objc1c1_0 = plugin_instance('test.c1', 'MyPlugin1')
        objc1c1_1 = new_plugin_instance('test.c1', 'MyPlugin1')
        objc1c1_2 = new_plugin_instance('test.c1', 'MyPlugin1')

        # Assert all object have been created correctly
        assert objc1c1_0
        assert objc1c1_1
        assert objc1c1_2

        # Assert all instances are different as we use new instead of instance
        assert objc1c1_0 is not objc1c1_1
        assert objc1c1_1 is not objc1c1_2

        objc1c2 = new_plugin_instance('test.c1', 'MyPlugin2')

        assert len(plugin_instances('test.c1', 'MyPlugin1')) == 3
        assert len(plugin_instances('test.c1')) == 4

        del objc1c1_2

        assert len(plugin_instances('test.c1', 'MyPlugin1')) == 2
        assert len(plugin_instances('test.c1')) == 3

        del objc1c2

        assert len(plugin_instances('test.c1', 'MyPlugin1')) == 2
        assert len(plugin_instances('test.c1', 'MyPlugin2')) == 0
        assert len(plugin_instances('test.c1')) == 2
Exemple #5
0
    def test_plugin_proxy(self):

        from openalea.core.plugin.manager import SimpleClassPluginProxy

        pm = PluginManager()
        pm.set_proxy('oalab.modelclass', SimpleClassPluginProxy)

        clear_plugin_instances()
        w1 = plugin_instance('oalab.modelclass', 'PythonModel')
        w2 = plugin_instance('oalab.modelclass', 'PythonModel')
        w3 = plugin_instance('oalab.modelclass', 'PythonModel')
        w4 = new_plugin_instance('oalab.modelclass', 'PythonModel')

        assert w1
        assert w1 is w2 is w3
        assert w1 is not w4

        assert len(plugin_instances('oalab.modelclass', 'PythonModel')) == 2
    def test_plugin_proxy(self):

        from openalea.core.plugin.manager import SimpleClassPluginProxy

        pm = PluginManager()
        pm.set_proxy('oalab.modelclass', SimpleClassPluginProxy)

        clear_plugin_instances()
        w1 = plugin_instance('oalab.modelclass', 'PythonModel')
        w2 = plugin_instance('oalab.modelclass', 'PythonModel')
        w3 = plugin_instance('oalab.modelclass', 'PythonModel')
        w4 = new_plugin_instance('oalab.modelclass', 'PythonModel')

        assert w1
        assert w1 is w2 is w3
        assert w1 is not w4

        assert len(plugin_instances('oalab.modelclass', 'PythonModel')) == 2
    def test_new_instance(self):
        import tstpkg1.impl

        objc1c1 = plugin_instance('test.c1', 'MyPlugin1')
        assert objc1c1
        assert isinstance(objc1c1, tstpkg1.impl.C1Class1)

        objc1c2 = plugin_instance('test.c1', 'MyPlugin2')
        assert objc1c2
        assert isinstance(objc1c2, tstpkg1.impl.C1Class2)

        objc2c1 = plugin_instance('test.c2', 'C2Plugin1')
        assert objc2c1
        assert isinstance(objc2c1, tstpkg1.impl.C2Class1)

        objc2c2 = plugin_instance('test.c2', 'C2Plugin2')
        assert objc2c1
        assert isinstance(objc2c2, tstpkg1.impl.C2Class2)

        # Check instance return existing instance
        objc1c1_2 = plugin_instance('test.c1', 'MyPlugin1')
        assert objc1c1 is objc1c1_2
        assert plugin_instances('test.c1', 'MyPlugin1')[0] is objc1c1_2
Exemple #8
0
    def test_new_instance(self):
        import tstpkg1.impl

        objc1c1 = plugin_instance('test.c1', 'MyPlugin1')
        assert objc1c1
        assert isinstance(objc1c1, tstpkg1.impl.C1Class1)

        objc1c2 = plugin_instance('test.c1', 'MyPlugin2')
        assert objc1c2
        assert isinstance(objc1c2, tstpkg1.impl.C1Class2)

        objc2c1 = plugin_instance('test.c2', 'C2Plugin1')
        assert objc2c1
        assert isinstance(objc2c1, tstpkg1.impl.C2Class1)

        objc2c2 = plugin_instance('test.c2', 'C2Plugin2')
        assert objc2c1
        assert isinstance(objc2c2, tstpkg1.impl.C2Class2)

        # Check instance return existing instance
        objc1c1_2 = plugin_instance('test.c1', 'MyPlugin1')
        assert objc1c1 is objc1c1_2
        assert plugin_instances('test.c1', 'MyPlugin1')[0] is objc1c1_2
Exemple #9
0
 def applets(name):
     return plugin_instances('oalab.applet', name)
 def clear_toolbar(self):
     menus = plugin_instances('oalab.applet', 'ContextualMenu')
     for menu in menus:
         menu.clear()
 def fill_toolbar(self, name, actions):
     menus = plugin_instances('oalab.applet', 'ContextualMenu')
     for menu in menus:
         menu.set_actions(name, actions)
Exemple #12
0
 def applets(name):
     return plugin_instances('oalab.applet', name)
Exemple #13
0
def get_applets():
    return plugin_instances('oalab.applet')
 def clear_toolbar(self):
     menus = plugin_instances('oalab.applet', 'ContextualMenu')
     for menu in menus:
         menu.clear()
 def fill_toolbar(self, name, actions):
     menus = plugin_instances('oalab.applet', 'ContextualMenu')
     for menu in menus:
         menu.set_actions(name, actions)
 def initialize(self):
     for instance in plugin_instances('oalab.applet'):
         if hasattr(instance, 'initialize'):
             instance.initialize()
 def initialize(self):
     self.pm = PluginManager()
     for instance in plugin_instances('oalab.applet'):
         if hasattr(instance, 'initialize'):
             instance.initialize()
Exemple #18
0
 def initialize(self):
     self.pm = PluginManager()
     for instance in plugin_instances('oalab.applet'):
         if hasattr(instance, 'initialize'):
             instance.initialize()