* DriverBoitierV2.cs:

* DriverBoitierV2UI.cs:
* DMX2.DriverBoitierV2UI.cs: Ajout parametrage boitier et 2nd univers

* gui.stetic:
* DMX2.EditionUnivers.cs: 

* UniversDMX.cs: Ajout fonctions log et exp

* EditionUnivers.cs: Modif gestion param 1 et 2
This commit is contained in:
manu 2013-12-23 18:06:15 +00:00
parent d4a7517d16
commit f589f15787
7 changed files with 337 additions and 239 deletions

View file

@ -29,7 +29,7 @@ namespace DMX2
// tampons Entrée/Sortie
public byte[] inputbuffer = new byte[532];
byte[] outputbuffer = new byte[514];
byte[] outputbuffer = new byte[1026];
//Thread de boucle
Thread loopthread=null;
@ -41,14 +41,43 @@ namespace DMX2
SerialPort serial = null;
int break1 = 150;
int break2 = 150;
int mab1 = 50;
int mab2 = 50;
int brk = 150;
int mab = 50;
int nbc1 = 512;
int nbc2 = 512;
byte flag_merge1 = 1;
byte flag_merge2 = 1;
bool reinit=false ;
public void ReInit () {
reinit=true;
}
public int Break {
get {
return brk;
}
}
public int Mab {
get {
return mab;
}
}
public byte Flag_merge1 {
get {
return flag_merge1;
}
}
public byte Flag_merge2 {
get {
return flag_merge2;
}
}
public DriverBoitierV2 (string serialport, string id): base(id)
{
@ -61,17 +90,12 @@ namespace DMX2
bool paramFlag = false;
public void SetBreak1( int brk, int mab)
public void SetBreak( int _brk, int _mab, byte _merge1, byte _merge2)
{
break1 = brk;
mab1 = mab;
paramFlag = true;
}
public void SetBreak2( int brk, int mab)
{
break2 = brk;
mab2 = mab;
brk = _brk;
mab = _mab;
flag_merge1 = _merge1;
flag_merge2 = _merge2;
paramFlag = true;
}
@ -116,7 +140,7 @@ namespace DMX2
/// </summary>
bool Synchronisation ()
{
return true;
//return true;
if (serial == null)
@ -124,9 +148,9 @@ namespace DMX2
if (!serial.IsOpen)
return false;
// Au cas ou le boitier attends une fin de commande : envoi 520 octets a 0 (le boitier ignorera tout seul la suite)
byte[] tmpBuffer = new byte[520];
serial.Write (tmpBuffer, 0, 520);
// Au cas ou le boitier attends une fin de commande : envoi 1030 octets a 0 (le boitier ignorera tout seul la suite)
byte[] tmpBuffer = new byte[1030];
serial.Write (tmpBuffer, 0, 1030);
// On attends un peu
Thread.Sleep (300);
@ -173,6 +197,8 @@ namespace DMX2
Attente (finAttente);
if (paramFlag)
Parametrage ();
if (reinit)
EnvoieReInit();
break;
case etatAutomate.Erreur:
compteErreur ++;
@ -229,9 +255,8 @@ namespace DMX2
}
if(patch1!=null) patch1.CalculUnivers(outputbuffer,2,512);
if(patch2!=null) patch2.CalculUnivers(outputbuffer,514,512);
serial.Write(outputbuffer,0,outputbuffer.Length);
} catch (Exception ex) {
Console.WriteLine("Exception Envoi {0}",ex);
etat = etatAutomate.Erreur;
@ -257,7 +282,7 @@ namespace DMX2
// {
// throw new NotImplementedException ();
// }
byte flag_input;
void Reception ()
{
try {
@ -274,7 +299,10 @@ namespace DMX2
}
serial.Read(inputbuffer,0,inputbuffer.Length);
if (flag_input != inputbuffer[0]) {
flag_input = inputbuffer[0];
Console.WriteLine(flag_input );
}
if(serial.BytesToRead>0)
serial.ReadExisting ();
@ -295,7 +323,7 @@ namespace DMX2
return;
}
byte[] tmpBuffer = new byte[5];
byte[] tmpBuffer = new byte[6];
tmpBuffer [0] = 27; // Esc
tmpBuffer [1] = 66; // 'B'
@ -303,8 +331,10 @@ namespace DMX2
tmpBuffer [2] = // nb circuits
(byte)(nbc1 / 2 - 1);
tmpBuffer [3] = (byte)break1;
tmpBuffer [4] = (byte)mab1;
tmpBuffer [3] = (byte)brk;
tmpBuffer [4] = (byte)mab;
tmpBuffer [5] = (byte) (flag_merge1 + flag_merge2 * 2);
serial.Write (tmpBuffer, 0, tmpBuffer.Length);
@ -319,6 +349,32 @@ namespace DMX2
}
void EnvoieReInit()
{
reinit = false;
if (!serial.IsOpen) {
etat = etatAutomate.Erreur;
return;
}
byte[] tmpBuffer = new byte[2];
tmpBuffer [0] = 27; // Esc
tmpBuffer [1] = 67; // 'B'
serial.Write (tmpBuffer, 0, tmpBuffer.Length);
if(!WaitForData (1)) {
etat = etatAutomate.Erreur;
return ;
}
serial.Read(tmpBuffer,0,1);
if(tmpBuffer[0] != 67)
etat = etatAutomate.Erreur;
}
void ProcessInput ()
{
byte b = 1; bool pressed;

View file

@ -20,6 +20,12 @@ namespace DMX2
ListStore lsCbUnivers2 = new ListStore(typeof(UniversDMX));
void ConstruitCBUnivers ()
{
caseBrk.Text = drv.Break.ToString();
caseMab.Text = drv.Mab.ToString();
chkMerge1.Active = drv.Flag_merge1 == 1;
chkMerge2.Active = drv.Flag_merge2 == 1;
cbUnivers1.Model = lsCbUnivers1;
var cellCbUnivers1 = new CellRendererText();
cbUnivers1.PackStart(cellCbUnivers1,false);
@ -72,7 +78,28 @@ namespace DMX2
drv.patch2 = lsCbUnivers2.GetValue (iter, 0) as UniversDMX;
}
int a, b;
if (!int.TryParse (caseBrk.Text, out a))
return;
if (!int.TryParse (caseMab.Text, out b))
return;
if (a < 92) {
a = 92;
}
if (b < 12) {
b = 12;
}
drv.SetBreak(a,b,
(byte)(chkMerge1.Active?1:0),
(byte)(chkMerge2.Active?1:0));
}
protected void OnBtnInitClicked (object sender, EventArgs e)
{
drv.ReInit();
}
}

View file

@ -273,6 +273,7 @@ namespace DMX2
universEdite.Dimmers[i].circuitAssocié = Conduite.Courante.Circuits[i];
universEdite.Dimmers[i].fonctionTransfert = UniversDMX.FTransfer.lineaire;
universEdite.Dimmers[i].param1 = 100;
universEdite.Dimmers[i].param2 = 500;
}
MajListeDimmer();
}
@ -299,27 +300,6 @@ namespace DMX2
}
}
protected void OnTxtParam1FocusOutEvent (object o, FocusOutEventArgs args)
{
if (majencour)
return;
float p1;
if (float.TryParse (txtParam1.Text, out p1)) {
universEdite.Dimmers [currDimm].param1 = p1;
MajListeDimmer ();
}
}
protected void OnTxtParam2FocusOutEvent (object o, FocusOutEventArgs args)
{
if (majencour)
return;
float p2;
if (float.TryParse (txtParam2.Text, out p2)) {
universEdite.Dimmers [currDimm].param2 = p2;
MajListeDimmer ();
}
}
ListStore lsCircuits = new ListStore(typeof(Circuit));
@ -422,6 +402,29 @@ namespace DMX2
return;
universEdite.AllumageForce[currDimm] = btAllume.Active;
}
protected void OnTxtParam1Changed (object sender, EventArgs e)
{
if (majencour)
return;
float p1;
if (float.TryParse (txtParam1.Text, out p1)) {
universEdite.Dimmers [currDimm].param1 = p1;
MajListeDimmer ();
}
}
protected void OnTxtParam2Changed (object sender, EventArgs e)
{
if (majencour)
return;
float p2;
if (float.TryParse (txtParam2.Text, out p2)) {
universEdite.Dimmers [currDimm].param2 = p2;
MajListeDimmer ();
}
}
}

View file

@ -31,6 +31,7 @@ namespace DMX2
{
_dimmers[i].fonctionTransfert = FTransfer.lineaire;
_dimmers[i].param1 = 100;
_dimmers[i].param2 = 500;
}
}
@ -66,6 +67,7 @@ namespace DMX2
public void CalculUnivers(byte[] valeurs, int offset, int count)
{
Dimmer g;
double val;
Debug.Assert(valeurs.Length == _dimmers.Length);
for(int i = 0 ; i<count; i++)
{
@ -78,13 +80,18 @@ namespace DMX2
if(g.circuitAssocié !=null) {
switch (g.fonctionTransfert) {
case FTransfer.lineaire:
valeurs[i+offset] = (byte)( g.circuitAssocié.ValeurCourante * g.param1 /100);
val = g.circuitAssocié.ValeurCourante * g.param1 /100;
valeurs[i+offset] = (byte)(val>255?255:val);
break;
case FTransfer.log:
// TODO : Ft Log
val=Math.Log10(g.circuitAssocié.ValeurCourante/g.param2+1)/Math.Log10(255/g.param2+1);
val = val * 255 * g.param1 /100;
valeurs[i+offset] = (byte)(val>255?255:val);
break;
case FTransfer.exp:
// TODO : Ft Exp
val=(Math.Exp(g.circuitAssocié.ValeurCourante/g.param2)-1)/(Math.Exp(255/g.param2)-1);
val = val * 255 * g.param1 /100;
valeurs[i+offset] = (byte)(val>255?255:val);
break;
default:
throw new ArgumentOutOfRangeException ();

View file

@ -7,22 +7,22 @@ namespace DMX2
private global::Gtk.VBox vbox2;
private global::Gtk.Label label1;
private global::Gtk.Table table1;
private global::Gtk.Entry caseBrk;
private global::Gtk.Entry caseMab;
private global::Gtk.ComboBox cbUnivers1;
private global::Gtk.ComboBox cbUnivers2;
private global::Gtk.Entry entry1;
private global::Gtk.Entry entry2;
private global::Gtk.Entry entry3;
private global::Gtk.Entry entry4;
private global::Gtk.CheckButton chkMerge1;
private global::Gtk.CheckButton chkMerge2;
private global::Gtk.Label label2;
private global::Gtk.Label label3;
private global::Gtk.Label label4;
private global::Gtk.Label label5;
private global::Gtk.Label label6;
private global::Gtk.Label label7;
private global::Gtk.Label labVal;
private global::Gtk.Label labVerif;
private global::Gtk.Label label8;
private global::Gtk.HBox hbox1;
private global::Gtk.Button button120;
private global::Gtk.Button btnInit;
protected virtual void Build ()
{
@ -44,86 +44,88 @@ namespace DMX2
w1.Expand = false;
w1.Fill = false;
// Container child vbox2.Gtk.Box+BoxChild
this.table1 = new global::Gtk.Table (((uint)(4)), ((uint)(4)), false);
this.table1 = new global::Gtk.Table (((uint)(4)), ((uint)(5)), false);
this.table1.Name = "table1";
this.table1.RowSpacing = ((uint)(6));
this.table1.ColumnSpacing = ((uint)(6));
// Container child table1.Gtk.Table+TableChild
this.caseBrk = new global::Gtk.Entry ();
this.caseBrk.CanFocus = true;
this.caseBrk.Name = "caseBrk";
this.caseBrk.IsEditable = true;
this.caseBrk.InvisibleChar = '•';
this.table1.Add (this.caseBrk);
global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.caseBrk]));
w2.TopAttach = ((uint)(1));
w2.BottomAttach = ((uint)(2));
w2.LeftAttach = ((uint)(2));
w2.RightAttach = ((uint)(3));
w2.XOptions = ((global::Gtk.AttachOptions)(4));
w2.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.caseMab = new global::Gtk.Entry ();
this.caseMab.CanFocus = true;
this.caseMab.Name = "caseMab";
this.caseMab.IsEditable = true;
this.caseMab.InvisibleChar = '•';
this.table1.Add (this.caseMab);
global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.caseMab]));
w3.TopAttach = ((uint)(1));
w3.BottomAttach = ((uint)(2));
w3.LeftAttach = ((uint)(3));
w3.RightAttach = ((uint)(4));
w3.XOptions = ((global::Gtk.AttachOptions)(4));
w3.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.cbUnivers1 = global::Gtk.ComboBox.NewText ();
this.cbUnivers1.Name = "cbUnivers1";
this.table1.Add (this.cbUnivers1);
global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.cbUnivers1]));
w2.TopAttach = ((uint)(1));
w2.BottomAttach = ((uint)(2));
w2.LeftAttach = ((uint)(1));
w2.RightAttach = ((uint)(2));
w2.XOptions = ((global::Gtk.AttachOptions)(4));
w2.YOptions = ((global::Gtk.AttachOptions)(4));
global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.cbUnivers1]));
w4.TopAttach = ((uint)(1));
w4.BottomAttach = ((uint)(2));
w4.LeftAttach = ((uint)(1));
w4.RightAttach = ((uint)(2));
w4.XOptions = ((global::Gtk.AttachOptions)(4));
w4.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.cbUnivers2 = global::Gtk.ComboBox.NewText ();
this.cbUnivers2.Name = "cbUnivers2";
this.table1.Add (this.cbUnivers2);
global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.cbUnivers2]));
w3.TopAttach = ((uint)(2));
w3.BottomAttach = ((uint)(3));
w3.LeftAttach = ((uint)(1));
w3.RightAttach = ((uint)(2));
w3.XOptions = ((global::Gtk.AttachOptions)(4));
w3.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.entry1 = new global::Gtk.Entry ();
this.entry1.CanFocus = true;
this.entry1.Name = "entry1";
this.entry1.IsEditable = true;
this.entry1.InvisibleChar = '•';
this.table1.Add (this.entry1);
global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry1]));
w4.TopAttach = ((uint)(1));
w4.BottomAttach = ((uint)(2));
w4.LeftAttach = ((uint)(2));
w4.RightAttach = ((uint)(3));
w4.XOptions = ((global::Gtk.AttachOptions)(4));
w4.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.entry2 = new global::Gtk.Entry ();
this.entry2.CanFocus = true;
this.entry2.Name = "entry2";
this.entry2.IsEditable = true;
this.entry2.InvisibleChar = '•';
this.table1.Add (this.entry2);
global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry2]));
w5.TopAttach = ((uint)(1));
w5.BottomAttach = ((uint)(2));
w5.LeftAttach = ((uint)(3));
w5.RightAttach = ((uint)(4));
global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.cbUnivers2]));
w5.TopAttach = ((uint)(2));
w5.BottomAttach = ((uint)(3));
w5.LeftAttach = ((uint)(1));
w5.RightAttach = ((uint)(2));
w5.XOptions = ((global::Gtk.AttachOptions)(4));
w5.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.entry3 = new global::Gtk.Entry ();
this.entry3.CanFocus = true;
this.entry3.Name = "entry3";
this.entry3.IsEditable = true;
this.entry3.InvisibleChar = '•';
this.table1.Add (this.entry3);
global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry3]));
w6.TopAttach = ((uint)(2));
w6.BottomAttach = ((uint)(3));
w6.LeftAttach = ((uint)(2));
w6.RightAttach = ((uint)(3));
this.chkMerge1 = new global::Gtk.CheckButton ();
this.chkMerge1.CanFocus = true;
this.chkMerge1.Name = "chkMerge1";
this.chkMerge1.Label = "";
this.chkMerge1.DrawIndicator = true;
this.chkMerge1.UseUnderline = true;
this.table1.Add (this.chkMerge1);
global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.chkMerge1]));
w6.TopAttach = ((uint)(1));
w6.BottomAttach = ((uint)(2));
w6.LeftAttach = ((uint)(4));
w6.RightAttach = ((uint)(5));
w6.XOptions = ((global::Gtk.AttachOptions)(4));
w6.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.entry4 = new global::Gtk.Entry ();
this.entry4.CanFocus = true;
this.entry4.Name = "entry4";
this.entry4.IsEditable = true;
this.entry4.InvisibleChar = '•';
this.table1.Add (this.entry4);
global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry4]));
this.chkMerge2 = new global::Gtk.CheckButton ();
this.chkMerge2.CanFocus = true;
this.chkMerge2.Name = "chkMerge2";
this.chkMerge2.Label = "";
this.chkMerge2.DrawIndicator = true;
this.chkMerge2.UseUnderline = true;
this.table1.Add (this.chkMerge2);
global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.chkMerge2]));
w7.TopAttach = ((uint)(2));
w7.BottomAttach = ((uint)(3));
w7.LeftAttach = ((uint)(3));
w7.RightAttach = ((uint)(4));
w7.LeftAttach = ((uint)(4));
w7.RightAttach = ((uint)(5));
w7.XOptions = ((global::Gtk.AttachOptions)(4));
w7.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
@ -185,34 +187,18 @@ namespace DMX2
w13.XOptions = ((global::Gtk.AttachOptions)(4));
w13.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.labVal = new global::Gtk.Label ();
this.labVal.Name = "labVal";
this.labVal.LabelProp = "0";
this.table1.Add (this.labVal);
global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1 [this.labVal]));
w14.TopAttach = ((uint)(3));
w14.BottomAttach = ((uint)(4));
w14.LeftAttach = ((uint)(2));
w14.RightAttach = ((uint)(3));
this.label8 = new global::Gtk.Label ();
this.label8.Name = "label8";
this.label8.LabelProp = "Merge";
this.table1.Add (this.label8);
global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1 [this.label8]));
w14.LeftAttach = ((uint)(4));
w14.RightAttach = ((uint)(5));
w14.XOptions = ((global::Gtk.AttachOptions)(4));
w14.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.labVerif = new global::Gtk.Label ();
this.labVerif.Name = "labVerif";
this.labVerif.LabelProp = "Vérif";
this.table1.Add (this.labVerif);
global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1 [this.labVerif]));
w15.TopAttach = ((uint)(3));
w15.BottomAttach = ((uint)(4));
w15.LeftAttach = ((uint)(1));
w15.RightAttach = ((uint)(2));
w15.XOptions = ((global::Gtk.AttachOptions)(4));
w15.YOptions = ((global::Gtk.AttachOptions)(4));
this.vbox2.Add (this.table1);
global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
w16.Position = 1;
w16.Expand = false;
w16.Fill = false;
global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
w15.Position = 1;
// Container child vbox2.Gtk.Box+BoxChild
this.hbox1 = new global::Gtk.HBox ();
this.hbox1.Name = "hbox1";
@ -224,8 +210,19 @@ namespace DMX2
this.button120.UseUnderline = true;
this.button120.Label = "Valider";
this.hbox1.Add (this.button120);
global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.button120]));
w17.Position = 1;
global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.button120]));
w16.Position = 1;
w16.Expand = false;
w16.Fill = false;
// Container child hbox1.Gtk.Box+BoxChild
this.btnInit = new global::Gtk.Button ();
this.btnInit.CanFocus = true;
this.btnInit.Name = "btnInit";
this.btnInit.UseUnderline = true;
this.btnInit.Label = "Init Boitier";
this.hbox1.Add (this.btnInit);
global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.btnInit]));
w17.Position = 2;
w17.Expand = false;
w17.Fill = false;
this.vbox2.Add (this.hbox1);
@ -240,6 +237,7 @@ namespace DMX2
}
this.Hide ();
this.button120.Clicked += new global::System.EventHandler (this.OnButton120Clicked);
this.btnInit.Clicked += new global::System.EventHandler (this.OnBtnInitClicked);
}
}
}

