Skip to content

Commit

Permalink
update updates_observer. explicits origin and index parameters in upd…
Browse files Browse the repository at this point in the history
…ates_observer method. Change on_connection_updated (add pedalboard parameter)
  • Loading branch information
SrMouraSilva committed Mar 15, 2017
1 parent 4ff7698 commit 01f99cd
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 94 deletions.
24 changes: 12 additions & 12 deletions pluginsmanager/banks_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,32 +112,32 @@ def scope(self):
def append(self, observer):
self.observers.append(observer)

def on_bank_updated(self, bank, update_type, **kwargs):
def on_bank_updated(self, bank, update_type, index, origin, **kwargs):
for observer in self.observers:
if observer != self.scope:
observer.on_bank_updated(bank, update_type, **kwargs)
observer.on_bank_updated(bank, update_type, index=index, origin=origin, **kwargs)

def on_pedalboard_updated(self, pedalboard, update_type, **kwargs):
def on_pedalboard_updated(self, pedalboard, update_type, index, origin, **kwargs):
for observer in self.observers:
if observer != self.scope:
observer.on_pedalboard_updated(pedalboard, update_type, **kwargs)
observer.on_pedalboard_updated(pedalboard, update_type, index=index, origin=origin, **kwargs)

def on_effect_updated(self, effect, update_type, **kwargs):
def on_effect_updated(self, effect, update_type, index, origin, **kwargs):
for observer in self.observers:
if observer != self.scope:
observer.on_effect_updated(effect, update_type, **kwargs)
observer.on_effect_updated(effect, update_type, index=index, origin=origin, **kwargs)

def on_effect_status_toggled(self, effect):
def on_effect_status_toggled(self, effect, **kwargs):
for observer in self.observers:
if observer != self.scope:
observer.on_effect_status_toggled(effect)
observer.on_effect_status_toggled(effect, **kwargs)

def on_param_value_changed(self, param):
def on_param_value_changed(self, param, **kwargs):
for observer in self.observers:
if observer != self.scope:
observer.on_param_value_changed(param)
observer.on_param_value_changed(param, **kwargs)

def on_connection_updated(self, connection, update_type, **kwargs):
def on_connection_updated(self, connection, update_type, pedalboard, **kwargs):
for observer in self.observers:
if observer != self.scope:
observer.on_connection_updated(connection, update_type, **kwargs)
observer.on_connection_updated(connection, update_type, pedalboard=pedalboard, **kwargs)
8 changes: 4 additions & 4 deletions pluginsmanager/mod_host/mod_host.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ def on_current_pedalboard_changed(self, pedalboard):
for index, effect in enumerate(pedalboard.effects):
self.on_effect_updated(effect, UpdateType.CREATED, index=index, origin=pedalboard)

for index, connection in enumerate(pedalboard.connections):
self.on_connection_updated(connection, UpdateType.CREATED, index=index, origin=pedalboard)
for connection in pedalboard.connections:
self.on_connection_updated(connection, UpdateType.CREATED, pedalboard=pedalboard)

def _remove_pedalboard(self, pedalboard):
for index, effect in enumerate(pedalboard.effects):
Expand Down Expand Up @@ -174,8 +174,8 @@ def on_param_value_changed(self, param):

self._set_param_value(param)

def on_connection_updated(self, connection, update_type, index, origin, **kwargs):
if origin != self.pedalboard:
def on_connection_updated(self, connection, update_type, pedalboard, **kwargs):
if pedalboard != self.pedalboard:
return

if update_type == UpdateType.CREATED:
Expand Down
9 changes: 8 additions & 1 deletion pluginsmanager/model/lv2/lv2_effect_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,15 @@ def __init__(self, plugins_json=None):
with open(plugins_json) as data_file:
data = json.load(data_file)

supported_plugins = self._supported_plugins
for plugin in data:
self.plugins[plugin['uri']] = Lv2Plugin(plugin)
if plugin['uri'] in supported_plugins:
self.plugins[plugin['uri']] = Lv2Plugin(plugin)

@property
def _supported_plugins(self):
import subprocess
return str(subprocess.check_output(['lv2ls'])).split('\\n')

@property
def all(self):
Expand Down
2 changes: 1 addition & 1 deletion pluginsmanager/model/pedalboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def _effects_observer(self, update_type, effect, index):
self.observer.on_effect_updated(effect, update_type, index=index, origin=self)

def _connections_observer(self, update_type, connection, index):
self.observer.on_connection_updated(connection, update_type, index=index, origin=self)
self.observer.on_connection_updated(connection, update_type, pedalboard=self)

@property
def json(self):
Expand Down
15 changes: 7 additions & 8 deletions pluginsmanager/model/updates_observer.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def __exit__(self, type, value, traceback):
self.manager.exit_scope()

