ajout interface gestion drivers

This commit is contained in:
tzim 2013-11-25 16:12:27 +00:00
parent 1fed3ab63b
commit 94a463da33
11 changed files with 734 additions and 32 deletions

View file

@ -143,6 +143,13 @@ namespace DMX2
} }
} }
public DriverDMX GetDriverByID(string ID){
foreach (var driver in drivers)
if(ID== driver.ID)
return driver;
return null;
}
public ReadOnlyCollection<Sequenceur> Sequenceurs { public ReadOnlyCollection<Sequenceur> Sequenceurs {
get { get {
return sequenceurs.AsReadOnly(); return sequenceurs.AsReadOnly();

View file

@ -84,7 +84,6 @@
<Compile Include="UniversDMX.cs" /> <Compile Include="UniversDMX.cs" />
<Compile Include="Sequenceur.cs" /> <Compile Include="Sequenceur.cs" />
<Compile Include="SequenceurLineaire.cs" /> <Compile Include="SequenceurLineaire.cs" />
<Compile Include="IDriverDMX.cs" />
<Compile Include="GestionCircuits.cs" /> <Compile Include="GestionCircuits.cs" />
<Compile Include="gtk-gui\DMX2.GestionCircuits.cs" /> <Compile Include="gtk-gui\DMX2.GestionCircuits.cs" />
<Compile Include="SequenceurUI.cs" /> <Compile Include="SequenceurUI.cs" />
@ -106,6 +105,10 @@
<Compile Include="MidiEventProvider.cs" /> <Compile Include="MidiEventProvider.cs" />
<Compile Include="MidiEventProvider.PInvoke.cs" /> <Compile Include="MidiEventProvider.PInvoke.cs" />
<Compile Include="HelperFunctions.cs" /> <Compile Include="HelperFunctions.cs" />
<Compile Include="GestionDriversUI.cs" />
<Compile Include="gtk-gui\DMX2.GestionDriversUI.cs" />
<Compile Include="DriverBoitierV1UI.cs" />
<Compile Include="gtk-gui\DMX2.DriverBoitierV1UI.cs" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ProjectExtensions> <ProjectExtensions>

View file

@ -32,10 +32,11 @@ namespace DMX2
string portname = "/dev/ttyUSB0"; string portname = "/dev/ttyUSB0";
SerialPort serial = null; SerialPort serial = null;
public DriverBoitierV1 () public DriverBoitierV1 (string serialport, string id): base(id)
{ {
patch = Conduite.Courante.Patches[0]; //patch = Conduite.Courante.Patches[0];
Start(); //Start();
//serial = serialport;
outputbuffer[0]=27; outputbuffer[0]=27;
outputbuffer[1]=68; outputbuffer[1]=68;
outputbuffer[4]=255; outputbuffer[4]=255;
@ -143,25 +144,27 @@ namespace DMX2
} }
} }
#region implemented abstract members of DMX2.DriverDMX
public override Gtk.Window GetDialog ()
{
return null;
}
#endregion
public override void Dispose () public override void Dispose ()
{ {
disposed = true; disposed = true;
running = false; running = false;
loopthread.Join(); if (loopthread != null) {
loopthread=null; loopthread.Join ();
loopthread = null;
}
//TODO : Close Port //TODO : Close Port
if(serial != null) if(serial != null)
serial.Close(); serial.Close();
} }
#region implemented abstract members of DMX2.DriverDMX
public override Gtk.Widget GetUI ()
{
return new DriverBoitierV1UI(this);
}
#endregion
#region IEventProvider implementation #region IEventProvider implementation

View file

@ -0,0 +1,16 @@
using System;
namespace DMX2
{
[System.ComponentModel.ToolboxItem(true)]
public partial class DriverBoitierV1UI : Gtk.Bin
{
DriverBoitierV1 drv;
public DriverBoitierV1UI (DriverBoitierV1 _drv)
{
drv = _drv;
this.Build ();
}
}
}

View file

@ -5,13 +5,24 @@ namespace DMX2
{ {
public abstract class DriverDMX: IDisposable public abstract class DriverDMX: IDisposable
{ {
string id;
public DriverDMX () public string ID {
{ get {
return id;
}
set {
id = value;
}
} }
public abstract Gtk.Window GetDialog(); public DriverDMX (string _id)
{
id=_id;
}
public abstract Gtk.Widget GetUI();
protected bool disposed = false; protected bool disposed = false;

163
DMX-2.0/GestionDriversUI.cs Normal file
View file

@ -0,0 +1,163 @@
using System;
using System.IO;
using Gtk;
using System.Collections.Generic;
namespace DMX2
{
public partial class GestionDriversUI : Gtk.Dialog
{
ListStore ls = new ListStore(typeof(FileInfo));
ListStore lsDriver = new ListStore(typeof(String));
public GestionDriversUI ()
{
this.Build ();
lsDriver = new Gtk.ListStore(typeof (String));
lsDriver.AppendValues("V1 256/0/0/8","0");
lsDriver.AppendValues("V2 512/512/16/16","1");
lsDriver.AppendValues("V2 1024/512/16/16","2");
comboDriver.Model = lsDriver;
var idUsbCol = new Gtk.TreeViewColumn();
var idUsbCell = new Gtk.CellRendererText();
idUsbCol.Title = "Id. USB";
idUsbCol.PackStart(idUsbCell,true);
idUsbCol.SetCellDataFunc(idUsbCell, new Gtk.TreeCellDataFunc( RenderIDUsb) );
this.listeUsb.AppendColumn(idUsbCol);
var connStCol = new Gtk.TreeViewColumn();
var connStCell = new Gtk.CellRendererText();
connStCol.Title = "Etat";
connStCol.PackStart(connStCell,true);
connStCol.SetCellDataFunc(connStCell, new Gtk.TreeCellDataFunc( RenderSt) );
this.listeUsb.AppendColumn(connStCol);
connStCol.Alignment = 1;
/*
var nameDriverCol = new Gtk.TreeViewColumn();
var nameDriverCell = new Gtk.CellRendererCombo();
nameDriverCol.Title = "Etat";
nameDriverCol.PackStart(nameDriverCell,false);
nameDriverCol.AddAttribute (nameDriverCell, "text", 0);
nameDriverCell.Editable =true;
nameDriverCell.HasEntry=false;
nameDriverCell.Model = lsDriver;
nameDriverCell.TextColumn = 0;
this.listeUsb.AppendColumn(nameDriverCol);*/
ls = new Gtk.ListStore(typeof (FileInfo));
this.listeUsb.Model = ls;
UpdateListeUsb();
}
void RenderIDUsb (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel tree_model, Gtk.TreeIter iter)
{
FileInfo fi = tree_model.GetValue (iter, 0) as FileInfo;
(cell as Gtk.CellRendererText).Text = fi.Name.Substring(0,35);
}
void RenderSt (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter)
{
FileInfo fi = tree_model.GetValue (iter, 0) as FileInfo;
DriverDMX drv = Conduite.Courante.GetDriverByID (fi.Name);
if (drv == null) {
(cell as Gtk.CellRendererText).Text = "Déconnecté";
return;
}
(cell as Gtk.CellRendererText).Text = drv.GetType().ToString();
}
protected void UpdateListeUsb ()
{
ls.Clear();
var dirInfo = new DirectoryInfo ("/dev/serial/by-id/");
if (dirInfo.Exists) {
foreach(FileInfo fi in dirInfo.GetFiles())
ls.AppendValues(fi);
}
}
protected void OnButtonOkClicked (object sender, EventArgs e)
{
Destroy();
}
protected void OnListeUsbCursorChanged (object sender, EventArgs e)
{
TreeViewColumn col;
TreePath path;
TreeIter iter;
listeUsb.GetCursor (out path, out col);
if (!listeUsb.Model.GetIter (out iter, path))
return;
FileInfo fi = listeUsb.Model.GetValue (iter, 0) as FileInfo;
if (fi == null)
return;
DriverDMX drv = Conduite.Courante.GetDriverByID (fi.Name);
if (drv == null) {
btnConnect.Visible = btnConnect.Sensitive = true;
btnDisconnect.Visible = btnDisconnect.Sensitive = false;
comboDriver.Sensitive = true;
comboDriver.Active=-1;
return;
}
AfficheDriverUI(drv);
}
protected void OnBtnConnectClicked (object sender, EventArgs e)
{
// Instancie
TreeViewColumn col;
TreePath path;
TreeIter iter;
listeUsb.GetCursor (out path, out col);
if (!listeUsb.Model.GetIter (out iter, path))
return;
FileInfo fi = listeUsb.Model.GetValue (iter, 0) as FileInfo;
if (fi == null)
return;
DriverDMX drv=null;
switch (comboDriver.Active) {
case 0:
drv = new DriverBoitierV1(fi.FullName, fi.Name);
Conduite.Courante.Drivers.Add(drv);
break;
default:
return;
}
AfficheDriverUI(drv);
}
void AfficheDriverUI(DriverDMX drv){
btnConnect.Visible = false;
comboDriver.Sensitive = false;
btnDisconnect.Visible = btnDisconnect.Sensitive = true;
frmDrvChild.Child = drv.GetUI();
frmDrvChild.ShowAll();
}
}
}

View file

@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
namespace DMX2
{
public interface IDriverDMX
{
void Start();
void Stop();
int NbUniversMax { get;}
ICollection<UniversDMX> UniversAssocies{get;}
}
}

View file

@ -552,6 +552,7 @@ namespace DMX2
showAllAction.Sensitive = universAction.Sensitive = masterScale.Sensitive = showAllAction.Sensitive = universAction.Sensitive = masterScale.Sensitive =
seqLinAction.Sensitive = seqMacroAction.Sensitive = circAction.Sensitive = saveAction.Sensitive = seqLinAction.Sensitive = seqMacroAction.Sensitive = circAction.Sensitive = saveAction.Sensitive =
btnPause.Sensitive = btnBlackOut.Sensitive = btnPause.Sensitive = btnBlackOut.Sensitive =
connectAction.Sensitive =
saveAsAction.Sensitive = closeAction.Sensitive = true; saveAsAction.Sensitive = closeAction.Sensitive = true;
openAction.Sensitive = newAction.Sensitive = false; openAction.Sensitive = newAction.Sensitive = false;
this.Title = "DMX 2.0 - " + Conduite.Courante.Name; this.Title = "DMX 2.0 - " + Conduite.Courante.Name;
@ -561,6 +562,7 @@ namespace DMX2
showAllAction.Sensitive = universAction.Sensitive = masterScale.Sensitive = showAllAction.Sensitive = universAction.Sensitive = masterScale.Sensitive =
seqLinAction.Sensitive = seqMacroAction.Sensitive = circAction.Sensitive = saveAction.Sensitive = seqLinAction.Sensitive = seqMacroAction.Sensitive = circAction.Sensitive = saveAction.Sensitive =
btnPause.Sensitive = btnBlackOut.Sensitive = btnPause.Sensitive = btnBlackOut.Sensitive =
connectAction.Sensitive =
saveAsAction.Sensitive = closeAction.Sensitive = false; saveAsAction.Sensitive = closeAction.Sensitive = false;
openAction.Sensitive = newAction.Sensitive = true; openAction.Sensitive = newAction.Sensitive = true;
this.Title = "DMX 2.0"; this.Title = "DMX 2.0";
@ -651,11 +653,25 @@ namespace DMX2
#endregion #endregion
GestionDriversUI dDlg = null;
protected void OnConnectActionActivated (object sender, EventArgs e) protected void OnConnectActionActivated (object sender, EventArgs e)
{ {
if (dDlg != null) {
dDlg.Show();
return;
}
Conduite.Courante.Drivers.Add( new DriverBoitierV1()); dDlg = new GestionDriversUI();
dDlg.ShowAll();
dDlg.Destroyed += dDlgDestroyed;
//Conduite.Courante.Drivers.Add( new DriverBoitierV1());
}
void dDlgDestroyed (object sender, EventArgs e)
{
dDlg= null;
} }
protected void OnBtnPauseToggled (object sender, EventArgs e) protected void OnBtnPauseToggled (object sender, EventArgs e)

View file

@ -0,0 +1,88 @@
// This file has been generated by the GUI designer. Do not modify.
namespace DMX2
{
public partial class DriverBoitierV1UI
{
private global::Gtk.VBox vbox2;
private global::Gtk.Label label1;
private global::Gtk.Table table1;
private global::Gtk.ComboBox combobox1;
private global::Gtk.Label label4;
private global::Gtk.Label label5;
private global::Gtk.Label lblEtat;
protected virtual void Build ()
{
global::Stetic.Gui.Initialize (this);
// Widget DMX2.DriverBoitierV1UI
global::Stetic.BinContainer.Attach (this);
this.Name = "DMX2.DriverBoitierV1UI";
// Container child DMX2.DriverBoitierV1UI.Gtk.Container+ContainerChild
this.vbox2 = new global::Gtk.VBox ();
this.vbox2.Name = "vbox2";
this.vbox2.Spacing = 6;
// Container child vbox2.Gtk.Box+BoxChild
this.label1 = new global::Gtk.Label ();
this.label1.Name = "label1";
this.label1.LabelProp = "Driver Boitier V1";
this.vbox2.Add (this.label1);
global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label1]));
w1.Position = 0;
w1.Expand = false;
w1.Fill = false;
// Container child vbox2.Gtk.Box+BoxChild
this.table1 = new global::Gtk.Table (((uint)(3)), ((uint)(2)), false);
this.table1.Name = "table1";
this.table1.RowSpacing = ((uint)(6));
this.table1.ColumnSpacing = ((uint)(6));
// Container child table1.Gtk.Table+TableChild
this.combobox1 = global::Gtk.ComboBox.NewText ();
this.combobox1.Name = "combobox1";
this.table1.Add (this.combobox1);
global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.combobox1]));
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));
// Container child table1.Gtk.Table+TableChild
this.label4 = new global::Gtk.Label ();
this.label4.Name = "label4";
this.label4.LabelProp = "Univers DMX :";
this.table1.Add (this.label4);
global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.label4]));
w3.TopAttach = ((uint)(1));
w3.BottomAttach = ((uint)(2));
w3.XOptions = ((global::Gtk.AttachOptions)(4));
w3.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.label5 = new global::Gtk.Label ();
this.label5.Name = "label5";
this.label5.LabelProp = "Etat :";
this.table1.Add (this.label5);
global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.label5]));
w4.XOptions = ((global::Gtk.AttachOptions)(4));
w4.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.lblEtat = new global::Gtk.Label ();
this.lblEtat.Name = "lblEtat";
this.lblEtat.LabelProp = "label6";
this.table1.Add (this.lblEtat);
global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.lblEtat]));
w5.LeftAttach = ((uint)(1));
w5.RightAttach = ((uint)(2));
w5.XOptions = ((global::Gtk.AttachOptions)(4));
w5.YOptions = ((global::Gtk.AttachOptions)(4));
this.vbox2.Add (this.table1);
global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
w6.Position = 1;
this.Add (this.vbox2);
if ((this.Child != null)) {
this.Child.ShowAll ();
}
this.Hide ();
}
}
}

