This commit is contained in:
parent
e20ca3ba27
commit
313b1df8fa
1 changed files with 15 additions and 3 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue