[chronojump] Encoder feedback on height and speed.



commit eca576c6264f8ec6b46b3daf20640fff1400b1da
Author: Xavier de Blas <xaviblas gmail com>
Date:   Thu Apr 5 02:16:53 2012 +0800

    Encoder feedback on height and speed.

 encoder/graph.R                 |   20 +
 encoder/pyserial_pyper.py       |   78 +-
 glade/chronojump.glade          | 3167 ++++++++++++++++++++++-----------------
 src/constants.cs                |    2 +-
 src/encoder.cs                  |   30 +-
 src/gui/encoder.cs              |   64 +-
 src/gui/repetitiveConditions.cs |  158 ++-
 7 files changed, 2028 insertions(+), 1491 deletions(-)
---
diff --git a/encoder/graph.R b/encoder/graph.R
index 7130748..e93a699 100644
--- a/encoder/graph.R
+++ b/encoder/graph.R
@@ -1,3 +1,23 @@
+# 
+#  This file is part of ChronoJump
+# 
+#  ChronoJump 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, or   
+#     (at your option) any later version.
+#     
+#  ChronoJump 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, write to the Free Software
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# 
+#   Copyright (C) 2004-2012   Xavier de Blas <xaviblas gmail com> 
+# 
+
 library("EMD")
 
 #this will replace below methods: findPics1ByMinindex, findPics2BySpeed
diff --git a/encoder/pyserial_pyper.py b/encoder/pyserial_pyper.py
index 0cb24d9..61fcd0a 100644
--- a/encoder/pyserial_pyper.py
+++ b/encoder/pyserial_pyper.py
@@ -1,10 +1,25 @@
+# 
+#  This file is part of ChronoJump
+# 
+#  ChronoJump 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, or   
+#     (at your option) any later version.
+#     
+#  ChronoJump 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, write to the Free Software
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# 
+#   Copyright (C) 2004-2012   Teng Wei Hua <wadedang gmail com>, Xavier de Blas <xaviblas gmail com> 
+# 
 # encoding=utf-8
 #
 # This problem is for reading data form Chronopic.
-#
-# History:
-#    2011-09-01 Reading data.
-#    2011-12-27 add function: Recording if encoder changes the direction.
 
 
 
@@ -37,10 +52,16 @@ isJump = sys.argv[4]
 mass = float(sys.argv[5])
 smoothingOne = float(sys.argv[6])
 eccon = sys.argv[7]				#contraction "ec" or "c"
-powerHigherCondition = int(sys.argv[8])
-peakPowerHigherCondition = int(sys.argv[9])
-powerLowerCondition = int(sys.argv[10])
-peakPowerLowerCondition = int(sys.argv[11])
+heightHigherCondition = int(sys.argv[8])
+heightLowerCondition = int(sys.argv[9])
+meanSpeedHigherCondition = int(sys.argv[10])
+meanSpeedLowerCondition = int(sys.argv[11])
+maxSpeedHigherCondition = int(sys.argv[12])
+maxSpeedLowerCondition = int(sys.argv[13])
+powerHigherCondition = int(sys.argv[14])
+powerLowerCondition = int(sys.argv[15])
+peakPowerHigherCondition = int(sys.argv[16])
+peakPowerLowerCondition = int(sys.argv[17])
 
 delete_initial_time = 20			#delete first records because there's encoder bug
 #w_baudrate = 9600                           # Setting the baudrate of Chronopic(9600)
@@ -171,7 +192,7 @@ def calculate_all_in_r(temp, top_values, bottom_values, direction_now, smoothing
 			maxSpeed = myR.get('max(speed$y)')
 			phase = "   up,"
 			phaseCol = colorize(phase,BLUE,TRUE)
-		phaseRange = myR.get('range')
+		height = myR.get('range')
 		meanPower = myR.get('meanPower')
 		peakPower = myR.get('peakPower')
 		peakPowerT = myR.get('peakPowerT')
@@ -181,28 +202,41 @@ def calculate_all_in_r(temp, top_values, bottom_values, direction_now, smoothing
 #		if(meanSpeed > 2): colSpeed = GREENINV
 #		else: colSpeed = GREEN
 		
-		meanPowerCol = "%10.2f," % meanPower
-		colPower = assignColor(meanPower, powerHigherCondition, powerLowerCondition)
-		peakPowerCol = "%10.2f," % peakPower
-		colPeakPower = assignColor(peakPower, peakPowerHigherCondition, peakPowerLowerCondition)
+		height = height / 10 #from cm to mm
+		
+		#F mean Formatted
+		heightF = "%6i," % height
+		colorHeight = assignColor(height, heightHigherCondition, heightLowerCondition)
+		
+		meanSpeedF = "%10.2f," % meanSpeed
+		colorMeanSpeed = assignColor(meanSpeed, meanSpeedHigherCondition, meanSpeedLowerCondition)
+		
+		maxSpeedF = "%10.2f," % maxSpeed
+		colorMaxSpeed = assignColor(maxSpeed, maxSpeedHigherCondition, maxSpeedLowerCondition)
+		
+		meanPowerF = "%10.2f," % meanPower
+		colorMeanPower = assignColor(meanPower, powerHigherCondition, powerLowerCondition)
+
+		peakPowerF = "%10.2f," % peakPower
+		colorPeakPower = assignColor(peakPower, peakPowerHigherCondition, peakPowerLowerCondition)
 
 		play = False
-		if colPower == GREEN or colPeakPower == GREEN:
-			play = True
-			soundFile = soundFileGood
-		elif colPower == RED or colPeakPower == RED:
+		#if only one param is bad, will sound bad
+		if colorHeight == RED or colorMeanSpeed == RED or colorMaxSpeed == RED or colorMeanPower == RED or colorPeakPower == RED:
 			play = True
 			soundFile = soundFileBad
+		elif colorHeight == GREEN or colorMeanSpeed == GREEN or colorMaxSpeed == GREEN or colorMeanPower == GREEN or colorPeakPower == GREEN:
+			play = True
+			soundFile = soundFileGood
 
-		phaseRange = phaseRange / 10 #from cm to mm
-		
 		if eccon == "ec" or direction_now == -1:
-			if phaseRange >= minHeight:
-				print phaseCol + "%6i," % phaseRange + "%10.2f," % meanSpeed + "%9.2f," % maxSpeed + colorize(meanPowerCol,colPower,colPower!=BLACK) + colorize(peakPowerCol,colPeakPower,colPeakPower!=BLACK) + "%11i" % peakPowerT
+			if height >= minHeight:
+				#print phaseCol + "%6i," % phaseRange + "%10.2f," % meanSpeed + "%9.2f," % maxSpeed + colorize(meanPowerF,colorPower,colorPower!=BLACK) + colorize(peakPowerF,colorPeakPower,colorPeakPower!=BLACK) + "%11i" % peakPowerT
+				print phaseCol + colorize(heightF,colorHeight,colorHeight!=BLACK) + colorize(meanSpeedF,colorMeanSpeed,colorMeanSpeed!=BLACK) + colorize(maxSpeedF,colorMaxSpeed,colorMaxSpeed!=BLACK) + colorize(meanPowerF,colorMeanPower,colorMeanPower!=BLACK) + colorize(peakPowerF,colorPeakPower,colorPeakPower!=BLACK) + "%11i" % peakPowerT
 				if play:
 					playsound(soundFile)
 			else:
-				print chr(27) + "[0;37m" + phase + chr(27) + "[0;47m" + "%6i," % phaseRange + chr(27)+"[0m" + chr(27) + "[0;37m" + meanSpeedCol + "%9.2f," % maxSpeed + meanPowerCol + "%10.2f," % peakPower + "%11i" % peakPowerT + chr(27)+"[0m"
+				print chr(27) + "[0;37m" + phase + chr(27) + "[0;47m" + "%6i," % height + chr(27)+"[0m" + chr(27) + "[0;37m" + meanSpeedF + "%9.2f," % maxSpeed + meanPowerF + "%10.2f," % peakPower + "%11i" % peakPowerT + chr(27)+"[0m"
 
 
 def calculate_range(temp_cumsum, top_values, bottom_values, direction_now):
diff --git a/glade/chronojump.glade b/glade/chronojump.glade
index 3e1c346..73b78f8 100644
--- a/glade/chronojump.glade
+++ b/glade/chronojump.glade
@@ -6347,12 +6347,11 @@ suitable for agility tests)</property>
     <property name="border_width">10</property>
     <property name="title" translatable="yes">Configure feedback</property>
     <property name="resizable">False</property>
-    <property name="default_width">280</property>
     <signal name="delete_event" handler="on_delete_event"/>
     <child>
       <widget class="GtkVBox" id="vbox95">
         <property name="visible">True</property>
-        <property name="spacing">12</property>
+        <property name="spacing">14</property>
         <child>
           <widget class="GtkLabel" id="label333">
             <property name="visible">True</property>
@@ -6368,208 +6367,221 @@ suitable for agility tests)</property>
           <widget class="GtkFrame" id="frame_best_and_worst">
             <property name="visible">True</property>
             <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
+            <property name="shadow_type">out</property>
             <child>
               <widget class="GtkAlignment" id="alignment78">
                 <property name="visible">True</property>
-                <property name="left_padding">12</property>
+                <property name="top_padding">10</property>
+                <property name="bottom_padding">10</property>
+                <property name="left_padding">10</property>
+                <property name="right_padding">10</property>
                 <child>
-                  <widget class="GtkVBox" id="vbox96">
+                  <widget class="GtkVBox" id="vbox1">
                     <property name="visible">True</property>
                     <child>
-                      <widget class="GtkCheckButton" id="checkbutton_jump_tf_tc_best">
+                      <widget class="GtkHBox" id="hbox_jump_best_worst">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="spacing">12</property>
                         <child>
-                          <widget class="GtkAlignment" id="alignment76">
+                          <widget class="GtkCheckButton" id="checkbutton_jump_tf_tc_best">
                             <property name="visible">True</property>
-                            <property name="xscale">0</property>
-                            <property name="yscale">0</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
                             <child>
-                              <widget class="GtkHBox" id="hbox153">
+                              <widget class="GtkAlignment" id="alignment76">
                                 <property name="visible">True</property>
-                                <property name="spacing">2</property>
-                                <child>
-                                  <widget class="GtkImage" id="image_repetitive_best_tf_tc">
-                                    <property name="visible">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
                                 <child>
