From 453b8ddd1ab76f30a74187fdd171808d6e36e5c7 Mon Sep 17 00:00:00 2001 From: tzim Date: Mon, 30 Sep 2013 12:57:39 +0000 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20d=C3=A9but=20de=20gestion=20de?= =?UTF-8?q?=20la=20matrice=20SeqMaitre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DMX-2.0/MainWindow.cs | 126 ++++++++++++++++++++++++++++-------- DMX-2.0/SequenceurMaitre.cs | 2 +- 2 files changed, 100 insertions(+), 28 deletions(-) diff --git a/DMX-2.0/MainWindow.cs b/DMX-2.0/MainWindow.cs index e7eb228..44ddc2e 100644 --- a/DMX-2.0/MainWindow.cs +++ b/DMX-2.0/MainWindow.cs @@ -10,7 +10,7 @@ namespace DMX2 { static MainWindow win; static object circuitKey = new object(); - ListStore ls; + ListStore lsMatrice; public static MainWindow Win { get { return win; } @@ -63,59 +63,130 @@ namespace DMX2 protected void ConstruitMatrice () { - var idCol = new Gtk.TreeViewColumn(); - var idCell = new Gtk.CellRendererText(); + var idCol = new Gtk.TreeViewColumn (); + var idCell = new Gtk.CellRendererText (); idCol.Title = "Num"; - idCol.PackStart(idCell,true); - idCol.SetCellDataFunc(idCell, new Gtk.TreeCellDataFunc( RenderMatriceNum) ); - this.MatriceUI.AppendColumn(idCol); + idCol.PackStart (idCell, true); + idCol.SetCellDataFunc (idCell, new Gtk.TreeCellDataFunc (RenderMatriceNum)); + this.MatriceUI.AppendColumn (idCol); - var nomCol = new Gtk.TreeViewColumn(); - var nomCell = new Gtk.CellRendererText(); + var nomCol = new Gtk.TreeViewColumn (); + var nomCell = new Gtk.CellRendererText (); nomCol.Title = "Nom"; - nomCol.PackStart(nomCell,true); - nomCol.SetCellDataFunc(nomCell, new Gtk.TreeCellDataFunc( RenderMatriceNom) ); - nomCell.Editable =true; - nomCell.Edited += OnNomCellEdited; - this.MatriceUI.AppendColumn(nomCol); + nomCol.PackStart (nomCell, true); + nomCol.SetCellDataFunc (nomCell, new Gtk.TreeCellDataFunc (RenderMatriceNom)); + nomCell.Editable = true; + nomCell.Edited += OnNomCellEdited; + this.MatriceUI.AppendColumn (nomCol); - var dureeCol = new Gtk.TreeViewColumn(); - var dureeCell = new Gtk.CellRendererText(); + var dureeCol = new Gtk.TreeViewColumn (); + var dureeCell = new Gtk.CellRendererText (); dureeCol.Title = "Durée"; - dureeCol.PackStart(dureeCell,true); - dureeCol.SetCellDataFunc(dureeCell, new Gtk.TreeCellDataFunc( RenderMatriceDuree) ); - dureeCell.Editable =true; - dureeCell.Edited += OnDureeCellEdited; - this.MatriceUI.AppendColumn(dureeCol); + dureeCol.PackStart (dureeCell, true); + dureeCol.SetCellDataFunc (dureeCell, new Gtk.TreeCellDataFunc (RenderMatriceDuree)); + dureeCell.Editable = true; + dureeCell.Edited += OnDureeCellEdited; + this.MatriceUI.AppendColumn (dureeCol); - ls = new Gtk.ListStore(typeof (SequenceurMaitre.Ligne)); - this.MatriceUI.Model = ls; + ConstruitMatriceSeqColumns(); + + lsMatrice = new Gtk.ListStore(typeof (SequenceurMaitre.Ligne)); + this.MatriceUI.Model = lsMatrice; + FillMatrice(); } + static object seqkey = new object(); + + void ConstruitMatriceSeqColumns () + { + + foreach(var c in MatriceUI.Columns) + if(c.CellRenderers[0].Data.ContainsKey(seqkey)) + MatriceUI.RemoveColumn(c); + + Gtk.TreeViewColumn seqCol; + Gtk.CellRendererText seqCell; + + foreach (Sequenceur seq in Conduite.Courante.Sequenceurs) { + seqCol = new TreeViewColumn(); + seqCell = new CellRendererText(); + seqCol.Title = seq.Name; + seqCol.PackStart(seqCell, true); + seqCol.SetCellDataFunc ( seqCell, new Gtk.TreeCellDataFunc(RenderMatriceSeqVal)); + seqCell.Editable = true; + seqCell.Edited += OnSeqValCellEdited; + seqCell.Data[seqkey] = seq; + this.MatriceUI.AppendColumn(seqCol); + } + + } + + void RenderMatriceNum (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter) { - throw new NotImplementedException (); + SequenceurMaitre.Ligne l = tree_model.GetValue (iter, 0) as SequenceurMaitre.Ligne; + (cell as Gtk.CellRendererText).Text = (Conduite.Courante.SequenceurMaitre.Lignes.IndexOf(l)+1).ToString(); } void RenderMatriceNom (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter) { - throw new NotImplementedException (); + SequenceurMaitre.Ligne l = tree_model.GetValue (iter, 0) as SequenceurMaitre.Ligne; + (cell as Gtk.CellRendererText).Text = l.Nom; } void RenderMatriceDuree (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter) { - throw new NotImplementedException (); + SequenceurMaitre.Ligne l = tree_model.GetValue (iter, 0) as SequenceurMaitre.Ligne; + if (l.Duree==-1) (cell as Gtk.CellRendererText).Text = string.Empty; + else (cell as Gtk.CellRendererText).Text = l.Duree.ToString(); } + + void RenderMatriceSeqVal (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter) + { + SequenceurMaitre.Ligne l = tree_model.GetValue (iter, 0) as SequenceurMaitre.Ligne; + Sequenceur seq = cell.Data[seqkey] as Sequenceur; + (cell as Gtk.CellRendererText).Text = l[seq]; + } + void FillMatrice () + { + lsMatrice.Clear (); + foreach (SequenceurMaitre.Ligne l in Conduite.Courante.SequenceurMaitre.Lignes) { + lsMatrice.AppendValues(l); + } + } + void OnNomCellEdited (object o, EditedArgs args) { - throw new NotImplementedException (); + Gtk.TreeIter iter; + lsMatrice.GetIter (out iter, new Gtk.TreePath (args.Path)); + SequenceurMaitre.Ligne l = lsMatrice.GetValue(iter,0) as SequenceurMaitre.Ligne; + l.Nom = args.NewText; + } void OnDureeCellEdited (object o, EditedArgs args) { - throw new NotImplementedException (); + Gtk.TreeIter iter; + lsMatrice.GetIter (out iter, new Gtk.TreePath (args.Path)); + SequenceurMaitre.Ligne l = lsMatrice.GetValue (iter, 0) as SequenceurMaitre.Ligne; + if (args.NewText.Length == 0) + l.Duree = -1; + else { + int val; + if(int.TryParse(args.NewText, out val)) + l.Duree=val; + } } + void OnSeqValCellEdited (object o, EditedArgs args) + { + Gtk.CellRendererText cell = o as CellRendererText; + Sequenceur seq = cell.Data[seqkey] as Sequenceur; + Gtk.TreeIter iter; + lsMatrice.GetIter (out iter, new Gtk.TreePath (args.Path)); + SequenceurMaitre.Ligne l = lsMatrice.GetValue(iter,0) as SequenceurMaitre.Ligne; + l[seq] = args.NewText; + } protected void OnDeleteEvent (object sender, DeleteEventArgs a) { Application.Quit (); @@ -165,6 +236,7 @@ namespace DMX2 Sequenceur s = new SequenceurLineaire(); Conduite.Courante.AjoutSequenceur(s); AddSeqUI(s); + ConstruitMatriceSeqColumns(); } void AddSeqUI (Sequenceur s) diff --git a/DMX-2.0/SequenceurMaitre.cs b/DMX-2.0/SequenceurMaitre.cs index f681fdf..e12cc38 100644 --- a/DMX-2.0/SequenceurMaitre.cs +++ b/DMX-2.0/SequenceurMaitre.cs @@ -53,7 +53,7 @@ namespace DMX2 public SequenceurMaitre () { - + lignes.Add(new Ligne()); } } }