This commit is contained in:
tzim 2014-05-13 15:36:21 +00:00
parent e20ca3ba27
commit 313b1df8fa

View file

@ -62,6 +62,8 @@ namespace DMX2
/// <summary>Appelé par le Timer de la conduite</summary>
/// <param name='callback'>Fonction a appeler pour chaque evenement.</param>
void ProcessEvents(EventManagerCallback callback);
}
/// <summary>
@ -122,6 +124,7 @@ namespace DMX2
{
Dictionary<string,eventBinding> bindings = new Dictionary<string,eventBinding>();
List<IEventProvider> providers = new List<IEventProvider>();
Dictionary<string,IEventProvider> feedbackLookup = new Dictionary<string, IEventProvider>();
class eventBinding
{
@ -150,8 +153,11 @@ namespace DMX2
public void RegisterProvider (IEventProvider prov)
{
providers.Add (prov);
foreach( var bind in bindings)
prov.Bind(bind.Key);
foreach (var bind in bindings) {
if (prov.Bind (bind.Key)) {
feedbackLookup[bind.Key] = prov;
}
}
}
#region Menus
@ -213,6 +219,9 @@ namespace DMX2
public void UnregisterProvider (IEventProvider prov)
{
providers.Remove(prov);
var q = from feedback in feedbackLookup where feedback.Value == prov select feedback.Key;
foreach(string id in q.ToArray())
feedbackLookup.Remove(id);
}
///<summary> Enregistrement d'une association id => cible
@ -223,7 +232,10 @@ namespace DMX2
bindings[eventId].AddTarget(target);
target.Bind(eventId);
foreach (IEventProvider prov in providers) {
if(prov.Bind(eventId)) return true;
if(prov.Bind(eventId)) {
feedbackLookup[eventId] = prov;
return true;
}
}
return false;
}