-                                  <widget class="GtkLabel" id="label351">
+                                  <widget class="GtkHBox" id="hbox153">
                                     <property name="visible">True</property>
-                                    <property name="label" translatable="yes">and show best TF / TC</property>
-                                    <property name="use_underline">True</property>
+                                    <property name="spacing">2</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label351">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">show best TF / TC</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkImage" id="image_repetitive_best_tf_tc">
+                                        <property name="visible">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
                                   </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
                                 </child>
                               </widget>
                             </child>
                           </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
                         </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckButton" id="checkbutton_jump_tf_tc_worst">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
                         <child>
-                          <widget class="GtkAlignment" id="alignment77">
+                          <widget class="GtkCheckButton" id="checkbutton_jump_tf_tc_worst">
                             <property name="visible">True</property>
-                            <property name="xscale">0</property>
-                            <property name="yscale">0</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
                             <child>
-                              <widget class="GtkHBox" id="hbox154">
+                              <widget class="GtkAlignment" id="alignment77">
                                 <property name="visible">True</property>
-                                <property name="spacing">2</property>
-                                <child>
-                                  <widget class="GtkImage" id="image_repetitive_worst_tf_tc">
-                                    <property name="visible">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
                                 <child>
-                                  <widget class="GtkLabel" id="label352">
+                                  <widget class="GtkHBox" id="hbox154">
                                     <property name="visible">True</property>
-                                    <property name="label" translatable="yes">and show worst TF / TC</property>
-                                    <property name="use_underline">True</property>
+                                    <property name="spacing">2</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label352">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">show worst TF / TC</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkImage" id="image_repetitive_worst_tf_tc">
+                                        <property name="visible">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
                                   </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
                                 </child>
                               </widget>
                             </child>
                           </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                       </widget>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
+                        <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="checkbutton_run_time_best">
+                      <widget class="GtkHBox" id="hbox_run_best_worst">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="spacing">12</property>
                         <child>
-                          <widget class="GtkAlignment" id="alignment101">
+                          <widget class="GtkCheckButton" id="checkbutton_run_time_best">
                             <property name="visible">True</property>
-                            <property name="xscale">0</property>
-                            <property name="yscale">0</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
                             <child>
-                              <widget class="GtkHBox" id="hbox214">
+                              <widget class="GtkAlignment" id="alignment101">
                                 <property name="visible">True</property>
-                                <property name="spacing">2</property>
-                                <child>
-                                  <widget class="GtkImage" id="image_repetitive_best_time">
-                                    <property name="visible">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
                                 <child>
-                                  <widget class="GtkLabel" id="label436">
+                                  <widget class="GtkHBox" id="hbox214">
                                     <property name="visible">True</property>
-                                    <property name="label" translatable="yes">and show best time</property>
-                                    <property name="use_underline">True</property>
+                                    <property name="spacing">2</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label436">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">show best time</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkImage" id="image_repetitive_best_time">
+                                        <property name="visible">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
                                   </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
                                 </child>
                               </widget>
                             </child>
                           </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
                         </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckButton" id="checkbutton_run_time_worst">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
                         <child>
-                          <widget class="GtkAlignment" id="alignment102">
+                          <widget class="GtkCheckButton" id="checkbutton_run_time_worst">
                             <property name="visible">True</property>
-                            <property name="xscale">0</property>
-                            <property name="yscale">0</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
                             <child>
-                              <widget class="GtkHBox" id="hbox215">
+                              <widget class="GtkAlignment" id="alignment102">
                                 <property name="visible">True</property>
-                                <property name="spacing">2</property>
-                                <child>
-                                  <widget class="GtkImage" id="image_repetitive_worst_time">
-                                    <property name="visible">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
                                 <child>
-                                  <widget class="GtkLabel" id="label437">
+                                  <widget class="GtkHBox" id="hbox215">
                                     <property name="visible">True</property>
-                                    <property name="label" translatable="yes">and show worst time</property>
-                                    <property name="use_underline">True</property>
+                                    <property name="spacing">2</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label437">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">show worst time</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkImage" id="image_repetitive_worst_time">
+                                        <property name="visible">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
                                   </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
                                 </child>
                               </widget>
                             </child>
                           </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                       </widget>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">3</property>
+                        <property name="position">1</property>
                       </packing>
                     </child>
                   </widget>
@@ -6594,333 +6606,209 @@ suitable for agility tests)</property>
           </packing>
         </child>
         <child>
-          <widget class="GtkFrame" id="frame26">
+          <widget class="GtkFrame" id="frame1">
             <property name="visible">True</property>
             <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
+            <property name="label_yalign">0.69999998807907104</property>
+            <property name="shadow_type">out</property>
             <child>
-              <widget class="GtkAlignment" id="alignment82">
+              <widget class="GtkAlignment" id="alignment1">
                 <property name="visible">True</property>
-                <property name="left_padding">12</property>
+                <property name="top_padding">10</property>
+                <property name="bottom_padding">10</property>
+                <property name="left_padding">10</property>
+                <property name="right_padding">10</property>
                 <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwin_conditions">
-                    <property name="height_request">200</property>
+                  <widget class="GtkVBox" id="vbox3">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">never</property>
-                    <property name="vscrollbar_policy">automatic</property>
                     <child>
-                      <widget class="GtkViewport" id="viewport1">
+                      <widget class="GtkHBox" id="hbox_jump_conditions">
                         <property name="visible">True</property>
+                        <property name="spacing">12</property>
                         <child>
-                          <widget class="GtkVBox" id="vbox98">
+                          <widget class="GtkTable" id="table_jump_conditions_good">
                             <property name="visible">True</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">3</property>
+                            <property name="column_spacing">8</property>
+                            <property name="row_spacing">12</property>
                             <child>
-                              <widget class="GtkVBox" id="vbox99">
+                              <widget class="GtkHBox" id="hbox185">
                                 <property name="visible">True</property>
                                 <child>
-                                  <widget class="GtkTable" id="table_jump_conditions">
+                                  <widget class="GtkCheckButton" id="checkbutton_tf_greater">
                                     <property name="visible">True</property>
-                                    <property name="n_rows">7</property>
-                                    <property name="n_columns">3</property>
-                                    <property name="column_spacing">10</property>
-                                    <property name="row_spacing">8</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label395">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">condition</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label396">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">value</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label397">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">action</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="has_tooltip">True</property>
+                                    <property name="tooltip" translatable="yes">Bell good</property>
+                                    <property name="draw_indicator">True</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox185">
+                                      <widget class="GtkAlignment" id="alignment89">
                                         <property name="visible">True</property>
+                                        <property name="xscale">0</property>
+                                        <property name="yscale">0</property>
                                         <child>
-                                          <widget class="GtkCheckButton" id="checkbutton_tf_greater">
+                                          <widget class="GtkHBox" id="hbox186">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="tooltip" translatable="yes">Bell good</property>
-                                            <property name="draw_indicator">True</property>
-                                            <child>
-                                              <widget class="GtkAlignment" id="alignment89">
-                                                <property name="visible">True</property>
-                                                <property name="xscale">0</property>
-                                                <property name="yscale">0</property>
-                                                <child>
-                                                  <widget class="GtkHBox" id="hbox186">
-                                                    <property name="visible">True</property>
-                                                    <property name="spacing">2</property>
-                                                    <child>
-                                                      <widget class="GtkImage" id="image_repetitive_tf_greater">
-                                                        <property name="visible">True</property>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">False</property>
-                                                        <property name="fill">False</property>
-                                                        <property name="position">0</property>
-                                                      </packing>
-                                                    </child>
-                                                  </widget>
-                                                </child>
-                                              </widget>
-                                            </child>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkCheckButton" id="checkbutton_tf_lower">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="tooltip" translatable="yes">Bell bad</property>
-                                        <property name="draw_indicator">True</property>
-                                        <child>
-                                          <widget class="GtkAlignment" id="alignment90">
-                                            <property name="visible">True</property>
-                                            <property name="xscale">0</property>
-                                            <property name="yscale">0</property>
-                                            <child>
-                                              <widget class="GtkHBox" id="hbox187">
-                                                <property name="visible">True</property>
-                                                <property name="spacing">2</property>
-                                                <child>
-                                                  <widget class="GtkImage" id="image_repetitive_tf_lower">
-                                                    <property name="visible">True</property>
-                                                  </widget>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                              </widget>
-                                            </child>
-                                          </widget>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkCheckButton" id="checkbutton_tc_greater">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="tooltip" translatable="yes">Bell bad</property>
-                                        <property name="draw_indicator">True</property>
-                                        <child>
-                                          <widget class="GtkAlignment" id="alignment91">
-                                            <property name="visible">True</property>
-                                            <property name="xscale">0</property>
-                                            <property name="yscale">0</property>
-                                            <child>
-                                              <widget class="GtkHBox" id="hbox188">
-                                                <property name="visible">True</property>
-                                                <property name="spacing">2</property>
-                                                <child>
-                                                  <widget class="GtkImage" id="image_repetitive_tc_greater">
-                                                    <property name="visible">True</property>
-                                                  </widget>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                              </widget>
-                                            </child>
-                                          </widget>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkCheckButton" id="checkbutton_tc_lower">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="tooltip" translatable="yes">Bell good</property>
-                                        <property name="draw_indicator">True</property>
-                                        <child>
-                                          <widget class="GtkAlignment" id="alignment92">
-                                            <property name="visible">True</property>
-                                            <property name="xscale">0</property>
-                                            <property name="yscale">0</property>
-                                            <child>
-                                              <widget class="GtkHBox" id="hbox189">
-                                                <property name="visible">True</property>
-                                                <property name="spacing">2</property>
-                                                <child>
-                                                  <widget class="GtkImage" id="image_repetitive_tc_lower">
-                                                    <property name="visible">True</property>
-                                                  </widget>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                              </widget>
-                                            </child>
-                                          </widget>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">4</property>
-                                        <property name="bottom_attach">5</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkCheckButton" id="checkbutton_tf_tc_greater">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="tooltip" translatable="yes">Bell good</property>
-                                        <property name="draw_indicator">True</property>
-                                        <child>
-                                          <widget class="GtkAlignment" id="alignment93">
-                                            <property name="visible">True</property>
-                                            <property name="xscale">0</property>
-                                            <property name="yscale">0</property>
-                                            <child>
-                                              <widget class="GtkHBox" id="hbox190">
-                                                <property name="visible">True</property>
-                                                <property name="spacing">2</property>
-                                                <child>
-                                                  <widget class="GtkImage" id="image_repetitive_tf_tc_greater">
-                                                    <property name="visible">True</property>
-                                                  </widget>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                              </widget>
-                                            </child>
-                                          </widget>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">5</property>
-                                        <property name="bottom_attach">6</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkCheckButton" id="checkbutton_tf_tc_lower">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="tooltip" translatable="yes">Bell bad</property>
-                                        <property name="draw_indicator">True</property>
-                                        <child>
-                                          <widget class="GtkAlignment" id="alignment94">
-                                            <property name="visible">True</property>
-                                            <property name="xscale">0</property>
-                                            <property name="yscale">0</property>
+                                            <property name="spacing">2</property>
                                             <child>
-                                              <widget class="GtkHBox" id="hbox191">
+                                              <widget class="GtkImage" id="image_repetitive_tf_greater">
                                                 <property name="visible">True</property>
-                                                <property name="spacing">2</property>
-                                                <child>
-                                                  <widget class="GtkImage" id="image_repetitive_tf_tc_lower">
-                                                    <property name="visible">True</property>
-                                                  </widget>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
                                               </widget>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                                <property name="fill">False</property>
+                                                <property name="position">0</property>
+                                              </packing>
                                             </child>
                                           </widget>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">6</property>
-                                        <property name="bottom_attach">7</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox193">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label400">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;TF&lt;/b&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label401">
+                                    <property name="visible">True</property>
+                                    <property name="label">&gt;=</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_tf_greater">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">0.59999998658880005 0 1 0.0099999997764800008 0.01 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_tf_greater_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox195">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label404">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;TC&lt;/b&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label405">
+                                    <property name="visible">True</property>
+                                    <property name="label">&lt;=</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_tc_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">0.19999999552960002 0 1 0.0099999997764800008 0.0099999997764800008 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_tc_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_tc_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment92">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox192">
+                                      <widget class="GtkHBox" id="hbox189">
                                         <property name="visible">True</property>
-                                        <property name="homogeneous">True</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label398">
+                                          <widget class="GtkImage" id="image_repetitive_tc_lower">
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;TF&lt;/b&gt;</property>
-                                            <property name="use_markup">True</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -6928,383 +6816,596 @@ suitable for agility tests)</property>
                                             <property name="position">0</property>
                                           </packing>
                                         </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label399">
-                                            <property name="visible">True</property>
-                                            <property name="label">&lt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
                                       </widget>
-                                      <packing>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox196">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">True</property>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox197">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">4</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox193">
+                                      <widget class="GtkLabel" id="label406">
                                         <property name="visible">True</property>
-                                        <property name="homogeneous">True</property>
-                                        <child>
-                                          <widget class="GtkLabel" id="label400">
-                                            <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;TF&lt;/b&gt;</property>
-                                            <property name="use_markup">True</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label401">
-                                            <property name="visible">True</property>
-                                            <property name="label">&gt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">&lt;b&gt;TF&lt;/b&gt;</property>
+                                        <property name="use_markup">True</property>
                                       </widget>
                                       <packing>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
+                                        <property name="expand">False</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox194">
+                                      <widget class="GtkLabel" id="label407">
                                         <property name="visible">True</property>
-                                        <property name="homogeneous">True</property>
-                                        <child>
-                                          <widget class="GtkLabel" id="label402">
-                                            <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;TC&lt;/b&gt;</property>
-                                            <property name="use_markup">True</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label403">
-                                            <property name="visible">True</property>
-                                            <property name="label">&gt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
+                                        <property name="label">/</property>
                                       </widget>
                                       <packing>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox195">
+                                      <widget class="GtkLabel" id="label408">
                                         <property name="visible">True</property>
-                                        <property name="homogeneous">True</property>
-                                        <child>
-                                          <widget class="GtkLabel" id="label404">
-                                            <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;TC&lt;/b&gt;</property>
-                                            <property name="use_markup">True</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label405">
-                                            <property name="visible">True</property>
-                                            <property name="label">&lt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
+                                        <property name="label" translatable="yes">&lt;b&gt;TC&lt;/b&gt;</property>
+                                        <property name="use_markup">True</property>
                                       </widget>
                                       <packing>
-                                        <property name="top_attach">4</property>
-                                        <property name="bottom_attach">5</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</property>
                                       </packing>
                                     </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label409">
+                                    <property name="visible">True</property>
+                                    <property name="label">&gt;=</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_tf_tc_greater">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">2.7499999385299998 0 6 0.0099999997764800008 0.0099999997764800008 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_tf_tc_greater_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_tf_tc_greater">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment93">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox196">
+                                      <widget class="GtkHBox" id="hbox190">
                                         <property name="visible">True</property>
-                                        <property name="homogeneous">True</property>
-                                        <child>
-                                          <widget class="GtkHBox" id="hbox197">
-                                            <property name="visible">True</property>
-                                            <property name="spacing">4</property>
-                                            <child>
-                                              <widget class="GtkLabel" id="label406">
-                                                <property name="visible">True</property>
-                                                <property name="label" translatable="yes">&lt;b&gt;TF&lt;/b&gt;</property>
-                                                <property name="use_markup">True</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="expand">False</property>
-                                                <property name="fill">False</property>
-                                                <property name="position">0</property>
-                                              </packing>
-                                            </child>
-                                            <child>
-                                              <widget class="GtkLabel" id="label407">
-                                                <property name="visible">True</property>
-                                                <property name="label">/</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="expand">False</property>
-                                                <property name="fill">False</property>
-                                                <property name="position">1</property>
-                                              </packing>
-                                            </child>
-                                            <child>
-                                              <widget class="GtkLabel" id="label408">
-                                                <property name="visible">True</property>
-                                                <property name="label" translatable="yes">&lt;b&gt;TC&lt;/b&gt;</property>
-                                                <property name="use_markup">True</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="expand">False</property>
-                                                <property name="fill">False</property>
-                                                <property name="position">2</property>
-                                              </packing>
-                                            </child>
-                                          </widget>
-                                          <packing>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label409">
+                                          <widget class="GtkImage" id="image_repetitive_tf_tc_greater">
                                             <property name="visible">True</property>
-                                            <property name="label">&gt;=</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
                                             <property name="fill">False</property>
-                                            <property name="position">1</property>
+                                            <property name="position">0</property>
                                           </packing>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="top_attach">5</property>
-                                        <property name="bottom_attach">6</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
                                     </child>
-                                    <child>
-                                      <widget class="GtkHBox" id="hbox198">
-                                        <property name="visible">True</property>
-                                        <property name="homogeneous">True</property>
-                                        <child>
-                                          <widget class="GtkHBox" id="hbox199">
-                                            <property name="visible">True</property>
-                                            <property name="spacing">4</property>
-                                            <child>
-                                              <widget class="GtkLabel" id="label410">
-                                                <property name="visible">True</property>
-                                                <property name="label" translatable="yes">&lt;b&gt;TF&lt;/b&gt;</property>
-                                                <property name="use_markup">True</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="expand">False</property>
-                                                <property name="fill">False</property>
-                                                <property name="position">0</property>
-                                              </packing>
-                                            </child>
-                                            <child>
-                                              <widget class="GtkLabel" id="label411">
-                                                <property name="visible">True</property>
-                                                <property name="label">/</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="expand">False</property>
-                                                <property name="fill">False</property>
-                                                <property name="position">1</property>
-                                              </packing>
-                                            </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkVSeparator" id="vseparator1">
+                            <property name="visible">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkTable" id="table_jump_conditions_bad">
+                            <property name="visible">True</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">3</property>
+                            <property name="column_spacing">8</property>
+                            <property name="row_spacing">12</property>
+                            <child>
+                              <widget class="GtkHBox" id="hbox13">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkCheckButton" id="checkbutton_tf_lower">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="has_tooltip">True</property>
+                                    <property name="tooltip" translatable="yes">Bell bad</property>
+                                    <property name="draw_indicator">True</property>
+                                    <child>
+                                      <widget class="GtkAlignment" id="alignment90">
+                                        <property name="visible">True</property>
+                                        <property name="xscale">0</property>
+                                        <property name="yscale">0</property>
+                                        <child>
+                                          <widget class="GtkHBox" id="hbox187">
+                                            <property name="visible">True</property>
+                                            <property name="spacing">2</property>
                                             <child>
-                                              <widget class="GtkLabel" id="label412">
+                                              <widget class="GtkImage" id="image_repetitive_tf_lower">
                                                 <property name="visible">True</property>
-                                                <property name="label" translatable="yes">&lt;b&gt;TC&lt;/b&gt;</property>
-                                                <property name="use_markup">True</property>
                                               </widget>
                                               <packing>
                                                 <property name="expand">False</property>
                                                 <property name="fill">False</property>
-                                                <property name="position">2</property>
+                                                <property name="position">0</property>
                                               </packing>
                                             </child>
                                           </widget>
-                                          <packing>
-                                            <property name="position">0</property>
-                                          </packing>
                                         </child>
+                                      </widget>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox20">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label13">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;TF&lt;/b&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label14">
+                                    <property name="visible">True</property>
+                                    <property name="label">&lt;=</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_tf_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">0.29999999329440002 0 1 0.0099999997764800008 0.0099999997764800008 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_tf_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox194">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label402">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;TC&lt;/b&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label403">
+                                    <property name="visible">True</property>
+                                    <property name="label">&gt;=</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_tc_greater">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">0.29999999329440002 0 1 0.0099999997764800008 0.0099999997764800008 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_tc_greater_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_tc_greater">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell bad</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment91">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <widget class="GtkHBox" id="hbox188">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label413">
+                                          <widget class="GtkImage" id="image_repetitive_tc_greater">
                                             <property name="visible">True</property>
-                                            <property name="label">&lt;=</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
                                             <property name="fill">False</property>
-                                            <property name="position">1</property>
+                                            <property name="position">0</property>
                                           </packing>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="top_attach">6</property>
-                                        <property name="bottom_attach">7</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_tf_greater">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="adjustment">0.59999998658880005 0 1 0.0099999997764800008 0.01 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">2</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_tf_greater_value_changed"/>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox198">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">True</property>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox199">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">4</property>
                                     <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_tf_lower">