@abstractmethod
def on_bank_updated(self, bank, update_type, **kwargs):
def on_bank_updated(self, bank, update_type, index, origin, **kwargs):
"""
Called when changes occurs in any :class:`Bank`
Expand All @@ -36,7 +36,7 @@ def on_bank_updated(self, bank, update_type, **kwargs):
pass

@abstractmethod
def on_pedalboard_updated(self, pedalboard, update_type, **kwargs):
def on_pedalboard_updated(self, pedalboard, update_type, index, origin, **kwargs):
"""
Called when changes occurs in any :class:`Pedalboard`
Expand All @@ -48,7 +48,7 @@ def on_pedalboard_updated(self, pedalboard, update_type, **kwargs):
pass

@abstractmethod
def on_effect_updated(self, effect, update_type, **kwargs):
def on_effect_updated(self, effect, update_type, index, origin, **kwargs):
"""
Called when changes occurs in any :class:`Effect`
Expand All @@ -60,7 +60,7 @@ def on_effect_updated(self, effect, update_type, **kwargs):
pass

@abstractmethod
def on_effect_status_toggled(self, effect):
def on_effect_status_toggled(self, effect, **kwargs):
"""
Called when any :class:`Effect` status is toggled
Expand All @@ -69,7 +69,7 @@ def on_effect_status_toggled(self, effect):
pass

@abstractmethod
def on_param_value_changed(self, param):
def on_param_value_changed(self, param, **kwargs):
"""
Called when a param value change
Expand All @@ -78,14 +78,13 @@ def on_param_value_changed(self, param):
pass

@abstractmethod
def on_connection_updated(self, connection, update_type, **kwargs):
def on_connection_updated(self, connection, update_type, pedalboard, **kwargs):
"""
Called when changes occurs in any :class:`pluginsmanager.model.connection.Connection` of Pedalboard
(adding, updating or removing connections)
:param pluginsmanager.model.connection.Connection connection: Connection changed
:param UpdateType update_type: Change type
:param int index: Connection index (or old index if update_type == UpdateType.DELETED)
:param Pedalboard origin: Pedalboard that the connection is (or has) contained
:param Pedalboard pedalboard: Pedalboard that the connection is (or has) contained
"""
pass
13 changes: 7 additions & 6 deletions pluginsmanager/observer/autosaver.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class Autosaver(UpdatesObserver):
:param string data_path: Path that banks will be saved (each bank in one file)
"""
def __init__(self, data_path):
super().__init__()
self.data_path = data_path

def load(self, system_effect):
Expand Down Expand Up @@ -76,26 +77,26 @@ def _save(url, data):
def _delete(url):
os.remove(url)

def on_bank_updated(self, bank, update_type, origin=None, **kwargs):
def on_bank_updated(self, bank, update_type, index, origin, **kwargs):
if update_type == UpdateType.DELETED:
return self.delete(bank)

self.save(bank)

def on_pedalboard_updated(self, pedalboard, update_type, origin=None, **kwargs):
def on_pedalboard_updated(self, pedalboard, update_type, index, origin, **kwargs):
if update_type == UpdateType.DELETED:
self.save(origin)
else:
self.save(pedalboard.bank)

def on_effect_updated(self, effect, update_type, **kwargs):
def on_effect_updated(self, effect, update_type, index, origin, **kwargs):
self.save(effect.pedalboard.bank)

def on_effect_status_toggled(self, effect):
def on_effect_status_toggled(self, effect, **kwargs):
self.save(effect.pedalboard.bank)

def on_param_value_changed(self, param):
def on_param_value_changed(self, param, **kwargs):
self.save(param.effect.pedalboard.bank)

def on_connection_updated(self, connection, update_type, **kwargs):
def on_connection_updated(self, connection, update_type, pedalboard, **kwargs):
self.save(connection.output.effect.pedalboard.bank)
12 changes: 4 additions & 8 deletions test/banks_manager_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,29 +43,25 @@ def test_observers(self):
observer.on_connection_updated.assert_called_with(
Connection(reverb.outputs[0], fuzz.inputs[0]),
UpdateType.CREATED,
index=len(pedalboard.connections)-1,
origin=pedalboard
pedalboard=pedalboard
)
reverb.outputs[1].connect(fuzz.inputs[0])
observer.on_connection_updated.assert_called_with(
Connection(reverb.outputs[1], fuzz.inputs[0]),
UpdateType.CREATED,
index=len(pedalboard.connections) - 1,
origin=pedalboard
pedalboard=pedalboard
)
fuzz.outputs[0].connect(reverb2.inputs[0])
observer.on_connection_updated.assert_called_with(
Connection(fuzz.outputs[0], reverb2.inputs[0]),
UpdateType.CREATED,
index=len(pedalboard.connections) - 1,
origin=pedalboard
pedalboard=pedalboard
)
reverb.outputs[0].connect(reverb2.inputs[0])
observer.on_connection_updated.assert_called_with(
Connection(reverb.outputs[0], reverb2.inputs[0]),
UpdateType.CREATED,
index=len(pedalboard.connections) - 1,
origin=pedalboard
pedalboard=pedalboard
)