View file

@ -380,8 +380,8 @@ namespace DMX2
this.spinDimmer.ValueChanged += new global::System.EventHandler (this.OnSpinDimmerValueChanged);
this.cbCircuit.Changed += new global::System.EventHandler (this.OnCbCircuitChanged);
this.cbFT.Changed += new global::System.EventHandler (this.OnCbFTChanged);
this.txtParam1.FocusOutEvent += new global::Gtk.FocusOutEventHandler (this.OnTxtParam1FocusOutEvent);
this.txtParam2.FocusOutEvent += new global::Gtk.FocusOutEventHandler (this.OnTxtParam2FocusOutEvent);
this.txtParam1.Changed += new global::System.EventHandler (this.OnTxtParam1Changed);
this.txtParam2.Changed += new global::System.EventHandler (this.OnTxtParam2Changed);
this.tvDimm.CursorChanged += new global::System.EventHandler (this.OnTvDimmCursorChanged);
this.buttonCancel.Clicked += new global::System.EventHandler (this.OnButtonCancelClicked);
}

View file

@ -1453,7 +1453,7 @@ au sequenceur</property>
<property name="CanFocus">True</property>
<property name="IsEditable">True</property>
<property name="InvisibleChar">•</property>
<signal name="FocusOutEvent" handler="OnTxtParam1FocusOutEvent" />
<signal name="Changed" handler="OnTxtParam1Changed" />
</widget>
<packing>
<property name="Position">6</property>
@ -1478,7 +1478,7 @@ au sequenceur</property>
<property name="CanFocus">True</property>
<property name="IsEditable">True</property>
<property name="InvisibleChar">•</property>
<signal name="FocusOutEvent" handler="OnTxtParam2FocusOutEvent" />
<signal name="Changed" handler="OnTxtParam2Changed" />
</widget>
<packing>
<property name="Position">8</property>
@ -2135,7 +2135,7 @@ au sequenceur</property>
</widget>
</child>
</widget>
<widget class="Gtk.Bin" id="DMX2.DriverBoitierV2UI" design-size="480 300">
<widget class="Gtk.Bin" id="DMX2.DriverBoitierV2UI" design-size="709 300">
<property name="MemberName" />
<property name="Visible">False</property>
<child>
@ -2158,7 +2158,7 @@ au sequenceur</property>
<widget class="Gtk.Table" id="table1">
<property name="MemberName" />
<property name="NRows">4</property>
<property name="NColumns">4</property>
<property name="NColumns">5</property>
<property name="RowSpacing">6</property>
<property name="ColumnSpacing">6</property>
<child>
@ -2167,6 +2167,67 @@ au sequenceur</property>
<child>
<placeholder />
</child>
<child>
<placeholder />
</child>
<child>
<placeholder />
</child>
<child>
<placeholder />
</child>
<child>
<placeholder />
</child>
<child>
<placeholder />
</child>
<child>
<widget class="Gtk.Entry" id="caseBrk">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="IsEditable">True</property>
<property name="InvisibleChar">•</property>
</widget>
<packing>
<property name="TopAttach">1</property>
<property name="BottomAttach">2</property>
<property name="LeftAttach">2</property>
<property name="RightAttach">3</property>
<property name="AutoSize">True</property>
<property name="XOptions">Fill</property>
<property name="YOptions">Fill</property>
<property name="XExpand">False</property>
<property name="XFill">True</property>
<property name="XShrink">False</property>
<property name="YExpand">False</property>
<property name="YFill">True</property>
<property name="YShrink">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Entry" id="caseMab">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="IsEditable">True</property>
<property name="InvisibleChar">•</property>
</widget>
<packing>
<property name="TopAttach">1</property>
<property name="BottomAttach">2</property>
<property name="LeftAttach">3</property>
<property name="RightAttach">4</property>
<property name="AutoSize">True</property>
<property name="XOptions">Fill</property>
<property name="YOptions">Fill</property>
<property name="XExpand">False</property>
<property name="XFill">True</property>
<property name="XShrink">False</property>
<property name="YExpand">False</property>
<property name="YFill">True</property>
<property name="YShrink">False</property>
</packing>
</child>
<child>
<widget class="Gtk.ComboBox" id="cbUnivers1">
<property name="MemberName" />
@ -2212,17 +2273,19 @@ au sequenceur</property>
</packing>
</child>
<child>
<widget class="Gtk.Entry" id="entry1">
<widget class="Gtk.CheckButton" id="chkMerge1">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="IsEditable">True</property>
<property name="InvisibleChar">•</property>
<property name="Label" translatable="yes" />
<property name="DrawIndicator">True</property>
<property name="HasLabel">True</property>
<property name="UseUnderline">True</property>
</widget>
<packing>
<property name="TopAttach">1</property>
<property name="BottomAttach">2</property>
<property name="LeftAttach">2</property>
<property name="RightAttach">3</property>
<property name="LeftAttach">4</property>
<property name="RightAttach">5</property>
<property name="AutoSize">True</property>
<property name="XOptions">Fill</property>
<property name="YOptions">Fill</property>
@ -2235,63 +2298,19 @@ au sequenceur</property>
</packing>
</child>
<child>
<widget class="Gtk.Entry" id="entry2">
<widget class="Gtk.CheckButton" id="chkMerge2">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="IsEditable">True</property>
<property name="InvisibleChar">•</property>
</widget>
<packing>
<property name="TopAttach">1</property>
<property name="BottomAttach">2</property>
<property name="LeftAttach">3</property>
<property name="RightAttach">4</property>
<property name="AutoSize">True</property>
<property name="XOptions">Fill</property>
<property name="YOptions">Fill</property>
<property name="XExpand">False</property>
<property name="XFill">True</property>
<property name="XShrink">False</property>
<property name="YExpand">False</property>
<property name="YFill">True</property>
<property name="YShrink">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Entry" id="entry3">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="IsEditable">True</property>
<property name="InvisibleChar">•</property>
<property name="Label" translatable="yes" />
<property name="DrawIndicator">True</property>
<property name="HasLabel">True</property>
<property name="UseUnderline">True</property>
</widget>
<packing>
<property name="TopAttach">2</property>
<property name="BottomAttach">3</property>
<property name="LeftAttach">2</property>
<property name="RightAttach">3</property>
<property name="AutoSize">True</property>
<property name="XOptions">Fill</property>
<property name="YOptions">Fill</property>
<property name="XExpand">False</property>
<property name="XFill">True</property>
<property name="XShrink">False</property>
<property name="YExpand">False</property>
<property name="YFill">True</property>
<property name="YShrink">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Entry" id="entry4">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="IsEditable">True</property>
<property name="InvisibleChar">•</property>
</widget>
<packing>
<property name="TopAttach">2</property>
<property name="BottomAttach">3</property>
<property name="LeftAttach">3</property>
<property name="RightAttach">4</property>
<property name="LeftAttach">4</property>
<property name="RightAttach">5</property>
<property name="AutoSize">True</property>
<property name="XOptions">Fill</property>
<property name="YOptions">Fill</property>
@ -2416,36 +2435,13 @@ au sequenceur</property>
</packing>
</child>
<child>
<widget class="Gtk.Label" id="labVal">
<widget class="Gtk.Label" id="label8">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">0</property>
<property name="LabelProp" translatable="yes">Merge</property>
</widget>
<packing>
<property name="TopAttach">3</property>
<property name="BottomAttach">4</property>
<property name="LeftAttach">2</property>
<property name="RightAttach">3</property>
<property name="AutoSize">True</property>
<property name="XOptions">Fill</property>
<property name="YOptions">Fill</property>
<property name="XExpand">False</property>
<property name="XFill">True</property>
<property name="XShrink">False</property>
<property name="YExpand">False</property>
<property name="YFill">True</property>
<property name="YShrink">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Label" id="labVerif">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Vérif</property>
</widget>
<packing>
<property name="TopAttach">3</property>
<property name="BottomAttach">4</property>
<property name="LeftAttach">1</property>
<property name="RightAttach">2</property>
<property name="LeftAttach">4</property>
<property name="RightAttach">5</property>
<property name="AutoSize">True</property>
<property name="XOptions">Fill</property>
<property name="YOptions">Fill</property>
@ -2461,8 +2457,6 @@ au sequenceur</property>
<packing>
<property name="Position">1</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
@ -2489,7 +2483,20 @@ au sequenceur</property>
</packing>
</child>
<child>
<placeholder />
<widget class="Gtk.Button" id="btnInit">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Type">TextOnly</property>
<property name="Label" translatable="yes">Init Boitier</property>
<property name="UseUnderline">True</property>
<signal name="Clicked" handler="OnBtnInitClicked" />
</widget>
<packing>
<property name="Position">2</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
</widget>
<packing>