+                                      <widget class="GtkLabel" id="label410">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="adjustment">0.29999999329440002 0 1 0.0099999997764800008 0.0099999997764800008 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">2</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_tf_lower_value_changed"/>
+                                        <property name="label" translatable="yes">&lt;b&gt;TF&lt;/b&gt;</property>
+                                        <property name="use_markup">True</property>
                                       </widget>
                                       <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_tc_greater">
+                                      <widget class="GtkLabel" id="label411">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="adjustment">0.29999999329440002 0 1 0.0099999997764800008 0.0099999997764800008 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">2</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_tc_greater_value_changed"/>
+                                        <property name="label">/</property>
                                       </widget>
                                       <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_tc_lower">
+                                      <widget class="GtkLabel" id="label412">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="adjustment">0.19999999552960002 0 1 0.0099999997764800008 0.0099999997764800008 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">2</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_tc_lower_value_changed"/>
+                                        <property name="label" translatable="yes">&lt;b&gt;TC&lt;/b&gt;</property>
+                                        <property name="use_markup">True</property>
                                       </widget>
                                       <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">4</property>
-                                        <property name="bottom_attach">5</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</property>
                                       </packing>
                                     </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label413">
+                                    <property name="visible">True</property>
+                                    <property name="label">&lt;=</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_tf_tc_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">0.99999997764800008 0 6 0.0099999997764800008 0.0099999997764800008 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_tf_tc_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_tf_tc_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell bad</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment94">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_tf_tc_greater">
+                                      <widget class="GtkHBox" id="hbox191">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="adjustment">2.7499999385299998 0 6 0.0099999997764800008 0.0099999997764800008 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">2</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_tf_tc_greater_value_changed"/>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <widget class="GtkImage" id="image_repetitive_tf_tc_lower">
+                                            <property name="visible">True</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">5</property>
-                                        <property name="bottom_attach">6</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox_run_conditions">
+                        <property name="visible">True</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <widget class="GtkHBox" id="hbox17">
+                            <property name="visible">True</property>
+                            <property name="spacing">8</property>
+                            <child>
+                              <widget class="GtkHBox" id="hbox208">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label423">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;Time&lt;/b&gt; (s)</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label424">
+                                    <property name="visible">True</property>
+                                    <property name="label">&lt;=</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="pack_type">end</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_time_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">11 0 1000 0.5 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">1</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_time_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox200">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkCheckButton" id="checkbutton_time_lower">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="has_tooltip">True</property>
+                                    <property name="tooltip" translatable="yes">Bell good</property>
+                                    <property name="draw_indicator">True</property>
                                     <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_tf_tc_lower">
+                                      <widget class="GtkAlignment" id="alignment95">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="adjustment">0.99999997764800008 0 6 0.0099999997764800008 0.0099999997764800008 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">2</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_tf_tc_lower_value_changed"/>
+                                        <property name="xscale">0</property>
+                                        <property name="yscale">0</property>
+                                        <child>
+                                          <widget class="GtkHBox" id="hbox201">
+                                            <property name="visible">True</property>
+                                            <property name="spacing">2</property>
+                                            <child>
+                                              <widget class="GtkImage" id="image_repetitive_time_lower">
+                                                <property name="visible">True</property>
+                                              </widget>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                                <property name="fill">False</property>
+                                                <property name="position">0</property>
+                                              </packing>
+                                            </child>
+                                          </widget>
+                                        </child>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">6</property>
-                                        <property name="bottom_attach">7</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
                                   </widget>
                                   <packing>
@@ -7313,83 +7414,101 @@ suitable for agility tests)</property>
                                     <property name="position">0</property>
                                   </packing>
                                 </child>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkVSeparator" id="vseparator3">
+                            <property name="visible">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkHBox" id="hbox18">
+                            <property name="visible">True</property>
+                            <property name="spacing">8</property>
+                            <child>
+                              <widget class="GtkHBox" id="hbox207">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
                                 <child>
-                                  <widget class="GtkTable" id="table_run_conditions">
+                                  <widget class="GtkLabel" id="label421">
                                     <property name="visible">True</property>
-                                    <property name="n_rows">3</property>
-                                    <property name="n_columns">3</property>
-                                    <property name="column_spacing">10</property>
-                                    <property name="row_spacing">8</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label418">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">condition</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label419">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">value</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label420">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">action</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;Time&lt;/b&gt; (s)</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label422">
+                                    <property name="visible">True</property>
+                                    <property name="label">&gt;=</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="pack_type">end</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_time_greater">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">39 0 1000 0.5 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">1</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_time_greater_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_time_greater">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell bad</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment96">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox200">
+                                      <widget class="GtkHBox" id="hbox202">
                                         <property name="visible">True</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkCheckButton" id="checkbutton_time_lower">
+                                          <widget class="GtkImage" id="image_repetitive_time_greater">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="tooltip" translatable="yes">Bell good</property>
-                                            <property name="draw_indicator">True</property>
-                                            <child>
-                                              <widget class="GtkAlignment" id="alignment95">
-                                                <property name="visible">True</property>
-                                                <property name="xscale">0</property>
-                                                <property name="yscale">0</property>
-                                                <child>
-                                                  <widget class="GtkHBox" id="hbox201">
-                                                    <property name="visible">True</property>
-                                                    <property name="spacing">2</property>
-                                                    <child>
-                                                      <widget class="GtkImage" id="image_repetitive_time_lower">
-                                                        <property name="visible">True</property>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">False</property>
-                                                        <property name="fill">False</property>
-                                                        <property name="position">0</property>
-                                                      </packing>
-                                                    </child>
-                                                  </widget>
-                                                </child>
-                                              </widget>
-                                            </child>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -7398,64 +7517,276 @@ suitable for agility tests)</property>
                                           </packing>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox_encoder_conditions">
+                        <property name="visible">True</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <widget class="GtkTable" id="table_encoder_conditions_good">
+                            <property name="visible">True</property>
+                            <property name="n_rows">5</property>
+                            <property name="n_columns">4</property>
+                            <property name="column_spacing">8</property>
+                            <property name="row_spacing">12</property>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_power_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">4000 100 50000 100 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_power_higher_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label1">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&gt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_peakpower_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment3">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkCheckButton" id="checkbutton_time_greater">
+                                      <widget class="GtkHBox" id="hbox9">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="tooltip" translatable="yes">Bell bad</property>
-                                        <property name="draw_indicator">True</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkAlignment" id="alignment96">
+                                          <widget class="GtkImage" id="image_encoder_peakpower_higher">
                                             <property name="visible">True</property>
-                                            <property name="xscale">0</property>
-                                            <property name="yscale">0</property>
-                                            <child>
-                                              <widget class="GtkHBox" id="hbox202">
-                                                <property name="visible">True</property>
-                                                <property name="spacing">2</property>
-                                                <child>
-                                                  <widget class="GtkImage" id="image_repetitive_time_greater">
-                                                    <property name="visible">True</property>
-                                                  </widget>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                              </widget>
-                                            </child>
                                           </widget>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label2">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&gt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_peakpower_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">4000 100 50000 100 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_peakpower_higher_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label8">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Peak power&lt;/b&gt; (W)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label6">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Power&lt;/b&gt; (W)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label3">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Mean speed&lt;/b&gt; (m/s)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label7">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Max speed&lt;/b&gt; (m/s)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label15">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&gt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label16">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&gt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_mean_speed_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">2 0 15 0.10000000000000001 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_mean_speed_higher_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_max_speed_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">2 0 15 0.10000000000000001 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_max_speed_higher_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_power_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment2">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox207">
+                                      <widget class="GtkHBox" id="hbox2">
                                         <property name="visible">True</property>
-                                        <property name="spacing">10</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label421">
+                                          <widget class="GtkImage" id="image_encoder_power_higher">
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;Time&lt;/b&gt;(s)</property>
-                                            <property name="use_markup">True</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -7463,34 +7794,38 @@ suitable for agility tests)</property>
                                             <property name="position">0</property>
                                           </packing>
                                         </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label422">
-                                            <property name="visible">True</property>
-                                            <property name="label">&gt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
                                       </widget>
-                                      <packing>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_mean_speed_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment6">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox208">
+                                      <widget class="GtkHBox" id="hbox1">
                                         <property name="visible">True</property>
-                                        <property name="spacing">10</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label423">
+                                          <widget class="GtkImage" id="image_encoder_mean_speed_higher">
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;Time&lt;/b&gt;(s)</property>
-                                            <property name="use_markup">True</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -7498,150 +7833,38 @@ suitable for agility tests)</property>
                                             <property name="position">0</property>
                                           </packing>
                                         </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label424">
-                                            <property name="visible">True</property>
-                                            <property name="label">&lt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_time_lower">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="adjustment">11 0 1000 0.5 1 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">1</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_time_lower_value_changed"/>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_time_greater">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="adjustment">39 0 1000 0.5 1 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">1</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_time_greater_value_changed"/>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
                                   </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
                                 </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_max_speed_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
                                 <child>
-                                  <widget class="GtkTable" id="table_encoder_conditions">
+                                  <widget class="GtkAlignment" id="alignment7">
                                     <property name="visible">True</property>
-                                    <property name="n_rows">5</property>
-                                    <property name="n_columns">3</property>
-                                    <property name="column_spacing">10</property>
-                                    <property name="row_spacing">8</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label1">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">condition</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label2">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">value</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label3">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">action</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="x_options">GTK_SHRINK</property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox1">
+                                      <widget class="GtkHBox" id="hbox4">
                                         <property name="visible">True</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkCheckButton" id="checkbutton_encoder_power_higher">
+                                          <widget class="GtkImage" id="image_encoder_max_speed_higher">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="has_tooltip">True</property>
-                                            <property name="tooltip" translatable="yes">Bell good</property>
-                                            <property name="draw_indicator">True</property>
-                                            <child>
-                                              <widget class="GtkAlignment" id="alignment1">
-                                                <property name="visible">True</property>
-                                                <property name="xscale">0</property>
-                                                <property name="yscale">0</property>
-                                                <child>
-                                                  <widget class="GtkHBox" id="hbox2">
-                                                    <property name="visible">True</property>
-                                                    <property name="spacing">2</property>
-                                                    <child>
-                                                      <widget class="GtkImage" id="image_encoder_power_higher">
-                                                        <property name="visible">True</property>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">False</property>
-                                                        <property name="fill">False</property>
-                                                        <property name="position">0</property>
-                                                      </packing>
-                                                    </child>
-                                                  </widget>
-                                                </child>
-                                              </widget>
-                                            </child>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -7650,65 +7873,77 @@ suitable for agility tests)</property>
                                           </packing>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkCheckButton" id="checkbutton_encoder_power_lower">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="has_tooltip">True</property>