View file

@ -0,0 +1,135 @@
// This file has been generated by the GUI designer. Do not modify.
namespace DMX2
{
public partial class GestionDriversUI
{
private global::Gtk.VBox vbox2;
private global::Gtk.TreeView listeUsb;
private global::Gtk.HBox hbox1;
private global::Gtk.ComboBox comboDriver;
private global::Gtk.Button btnDisconnect;
private global::Gtk.Button btnConnect;
private global::Gtk.Frame frmDrvUI;
private global::Gtk.Alignment frmDrvChild;
private global::Gtk.Label GtkLabel2;
private global::Gtk.Button buttonOk;
protected virtual void Build ()
{
global::Stetic.Gui.Initialize (this);
// Widget DMX2.GestionDriversUI
this.Name = "DMX2.GestionDriversUI";
this.WindowPosition = ((global::Gtk.WindowPosition)(4));
// Internal child DMX2.GestionDriversUI.VBox
global::Gtk.VBox w1 = this.VBox;
w1.Name = "dialog1_VBox";
w1.BorderWidth = ((uint)(2));
// Container child dialog1_VBox.Gtk.Box+BoxChild
this.vbox2 = new global::Gtk.VBox ();
this.vbox2.Name = "vbox2";
this.vbox2.Spacing = 6;
// Container child vbox2.Gtk.Box+BoxChild
this.listeUsb = new global::Gtk.TreeView ();
this.listeUsb.HeightRequest = 87;
this.listeUsb.CanFocus = true;
this.listeUsb.Name = "listeUsb";
this.vbox2.Add (this.listeUsb);
global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.listeUsb]));
w2.Position = 0;
w2.Expand = false;
// Container child vbox2.Gtk.Box+BoxChild
this.hbox1 = new global::Gtk.HBox ();
this.hbox1.Name = "hbox1";
this.hbox1.Spacing = 6;
// Container child hbox1.Gtk.Box+BoxChild
this.comboDriver = global::Gtk.ComboBox.NewText ();
this.comboDriver.Sensitive = false;
this.comboDriver.Name = "comboDriver";
this.hbox1.Add (this.comboDriver);
global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.comboDriver]));
w3.Position = 0;
// Container child hbox1.Gtk.Box+BoxChild
this.btnDisconnect = new global::Gtk.Button ();
this.btnDisconnect.Sensitive = false;
this.btnDisconnect.CanFocus = true;
this.btnDisconnect.Name = "btnDisconnect";
this.btnDisconnect.UseStock = true;
this.btnDisconnect.UseUnderline = true;
this.btnDisconnect.Label = "gtk-disconnect";
this.hbox1.Add (this.btnDisconnect);
global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.btnDisconnect]));
w4.PackType = ((global::Gtk.PackType)(1));
w4.Position = 1;
w4.Expand = false;
w4.Fill = false;
// Container child hbox1.Gtk.Box+BoxChild
this.btnConnect = new global::Gtk.Button ();
this.btnConnect.Sensitive = false;
this.btnConnect.CanFocus = true;
this.btnConnect.Name = "btnConnect";
this.btnConnect.UseStock = true;
this.btnConnect.UseUnderline = true;
this.btnConnect.Label = "gtk-connect";
this.hbox1.Add (this.btnConnect);
global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.btnConnect]));
w5.PackType = ((global::Gtk.PackType)(1));
w5.Position = 2;
w5.Expand = false;
w5.Fill = false;
this.vbox2.Add (this.hbox1);
global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
w6.Position = 1;
w6.Expand = false;
w6.Fill = false;
// Container child vbox2.Gtk.Box+BoxChild
this.frmDrvUI = new global::Gtk.Frame ();
this.frmDrvUI.HeightRequest = 200;
this.frmDrvUI.Name = "frmDrvUI";
this.frmDrvUI.ShadowType = ((global::Gtk.ShadowType)(1));
// Container child frmDrvUI.Gtk.Container+ContainerChild
this.frmDrvChild = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
this.frmDrvChild.Name = "frmDrvChild";
this.frmDrvChild.LeftPadding = ((uint)(12));
this.frmDrvUI.Add (this.frmDrvChild);
this.GtkLabel2 = new global::Gtk.Label ();
this.GtkLabel2.Name = "GtkLabel2";
this.GtkLabel2.UseMarkup = true;
this.frmDrvUI.LabelWidget = this.GtkLabel2;
this.vbox2.Add (this.frmDrvUI);
global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.frmDrvUI]));
w8.Position = 2;
w1.Add (this.vbox2);
global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
w9.Position = 0;
// Internal child DMX2.GestionDriversUI.ActionArea
global::Gtk.HButtonBox w10 = this.ActionArea;
w10.Name = "dialog1_ActionArea";
w10.Spacing = 10;
w10.BorderWidth = ((uint)(5));
w10.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
this.buttonOk = new global::Gtk.Button ();
this.buttonOk.CanDefault = true;
this.buttonOk.CanFocus = true;
this.buttonOk.Name = "buttonOk";
this.buttonOk.UseStock = true;
this.buttonOk.UseUnderline = true;
this.buttonOk.Label = "gtk-close";
this.AddActionWidget (this.buttonOk, -7);
global::Gtk.ButtonBox.ButtonBoxChild w11 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonOk]));
w11.Expand = false;
w11.Fill = false;
if ((this.Child != null)) {
this.Child.ShowAll ();
}
this.DefaultWidth = 488;
this.DefaultHeight = 405;
this.Show ();
this.listeUsb.CursorChanged += new global::System.EventHandler (this.OnListeUsbCursorChanged);
this.btnConnect.Clicked += new global::System.EventHandler (this.OnBtnConnectClicked);
this.btnDisconnect.Clicked += new global::System.EventHandler (this.OnBtnConnectClicked);
this.buttonOk.Clicked += new global::System.EventHandler (this.OnButtonOkClicked);
}
}
}

View file

@ -1861,4 +1861,276 @@ au sequenceur</property>
</widget> </widget>
</child> </child>
</widget> </widget>
<widget class="Gtk.Dialog" id="DMX2.GestionDriversUI" design-size="488 405">
<property name="MemberName" />
<property name="WindowPosition">CenterOnParent</property>
<property name="Buttons">1</property>
<property name="HelpButton">False</property>
<child internal-child="VBox">
<widget class="Gtk.VBox" id="dialog1_VBox">
<property name="MemberName" />
<property name="BorderWidth">2</property>
<child>
<widget class="Gtk.VBox" id="vbox2">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
<widget class="Gtk.TreeView" id="listeUsb">
<property name="MemberName" />
<property name="HeightRequest">87</property>
<property name="CanFocus">True</property>
<signal name="CursorChanged" handler="OnListeUsbCursorChanged" />
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">False</property>
<property name="Expand">False</property>
</packing>
</child>
<child>
<widget class="Gtk.HBox" id="hbox1">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
<widget class="Gtk.ComboBox" id="comboDriver">
<property name="MemberName" />
<property name="Sensitive">False</property>
<property name="IsTextCombo">True</property>
<property name="Items" translatable="yes" />
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Button" id="btnDisconnect">
<property name="MemberName" />
<property name="Sensitive">False</property>
<property name="CanFocus">True</property>
<property name="UseStock">True</property>
<property name="Type">StockItem</property>
<property name="StockId">gtk-disconnect</property>
<signal name="Clicked" handler="OnBtnConnectClicked" />
<property name="label">gtk-disconnect</property>
</widget>
<packing>
<property name="PackType">End</property>
<property name="Position">1</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Button" id="btnConnect">
<property name="MemberName" />
<property name="Sensitive">False</property>
<property name="CanFocus">True</property>
<property name="UseStock">True</property>
<property name="Type">StockItem</property>
<property name="StockId">gtk-connect</property>
<signal name="Clicked" handler="OnBtnConnectClicked" />
<property name="label">gtk-connect</property>
</widget>
<packing>
<property name="PackType">End</property>
<property name="Position">2</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">False</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Frame" id="frmDrvUI">
<property name="MemberName" />
<property name="HeightRequest">200</property>
<property name="ShadowType">In</property>
<child>
<widget class="Gtk.Alignment" id="frmDrvChild">
<property name="MemberName" />
<property name="Xalign">0</property>
<property name="Yalign">0</property>
<property name="LeftPadding">12</property>
<child>
<placeholder />
</child>
</widget>
</child>
<child>
<widget class="Gtk.Label" id="GtkLabel2">
<property name="MemberName" />
<property name="UseMarkup">True</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<property name="Position">2</property>
<property name="AutoSize">False</property>
</packing>
</child>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
</packing>
</child>
</widget>
</child>
<child internal-child="ActionArea">
<widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
<property name="MemberName" />
<property name="Spacing">10</property>
<property name="BorderWidth">5</property>
<property name="Size">1</property>
<property name="LayoutStyle">End</property>
<child>
<widget class="Gtk.Button" id="buttonOk">
<property name="MemberName" />
<property name="CanDefault">True</property>
<property name="CanFocus">True</property>
<property name="UseStock">True</property>
<property name="Type">StockItem</property>
<property name="StockId">gtk-close</property>
<property name="ResponseId">-7</property>
<signal name="Clicked" handler="OnButtonOkClicked" />
<property name="label">gtk-close</property>
</widget>
<packing>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
</widget>
</child>
</widget>
<widget class="Gtk.Bin" id="DMX2.DriverBoitierV1UI" design-size="342 105">
<property name="MemberName" />
<property name="Visible">False</property>
<child>
<widget class="Gtk.VBox" id="vbox2">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
<widget class="Gtk.Label" id="label1">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Driver Boitier V1</property>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Table" id="table1">
<property name="MemberName" />
<property name="NRows">3</property>
<property name="NColumns">2</property>
<property name="RowSpacing">6</property>
<property name="ColumnSpacing">6</property>
<child>
<placeholder />
</child>
<child>
<placeholder />
</child>
<child>
<widget class="Gtk.ComboBox" id="combobox1">
<property name="MemberName" />
<property name="IsTextCombo">True</property>
<property name="Items" translatable="yes" />
</widget>
<packing>
<property name="TopAttach">1</property>
<property name="BottomAttach">2</property>
<property name="LeftAttach">1</property>
<property name="RightAttach">2</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="label4">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Univers DMX :</property>
</widget>
<packing>
<property name="TopAttach">1</property>
<property name="BottomAttach">2</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="label5">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Etat :</property>
</widget>
<packing>
<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="lblEtat">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">label6</property>
</widget>
<packing>
<property name="LeftAttach">1</property>
<property name="RightAttach">2</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>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">True</property>
</packing>
</child>
</widget>
</child>
</widget>
</stetic-interface> </stetic-interface>