214 lines
5.2 KiB
C#
214 lines
5.2 KiB
C#
|
|
/*
|
|
|
|
Copyright (C) Arnaud Houdelette 2012-2014
|
|
Copyright (C) Emmanuel Langlois 2012-2014
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
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");
|
|
lsDriver.AppendValues("V2 1024/512/16/16");
|
|
|
|
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.Length>35?fi.Name.Substring(0,35):fi.Name;
|
|
}
|
|
|
|
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;
|
|
|
|
drv = Conduite.Courante.GetDriverByID (fi.Name);
|
|
|
|
|
|
AfficheDriverUI();
|
|
|
|
}
|
|
|
|
DriverDMX drv=null;
|
|
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;
|
|
|
|
drv=null;
|
|
|
|
switch (comboDriver.Active) {
|
|
case 0:
|
|
drv = new DriverBoitierV1(fi.FullName, fi.Name);
|
|
Conduite.Courante.DriversAdd(drv);
|
|
|
|
|
|
break;
|
|
case 1:
|
|
drv = new DriverBoitierV2(fi.FullName, fi.Name);
|
|
Conduite.Courante.DriversAdd(drv);
|
|
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
|
|
AfficheDriverUI();
|
|
|
|
}
|
|
|
|
protected void OnBtnDisConnectClicked (object sender, EventArgs e)
|
|
{
|
|
if (drv != null) {
|
|
drv.Dispose ();
|
|
Conduite.Courante.DriversRemove (drv);
|
|
}
|
|
drv=null;
|
|
AfficheDriverUI();
|
|
}
|
|
|
|
void AfficheDriverUI(){
|
|
if(frmDrvChild.Child!=null)
|
|
frmDrvChild.Remove(frmDrvChild.Child);
|
|
if (drv == null) {
|
|
btnConnect.Visible = btnConnect.Sensitive = true;
|
|
btnDisconnect.Visible = btnDisconnect.Sensitive = false;
|
|
|
|
comboDriver.Sensitive = true;
|
|
comboDriver.Active=-1;
|
|
listeUsb.QueueDraw();
|
|
|
|
return;
|
|
}
|
|
|
|
btnConnect.Visible = false;
|
|
comboDriver.Sensitive = false;
|
|
|
|
btnDisconnect.Visible = btnDisconnect.Sensitive = true;
|
|
|
|
frmDrvChild.Child = drv.GetUI();
|
|
frmDrvChild.ShowAll();
|
|
listeUsb.QueueDraw();
|
|
}
|
|
|
|
void EffaceDriverUI(){
|
|
btnConnect.Visible = true;
|
|
comboDriver.Sensitive = true;
|
|
|
|
btnDisconnect.Visible = btnDisconnect.Sensitive = false;
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
|