-                                        <property name="tooltip" translatable="yes">Bell bad</property>
-                                        <property name="draw_indicator">True</property>
-                                        <child>
-                                          <widget class="GtkAlignment" id="alignment2">
-                                            <property name="visible">True</property>
-                                            <property name="xscale">0</property>
-                                            <property name="yscale">0</property>
-                                            <child>
-                                              <widget class="GtkHBox" id="hbox3">
-                                                <property name="visible">True</property>
-                                                <property name="spacing">2</property>
-                                                <child>
-                                                  <widget class="GtkImage" id="image_encoder_power_lower">
-                                                    <property name="visible">True</property>
-                                                  </widget>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                              </widget>
-                                            </child>
-                                          </widget>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label19">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Height&lt;/b&gt; (cm)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label21">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&gt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_height_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">70 0 300 1 10 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">1</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_height_higher_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_height_higher">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment10">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox4">
+                                      <widget class="GtkHBox" id="hbox7">
                                         <property name="visible">True</property>
-                                        <property name="spacing">10</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label4">
+                                          <widget class="GtkImage" id="image_encoder_height_higher">
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;Power&lt;/b&gt; (W)</property>
-                                            <property name="use_markup">True</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -7716,34 +7951,57 @@ suitable for agility tests)</property>
                                             <property name="position">0</property>
                                           </packing>
                                         </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label5">
-                                            <property name="visible">True</property>
-                                            <property name="label">&lt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
                                       </widget>
-                                      <packing>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkVSeparator" id="vseparator2">
+                            <property name="visible">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkTable" id="table_encoder_conditions_bad">
+                            <property name="visible">True</property>
+                            <property name="n_rows">5</property>
+                            <property name="n_columns">4</property>
+                            <property name="column_spacing">8</property>
+                            <property name="row_spacing">12</property>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_power_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell bad</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment4">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox5">
+                                      <widget class="GtkHBox" id="hbox3">
                                         <property name="visible">True</property>
-                                        <property name="spacing">10</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label6">
+                                          <widget class="GtkImage" id="image_encoder_power_lower">
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;Power&lt;/b&gt; (W)</property>
-                                            <property name="use_markup">True</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -7751,74 +8009,40 @@ suitable for agility tests)</property>
                                             <property name="position">0</property>
                                           </packing>
                                         </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label7">
-                                            <property name="visible">True</property>
-                                            <property name="label">&gt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_encoder_power_higher">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">â</property>
-                                        <property name="adjustment">4000 100 50000 100 1 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_encoder_power_higher_value_changed"/>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_encoder_power_lower">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">â</property>
-                                        <property name="adjustment">1000 100 50000 100 1 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_encoder_power_lower_value_changed"/>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_SHRINK</property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_peakpower_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment5">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox6">
+                                      <widget class="GtkHBox" id="hbox11">
                                         <property name="visible">True</property>
-                                        <property name="spacing">10</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label8">
+                                          <widget class="GtkImage" id="image_encoder_peakpower_lower">
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;Peak Power&lt;/b&gt; (W)</property>
-                                            <property name="use_markup">True</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -7826,134 +8050,261 @@ suitable for agility tests)</property>
                                             <property name="position">0</property>
                                           </packing>
                                         </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label9">
-                                            <property name="visible">True</property>
-                                            <property name="label">&gt;=</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
                                       </widget>
-                                      <packing>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_power_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">1000 100 50000 100 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_power_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_SHRINK</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_peakpower_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">1000 100 50000 100 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_peakpower_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label11">
+                                <property name="visible">True</property>
+                                <property name="label">&lt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label4">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Power&lt;/b&gt; (W)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label10">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Peak power&lt;/b&gt; (W)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label9">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Mean speed&lt;/b&gt; (m/s)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label12">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Max speed&lt;/b&gt; (m/s)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label5">
+                                <property name="visible">True</property>
+                                <property name="label">&lt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label17">
+                                <property name="visible">True</property>
+                                <property name="label">&lt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label18">
+                                <property name="visible">True</property>
+                                <property name="label">&lt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_mean_speed_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">1 0 15 0.10000000000000001 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_mean_speed_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_max_speed_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">1 0 15 0.10000000000000001 1 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">2</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_max_speed_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_mean_speed_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell bad</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment8">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox7">
-                                        <property name="visible">True</property>
-                                        <property name="spacing">10</property>
-                                        <child>
-                                          <widget class="GtkLabel" id="label10">
-                                            <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;Peak Power&lt;/b&gt; (W)</property>
-                                            <property name="use_markup">True</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
+                                      <widget class="GtkHBox" id="hbox5">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkLabel" id="label11">
+                                          <widget class="GtkImage" id="image_encoder_mean_speed_lower">
                                             <property name="visible">True</property>
-                                            <property name="label">&lt;=</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
                                             <property name="fill">False</property>
-                                            <property name="position">1</property>
+                                            <property name="position">0</property>
                                           </packing>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="top_attach">4</property>
-                                        <property name="bottom_attach">5</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_encoder_peakpower_higher">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">â</property>
-                                        <property name="adjustment">4000 100 50000 100 1 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_encoder_peakpower_higher_value_changed"/>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkSpinButton" id="spinbutton_encoder_peakpower_lower">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">â</property>
-                                        <property name="adjustment">1000 100 50000 100 1 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
-                                        <signal name="value_changed" handler="on_spinbutton_encoder_peakpower_lower_value_changed"/>
-                                      </widget>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">4</property>
-                                        <property name="bottom_attach">5</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options"></property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_max_speed_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell bad</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment9">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox8">
+                                      <widget class="GtkHBox" id="hbox6">
                                         <property name="visible">True</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkCheckButton" id="checkbutton_encoder_peakpower_higher">
+                                          <widget class="GtkImage" id="image_encoder_max_speed_lower">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="has_tooltip">True</property>
-                                            <property name="tooltip" translatable="yes">Bell good</property>
-                                            <property name="draw_indicator">True</property>
-                                            <child>
-                                              <widget class="GtkAlignment" id="alignment3">
-                                                <property name="visible">True</property>
-                                                <property name="xscale">0</property>
-                                                <property name="yscale">0</property>
-                                                <child>
-                                                  <widget class="GtkHBox" id="hbox9">
-                                                    <property name="visible">True</property>
-                                                    <property name="spacing">2</property>
-                                                    <child>
-                                                      <widget class="GtkImage" id="image_encoder_peakpower_higher">
-                                                        <property name="visible">True</property>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">False</property>
-                                                        <property name="fill">False</property>
-                                                        <property name="position">0</property>
-                                                      </packing>
-                                                    </child>
-                                                  </widget>
-                                                </child>
-                                              </widget>
-                                            </child>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -7962,49 +8313,79 @@ suitable for agility tests)</property>
                                           </packing>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
                                     </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label20">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Height&lt;/b&gt; (cm)</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label22">
+                                <property name="visible">True</property>
+                                <property name="label">&lt;=</property>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_encoder_height_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="adjustment">40 0 300 1 10 0</property>
+                                <property name="climb_rate">1</property>
+                                <property name="digits">1</property>
+                                <property name="snap_to_ticks">True</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton_encoder_height_lower_value_changed"/>
+                              </widget>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_height_lower">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">Bell good</property>
+                                <property name="draw_indicator">True</property>
+                                <child>
+                                  <widget class="GtkAlignment" id="alignment11">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox10">
+                                      <widget class="GtkHBox" id="hbox8">
                                         <property name="visible">True</property>
+                                        <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkCheckButton" id="checkbutton_encoder_peakpower_lower">
+                                          <widget class="GtkImage" id="image_encoder_height_lower">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="has_tooltip">True</property>
-                                            <property name="tooltip" translatable="yes">Bell good</property>
-                                            <property name="draw_indicator">True</property>
-                                            <child>
-                                              <widget class="GtkAlignment" id="alignment4">
-                                                <property name="visible">True</property>
-                                                <property name="xscale">0</property>
-                                                <property name="yscale">0</property>
-                                                <child>
-                                                  <widget class="GtkHBox" id="hbox11">
-                                                    <property name="visible">True</property>
-                                                    <property name="spacing">2</property>
-                                                    <child>
-                                                      <widget class="GtkImage" id="image_encoder_peakpower_lower">
-                                                        <property name="visible">True</property>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">False</property>
-                                                        <property name="fill">False</property>
-                                                        <property name="position">0</property>
-                                                      </packing>
-                                                    </child>
-                                                  </widget>
-                                                </child>
-                                              </widget>
-                                            </child>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
@@ -8013,30 +8394,24 @@ suitable for agility tests)</property>
                                           </packing>
                                         </child>
                                       </widget>
-                                      <packing>
-                                        <property name="left_attach">2</property>
-                                        <property name="right_attach">3</property>
-                                        <property name="top_attach">4</property>
-                                        <property name="bottom_attach">5</property>
-                                        <property name="x_options"></property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
                                     </child>
                                   </widget>
-                                  <packing>
-                                    <property name="position">2</property>
-                                  </packing>
                                 </child>
                               </widget>
                               <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
+                                <property name="left_attach">3</property>
+                                <property name="right_attach">4</property>
                               </packing>
                             </child>
                           </widget>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
                         </child>
                       </widget>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
                     </child>
                   </widget>
                 </child>
@@ -8045,7 +8420,7 @@ suitable for agility tests)</property>
             <child>
               <widget class="GtkLabel" id="label_other_conditions">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">&lt;b&gt;Other conditions&lt;/b&gt;</property>
+                <property name="label" translatable="yes">&lt;b&gt;Conditions&lt;/b&gt;</property>
                 <property name="use_markup">True</property>
               </widget>
               <packing>
@@ -8061,123 +8436,95 @@ suitable for agility tests)</property>
           <widget class="GtkFrame" id="frame25">
             <property name="visible">True</property>
             <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
+            <property name="label_yalign">0.69999998807907104</property>
+            <property name="shadow_type">out</property>
             <child>
               <widget class="GtkAlignment" id="alignment80">
                 <property name="visible">True</property>
