232 lines
6.1 KiB
C#
232 lines
6.1 KiB
C#
using System;
|
|
using Gtk;
|
|
namespace DMX2
|
|
{
|
|
public partial class EditionUnivers : Gtk.Dialog
|
|
{
|
|
UniversDMX universEdite;
|
|
public EditionUnivers (Window parent) : base ("Edition Univers",parent,DialogFlags.DestroyWithParent)
|
|
{
|
|
this.Build ();
|
|
ConstruitCBUnivers();
|
|
ConstruitCBCircuits();
|
|
ConstruitCBFT();
|
|
ConstruitListeDimmer();
|
|
}
|
|
|
|
ListStore lsCbUnivers = new ListStore(typeof(UniversDMX));
|
|
|
|
void ConstruitCBUnivers ()
|
|
{
|
|
cbUnivers.Model = lsCbUnivers;
|
|
var cellCbUnivers = new CellRendererText();
|
|
cbUnivers.PackStart(cellCbUnivers,false);
|
|
cbUnivers.SetCellDataFunc(cellCbUnivers, new CellLayoutDataFunc(RenderUniversName));
|
|
|
|
|
|
foreach(UniversDMX u in Conduite.Courante.Patches)
|
|
lsCbUnivers.AppendValues(u);
|
|
|
|
TreeIter iter;
|
|
lsCbUnivers.GetIterFirst(out iter);
|
|
cbUnivers.SetActiveIter(iter);
|
|
|
|
}
|
|
|
|
void RenderUniversName (CellLayout cell_layout, CellRenderer cell, TreeModel tree_model, TreeIter iter)
|
|
{
|
|
UniversDMX univers = tree_model.GetValue (iter, 0) as UniversDMX;
|
|
if(univers != null)
|
|
(cell as Gtk.CellRendererText).Text = univers.Nom;
|
|
}
|
|
|
|
ListStore lsCbCircuits = new ListStore(typeof(Circuit));
|
|
void ConstruitCBCircuits ()
|
|
{
|
|
cbCircuit.Model = lsCbCircuits;
|
|
var cellCbCircuit = new CellRendererText();
|
|
cbCircuit.PackStart(cellCbCircuit,true);
|
|
cbCircuit.SetCellDataFunc(cellCbCircuit,new CellLayoutDataFunc(RenderCircuitName));
|
|
|
|
lsCbCircuits.AppendValues("toto");
|
|
foreach (Circuit c in Conduite.Courante.Circuits)
|
|
lsCbCircuits.AppendValues(c);
|
|
|
|
}
|
|
|
|
void RenderCircuitName (CellLayout cell_layout, CellRenderer cell, TreeModel tree_model, TreeIter iter)
|
|
{
|
|
Circuit c = tree_model.GetValue (iter, 0) as Circuit;
|
|
if(c != null)
|
|
(cell as Gtk.CellRendererText).Text = c.ID + "-" + c.Name;
|
|
else
|
|
(cell as Gtk.CellRendererText).Text = "--Aucun--";
|
|
|
|
}
|
|
|
|
int currDimm=0;
|
|
|
|
ListStore lsCbFT = new ListStore(typeof(string),typeof(UniversDMX.FTransfer));
|
|
void ConstruitCBFT ()
|
|
{
|
|
var values = Enum.GetValues(typeof(UniversDMX.FTransfer));
|
|
cbFT.Model = lsCbFT;
|
|
|
|
foreach(var v in values)
|
|
lsCbFT.AppendValues(v.ToString(), (UniversDMX.FTransfer)v );
|
|
}
|
|
|
|
protected void OnCbUniversChanged (object sender, EventArgs e)
|
|
{
|
|
TreeIter iter;
|
|
if(cbUnivers.GetActiveIter(out iter))
|
|
{
|
|
universEdite = lsCbUnivers.GetValue(iter,0) as UniversDMX;
|
|
MajListeDimmer();
|
|
spinDimmer.Value = 1;
|
|
MajDimmerSelectione();
|
|
}
|
|
}
|
|
|
|
protected void OnBtAddClicked (object sender, EventArgs e)
|
|
{
|
|
var dlg = new Dialog ("Nom ?", this, DialogFlags.Modal);
|
|
var entry = new Entry ("Nouvel Univers");
|
|
dlg.AddButton (Stock.Ok, ResponseType.Ok).GrabDefault ();
|
|
dlg.AddButton (Stock.Cancel, ResponseType.Cancel);
|
|
dlg.VBox.Add (new Label ("Nom de la nouvelle Conduite :"));
|
|
dlg.VBox.Add (entry);
|
|
dlg.VBox.ShowAll ();
|
|
entry.ActivatesDefault = true;
|
|
|
|
if ((ResponseType)dlg.Run () == ResponseType.Ok) {
|
|
UniversDMX univ = new UniversDMX ();
|
|
|
|
univ.Nom = entry.Text;
|
|
lsCbUnivers.AppendValues (univ);
|
|
Conduite.Courante.Patches.Add (univ);
|
|
}
|
|
dlg.Destroy();
|
|
}
|
|
|
|
protected void OnButtonCancelClicked (object sender, EventArgs e)
|
|
{
|
|
Destroy();
|
|
}
|
|
|
|
|
|
ListStore lsDimmers = new ListStore(typeof(int),typeof(UniversDMX.Dimmer));
|
|
void ConstruitListeDimmer ()
|
|
{
|
|
|
|
|
|
|
|
var idCol = new Gtk.TreeViewColumn();
|
|
var idCell = new Gtk.CellRendererText();
|
|
idCol.Title = "ID";
|
|
idCol.PackStart(idCell,true);
|
|
idCol.SetCellDataFunc(idCell, new Gtk.TreeCellDataFunc( RenderDimmerID) );
|
|
tvDimm.AppendColumn(idCol);
|
|
|
|
var cirCol = new Gtk.TreeViewColumn();
|
|
var cirCell = new Gtk.CellRendererText();
|
|
cirCol.Title = "Circuit";
|
|
cirCol.PackStart(cirCell,true);
|
|
cirCol.SetCellDataFunc(cirCell, new Gtk.TreeCellDataFunc( RenderDimmerCircuit) );
|
|
tvDimm.AppendColumn(cirCol);
|
|
|
|
tvDimm.Model = lsDimmers;
|
|
|
|
|
|
|
|
}
|
|
|
|
void MajListeDimmer ()
|
|
{
|
|
lsDimmers.Clear();
|
|
int i; UniversDMX.Dimmer dim;
|
|
for (i=0; i< universEdite.Dimmers.Length;i++)
|
|
{
|
|
dim = universEdite.Dimmers[i];
|
|
|
|
lsDimmers.AppendValues(i+1,dim);
|
|
}
|
|
int id = (int)(spinDimmer.Value);
|
|
tvDimm.SetCursor( new TreePath( new int[1] { id - 1 }) ,null,false);
|
|
|
|
}
|
|
|
|
void RenderDimmerID (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter)
|
|
{
|
|
int i = (int)(tree_model.GetValue (iter, 0));
|
|
(cell as Gtk.CellRendererText).Text = i.ToString();
|
|
}
|
|
|
|
void RenderDimmerCircuit (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter)
|
|
{
|
|
UniversDMX.Dimmer dim = (UniversDMX.Dimmer)(tree_model.GetValue (iter, 1));
|
|
(cell as Gtk.CellRendererText).Text = dim.circuitAssocié==null?" - ": dim.circuitAssocié.ID + " - " + dim.circuitAssocié.Name ;
|
|
}
|
|
|
|
|
|
protected void OnSpinDimmerValueChanged (object sender, EventArgs e)
|
|
{
|
|
MajDimmerSelectione();
|
|
}
|
|
|
|
bool majencour = false;
|
|
void MajDimmerSelectione()
|
|
{
|
|
majencour = true;
|
|
int id = (int)(spinDimmer.Value);
|
|
|
|
currDimm = id - 1;
|
|
tvDimm.SetCursor( new TreePath( new int[1] { currDimm }) ,null,false);
|
|
|
|
TreeIter iter;
|
|
lsCbCircuits.GetIterFirst(out iter);
|
|
do{
|
|
if((lsCbCircuits.GetValue(iter,0) as Circuit) == universEdite.Dimmers[currDimm].circuitAssocié) break;
|
|
} while (lsCbCircuits.IterNext(ref iter));
|
|
|
|
cbCircuit.SetActiveIter(iter);
|
|
majencour = false;
|
|
}
|
|
|
|
protected void OnTvDimmCursorChanged (object sender, EventArgs e)
|
|
{
|
|
spinDimmer.Value = tvDimm.Selection.GetSelectedRows()[0].Indices[0]+1;
|
|
}
|
|
|
|
protected void OnBtPatchDroitClicked (object sender, EventArgs e)
|
|
{
|
|
int i;
|
|
int max = Math.Min(Conduite.Courante.Circuits.Count,512);
|
|
|
|
for(i=0 ;i<max ;i++)
|
|
{
|
|
universEdite.Dimmers[i].circuitAssocié = Conduite.Courante.Circuits[i];
|
|
universEdite.Dimmers[i].fonctionTransfert = UniversDMX.FTransfer.lineaire;
|
|
universEdite.Dimmers[i].param1 = 100;
|
|
}
|
|
MajListeDimmer();
|
|
}
|
|
|
|
protected void OnCbCircuitChanged (object sender, EventArgs e)
|
|
{
|
|
if(majencour) return;
|
|
TreeIter iter;
|
|
if (cbCircuit.GetActiveIter (out iter)) {
|
|
Circuit c = lsCbCircuits.GetValue (iter, 0) as Circuit;
|
|
universEdite.Dimmers[currDimm].circuitAssocié = c;
|
|
MajListeDimmer();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|