ajout des updates

This commit is contained in:
tzim 2013-04-16 21:27:23 +00:00
parent ddbc724475
commit bca2a9ca33
6 changed files with 62 additions and 12 deletions

View file

@ -1,11 +1,11 @@
<Properties>
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" />
<MonoDevelop.Ide.Workbench ActiveDocument="DMX-2.0/SequenceurLineaire.cs">
<MonoDevelop.Ide.Workbench ActiveDocument="DMX-2.0/Conduite.cs">
<Files>
<File FileName="DMX-2.0/SeqLinUI.cs" Line="127" Column="4" />
<File FileName="DMX-2.0/MainWindow.cs" Line="98" Column="47" />
<File FileName="DMX-2.0/MainWindow.cs" Line="52" Column="51" />
<File FileName="DMX-2.0/SequenceurLineaire.cs" Line="69" Column="22" />
<File FileName="DMX-2.0/Conduite.cs" Line="29" Column="17" />
<File FileName="DMX-2.0/Conduite.cs" Line="20" Column="24" />
<File FileName="DMX-2.0/Sequenceur.cs" Line="42" Column="4" />
</Files>
</MonoDevelop.Ide.Workbench>

View file

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Collections.ObjectModel;
using System.Threading;
namespace DMX2
@ -10,10 +11,13 @@ namespace DMX2
{
public static Conduite Courante = null;
Timer timer = null;
public Conduite()
{
timer = new Timer(new TimerCallback(TimerTick),this,
100,100);
}
List<Circuit> circuits = new List<Circuit>();
@ -87,7 +91,26 @@ namespace DMX2
public void Dispose()
{
disposed=true;
// stop thread if running
if(timer!=null)
timer.Dispose();
timer=null;
}
static public void TimerTick (object state)
{
Conduite.Courante.Tick();
}
void Tick ()
{
foreach (var c in Circuits) {
int val=0;
foreach (var seq in Sequenceurs) {
val = Math.Max(val, seq.ValeurCircuit(c));
}
c.ValeurCourante=val;
}
MainWindow.Win.ScheduleUpdate();
}
#region IDisposable implementation

View file

@ -7,8 +7,14 @@ namespace DMX2
{
public partial class MainWindow: Gtk.Window
{
static MainWindow win;
public static MainWindow Win {
get { return win; }
}
public MainWindow (): base (Gtk.WindowType.Toplevel)
{
win=this;
Build ();
MajWidgets();
}
@ -26,6 +32,7 @@ namespace DMX2
}
}
protected void MajCircuits ()
{
// Ajoute une ProgressBar par circuit, met a jour le texte si necessaire
@ -99,5 +106,22 @@ namespace DMX2
seqUiVbox.ShowAll();
}
bool updScheduled=false;
public void ScheduleUpdate ()
{
if(updScheduled) return;
updScheduled=true;
Gtk.Application.Invoke(new EventHandler(Update));
}
void Update (object sender, EventArgs e)
{
foreach (var sequi in seqUiVbox.Children) {
(sequi as SequenceurUI).Update();
}
MajCircuits();
updScheduled=false;
}
}
}

View file

@ -113,7 +113,8 @@ namespace DMX2
xpos+=30;
if(lastKnownWidth < xpos +30)
{
xpos =10; ypos+= 215;
xpos = 10;
ypos += 215;
}
}
@ -124,12 +125,14 @@ namespace DMX2
{
VScale t = sender as VScale;
Circuit c = t.Data[circuitKey] as Circuit;
sequenceur.ChangeValeur(c,(int)(t.Value));
}
protected void UpdateValues()
{
foreach (Circuit c in tirettes.Keys) {
tirettes[c].Value = sequenceur.ValeurCircuit(c);
}
}
protected void OnZoneWidSizeAllocated (object o, SizeAllocatedArgs args)

View file

@ -43,7 +43,7 @@ namespace DMX2
public abstract SequenceurUI GetUI();
public abstract int EtatCircuit(Circuit c);
public abstract int ValeurCircuit(Circuit c);
public abstract void Tick(TimeSpan time);
public static Sequenceur Load(XmlElement el)
{

View file

@ -131,14 +131,14 @@ namespace DMX2
}
}
public override int EtatCircuit (Circuit c)
public override int ValeurCircuit (Circuit c)
{
if (!circuitsSeq.Contains (c))
return 0;
return valeurscourantes [c];
}
public void ChangeCircuit (Circuit c, int value)
public void ChangeValeur (Circuit c, int value)
{
valeurschangees [c] = true;
valeurscourantes [c] = value;