This commit is contained in:
tzim 2013-11-15 10:57:19 +00:00
parent 6ac96814fe
commit 53515afef8
3 changed files with 139 additions and 15 deletions

View file

@ -8,6 +8,7 @@ namespace DMX2
public partial class SeqMacroUI : SequenceurUI
{
bool fullUpdFlag = true;
bool updating;
SequenceurMacro sequenceur; /* pointe sur les données */
ListStore lsEffets=null; /* liste des effets */
//TreeViewColumn nomCol; /* inutile dans le contexte macro */
@ -18,20 +19,17 @@ namespace DMX2
effetChange = true;
}
void OnButtonPressedEvent (object o, ButtonPressEventArgs e)
void RenamePopup (object sender, ContextMenuEventArgs e)
{
if (e.Event.Button == 3) /* right click */
{
Menu m = new Menu();
MenuItem renameItem = new MenuItem("Renommer le Sequenceur");
renameItem.ButtonPressEvent += new ButtonPressEventHandler(OnRenameItemButtonPressed);
m.Add(renameItem);
m.ShowAll();
m.Popup();
}
}
void OnRenameItemButtonPressed (object o, ButtonPressEventArgs args)
{
var dlg = new Dialog ("Nouveau Nom ?", GetAncestor(Gtk.Window.GType) as Gtk.Window , DialogFlags.Modal); var entry = new Entry (sequenceur.Name);
@ -233,11 +231,51 @@ namespace DMX2
sequenceur = s;
ConstruitMatrice ();
frame1.ButtonPressEvent += OnButtonPressedEvent;
new ContextMenuHelper(seqMasterScale,MasterPopup);
new ContextMenuHelper(frame1,RenamePopup);
new ContextMenuHelper(evBBox,CompteurPopup);
}
void MasterPopup (object sender, ContextMenuEventArgs e)
{
Menu m = Conduite.Courante.EventManager.GetMenu(null,
delegate(object o,string eventId){
sequenceur.BindMasterEvent(eventId);
}
);
m.ShowAll();
m.Popup();
}
void CompteurPopup (object sender, ContextMenuEventArgs e)
{
Menu m = new Menu();
MenuItem item = new MenuItem("Effet Suivant");
m.Add(item);
item.Submenu = Conduite.Courante.EventManager.GetMenu(null,
delegate(object o,string eventId){
sequenceur.BindEffetSuivantEvent(eventId);
}
);
item = new MenuItem("Effet Precedent");
m.Add(item);
item.Submenu = Conduite.Courante.EventManager.GetMenu(null,
delegate(object o,string eventId){
sequenceur.BindEffetPrecedentEvent(eventId);
}
);
m.ShowAll();
m.Popup();
}
public override void Update (bool full)
{
if (fullUpdFlag || full)
@ -260,6 +298,10 @@ namespace DMX2
SelectionneEffet (sequenceur.IndexLigneEnCours);
posLabel.Text = string.Format("n°{0}",sequenceur.IndexLigneEnCours +1 );
}
updating = true;
seqMasterScale.Value = sequenceur.Master;
updating = false;
}
@ -297,8 +339,6 @@ namespace DMX2
}*/
seqMasterScale.Value = sequenceur.Master;
posLabel.Text = string.Format("n°{0}",sequenceur.IndexLigneEnCours +1);
fullUpdFlag=false;
@ -338,7 +378,7 @@ namespace DMX2
protected void OnSeqMasterScaleValueChanged (object sender, EventArgs e)
{
if (fullUpdFlag)return;
if (updating)return;
sequenceur.Master = (int)(seqMasterScale.Value);
}

View file

