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