[chronojump] Ended automatic feedback on encoder
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] Ended automatic feedback on encoder
- Date: Tue, 24 May 2016 07:32:58 +0000 (UTC)
commit c09ddbe28a8c75584e0c62da673190cba419994d
Author: Xavier de Blas <xaviblas gmail com>
Date: Tue May 24 09:28:58 2016 +0200
Ended automatic feedback on encoder
src/encoder.cs | 8 +++
src/gui/encoder.cs | 12 +++--
src/gui/encoderTreeviews.cs | 110 +++++++++++++++++++++++++-------------
src/gui/repetitiveConditions.cs | 74 ++++++++++++++++++++++++++
src/utilGtk.cs | 4 ++
5 files changed, 166 insertions(+), 42 deletions(-)
---
diff --git a/src/encoder.cs b/src/encoder.cs
index 0035886..c87e63d 100644
--- a/src/encoder.cs
+++ b/src/encoder.cs
@@ -391,6 +391,14 @@ public class EncoderCurve
return Util.ChangeChars(str, ":::", ",");
}
+ public double MeanSpeedD { get { return Convert.ToDouble(MeanSpeed); } }
+ public double MaxSpeedD { get { return Convert.ToDouble(MaxSpeed); } }
+ public double MeanPowerD { get { return Convert.ToDouble(MeanPower); } }
+ public double PeakPowerD { get { return Convert.ToDouble(PeakPower); } }
+ public double MeanForceD { get { return Convert.ToDouble(MeanForce); } }
+ public double MaxForceD { get { return Convert.ToDouble(MaxForce); } }
+
+
~EncoderCurve() {}
}
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index a02aac0..9e3f43b 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -3860,7 +3860,6 @@ public partial class ChronoJumpWindow
foreach(EncoderBarsData ebd in data6Variables)
data.Add(ebd.GetValue(mainVariable));
-
//search max, min, avg
double max = -100000;
double min = 100000;
@@ -3876,6 +3875,8 @@ public partial class ChronoJumpWindow
if(max <= 0)
return;
+ repetitiveConditionsWin.ResetBestSetValue();
+ repetitiveConditionsWin.UpdateBestSetValue(max);
int textWidth = 1;
int textHeight = 1;
@@ -3961,9 +3962,11 @@ public partial class ChronoJumpWindow
if(dWidth < 1)
dWidth = 1;
-
//select pen color for bars and sounds
- if(mainVariableHigher != -1 && d >= mainVariableHigher) {
+ string myColor = repetitiveConditionsWin.AssignColorAutomatic(d);
+
+ if( myColor == UtilGtk.ColorGood || (mainVariableHigher != -1 && d >=
mainVariableHigher) )
+ {
my_pen_ecc_con_e = pen_green_dark_encoder_capture;
my_pen_ecc_con_c = pen_green_light_encoder_capture;
my_pen_con = pen_green_encoder_capture;
@@ -3971,7 +3974,8 @@ public partial class ChronoJumpWindow
if(preferences.volumeOn && count == data.Count -1 && capturing)
Util.PlaySound(Constants.SoundTypes.GOOD, preferences.volumeOn);
}
- else if(mainVariableLower != -1 && d <= mainVariableLower) {
+ else if( myColor == UtilGtk.ColorBad || (mainVariableLower != -1 && d <=
mainVariableLower) )
+ {
my_pen_ecc_con_e = pen_red_dark_encoder_capture;
my_pen_ecc_con_c = pen_red_light_encoder_capture;
my_pen_con = pen_red_encoder_capture;
diff --git a/src/gui/encoderTreeviews.cs b/src/gui/encoderTreeviews.cs
index de6fcd8..70aac49 100644
--- a/src/gui/encoderTreeviews.cs
+++ b/src/gui/encoderTreeviews.cs
@@ -138,8 +138,12 @@ public partial class ChronoJumpWindow
encoderCaptureListStore = new Gtk.ListStore (typeof (EncoderCurve));
- foreach (EncoderCurve curve in encoderCaptureCurves)
+ repetitiveConditionsWin.ResetBestSetValue();
+ foreach (EncoderCurve curve in encoderCaptureCurves) {
encoderCaptureListStore.AppendValues (curve);
+
+ repetitiveConditionsWin.UpdateBestSetValue(curve);
+ }
treeview_encoder_capture_curves.Model = encoderCaptureListStore;
@@ -576,8 +580,13 @@ public partial class ChronoJumpWindow
}
encoderAnalyzeListStore = new Gtk.ListStore (typeof (EncoderCurve));
- foreach (EncoderCurve curve in encoderAnalyzeCurves)
+
+ repetitiveConditionsWin.ResetBestSetValue();
+ foreach (EncoderCurve curve in encoderAnalyzeCurves) {
encoderAnalyzeListStore.AppendValues (curve);
+
+ repetitiveConditionsWin.UpdateBestSetValue(curve);
+ }
treeview_encoder_analyze_curves.Model = encoderAnalyzeListStore;
@@ -799,6 +808,7 @@ public partial class ChronoJumpWindow
/* start rendering capture and analyze cols */
+
private string assignColor(double found, bool higherActive, bool lowerActive, double higherValue,
double lowerValue)
{
@@ -1022,12 +1032,16 @@ public partial class ChronoJumpWindow
private void RenderMeanSpeed (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model,
Gtk.TreeIter iter)
{
EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
- string myColor = assignColor(
- Convert.ToDouble(curve.MeanSpeed),
- repetitiveConditionsWin.EncoderMeanSpeedHigher,
- repetitiveConditionsWin.EncoderMeanSpeedLower,
- repetitiveConditionsWin.EncoderMeanSpeedHigherValue,
- repetitiveConditionsWin.EncoderMeanSpeedLowerValue);
+
+ string myColor = repetitiveConditionsWin.AssignColorAutomatic(curve, Constants.MeanSpeed);
+
+ if(myColor == "")
+ myColor = assignColor(
+ curve.MeanSpeedD,
+ repetitiveConditionsWin.EncoderMeanSpeedHigher,
+ repetitiveConditionsWin.EncoderMeanSpeedLower,
+ repetitiveConditionsWin.EncoderMeanSpeedHigherValue,
+ repetitiveConditionsWin.EncoderMeanSpeedLowerValue);
if(myColor != "")
(cell as Gtk.CellRendererText).Foreground = myColor;
else
@@ -1041,12 +1055,16 @@ public partial class ChronoJumpWindow
private void RenderMaxSpeed (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model,
Gtk.TreeIter iter)
{
EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
- string myColor = assignColor(
- Convert.ToDouble(curve.MaxSpeed),
- repetitiveConditionsWin.EncoderMaxSpeedHigher,
- repetitiveConditionsWin.EncoderMaxSpeedLower,
- repetitiveConditionsWin.EncoderMaxSpeedHigherValue,
- repetitiveConditionsWin.EncoderMaxSpeedLowerValue);
+
+ string myColor = repetitiveConditionsWin.AssignColorAutomatic(curve, Constants.MaxSpeed);
+
+ if(myColor == "")
+ myColor = assignColor(
+ curve.MaxSpeedD,
+ repetitiveConditionsWin.EncoderMaxSpeedHigher,
+ repetitiveConditionsWin.EncoderMaxSpeedLower,
+ repetitiveConditionsWin.EncoderMaxSpeedHigherValue,
+ repetitiveConditionsWin.EncoderMaxSpeedLowerValue);
if(myColor != "")
(cell as Gtk.CellRendererText).Foreground = myColor;
else
@@ -1068,12 +1086,16 @@ public partial class ChronoJumpWindow
private void RenderMeanPower (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model,
Gtk.TreeIter iter)
{
EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
- string myColor = assignColor(
- Convert.ToDouble(curve.MeanPower),
- repetitiveConditionsWin.EncoderPowerHigher,
- repetitiveConditionsWin.EncoderPowerLower,
- repetitiveConditionsWin.EncoderPowerHigherValue,
- repetitiveConditionsWin.EncoderPowerLowerValue);
+
+ string myColor = repetitiveConditionsWin.AssignColorAutomatic(curve, Constants.MeanPower);
+
+ if(myColor == "")
+ myColor = assignColor(
+ curve.MeanPowerD,
+ repetitiveConditionsWin.EncoderPowerHigher,
+ repetitiveConditionsWin.EncoderPowerLower,
+ repetitiveConditionsWin.EncoderPowerHigherValue,
+ repetitiveConditionsWin.EncoderPowerLowerValue);
if(myColor != "")
(cell as Gtk.CellRendererText).Foreground = myColor;
else
@@ -1086,12 +1108,16 @@ public partial class ChronoJumpWindow
private void RenderPeakPower (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model,
Gtk.TreeIter iter)
{
EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
- string myColor = assignColor(
- Convert.ToDouble(curve.PeakPower),
- repetitiveConditionsWin.EncoderPeakPowerHigher,
- repetitiveConditionsWin.EncoderPeakPowerLower,
- repetitiveConditionsWin.EncoderPeakPowerHigherValue,
- repetitiveConditionsWin.EncoderPeakPowerLowerValue);
+
+ string myColor = repetitiveConditionsWin.AssignColorAutomatic(curve, Constants.PeakPower);
+
+ if(myColor == "")
+ myColor = assignColor(
+ curve.PeakPowerD,
+ repetitiveConditionsWin.EncoderPeakPowerHigher,
+ repetitiveConditionsWin.EncoderPeakPowerLower,
+ repetitiveConditionsWin.EncoderPeakPowerHigherValue,
+ repetitiveConditionsWin.EncoderPeakPowerLowerValue);
if(myColor != "")
(cell as Gtk.CellRendererText).Foreground = myColor;
else
@@ -1121,12 +1147,16 @@ public partial class ChronoJumpWindow
private void RenderMeanForce (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model,
Gtk.TreeIter iter)
{
EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
- string myColor = assignColor(
- Convert.ToDouble(curve.MeanForce),
- repetitiveConditionsWin.EncoderMeanForceHigher,
- repetitiveConditionsWin.EncoderMeanForceLower,
- repetitiveConditionsWin.EncoderMeanForceHigherValue,
- repetitiveConditionsWin.EncoderMeanForceLowerValue);
+
+ string myColor = repetitiveConditionsWin.AssignColorAutomatic(curve, Constants.MeanForce);
+
+ if(myColor == "")
+ myColor = assignColor(
+ curve.MeanForceD,
+ repetitiveConditionsWin.EncoderMeanForceHigher,
+ repetitiveConditionsWin.EncoderMeanForceLower,
+ repetitiveConditionsWin.EncoderMeanForceHigherValue,
+ repetitiveConditionsWin.EncoderMeanForceLowerValue);
if(myColor != "")
(cell as Gtk.CellRendererText).Foreground = myColor;
else
@@ -1139,12 +1169,16 @@ public partial class ChronoJumpWindow
private void RenderMaxForce (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model,
Gtk.TreeIter iter)
{
EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
- string myColor = assignColor(
- Convert.ToDouble(curve.MaxForce),
- repetitiveConditionsWin.EncoderMaxForceHigher,
- repetitiveConditionsWin.EncoderMaxForceLower,
- repetitiveConditionsWin.EncoderMaxForceHigherValue,
- repetitiveConditionsWin.EncoderMaxForceLowerValue);
+
+ string myColor = repetitiveConditionsWin.AssignColorAutomatic(curve, Constants.MaxForce);
+
+ if(myColor == "")
+ myColor = assignColor(
+ curve.MaxForceD,
+ repetitiveConditionsWin.EncoderMaxForceHigher,
+ repetitiveConditionsWin.EncoderMaxForceLower,
+ repetitiveConditionsWin.EncoderMaxForceHigherValue,
+ repetitiveConditionsWin.EncoderMaxForceLowerValue);
if(myColor != "")
(cell as Gtk.CellRendererText).Foreground = myColor;
else
diff --git a/src/gui/repetitiveConditions.cs b/src/gui/repetitiveConditions.cs
index 16c2726..3d044bd 100644
--- a/src/gui/repetitiveConditions.cs
+++ b/src/gui/repetitiveConditions.cs
@@ -75,6 +75,8 @@ public class RepetitiveConditionsWindow
[Widget] Gtk.ComboBox combo_encoder_variable_automatic;
[Widget] Gtk.CheckButton checkbutton_encoder_automatic_greater;
[Widget] Gtk.CheckButton checkbutton_encoder_automatic_lower;
+ [Widget] Gtk.SpinButton spinbutton_encoder_automatic_greater;
+ [Widget] Gtk.SpinButton spinbutton_encoder_automatic_lower;
[Widget] Gtk.VBox vbox_encoder_manual;
[Widget] Gtk.CheckButton checkbutton_encoder_show_manual_feedback;
@@ -155,6 +157,8 @@ public class RepetitiveConditionsWindow
//static bool volumeOn;
bool volumeOn;
+
+ private double bestSetValue;
static RepetitiveConditionsWindow RepetitiveConditionsWindowBox;
@@ -173,6 +177,8 @@ public class RepetitiveConditionsWindow
createComboEncoderAutomaticVariable();
+ bestSetValue = 0;
+
putNonStandardIcons();
}
@@ -417,6 +423,55 @@ public class RepetitiveConditionsWindow
checkbutton_encoder_peakpower_lower.Active = true;
}
+
+ public void ResetBestSetValue() {
+ bestSetValue = 0;
+ }
+
+ public void UpdateBestSetValue(EncoderCurve curve)
+ {
+ string autoVar = encoderAutomaticVariable;
+ if(encoderAutomaticHigher || encoderAutomaticLower)
+ {
+ if(autoVar == Constants.MeanSpeed)
+ UpdateBestSetValue(curve.MeanSpeedD);
+ else if(autoVar == Constants.MaxSpeed)
+ UpdateBestSetValue(curve.MaxSpeedD);
+ else if(autoVar == Constants.MeanPower)
+ UpdateBestSetValue(curve.MeanPowerD);
+ else if(autoVar == Constants.PeakPower)
+ UpdateBestSetValue(curve.PeakPowerD);
+ else if(autoVar == Constants.MeanForce)
+ UpdateBestSetValue(curve.MeanForceD);
+ else if(autoVar == Constants.MaxForce)
+ UpdateBestSetValue(curve.MaxForceD);
+ }
+ }
+ public void UpdateBestSetValue(double d) {
+ if(d > bestSetValue)
+ bestSetValue = d;
+ }
+
+ //called from gui/encoderTreeviews.cs
+ public string AssignColorAutomatic(EncoderCurve curve, string variable)
+ {
+ if(encoderAutomaticVariable != variable)
+ return UtilGtk.ColorNothing;
+
+ double currentValue = curve.GetParameter(variable);
+
+ return AssignColorAutomatic(currentValue);
+ }
+ //called from gui/encoder.cs plotCurvesGraphDoPlot
+ public string AssignColorAutomatic(double currentValue)
+ {
+ if(encoderAutomaticHigher && currentValue > bestSetValue * encoderAutomaticHigherValue / 100)
+ return UtilGtk.ColorGood;
+ else if (encoderAutomaticLower && currentValue < bestSetValue * encoderAutomaticLowerValue/
100)
+ return UtilGtk.ColorBad;
+
+ return UtilGtk.ColorNothing;
+ }
/* JUMPS */
public bool TfTcBest {
@@ -505,6 +560,25 @@ public class RepetitiveConditionsWindow
}
/* ENCODER */
+ //automatic
+
+ private string encoderAutomaticVariable {
+ get { return UtilGtk.ComboGetActive(combo_encoder_variable_automatic); }
+ }
+
+ private bool encoderAutomaticHigher {
+ get { return checkbutton_encoder_automatic_greater.Active; }
+ }
+ private int encoderAutomaticHigherValue {
+ get { return Convert.ToInt32(spinbutton_encoder_automatic_greater.Value); }
+ }
+ private bool encoderAutomaticLower {
+ get { return checkbutton_encoder_automatic_lower.Active; }
+ }
+ private int encoderAutomaticLowerValue {
+ get { return Convert.ToInt32(spinbutton_encoder_automatic_lower.Value); }
+ }
+
//height
public bool EncoderHeightHigher {
diff --git a/src/utilGtk.cs b/src/utilGtk.cs
index dc7af76..4674489 100644
--- a/src/utilGtk.cs
+++ b/src/utilGtk.cs
@@ -367,6 +367,10 @@ public class UtilGtk
public static Gdk.Color GREEN_LIGHT = new Gdk.Color(0,238,0);
public static Gdk.Color BLUE_DARK = new Gdk.Color(0,0,140);
public static Gdk.Color BLUE_LIGHT = new Gdk.Color(0,75,238);
+
+ public static string ColorGood = "ForestGreen";
+ public static string ColorBad = "red";
+ public static string ColorNothing = "";
public static Gdk.Color SELECTED = GetBackgroundColorSelected();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]