@ -599,7 +599,7 @@ namespace DMX2
if ((xmlE = el["EffetPrecedent"])!= null)
foreach(string id in EventManager.LoadBindings(xmlE))
BindEffetSuivantEvent(id);
BindEffetPrecedentEvent(id);
foreach (var xc in el.GetElementsByTagName("CircuitSeq")) {

View file

@ -132,6 +132,11 @@ namespace DMX2
Dictionary<Circuit,int> valeurscourantes = new Dictionary<Circuit, int> ();
Dictionary<Circuit,EffetMacro> effetsEnCours = new Dictionary<Circuit, EffetMacro>();
actionEventTarget masterEventTarget=null;
actionEventTarget goNextEventTarget=null;
actionEventTarget goBackEventTarget=null;
SeqMacroUI ui = null;
bool change = false;
int master = 100;
@ -158,7 +163,31 @@ namespace DMX2
public SequenceurMacro ()
{
masterEventTarget = new actionEventTarget (
delegate(EventData data) {
Master = 100 * data.value / 255;
return true;
}
);
goNextEventTarget = new actionEventTarget (
delegate(EventData data) {
if(data.value>0) LigneSuivante();
return true;
}
);
goBackEventTarget = new actionEventTarget (
delegate(EventData data) {
if(data.value>0){
if (IndexLigneEnCours > 0) {
IndexLigneaSuivre = IndexLigneEnCours - 1;
LigneSuivante ();
}
}
return true;
}
);
}
@ -401,16 +430,26 @@ namespace DMX2
public override void Save (System.Xml.XmlElement parent)
{
System.Xml.XmlElement el = parent.OwnerDocument.CreateElement ("SequenceurMacro");
System.Xml.XmlElement xmlC;
System.Xml.XmlElement xmlEl;
parent.AppendChild (el);
el.SetAttribute ("id", ID.ToString ());
el.SetAttribute ("name", Name);
el.SetAttribute ("master", master.ToString ());
//el.SetAttribute ("master", master.ToString ());
el.AppendChild(xmlEl = parent.OwnerDocument.CreateElement ("Master"));
xmlEl.SetAttribute("value",master.ToString());
EventManager.SaveBindings(xmlEl,masterEventTarget);
xmlEl = parent.OwnerDocument.CreateElement ("EffetSuivant");
if(EventManager.SaveBindings(xmlEl,goNextEventTarget )) el.AppendChild(xmlEl);
xmlEl = parent.OwnerDocument.CreateElement ("EffetPrecedent");
if(EventManager.SaveBindings(xmlEl,goBackEventTarget )) el.AppendChild(xmlEl);
foreach (Circuit c in circuitsSeq) {
el.AppendChild(xmlC = parent.OwnerDocument.CreateElement ("CircuitSeq"));
xmlC.SetAttribute("id",c.ID.ToString());
el.AppendChild(xmlEl = parent.OwnerDocument.CreateElement ("CircuitSeq"));
xmlEl.SetAttribute("id",c.ID.ToString());
}
foreach (Ligne li in lignes) {
@ -436,6 +475,35 @@ namespace DMX2
ui = null;
}
public void BindMasterEvent (string eventId)
{
if(eventId.Length==0)
{
Conduite.Courante.EventManager.Unbind(masterEventTarget);
return;
}
Conduite.Courante.EventManager.Bind(eventId,masterEventTarget);
}
public void BindEffetSuivantEvent (string eventId)
{
if (eventId.Length == 0) {
Conduite.Courante.EventManager.Unbind (goNextEventTarget);
return;
}
Conduite.Courante.EventManager.Bind(eventId,goNextEventTarget);
}
public void BindEffetPrecedentEvent (string eventId)
{
if (eventId.Length == 0) {
Conduite.Courante.EventManager.Unbind (goBackEventTarget);
return;
}
Conduite.Courante.EventManager.Bind(eventId,goBackEventTarget);
}
public static new SequenceurMacro Load (Conduite conduite, System.Xml.XmlElement el)
{
SequenceurMacro seq = new SequenceurMacro();
@ -447,7 +515,23 @@ namespace DMX2
{
ID = int.Parse (el.GetAttribute ("id"));
Name = el.GetAttribute ("name");
master = int.Parse (el.GetAttribute ("master"));
XmlElement xmlE;
if ((xmlE = el["Master"]) != null) {
master = int.Parse (xmlE.TryGetAttribute("value","100"));
foreach(string id in EventManager.LoadBindings(xmlE))
BindMasterEvent(id);
}
else master = int.Parse (el.TryGetAttribute("master","100"));
if ((xmlE = el["EffetSuivant"])!= null)
foreach(string id in EventManager.LoadBindings(xmlE))
BindEffetSuivantEvent(id);
if ((xmlE = el["EffetPrecedent"])!= null)
foreach(string id in EventManager.LoadBindings(xmlE))
BindEffetPrecedentEvent(id);
foreach (var xc in el.GetElementsByTagName("CircuitSeq")) {
System.Xml.XmlElement xcir = xc as System.Xml.XmlElement;