-                <property name="left_padding">12</property>
+                <property name="top_padding">10</property>
+                <property name="bottom_padding">10</property>
+                <property name="left_padding">10</property>
+                <property name="right_padding">10</property>
                 <child>
-                  <widget class="GtkHBox" id="hbox166">
+                  <widget class="GtkHBox" id="hbox14">
                     <property name="visible">True</property>
-                    <property name="spacing">10</property>
                     <child>
-                      <widget class="GtkVBox" id="vbox97">
+                      <widget class="GtkHBox" id="hbox16">
                         <property name="visible">True</property>
+                        <property name="spacing">6</property>
                         <child>
-                          <widget class="GtkHBox" id="hbox163">
+                          <widget class="GtkRadioButton" id="radiobutton_test_good">
+                            <property name="label" translatable="yes">"Good" bell</property>
                             <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkRadioButton" id="radiobutton_test_good">
-                                <property name="label" translatable="yes">test "good" bell</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="draw_indicator">True</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkHBox" id="hbox165">
-                                <property name="visible">True</property>
-                                <child>
-                                  <widget class="GtkImage" id="image_repetitive_test_good">
-                                    <property name="visible">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="pack_type">end</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
                           </widget>
                           <packing>
+                            <property name="expand">False</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkHBox" id="hbox167">
+                          <widget class="GtkImage" id="image_repetitive_test_good">
                             <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkRadioButton" id="radiobutton_test_bad">
-                                <property name="label" translatable="yes">test "bad" bell</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="draw_indicator">True</property>
-                                <property name="group">radiobutton_test_good</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkHBox" id="hbox168">
-                                <property name="visible">True</property>
-                                <child>
-                                  <widget class="GtkImage" id="image_repetitive_test_bad">
-                                    <property name="visible">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="pack_type">end</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
                           </widget>
                           <packing>
+                            <property name="expand">False</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
                       </widget>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
+                      <widget class="GtkHBox" id="hbox15">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <widget class="GtkRadioButton" id="radiobutton_test_bad">
+                            <property name="label" translatable="yes">"Bad" bell</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton_test_good</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkImage" id="image_repetitive_test_bad">
+                            <property name="visible">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
                       <widget class="GtkButton" id="button_test">
                         <property name="label" translatable="yes">test!</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
+                        <property name="receives_default">True</property>
                         <property name="use_underline">True</property>
                         <signal name="clicked" handler="on_button_test_clicked"/>
                       </widget>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
+                        <property name="position">2</property>
                       </packing>
                     </child>
                   </widget>
@@ -23230,11 +23577,11 @@ on current Chronojump version.</property>
                                 <child>
                                   <widget class="GtkVBox" id="vbox3">
                                     <property name="visible">True</property>
-                                    <property name="spacing">4</property>
+                                    <property name="spacing">8</property>
                                     <child>
                                       <widget class="GtkVBox" id="vbox5">
                                         <property name="visible">True</property>
-                                        <property name="spacing">8</property>
+                                        <property name="spacing">12</property>
                                         <child>
                                           <widget class="GtkFrame" id="frame16">
                                             <property name="visible">True</property>
@@ -23244,8 +23591,10 @@ on current Chronojump version.</property>
                                             <child>
                                               <widget class="GtkAlignment" id="alignment19">
                                                 <property name="visible">True</property>
-                                                <property name="left_padding">12</property>
-                                                <property name="right_padding">12</property>
+                                                <property name="top_padding">4</property>
+                                                <property name="bottom_padding">4</property>
+                                                <property name="left_padding">10</property>
+                                                <property name="right_padding">10</property>
                                                 <child>
                                                   <widget class="GtkHBox" id="hbox58">
                                                     <property name="visible">True</property>
@@ -23901,7 +24250,7 @@ on current Chronojump version.</property>
                                 <child>
                                   <widget class="GtkVBox" id="vbox6">
                                     <property name="visible">True</property>
-                                    <property name="spacing">11</property>
+                                    <property name="spacing">8</property>
                                     <child>
                                       <widget class="GtkVBox" id="vbox7">
                                         <property name="visible">True</property>
@@ -23915,8 +24264,10 @@ on current Chronojump version.</property>
                                             <child>
                                               <widget class="GtkAlignment" id="alignment17">
                                                 <property name="visible">True</property>
-                                                <property name="left_padding">12</property>
-                                                <property name="right_padding">12</property>
+                                                <property name="top_padding">4</property>
+                                                <property name="bottom_padding">4</property>
+                                                <property name="left_padding">10</property>
+                                                <property name="right_padding">10</property>
                                                 <child>
                                                   <widget class="GtkHBox" id="hbox79">
                                                     <property name="visible">True</property>
diff --git a/src/constants.cs b/src/constants.cs
index 3167cd1..2472e89 100644
--- a/src/constants.cs
+++ b/src/constants.cs
@@ -38,7 +38,7 @@ public class Constants
 		"Onkar Nath Mishra (http://www.logicbrick.com)\n" + Catalog.GetString("OpenCV Detection of knee angle."),
 		"Andoni Morales Alastruey (http://ylatuya.es)\n" + Catalog.GetString("Installation support: Autotools, packaging, bundle."), 
 		"Carlos J. Gil Bellosta (http://www.datanalytics.com)\n" + Catalog.GetString("Statistics support."),
-		"Teng Wei Hua (wadedang gmail com)\n" + Catalog.GetString("Translation of Firmware to C, and new firmware features.") 
+		"Teng Wei Hua (wadedang gmail com)\n" + Catalog.GetString("Translation of Firmware to C, and new firmware features. Encoder hardware layer.") 
 	};
 	public static string [] Documenters = {
 		"Xavier de Blas Foix (xaviblas gmail com)\n\n",
diff --git a/src/encoder.cs b/src/encoder.cs
index a5060ab..302d7bd 100644
--- a/src/encoder.cs
+++ b/src/encoder.cs
@@ -36,14 +36,23 @@ public class EncoderParams
 	private int curve;
 	private int width;
 	private int height;
+	private double heightHigherCondition;
+	private double heightLowerCondition;
+	private double meanSpeedHigherCondition;
+	private double meanSpeedLowerCondition;
+	private double maxSpeedHigherCondition;
+	private double maxSpeedLowerCondition;
 	private int powerHigherCondition;
-	private int peakPowerHigherCondition;
 	private int powerLowerCondition;
+	private int peakPowerHigherCondition;
 	private int peakPowerLowerCondition;
 	
 	public EncoderParams(int time, int minHeight, bool isJump, string mass, string smooth, string eccon,
-			int powerHigherCondition, int peakPowerHigherCondition,
-			int powerLowerCondition, int peakPowerLowerCondition)
+			double heightHigherCondition, double heightLowerCondition, 
+			double meanSpeedHigherCondition, double meanSpeedLowerCondition, 
+			double maxSpeedHigherCondition, double maxSpeedLowerCondition, 
+			int powerHigherCondition, int powerLowerCondition, 
+			int peakPowerHigherCondition, int peakPowerLowerCondition)
 	{
 		this.time = time;
 		this.minHeight = minHeight;
@@ -51,9 +60,15 @@ public class EncoderParams
 		this.mass = mass;
 		this.smooth = smooth;
 		this.eccon = eccon;
+		this.heightHigherCondition = heightHigherCondition;
+		this.heightLowerCondition = heightLowerCondition;
+		this.meanSpeedHigherCondition = meanSpeedHigherCondition;
+		this.meanSpeedLowerCondition = meanSpeedLowerCondition;
+		this.maxSpeedHigherCondition = maxSpeedHigherCondition;
+		this.maxSpeedLowerCondition = maxSpeedLowerCondition;
 		this.powerHigherCondition = powerHigherCondition;
-		this.peakPowerHigherCondition = peakPowerHigherCondition;
 		this.powerLowerCondition = powerLowerCondition;
+		this.peakPowerHigherCondition = peakPowerHigherCondition;
 		this.peakPowerLowerCondition = peakPowerLowerCondition;
 	}
 	
