This commit is contained in:
parent
ef77c8f3bb
commit
c9b118bbe0
3 changed files with 33 additions and 32 deletions
|
|
@ -140,6 +140,7 @@ namespace DMX2
|
||||||
|
|
||||||
public void EventCallBack (EventData data)
|
public void EventCallBack (EventData data)
|
||||||
{
|
{
|
||||||
|
Console.WriteLine("Event {0} => {1}",data.id,data.value);
|
||||||
if (bindings.ContainsKey (data.id)) {
|
if (bindings.ContainsKey (data.id)) {
|
||||||
foreach (IEventTarget target in bindings[data.id].Targets) {
|
foreach (IEventTarget target in bindings[data.id].Targets) {
|
||||||
target.FireEvent(data);
|
target.FireEvent(data);
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ namespace DMX2
|
||||||
{
|
{
|
||||||
public partial class MidiEventProvider
|
public partial class MidiEventProvider
|
||||||
{
|
{
|
||||||
const string ASOUND_LIB_NAME = "libasound.so";
|
const string ASOUND_LIB_NAME = "libasound.so.2";
|
||||||
const int SND_SEQ_NONBLOCK = 1;
|
const int SND_SEQ_NONBLOCK = 1;
|
||||||
const int SND_SEQ_OPEN_INPUT = 1;
|
const int SND_SEQ_OPEN_INPUT = 1;
|
||||||
const int SND_SEQ_OPEN_OUTPUT = 2;
|
const int SND_SEQ_OPEN_OUTPUT = 2;
|
||||||
|
|
|
||||||
|
|
@ -15,16 +15,6 @@ namespace DMX2
|
||||||
internalName=_id;
|
internalName=_id;
|
||||||
description=_desc;
|
description=_desc;
|
||||||
}
|
}
|
||||||
bool hasTargets;
|
|
||||||
|
|
||||||
public bool HasTargets {
|
|
||||||
get {
|
|
||||||
return hasTargets;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
hasTargets = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary<string,internalEvent> eventlist = new Dictionary<string, internalEvent>();
|
Dictionary<string,internalEvent> eventlist = new Dictionary<string, internalEvent>();
|
||||||
|
|
@ -59,28 +49,34 @@ namespace DMX2
|
||||||
|
|
||||||
bool IEventProvider.Bind (string eventId)
|
bool IEventProvider.Bind (string eventId)
|
||||||
{
|
{
|
||||||
if (!eventlist.ContainsKey (eventId)) {
|
// TODO : check if "MIDI ..."
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//TODO
|
|
||||||
eventlist[eventId].HasTargets = true;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IEventProvider.Unbind (string eventId)
|
void IEventProvider.Unbind (string eventId)
|
||||||
{
|
{
|
||||||
if (!eventlist.ContainsKey (eventId)) return;
|
|
||||||
eventlist[eventId].HasTargets =false;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Gtk.Menu IEventProvider.GetProviderSubMenu (EventManager.EventMenuData state, Gtk.ButtonPressEventHandler handler)
|
Gtk.Menu IEventProvider.GetProviderSubMenu (EventManager.EventMenuData state, Gtk.ButtonPressEventHandler handler)
|
||||||
{
|
{
|
||||||
Gtk.Menu retmenu = new Gtk.Menu ();
|
Gtk.Menu retmenu = new Gtk.Menu ();
|
||||||
//Gtk.MenuItem evmenuitem = new Gtk.MenuItem ("Events");
|
if (levent != null) {
|
||||||
//retmenu.Add (evmenuitem);
|
Gtk.MenuItem lmenuitem = new Gtk.MenuItem ("Dernier");
|
||||||
Gtk.Menu evmenu = retmenu ;// new Gtk.Menu ();
|
retmenu.Add (lmenuitem);
|
||||||
//evmenuitem.Submenu = evmenu;
|
Gtk.Menu lmenu = new Gtk.Menu ();
|
||||||
|
lmenuitem.Submenu = lmenu;
|
||||||
|
Gtk.MenuItem item = new Gtk.MenuItem(levent.description);
|
||||||
|
item.Data[EventManager.EventIdKey] = levent.internalName;
|
||||||
|
item.Data[EventManager.StateKey] = state;
|
||||||
|
item.ButtonPressEvent += handler;
|
||||||
|
lmenu.Add (item);
|
||||||
|
}
|
||||||
|
Gtk.MenuItem evmenuitem = new Gtk.MenuItem ("Events");
|
||||||
|
retmenu.Add (evmenuitem);
|
||||||
|
Gtk.Menu evmenu = new Gtk.Menu ();
|
||||||
|
evmenuitem.Submenu = evmenu;
|
||||||
|
|
||||||
List<string> sortedKeys = new List<string>(eventlist.Keys);
|
List<string> sortedKeys = new List<string>(eventlist.Keys);
|
||||||
sortedKeys.Sort();
|
sortedKeys.Sort();
|
||||||
|
|
@ -98,6 +94,8 @@ namespace DMX2
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EventData last; internalEvent levent=null;
|
||||||
|
|
||||||
void IEventProvider.ProcessEvents (EventManagerCallback callback)
|
void IEventProvider.ProcessEvents (EventManagerCallback callback)
|
||||||
{
|
{
|
||||||
IntPtr evPtr;
|
IntPtr evPtr;
|
||||||
|
|
@ -124,28 +122,30 @@ namespace DMX2
|
||||||
description = string.Format("Note {1} Ch {0}",evS.data_ev_note.channel, evS.data_ev_note.note );
|
description = string.Format("Note {1} Ch {0}",evS.data_ev_note.channel, evS.data_ev_note.note );
|
||||||
value = 0;
|
value = 0;
|
||||||
break;
|
break;
|
||||||
|
case snd_seq_event_type_t.SND_SEQ_EVENT_CLOCK:
|
||||||
|
case snd_seq_event_type_t.SND_SEQ_EVENT_SENSING:
|
||||||
|
continue;
|
||||||
|
|
||||||
//TODO : Regarder si d'autres controles interessants.
|
//TODO : Regarder si d'autres controles interessants.
|
||||||
default:
|
default:
|
||||||
id= null;
|
id= null;
|
||||||
Info.Publish(string.Format ("event {0}", evS.type) );
|
Info.Publish(string.Format ("event {0}", evS.type) );
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(id!=null)
|
if(id!=null)
|
||||||
{
|
{
|
||||||
if(!eventlist.ContainsKey(id))
|
if(!eventlist.ContainsKey(id))
|
||||||
eventlist.Add(id,new internalEvent(id,description));
|
eventlist.Add(id,new internalEvent(id,description));
|
||||||
else{
|
levent= eventlist[id];
|
||||||
if(eventlist[id].HasTargets)
|
|
||||||
{
|
|
||||||
EventData evData = new EventData();
|
EventData evData = new EventData();
|
||||||
evData.id = id;
|
evData.id = id;
|
||||||
evData.value = (byte)value;
|
evData.value = (byte)value;
|
||||||
|
if(evData.Equals(last)) continue;
|
||||||
callback(evData);
|
callback(evData);
|
||||||
|
last = evData;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue