[chronojump] Encoder: added colors in treeview
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] Encoder: added colors in treeview
- Date: Sat, 31 Mar 2012 11:15:50 +0000 (UTC)
commit aaae6d3ba27624b8d89ec4c5614bc113982fc57c
Author: Xavier de Blas <xaviblas gmail com>
Date: Sat Mar 31 19:14:45 2012 +0800
Encoder: added colors in treeview
encoder/graph.R | 6 +-
src/encoder.cs | 33 ++++++++
src/gui/chronojump.cs | 1 -
src/gui/encoder.cs | 194 ++++++++++++++++++++++++++++++++++++++++---------
src/util.cs | 8 ++-
5 files changed, 203 insertions(+), 39 deletions(-)
---
diff --git a/encoder/graph.R b/encoder/graph.R
index f956326..7e63e62 100644
--- a/encoder/graph.R
+++ b/encoder/graph.R
@@ -368,9 +368,9 @@ if(length(args) < 3) {
}
if(curvesPlot) {
arrows(x0=curves[,1],y0=min(rawdata.cumsum),x1=curves[,2],y1=min(rawdata.cumsum),
- col="red",code=3,length=0.1)
+ col="blue",code=3,length=0.1)
for(i in 1:length(curves[,1]))
- text(x=(curves[i,1]+curves[i,2])/2,y=min(rawdata.cumsum),labels=i, adj=c(0.5,0),cex=1,col="red")
+ text(x=(curves[i,1]+curves[i,2])/2,y=min(rawdata.cumsum),labels=i, adj=c(0.5,0),cex=1,col="blue")
}
print(curves)
@@ -426,7 +426,7 @@ if(length(args) < 3) {
paf=cbind(curves[,2]-curves[,1],rawdata.cumsum[curves[,2]]-curves[,3],paf)
colnames(paf)=c("width","height","meanSpeed","maxSpeed","meanPower","peakPower","peakPowerT")
print(paf)
- write.csv(paf, outputData1)
+ write.csv(paf, outputData1, quote=FALSE)
}
}
if(analysis=="others") {
diff --git a/src/encoder.cs b/src/encoder.cs
index f7d8078..0df7324 100644
--- a/src/encoder.cs
+++ b/src/encoder.cs
@@ -69,6 +69,12 @@ public class EncoderParams
return minHeight + " " + isJump + " " + mass + " " + eccon + " " + analysis + " " +
smooth + " " + curve + " " + width + " " + height;
}
+
+ public string Analysis
+ {
+ get { return analysis; }
+ }
+
~EncoderParams() {}
}
@@ -96,3 +102,30 @@ public class EncoderStruct
~EncoderStruct() {}
}
+
+//used on TreeView
+public class EncoderCurve
+{
+ public EncoderCurve (string n, string width, string height, string meanSpeed, string maxSpeed,
+ string meanPower, string peakPower, string peakPowerT)
+ {
+ this.N = n;
+ this.Width = width;
+ this.Height = height;
+ this.MeanSpeed = meanSpeed;
+ this.MaxSpeed = maxSpeed;
+ this.MeanPower = meanPower;
+ this.PeakPower = peakPower;
+ this.PeakPowerT = peakPowerT;
+ }
+
+ public string N;
+ public string Width;
+ public string Height;
+ public string MeanSpeed;
+ public string MaxSpeed;
+ public string MeanPower;
+ public string PeakPower;
+ public string PeakPowerT;
+}
+
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index 310bb55..6e56690 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -475,7 +475,6 @@ public partial class ChronoJumpWindow
//changeTestImage("", "", "LOGO");
notebook_main_encoder_and_server_hide();
- CreateTreeViewEncoder();
//We have no session, mark some widgets as ".Sensitive = false"
sensitiveGuiNoSession();
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index 69305ab..710c9be 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -23,6 +23,8 @@ using System.IO;
using Gtk;
using Gdk;
using Glade;
+using System.Collections;
+
public partial class ChronoJumpWindow
{
@@ -50,7 +52,11 @@ public partial class ChronoJumpWindow
[Widget] Gtk.Viewport viewport_image_encoder_analyze;
[Widget] Gtk.Image image_encoder_analyze;
- TreeStore store;
+ TreeStore encoderStore;
+
+ ArrayList encoderCurves;
+ Gtk.ListStore encoderListStore;
+
private string encoderAnalysis="powerBars";
@@ -202,23 +208,163 @@ public partial class ChronoJumpWindow
string [] columnsString = {"n","Width","Height","MeanSpeed","MaxSpeed",
"MeanPower","PeakPower","PeakPowerT"};
- int columns=8;
- Type [] types = new Type [columns];
- int i;
- for (i=0; i < columns; i++) {
- types[i] = typeof (string);
+ string contents = Util.ReadFile(Util.GetEncoderCurvesTempFileName());
+ if (contents == null)
+ return;
+
+ encoderCurves = new ArrayList ();
+
+ string line;
+ using (StringReader reader = new StringReader (contents)) {
+ line = reader.ReadLine (); //headers
+ Log.WriteLine(line);
+ do {
+ line = reader.ReadLine ();
+ Log.WriteLine(line);
+ if (line == null)
+ break;
+
+ string [] cells = line.Split(new char[] {','});
+ cells = fixDecimals(cells);
+ //iter = encoderStore.AppendValues(cells);
+
+ encoderCurves.Add (new EncoderCurve (cells[0], cells[1], cells[2],
+ cells[3], cells[4], cells[5], cells[6],cells[7]));
+
+ } while(true);
+ }
+
+ encoderListStore = new Gtk.ListStore (typeof (EncoderCurve));
+ foreach (EncoderCurve curve in encoderCurves) {
+ encoderListStore.AppendValues (curve);
}
- store = new TreeStore(types);
- treeview_encoder_curves.Model = store;
-
- //prepareHeaders
+ treeview_encoder_curves.Model = encoderListStore;
+
treeview_encoder_curves.HeadersVisible=true;
- i=0;
+
+ int i=0;
foreach(string myCol in columnsString) {
- treeview_encoder_curves.AppendColumn (myCol, new CellRendererText(), "text", i++);
+ Gtk.TreeViewColumn aColumn = new Gtk.TreeViewColumn ();
+ CellRendererText aCell = new CellRendererText();
+ aColumn.Title=myCol;
+ aColumn.PackStart (aCell, true);
+
+ //crt1.Foreground = "red";
+ //crt1.Background = "blue";
+
+ switch(i){
+ case 0:
+ aColumn.SetCellDataFunc (aCell, new Gtk.TreeCellDataFunc (RenderN));
+ break;
+ case 1:
+ aColumn.SetCellDataFunc (aCell, new Gtk.TreeCellDataFunc (RenderWidth));
+ break;
+ case 2:
+ aColumn.SetCellDataFunc (aCell, new Gtk.TreeCellDataFunc (RenderHeight));
+ break;
+ case 3:
+ aColumn.SetCellDataFunc (aCell, new Gtk.TreeCellDataFunc (RenderMeanSpeed));
+ break;
+ case 4:
+ aColumn.SetCellDataFunc (aCell, new Gtk.TreeCellDataFunc (RenderMaxSpeed));
+ break;
+ case 5:
+ aColumn.SetCellDataFunc (aCell, new Gtk.TreeCellDataFunc (RenderMeanPower));
+ break;
+ case 6:
+ aColumn.SetCellDataFunc (aCell, new Gtk.TreeCellDataFunc (RenderPeakPower));
+ break;
+ case 7:
+ aColumn.SetCellDataFunc (aCell, new Gtk.TreeCellDataFunc (RenderPeakPowerT));
+ break;
+ }
+
+
+ treeview_encoder_curves.AppendColumn (aColumn);
+ i++;
}
}
+
+
+ /* rendering columns */
+
+ string colorGood= "ForestGreen"; //more at System.Drawing.Color (Monodoc)
+ string colorBad= "red";
+ private void RenderN (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
+ (cell as Gtk.CellRendererText).Text = curve.N;
+ }
+ private void RenderWidth (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
+ (cell as Gtk.CellRendererText).Text = curve.Width;
+ }
+ private void RenderHeight (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
+ (cell as Gtk.CellRendererText).Text = curve.Height;
+ }
+
+ private void RenderMeanSpeed (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
+ if (Convert.ToDouble(curve.MeanSpeed) >= 2.5)
+ (cell as Gtk.CellRendererText).Foreground = colorGood;
+ else
+ (cell as Gtk.CellRendererText).Foreground = colorBad;
+
+ (cell as Gtk.CellRendererText).Text = curve.MeanSpeed;
+ }
+
+ private void RenderMaxSpeed (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
+ if (Convert.ToDouble(curve.MaxSpeed) >= 2.5)
+ (cell as Gtk.CellRendererText).Foreground = colorGood;
+ else
+ (cell as Gtk.CellRendererText).Foreground = colorBad;
+
+ (cell as Gtk.CellRendererText).Text = curve.MaxSpeed;
+ }
+
+ private void RenderMeanPower (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
+ if (Convert.ToDouble(curve.MeanPower) >= 1700)
+ (cell as Gtk.CellRendererText).Foreground = colorGood;
+ else
+ (cell as Gtk.CellRendererText).Foreground = colorBad;
+
+ (cell as Gtk.CellRendererText).Text = curve.MeanPower;
+ }
+
+ private void RenderPeakPower (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
+ if (Convert.ToDouble(curve.PeakPower) >= 1700)
+ (cell as Gtk.CellRendererText).Foreground = colorGood;
+ else
+ (cell as Gtk.CellRendererText).Foreground = colorBad;
+
+ (cell as Gtk.CellRendererText).Text = curve.PeakPower;
+ }
+
+ private void RenderPeakPowerT (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
+ if (Convert.ToDouble(curve.PeakPowerT) <= 100)
+ (cell as Gtk.CellRendererText).Foreground = colorGood;
+ else
+ (cell as Gtk.CellRendererText).Foreground = colorBad;
+
+ (cell as Gtk.CellRendererText).Text = curve.PeakPowerT;
+ }
+
+ /* end of rendering cols */
+
+
private void removeColumns() {
Gtk.TreeViewColumn [] myColumns = treeview_encoder_curves.Columns;
@@ -229,32 +375,12 @@ public partial class ChronoJumpWindow
private void updateTreeView() {
removeColumns();
CreateTreeViewEncoder();
- fillTreeView();
}
- private void fillTreeView()
- {
- TreeIter iter = new TreeIter();
-
- string contents = Util.ReadFile(Util.GetEncoderCurvesTempFileName());
- string line;
- if (contents != null) {
- using (StringReader reader = new StringReader (contents)) {
- line = reader.ReadLine (); //headers
- do {
- line = reader.ReadLine ();
- if (line == null)
- break;
-
- string [] cells = line.Split(new char[] {','});
- cells = fixDecimals(cells);
- iter = store.AppendValues(cells);
- } while(true);
- }
- }
- }
private string [] fixDecimals(string [] cells) {
+ for(int i=1; i <= 2; i++)
+ cells[i] = Util.TrimDecimals(Convert.ToDouble(Util.ChangeDecimalSeparator(cells[i])),1);
for(int i=3; i <= 6; i++)
cells[i] = Util.TrimDecimals(Convert.ToDouble(Util.ChangeDecimalSeparator(cells[i])),3);
return cells;
diff --git a/src/util.cs b/src/util.cs
index f49a23a..7c7b875 100644
--- a/src/util.cs
+++ b/src/util.cs
@@ -951,7 +951,13 @@ public class Util
} else {
pinfo.Arguments = pythonScript + " " + es.InputData + " " +
es.OutputGraph + " " + es.OutputData1 + " " + es.OutputData2 + " " + es.Ep.ToString2();
- outputFileCheck = es.OutputGraph;
+
+ //curves does first graph and then csv curves.
+ //Wait until this to update encoder gui (if don't wait then treeview will be outdated)
+ if(es.Ep.Analysis == "curves")
+ outputFileCheck = es.OutputData1;
+ else
+ outputFileCheck = es.OutputGraph;
}
pinfo.CreateNoWindow = true;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]