@@ -61,8 +76,11 @@ public class EncoderParams
 	{
 		return time.ToString() + " " + minHeight.ToString() + " " + isJump.ToString() + 
 			" " + mass.ToString() + " " + smooth + " " + eccon +
-			" " + powerHigherCondition.ToString() + " " + peakPowerHigherCondition.ToString() +
-			" " + powerLowerCondition.ToString() + " " + peakPowerLowerCondition.ToString();
+			" " + heightHigherCondition.ToString() +	" " + heightLowerCondition.ToString() +
+			" " + meanSpeedHigherCondition.ToString() + 	" " + meanSpeedLowerCondition.ToString() +
+			" " + maxSpeedHigherCondition.ToString() + 	" " + maxSpeedLowerCondition.ToString() +
+			" " + powerHigherCondition.ToString() + 	" " + powerLowerCondition.ToString() +
+			" " + peakPowerHigherCondition.ToString() + 	" " + peakPowerLowerCondition.ToString();
 	}
 	
 	public EncoderParams(int minHeight, bool isJump, string mass, string eccon, 
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index 8fdae14..1ad7eab 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -90,19 +90,37 @@ public partial class ChronoJumpWindow
 	//TODO: garantir path windows	
 	void on_button_encoder_capture_clicked (object o, EventArgs args) 
 	{
-		//TODO: que surti barra de progres de calculando... despres de capturar i boto de cerrar automatico
-		//TODO: i mostrar valors des de la gui (potser a zona dreta damunt del zoom)
+		double heightHigherCondition = -1;
+		if(repetitiveConditionsWin.EncoderHeightHigher)		
+			heightHigherCondition = repetitiveConditionsWin.EncoderHeightHigherValue;
+		double heightLowerCondition = -1;
+		if(repetitiveConditionsWin.EncoderHeightLower)		
+			heightLowerCondition = repetitiveConditionsWin.EncoderHeightLowerValue;
+	
+		double meanSpeedHigherCondition = -1;
+		if(repetitiveConditionsWin.EncoderMeanSpeedHigher)		
+			meanSpeedHigherCondition = repetitiveConditionsWin.EncoderMeanSpeedHigherValue;
+		double meanSpeedLowerCondition = -1;
+		if(repetitiveConditionsWin.EncoderMeanSpeedLower)		
+			meanSpeedLowerCondition = repetitiveConditionsWin.EncoderMeanSpeedLowerValue;
+	
+		double maxSpeedHigherCondition = -1;
+		if(repetitiveConditionsWin.EncoderMaxSpeedHigher)		
+			maxSpeedHigherCondition = repetitiveConditionsWin.EncoderMaxSpeedHigherValue;
+		double maxSpeedLowerCondition = -1;
+		if(repetitiveConditionsWin.EncoderMaxSpeedLower)		
+			maxSpeedLowerCondition = repetitiveConditionsWin.EncoderMaxSpeedLowerValue;
 	
 		int powerHigherCondition = -1;
 		if(repetitiveConditionsWin.EncoderPowerHigher)		
 			powerHigherCondition = repetitiveConditionsWin.EncoderPowerHigherValue;
-		int peakPowerHigherCondition = -1;
-		if(repetitiveConditionsWin.EncoderPeakPowerHigher)		
-			peakPowerHigherCondition = repetitiveConditionsWin.EncoderPeakPowerHigherValue;
-
 		int powerLowerCondition = -1;
 		if(repetitiveConditionsWin.EncoderPowerLower)		
 			powerLowerCondition = repetitiveConditionsWin.EncoderPowerLowerValue;
+		
+		int peakPowerHigherCondition = -1;
+		if(repetitiveConditionsWin.EncoderPeakPowerHigher)		
+			peakPowerHigherCondition = repetitiveConditionsWin.EncoderPeakPowerHigherValue;
 		int peakPowerLowerCondition = -1;
 		if(repetitiveConditionsWin.EncoderPeakPowerLower)		
 			peakPowerLowerCondition = repetitiveConditionsWin.EncoderPeakPowerLowerValue;
@@ -115,8 +133,11 @@ public partial class ChronoJumpWindow
 				findMass(),
 				Util.ConvertToPoint((double) spin_encoder_smooth.Value), //R decimal: '.'
 				findEccon(),
-				powerHigherCondition, peakPowerHigherCondition,
-				powerLowerCondition, peakPowerLowerCondition
+				heightHigherCondition, heightLowerCondition,
+				meanSpeedHigherCondition, meanSpeedLowerCondition,
+				maxSpeedHigherCondition, maxSpeedLowerCondition,
+				powerHigherCondition, powerLowerCondition,
+				peakPowerHigherCondition, peakPowerLowerCondition
 				); 
 
 		EncoderStruct es = new EncoderStruct(
@@ -358,8 +379,7 @@ public partial class ChronoJumpWindow
 
 
 	/* rendering columns */
-
-	private string assignColor(double found, bool higherActive, bool lowerActive, int higherValue, int lowerValue) 
+	private string assignColor(double found, bool higherActive, bool lowerActive, double higherValue, double lowerValue) 
 	{
 		//more at System.Drawing.Color (Monodoc)
 		string colorGood= "ForestGreen"; 
@@ -374,6 +394,12 @@ public partial class ChronoJumpWindow
 			return colorNothing;
 	}
 
+	private string assignColor(double found, bool higherActive, bool lowerActive, int higherValue, int lowerValue) 
+	{
+		return assignColor(found, higherActive, lowerActive, 
+				Convert.ToDouble(higherValue), Convert.ToDouble(lowerValue));
+	}
+
 	private void RenderN (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
 	{
 		EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
@@ -390,6 +416,12 @@ public partial class ChronoJumpWindow
 	{
 		EncoderCurve curve = (EncoderCurve) model.GetValue (iter, 0);
 		string heightToCm = (Convert.ToDouble(curve.Height)/10).ToString();
+		(cell as Gtk.CellRendererText).Foreground = assignColor(
+				Convert.ToDouble(heightToCm),
+				repetitiveConditionsWin.EncoderHeightHigher, 
+				repetitiveConditionsWin.EncoderHeightLower, 
+				repetitiveConditionsWin.EncoderHeightHigherValue,
+				repetitiveConditionsWin.EncoderHeightLowerValue);
 		(cell as Gtk.CellRendererText).Text = 
 			String.Format(UtilGtk.TVNumPrint(heightToCm,8,1),Convert.ToDouble(heightToCm));
 	}
@@ -397,6 +429,12 @@ 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);
+		(cell as Gtk.CellRendererText).Foreground = assignColor(
+				Convert.ToDouble(curve.MeanSpeed),
+				repetitiveConditionsWin.EncoderMeanSpeedHigher, 
+				repetitiveConditionsWin.EncoderMeanSpeedLower, 
+				repetitiveConditionsWin.EncoderMeanSpeedHigherValue,
+				repetitiveConditionsWin.EncoderMeanSpeedLowerValue);
 		//no need of UtilGtk.TVNumPrint, always has 1 digit on left of decimal
 		(cell as Gtk.CellRendererText).Text = 
 			String.Format("{0,12:0.000}",Convert.ToDouble(curve.MeanSpeed));
@@ -405,6 +443,12 @@ 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);
+		(cell as Gtk.CellRendererText).Foreground = assignColor(
+				Convert.ToDouble(curve.MaxSpeed),
+				repetitiveConditionsWin.EncoderMaxSpeedHigher, 
+				repetitiveConditionsWin.EncoderMaxSpeedLower, 
+				repetitiveConditionsWin.EncoderMaxSpeedHigherValue,
+				repetitiveConditionsWin.EncoderMaxSpeedLowerValue);
 		//no need of UtilGtk.TVNumPrint, always has 1 digit on left of decimal
 		(cell as Gtk.CellRendererText).Text = 
 			String.Format("{0,12:0.000}",Convert.ToDouble(curve.MaxSpeed));
diff --git a/src/gui/repetitiveConditions.cs b/src/gui/repetitiveConditions.cs
index ea43a97..0b1ce42 100644
--- a/src/gui/repetitiveConditions.cs
+++ b/src/gui/repetitiveConditions.cs
@@ -15,7 +15,7 @@
  *  along with this program; if not, write to the Free Software
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Copyright (C) 2004-2009   Xavier de Blas <xaviblas gmail com> 
+ * Copyright (C) 2004-2012   Xavier de Blas <xaviblas gmail com> 
  */
 
 using System;
@@ -30,10 +30,11 @@ public class RepetitiveConditionsWindow
 //	[Widget] Gtk.ScrolledWindow scrolled_conditions;
 
 	[Widget] Gtk.Frame frame_best_and_worst;
-	[Widget] Gtk.Label label_other_conditions;
+	[Widget] Gtk.Box hbox_jump_best_worst;
+	[Widget] Gtk.Box hbox_run_best_worst;
 
 	/* jumps */	
-	[Widget] Gtk.Table table_jump_conditions;
+	[Widget] Gtk.Box hbox_jump_conditions;
 	[Widget] Gtk.CheckButton checkbutton_jump_tf_tc_best;
 	[Widget] Gtk.CheckButton checkbutton_jump_tf_tc_worst;
 
@@ -52,7 +53,7 @@ public class RepetitiveConditionsWindow
 	[Widget] Gtk.SpinButton spinbutton_tf_tc_lower;
 
 	/* runs */	
-	[Widget] Gtk.Table table_run_conditions;
+	[Widget] Gtk.Box hbox_run_conditions;
 	[Widget] Gtk.CheckButton checkbutton_run_time_best;
 	[Widget] Gtk.CheckButton checkbutton_run_time_worst;
 	
@@ -63,7 +64,19 @@ public class RepetitiveConditionsWindow
 	[Widget] Gtk.SpinButton spinbutton_time_lower;
 
 	/* encoder */
-	[Widget] Gtk.Table table_encoder_conditions;
+	[Widget] Gtk.Box hbox_encoder_conditions;
+	[Widget] Gtk.CheckButton checkbutton_encoder_height_higher;
+	[Widget] Gtk.CheckButton checkbutton_encoder_mean_speed_higher;
+	[Widget] Gtk.CheckButton checkbutton_encoder_max_speed_higher;
+	[Widget] Gtk.CheckButton checkbutton_encoder_height_lower;
+	[Widget] Gtk.CheckButton checkbutton_encoder_mean_speed_lower;
+	[Widget] Gtk.CheckButton checkbutton_encoder_max_speed_lower;
+	[Widget] Gtk.SpinButton spinbutton_encoder_height_higher;
+	[Widget] Gtk.SpinButton spinbutton_encoder_mean_speed_higher;
+	[Widget] Gtk.SpinButton spinbutton_encoder_max_speed_higher;
+	[Widget] Gtk.SpinButton spinbutton_encoder_height_lower;
+	[Widget] Gtk.SpinButton spinbutton_encoder_mean_speed_lower;
+	[Widget] Gtk.SpinButton spinbutton_encoder_max_speed_lower;
 	[Widget] Gtk.CheckButton checkbutton_encoder_power_higher;
 	[Widget] Gtk.CheckButton checkbutton_encoder_peakpower_higher;
 	[Widget] Gtk.CheckButton checkbutton_encoder_power_lower;
@@ -88,6 +101,9 @@ public class RepetitiveConditionsWindow
 	[Widget] Gtk.Image image_repetitive_tc_lower;
 	[Widget] Gtk.Image image_repetitive_tf_tc_greater;
 	[Widget] Gtk.Image image_repetitive_time_lower;
+	[Widget] Gtk.Image image_encoder_height_higher;
+	[Widget] Gtk.Image image_encoder_mean_speed_higher;
+	[Widget] Gtk.Image image_encoder_max_speed_higher;
 	[Widget] Gtk.Image image_encoder_power_higher;
 	[Widget] Gtk.Image image_encoder_peakpower_higher;
 	[Widget] Gtk.Image image_repetitive_test_good;
@@ -98,6 +114,9 @@ public class RepetitiveConditionsWindow
 	[Widget] Gtk.Image image_repetitive_tc_greater;
 	[Widget] Gtk.Image image_repetitive_tf_tc_lower;
 	[Widget] Gtk.Image image_repetitive_time_greater;
+	[Widget] Gtk.Image image_encoder_height_lower;
+	[Widget] Gtk.Image image_encoder_mean_speed_lower;
+	[Widget] Gtk.Image image_encoder_max_speed_lower;
 	[Widget] Gtk.Image image_encoder_power_lower;
 	[Widget] Gtk.Image image_encoder_peakpower_lower;
 	[Widget] Gtk.Image image_repetitive_test_bad;
@@ -151,30 +170,22 @@ public class RepetitiveConditionsWindow
 
 	void showWidgets(Constants.BellModes bellMode) {
 		frame_best_and_worst.Hide();
-		label_other_conditions.Hide();
-	
-		table_jump_conditions.Hide();
-		checkbutton_jump_tf_tc_best.Hide();
-		checkbutton_jump_tf_tc_worst.Hide();
-		table_run_conditions.Hide();
-		checkbutton_run_time_best.Hide();
-		checkbutton_run_time_worst.Hide();
-		table_encoder_conditions.Hide();
+		hbox_jump_best_worst.Hide();
+		hbox_run_best_worst.Hide();
+		hbox_jump_conditions.Hide();
+		hbox_run_conditions.Hide();
+		hbox_encoder_conditions.Hide();
 
 		if(bellMode == Constants.BellModes.JUMPS) {
 			frame_best_and_worst.Show();
-			label_other_conditions.Show();
-			table_jump_conditions.Show();
-			checkbutton_jump_tf_tc_best.Show();
-			checkbutton_jump_tf_tc_worst.Show();
+			hbox_jump_best_worst.Show();
+			hbox_jump_conditions.Show();
 		} else if(bellMode == Constants.BellModes.RUNS) {
 			frame_best_and_worst.Show();
-			label_other_conditions.Show();
-			table_run_conditions.Show();
-			checkbutton_run_time_best.Show();
-			checkbutton_run_time_worst.Show();
+			hbox_run_best_worst.Show();
+			hbox_run_conditions.Show();
 		} else { //encoder
-			table_encoder_conditions.Show();
+			hbox_encoder_conditions.Show();
 		}
 	}
 
@@ -187,6 +198,9 @@ public class RepetitiveConditionsWindow
 		image_repetitive_tc_lower.Pixbuf = pixbuf;
 		image_repetitive_tf_tc_greater.Pixbuf = pixbuf;
 		image_repetitive_time_lower.Pixbuf = pixbuf;
+		image_encoder_height_higher.Pixbuf = pixbuf;
+		image_encoder_mean_speed_higher.Pixbuf = pixbuf;
+		image_encoder_max_speed_higher.Pixbuf = pixbuf;
 		image_encoder_power_higher.Pixbuf = pixbuf;
 		image_encoder_peakpower_higher.Pixbuf = pixbuf;
 		image_repetitive_test_good.Pixbuf = pixbuf;
@@ -198,6 +212,9 @@ public class RepetitiveConditionsWindow
 		image_repetitive_tc_greater.Pixbuf = pixbuf;
 		image_repetitive_tf_tc_lower.Pixbuf = pixbuf;
 		image_repetitive_time_greater.Pixbuf = pixbuf;
+		image_encoder_height_lower.Pixbuf = pixbuf;
+		image_encoder_mean_speed_lower.Pixbuf = pixbuf;
+		image_encoder_max_speed_lower.Pixbuf = pixbuf;
 		image_encoder_power_lower.Pixbuf = pixbuf;
 		image_encoder_peakpower_lower.Pixbuf = pixbuf;
 		image_repetitive_test_bad.Pixbuf = pixbuf;
@@ -265,16 +282,37 @@ public class RepetitiveConditionsWindow
 	}
 
 	/* encoder */
+	void on_spinbutton_encoder_height_higher_value_changed (object o, EventArgs args) {
+		checkbutton_encoder_height_higher.Active = true;
+	}
+	void on_spinbutton_encoder_height_lower_value_changed (object o, EventArgs args) {
+		checkbutton_encoder_height_lower.Active = true;
+	}
+	
+	void on_spinbutton_encoder_mean_speed_higher_value_changed (object o, EventArgs args) {
+		checkbutton_encoder_mean_speed_higher.Active = true;
+	}
+	void on_spinbutton_encoder_mean_speed_lower_value_changed (object o, EventArgs args) {
+		checkbutton_encoder_mean_speed_lower.Active = true;
+	}
+	
+	void on_spinbutton_encoder_max_speed_higher_value_changed (object o, EventArgs args) {
+		checkbutton_encoder_max_speed_higher.Active = true;
+	}
+	void on_spinbutton_encoder_max_speed_lower_value_changed (object o, EventArgs args) {
+		checkbutton_encoder_max_speed_lower.Active = true;
+	}
+	
 	void on_spinbutton_encoder_power_higher_value_changed (object o, EventArgs args) {
 		checkbutton_encoder_power_higher.Active = true;
 	}
-	void on_spinbutton_encoder_peakpower_higher_value_changed (object o, EventArgs args) {
-		checkbutton_encoder_peakpower_higher.Active = true;
-	}
-
 	void on_spinbutton_encoder_power_lower_value_changed (object o, EventArgs args) {
 		checkbutton_encoder_power_lower.Active = true;
 	}
+
+	void on_spinbutton_encoder_peakpower_higher_value_changed (object o, EventArgs args) {
+		checkbutton_encoder_peakpower_higher.Active = true;
+	}
 	void on_spinbutton_encoder_peakpower_lower_value_changed (object o, EventArgs args) {
 		checkbutton_encoder_peakpower_lower.Active = true;
 	}
@@ -288,11 +326,9 @@ public class RepetitiveConditionsWindow
 		get { return checkbutton_jump_tf_tc_worst.Active; }
 	}
 