fuzz.toggle()
Expand Down
28 changes: 4 additions & 24 deletions test/model/output_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,13 @@ def test_connect(self):
self.assertEqual(1, len(pedalboard.connections))

new_connection = pedalboard.connections[0]
pedalboard.observer.on_connection_updated.assert_called_with(
new_connection,
UpdateType.CREATED,
index=len(pedalboard.connections) - 1,
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_called_with(new_connection, UpdateType.CREATED, pedalboard=pedalboard)

reverb.outputs[1].connect(reverb2.inputs[1])
self.assertEqual(2, len(pedalboard.connections))

new_connection = pedalboard.connections[-1]
pedalboard.observer.on_connection_updated.assert_called_with(
new_connection,
UpdateType.CREATED,
index=len(pedalboard.connections) - 1,
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_called_with(new_connection, UpdateType.CREATED, pedalboard=pedalboard)

def test_disconnect(self):
pedalboard = Pedalboard('Pedalboard name')
Expand All @@ -71,22 +61,12 @@ def test_disconnect(self):
disconnected = pedalboard.connections[-1]
reverb.outputs[1].disconnect(reverb2.inputs[0])
self.assertEqual(1, len(pedalboard.connections))
pedalboard.observer.on_connection_updated.assert_called_with(
disconnected,
UpdateType.DELETED,
index=len(pedalboard.connections),
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_called_with(disconnected, UpdateType.DELETED, pedalboard=pedalboard)

disconnected = pedalboard.connections[-1]
reverb.outputs[0].disconnect(reverb2.inputs[0])
self.assertEqual(0, len(pedalboard.connections))
pedalboard.observer.on_connection_updated.assert_called_with(
disconnected,
UpdateType.DELETED,
index=len(pedalboard.connections),
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_called_with(disconnected, UpdateType.DELETED, pedalboard=pedalboard)

def test_disconnect_connection_not_created(self):
pedalboard = Pedalboard('Pedalboard name')
Expand Down
35 changes: 5 additions & 30 deletions test/model/pedalboard_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,21 +92,11 @@ def test_add_connection_by_connections(self):

pedalboard.connections.append(connection1)
self.assertEqual(pedalboard.connections[0], connection1)
pedalboard.observer.on_connection_updated.assert_called_with(
connection1,
UpdateType.CREATED,
index=len(pedalboard.connections) - 1,
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_called_with(connection1, UpdateType.CREATED, pedalboard=pedalboard)

pedalboard.connections.append(connection2)
self.assertEqual(pedalboard.connections[1], connection2)
pedalboard.observer.on_connection_updated.assert_called_with(
connection2,
UpdateType.CREATED,
index=len(pedalboard.connections) - 1,
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_called_with(connection2, UpdateType.CREATED, pedalboard=pedalboard)

def test_update_connection(self):
pedalboard = Pedalboard('Pedalboard 1')
Expand All @@ -120,12 +110,7 @@ def test_update_connection(self):
pedalboard.connections[0] = connection2

self.assertEqual(pedalboard.connections[0], connection2)
pedalboard.observer.on_connection_updated.assert_called_with(
connection2,
UpdateType.UPDATED,
index=len(pedalboard.connections) - 1,
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_called_with(connection2, UpdateType.UPDATED, pedalboard=pedalboard)

def test_delete_connection(self):
""" Other mode is by output.disconnect(input)"""
Expand All @@ -139,12 +124,7 @@ def test_delete_connection(self):
del pedalboard.connections[0]

self.assertEqual(len(pedalboard.connections), 0)
pedalboard.observer.on_connection_updated.assert_called_with(
connection,
UpdateType.DELETED,
index=0,
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_called_with(connection, UpdateType.DELETED, pedalboard=pedalboard)

def test_delete_effect_remove_your_connections(self):
pedalboard = Pedalboard('Pedalboard name')
Expand Down Expand Up @@ -172,12 +152,7 @@ def test_delete_effect_remove_your_connections(self):

self.assertEqual(1, len(pedalboard.connections))
for connection in fuzz_connections:
pedalboard.observer.on_connection_updated.assert_any_call(
connection,
UpdateType.DELETED,
index=0,
origin=pedalboard
)
pedalboard.observer.on_connection_updated.assert_any_call(connection, UpdateType.DELETED, pedalboard=pedalboard)

def test_data(self):
pedalboard = Pedalboard('Bank 1')
Expand Down

0 comments on commit 01f99cd

Please sign in to comment.