-
 	public bool TfGreater {
 		get { return checkbutton_tf_greater.Active; }
 	}
-
 	public bool TfLower {
 		get { return checkbutton_tf_lower.Active; }
 	}
@@ -300,7 +336,6 @@ public class RepetitiveConditionsWindow
 	public bool TcGreater {
 		get { return checkbutton_tc_greater.Active; }
 	}
-
 	public bool TcLower {
 		get { return checkbutton_tc_lower.Active; }
 	}
@@ -308,16 +343,13 @@ public class RepetitiveConditionsWindow
 	public bool TfTcGreater {
 		get { return checkbutton_tf_tc_greater.Active; }
 	}
-
 	public bool TfTcLower {
 		get { return checkbutton_tf_tc_lower.Active; }
 	}
 
-
 	public double TfGreaterValue {
 		get { return Convert.ToDouble(spinbutton_tf_greater.Value); }
 	}
-
 	public double TfLowerValue {
 		get { return Convert.ToDouble(spinbutton_tf_lower.Value); }
 	}
@@ -325,7 +357,6 @@ public class RepetitiveConditionsWindow
 	public double TcGreaterValue {
 		get { return Convert.ToDouble(spinbutton_tc_greater.Value); }
 	}
-
 	public double TcLowerValue {
 		get { return Convert.ToDouble(spinbutton_tc_lower.Value); }
 	}
@@ -333,7 +364,6 @@ public class RepetitiveConditionsWindow
 	public double TfTcGreaterValue {
 		get { return Convert.ToDouble(spinbutton_tf_tc_greater.Value); }
 	}
-
 	public double TfTcLowerValue {
 		get { return Convert.ToDouble(spinbutton_tf_tc_lower.Value); }
 	}
@@ -349,7 +379,6 @@ public class RepetitiveConditionsWindow
 	public bool RunTimeGreater {
 		get { return checkbutton_time_greater.Active; }
 	}
-
 	public bool RunTimeLower {
 		get { return checkbutton_time_lower.Active; }
 	}
@@ -357,18 +386,66 @@ public class RepetitiveConditionsWindow
 	public double RunTimeGreaterValue {
 		get { return Convert.ToDouble(spinbutton_time_greater.Value); }
 	}
-
 	public double RunTimeLowerValue {
 		get { return Convert.ToDouble(spinbutton_time_lower.Value); }
 	}
 
 	/* ENCODER */
+	public bool EncoderHeightHigher {
+		get { return checkbutton_encoder_height_higher.Active; }
+	}
+	public double EncoderHeightHigherValue {
+		get { return Convert.ToDouble(spinbutton_encoder_height_higher.Value); }
+	}
+	
+	public bool EncoderHeightLower {
+		get { return checkbutton_encoder_height_lower.Active; }
+	}
+	public double EncoderHeightLowerValue {
+		get { return Convert.ToDouble(spinbutton_encoder_height_lower.Value); }
+	}
+
+	public bool EncoderMeanSpeedHigher {
+		get { return checkbutton_encoder_mean_speed_higher.Active; }
+	}
+	public double EncoderMeanSpeedHigherValue {
+		get { return Convert.ToDouble(spinbutton_encoder_mean_speed_higher.Value); }
+	}
+	
+	public bool EncoderMeanSpeedLower {
+		get { return checkbutton_encoder_mean_speed_lower.Active; }
+	}
+	public double EncoderMeanSpeedLowerValue {
+		get { return Convert.ToDouble(spinbutton_encoder_mean_speed_lower.Value); }
+	}
+
+	public bool EncoderMaxSpeedHigher {
+		get { return checkbutton_encoder_max_speed_higher.Active; }
+	}
+	public double EncoderMaxSpeedHigherValue {
+		get { return Convert.ToDouble(spinbutton_encoder_max_speed_higher.Value); }
+	}
+	
+	public bool EncoderMaxSpeedLower {
+		get { return checkbutton_encoder_max_speed_lower.Active; }
+	}
+	public double EncoderMaxSpeedLowerValue {
+		get { return Convert.ToDouble(spinbutton_encoder_max_speed_lower.Value); }
+	}
+
 	public bool EncoderPowerHigher {
 		get { return checkbutton_encoder_power_higher.Active; }
 	}
 	public int EncoderPowerHigherValue {
 		get { return Convert.ToInt32(spinbutton_encoder_power_higher.Value); }
 	}
+	
+	public bool EncoderPowerLower {
+		get { return checkbutton_encoder_power_lower.Active; }
+	}
+	public int EncoderPowerLowerValue {
+		get { return Convert.ToInt32(spinbutton_encoder_power_lower.Value); }
+	}
 
 	public bool EncoderPeakPowerHigher {
 		get { return checkbutton_encoder_peakpower_higher.Active; }
@@ -377,13 +454,6 @@ public class RepetitiveConditionsWindow
 		get { return Convert.ToInt32(spinbutton_encoder_peakpower_higher.Value); }
 	}
 
-	public bool EncoderPowerLower {
-		get { return checkbutton_encoder_power_lower.Active; }
-	}
-	public int EncoderPowerLowerValue {
-		get { return Convert.ToInt32(spinbutton_encoder_power_lower.Value); }
-	}
-
 	public bool EncoderPeakPowerLower {
 		get { return checkbutton_encoder_peakpower_lower.Active; }
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]