[chronojump] 0.8.9.0
- From: Xavier de Blas <xaviblas src gnome org>
- To: svn-commits-list gnome org
- Subject: [chronojump] 0.8.9.0
- Date: Mon, 4 May 2009 10:04:38 -0400 (EDT)
commit d21f0b7c81859fe7ebdd59b8f900b03417abce38
Author: Xavier de Blas <xaviblas gmail com>
Date: Mon May 4 16:03:10 2009 +0200
0.8.9.0
start logo changed to 0.9
runanalysis execute test done
multiChronopic deleteFirst done
multiChronopic export done
client/server code for upload multichronopic
dialog_server_stats with multiChronopic
added maximum jump and its graphs (git added)
runAnalysis is no longer a jumpRjType on sql
added reactionTime graph (git added)
gesell_dbt in 3d
improvemenents on session_upload window
updated sqlite disagrams
when createBlankDBServer is called, client new version is printed automatically
---
Makefile | 2 +
TODO.txt | 15 +-
build/data/chronojump.prg | Bin 2951168 -> 3010560 bytes
build/data/chronojump_mini.prg | Bin 39936 -> 40448 bytes
build/data/version.txt | 2 +-
changelog.txt | 18 +
chronojump_server/ChronojumpServer.cs | 109 +++
chronojump_server/bin/chronojumpServer.dll | Bin 244736 -> 263168 bytes
chronojump_server/chronojumpServerCSharp.cs | 10 +
glade/chronojump.glade | 1079 +++++++++++++++------------
images/chronojump_320.png | Bin 31769 -> 32313 bytes
images/gesell_dbt.png | Bin 7009 -> 18291 bytes
images/jump_max.png | Bin 0 -> 9826 bytes
images/mini/gesell_dbt.png | Bin 3320 -> 7684 bytes
images/mini/jump_max.png | Bin 0 -> 4906 bytes
images/mini/multiChronopic.png | Bin 2954 -> 2873 bytes
images/mini/reaction_time.png | Bin 0 -> 5013 bytes
images/multiChronopic.png | Bin 5528 -> 5500 bytes
images/reaction_time.png | Bin 0 -> 10214 bytes
images/svg/bosco_jumps.svg | 199 +++++-
sqlite_diagrams/chronojump_sqlite.dia | Bin 10139 -> 11146 bytes
sqlite_diagrams/chronojump_sqlite.png | Bin 199982 -> 309302 bytes
src/chronojump.cs | 7 +-
src/constants.cs | 3 +-
src/execute/multiChronopic.cs | 90 ++-
src/exportSession.cs | 119 +++
src/gui/chronojump.cs | 147 +++--
src/gui/dialogServerStats.cs | 8 +
src/gui/eventExecute.cs | 30 +-
src/gui/server.cs | 19 +-
src/jumpType.cs | 8 +-
src/multiChronopic.cs | 68 ++-
src/multiChronopicType.cs | 4 +-
src/reactionTimeType.cs | 8 +
src/server.cs | 33 +
src/sqlite/jumpType.cs | 4 +-
src/sqlite/main.cs | 22 +-
src/sqlite/personSession.cs | 2 +-
src/sqlite/server.cs | 2 +
src/treeViewMultiChronopic.cs | 50 +-
src/util.cs | 8 +
version.txt | 2 +-
42 files changed, 1411 insertions(+), 657 deletions(-)
diff --git a/Makefile b/Makefile
index 2b1e267..25f4121 100644
--- a/Makefile
+++ b/Makefile
@@ -62,6 +62,7 @@ RESOURCES_IMAGES = -resource:images/mini/no_image.png,mini/no_image.png \
-resource:images/jump_cmj_l.png,jump_cmj_l.png -resource:images/mini/jump_cmj_l.png,mini/jump_cmj_l.png \
-resource:images/jump_abk.png,jump_abk.png -resource:images/mini/jump_abk.png,mini/jump_abk.png \
-resource:images/jump_abk_l.png,jump_abk_l.png -resource:images/mini/jump_abk_l.png,mini/jump_abk_l.png \
+ -resource:images/jump_max.png,jump_max.png -resource:images/mini/jump_max.png,mini/jump_max.png \
-resource:images/jump_dj.png,jump_dj.png -resource:images/mini/jump_dj.png,mini/jump_dj.png \
-resource:images/jump_rocket.png,jump_rocket.png -resource:images/mini/jump_rocket.png,mini/jump_rocket.png \
-resource:images/jump_rj.png,jump_rj.png -resource:images/mini/jump_rj.png,mini/jump_rj.png \
@@ -75,6 +76,7 @@ RESOURCES_IMAGES = -resource:images/mini/no_image.png,mini/no_image.png \
-resource:images/run_analysis.png,run_analysis.png -resource:images/mini/run_analysis.png,mini/run_analysis.png \
-resource:images/pulse_free.png,pulse_free.png -resource:images/mini/pulse_free.png,mini/pulse_free.png \
-resource:images/pulse_custom.png,pulse_custom.png -resource:images/mini/pulse_custom.png,mini/pulse_custom.png \
+ -resource:images/reaction_time.png,reaction_time.png -resource:images/mini/reaction_time.png,mini/reaction_time.png \
-resource:images/mtgug.png,mtgug.png -resource:images/mini/mtgug.png,mini/mtgug.png \
-resource:images/take_off.png,take_off.png -resource:images/mini/take_off.png,mini/take_off.png \
-resource:images/chronopic1.jpg,chronopic1.jpg -resource:images/mini/chronopic1.jpg,mini/chronopic1.jpg \
diff --git a/TODO.txt b/TODO.txt
index 0421104..332e16b 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -6,13 +6,11 @@ work done (30 apr (2)), just do more tests
2.- the sqlite problem with the thread at start... need to explore more
multiChronopic:
-(when press two for full finishing, say that then it will be recorded)
-repair
-tempTable
--export
+-upload server
new multichronopic tests:
--do button enter
- padu runAnalysis (2cp): out of jumpRj and going to multichronopic (also in menu)
- discrimitative reaction time with two lights and two fotocells (or platforms)
(4cp) when evaluator push left or right button, cp 1 or cp2 lights, person has to cross fotocell a or b (connected to cp 3, 4)
@@ -27,13 +25,13 @@ http://cran.r-project.org/web/packages/RSQLite/index.html
http://cran.r-project.org/web/packages/RSQLite/INSTALL
http://cran.r-project.org/web/packages/DBI/index.html
-all this will be release 0.9
-
do the ping gets real IP
+implement all server evaluator SAFE stuff
+
put thread in other server situations:
-upload evaluator
--upload session
+-upload session (doing) pending to generate wsdl proxy in order to download
http://en.csharp-online.net/ASP.NET_Security_Hacks¿Avoiding_SQL_Injection
http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/
@@ -42,10 +40,13 @@ c# books. Or look for ; and after alter, insert, delete, drop, update, ...
(low and hight case)
i think there will be no problems because all is parametrized
-Put pictures and description of runAnalysis. Do svn add, Makefile, ...
+Put description of runAnalysis
+Put description of reactionTime
Add longDescription on margaria
+Update manual
+
intersession stats only have to show one max or avg, not n max or all jumps
stats all and limit is not updating the treeview stats.
diff --git a/build/data/chronojump.prg b/build/data/chronojump.prg
index 81b845b..d6051f7 100755
Binary files a/build/data/chronojump.prg and b/build/data/chronojump.prg differ
diff --git a/build/data/chronojump_mini.prg b/build/data/chronojump_mini.prg
index 5a9e74b..0cf35d9 100755
Binary files a/build/data/chronojump_mini.prg and b/build/data/chronojump_mini.prg differ
diff --git a/build/data/version.txt b/build/data/version.txt
index 4810611..cc02ea7 100644
--- a/build/data/version.txt
+++ b/build/data/version.txt
@@ -1 +1 @@
-0.8.3.2
+0.8.9.0
diff --git a/changelog.txt b/changelog.txt
index 707a85e..f9dd696 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,5 +1,22 @@
CHANGELOG.txt
+ 0.8.9.0
+ start logo changed to 0.9
+ runanalysis execute test done
+ multiChronopic deleteFirst done
+ multiChronopic export done
+ client/server code for upload multichronopic
+ dialog_server_stats with multiChronopic
+
+ added maximum jump and its graphs (git added)
+ runAnalysis is no longer a jumpRjType on sql
+ added reactionTime graph (git added)
+ gesell_dbt in 3d
+ improvemenents on session_upload window
+
+ updated sqlite disagrams
+ when createBlankDBServer is called, client new version is printed automatically
+
30 apr 2009 (2)
added graphs for multiChronopic and runAnalysis
multiChronopic sync is done or not depending on multiChronopic type
@@ -7,6 +24,7 @@ CHANGELOG.txt
improvements on threading on multiChronopic, now finishing will not record event 4 times
improvements on (really few sometimes) crash when splash win is created too late (findversion error)
+ button enter done for multiChronopic and runAnalysis
30 apr 2009
new test Gesell-DBT test new db: 0.69
diff --git a/chronojump_server/ChronojumpServer.cs b/chronojump_server/ChronojumpServer.cs
index 744b725..af84813 100644
--- a/chronojump_server/ChronojumpServer.cs
+++ b/chronojump_server/ChronojumpServer.cs
@@ -66,6 +66,8 @@ public class ChronojumpServer : System.Web.Services.Protocols.SoapHttpClientProt
private System.Threading.SendOrPostCallback UploadPulseOperationCompleted;
+ private System.Threading.SendOrPostCallback UploadMultiChronopicOperationCompleted;
+
private System.Threading.SendOrPostCallback ListDirectoryOperationCompleted;
public ChronojumpServer() {
@@ -116,6 +118,8 @@ public class ChronojumpServer : System.Web.Services.Protocols.SoapHttpClientProt
private event UploadPulseCompletedEventHandler UploadPulseCompleted;
+ private event UploadMultiChronopicCompletedEventHandler UploadMultiChronopicCompleted;
+
private event ListDirectoryCompletedEventHandler ListDirectoryCompleted;
/// <remarks>
@@ -1001,6 +1005,45 @@ public class ChronojumpServer : System.Web.Services.Protocols.SoapHttpClientProt
}
/// <remarks>
+///Upload a multiChronopic
+///</remarks>
+ [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://server.chronojump.org/UploadMultiChronopic", RequestNamespace="http://server.chronojump.org/", ResponseNamespace="http://server.chronojump.org/", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int UploadMultiChronopic(MultiChronopic myTest) {
+ object[] results = this.Invoke("UploadMultiChronopic", new object[] {
+ myTest});
+ return ((int)(results[0]));
+ }
+
+ public System.IAsyncResult BeginUploadMultiChronopic(MultiChronopic myTest, System.AsyncCallback callback, object asyncState) {
+ return this.BeginInvoke("UploadMultiChronopic", new object[] {
+ myTest}, callback, asyncState);
+ }
+
+ public int EndUploadMultiChronopic(System.IAsyncResult asyncResult) {
+ object[] results = this.EndInvoke(asyncResult);
+ return ((int)(results[0]));
+ }
+
+ public void UploadMultiChronopicAsync(MultiChronopic myTest) {
+ this.UploadMultiChronopicAsync(myTest, null);
+ }
+
+ public void UploadMultiChronopicAsync(MultiChronopic myTest, object userState) {
+ if ((this.UploadMultiChronopicOperationCompleted == null)) {
+ this.UploadMultiChronopicOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUploadMultiChronopicCompleted);
+ }
+ this.InvokeAsync("UploadMultiChronopic", new object[] {
+ myTest}, this.UploadMultiChronopicOperationCompleted, userState);
+ }
+
+ private void OnUploadMultiChronopicCompleted(object arg) {
+ if ((this.UploadMultiChronopicCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.UploadMultiChronopicCompleted(this, new UploadMultiChronopicCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks>
///List directory files (only as a sample)
///</remarks>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://server.chronojump.org/ListDirectory", RequestNamespace="http://server.chronojump.org/", ResponseNamespace="http://server.chronojump.org/", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, Use=System.Web.Services.Description.SoapBindingUse.Literal)]
@@ -1039,6 +1082,7 @@ public class ChronojumpServer : System.Web.Services.Protocols.SoapHttpClientProt
}
}
}
+
/*
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.42")]
@@ -1347,6 +1391,7 @@ public partial class Jump : Event {
[System.Xml.Serialization.XmlIncludeAttribute(typeof(RunInterval))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(ReactionTime))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Pulse))]
+[System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiChronopic))]
public partial class Event {
/// <remarks/>
@@ -1458,6 +1503,51 @@ public partial class Pulse : Event {
/// <remarks/>
public string TimesString;
}
+
+/// <remarks/>
+[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.42")]
+[System.SerializableAttribute()]
+[System.Diagnostics.DebuggerStepThroughAttribute()]
+[System.ComponentModel.DesignerCategoryAttribute("code")]
+[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://server.chronojump.org/")]
+public partial class MultiChronopic : Event {
+
+ /// <remarks/>
+ public int Cp1StartedIn;
+
+ /// <remarks/>
+ public int Cp2StartedIn;
+
+ /// <remarks/>
+ public int Cp3StartedIn;
+
+ /// <remarks/>
+ public int Cp4StartedIn;
+
+ /// <remarks/>
+ public string Cp1InStr;
+
+ /// <remarks/>
+ public string Cp1OutStr;
+
+ /// <remarks/>
+ public string Cp2InStr;
+
+ /// <remarks/>
+ public string Cp2OutStr;
+
+ /// <remarks/>
+ public string Cp3InStr;
+
+ /// <remarks/>
+ public string Cp3OutStr;
+
+ /// <remarks/>
+ public string Cp4InStr;
+
+ /// <remarks/>
+ public string Cp4OutStr;
+}
*/
public class ConnectDatabaseCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
@@ -1877,6 +1967,25 @@ public class UploadPulseCompletedEventArgs : System.ComponentModel.AsyncComplete
public delegate void UploadPulseCompletedEventHandler(object sender, UploadPulseCompletedEventArgs args);
+public class UploadMultiChronopicCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal UploadMultiChronopicCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+}
+
+public delegate void UploadMultiChronopicCompletedEventHandler(object sender, UploadMultiChronopicCompletedEventArgs args);
+
public class ListDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
diff --git a/chronojump_server/bin/chronojumpServer.dll b/chronojump_server/bin/chronojumpServer.dll
index 39a3667..6e6a681 100755
Binary files a/chronojump_server/bin/chronojumpServer.dll and b/chronojump_server/bin/chronojumpServer.dll differ
diff --git a/chronojump_server/chronojumpServerCSharp.cs b/chronojump_server/chronojumpServerCSharp.cs
index 4c31082..6fc187c 100755
--- a/chronojump_server/chronojumpServerCSharp.cs
+++ b/chronojump_server/chronojumpServerCSharp.cs
@@ -466,6 +466,16 @@ public class ChronojumpServer {
return id; //uniqueID of person at server
}
+ [WebMethod(Description="Upload a multiChronopic")]
+ public int UploadMultiChronopic (MultiChronopic myTest)
+ {
+ int temp = myTest.UniqueID;
+ myTest.UniqueID = -1;
+ int id = myTest.InsertAtDB(false, Constants.MultiChronopicTable);
+ myTest.UniqueID = temp;
+ return id; //uniqueID of person at server
+ }
+
[WebMethod(Description="List directory files (only as a sample)")]
public string [] ListDirectory(string path) {
diff --git a/glade/chronojump.glade b/glade/chronojump.glade
index f0173a9..4ad9e43 100644
--- a/glade/chronojump.glade
+++ b/glade/chronojump.glade
@@ -8641,7 +8641,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_new_activate" last_modification_time="Wed, 22 Sep 2004 23:55:11 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4269">
+ <widget class="GtkImage" id="image4339">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
@@ -8662,7 +8662,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_open_activate" last_modification_time="Wed, 22 Sep 2004 23:55:11 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4270">
+ <widget class="GtkImage" id="image4340">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
@@ -8683,7 +8683,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_edit_session_activate" last_modification_time="Tue, 26 Jul 2005 19:12:07 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4271">
+ <widget class="GtkImage" id="image4341">
<property name="visible">True</property>
<property name="stock">gtk-edit</property>
<property name="icon_size">1</property>
@@ -8705,7 +8705,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_delete_session_activate" last_modification_time="Thu, 28 Jul 2005 13:37:42 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4272">
+ <widget class="GtkImage" id="image4342">
<property name="visible">True</property>
<property name="stock">gtk-remove</property>
<property name="icon_size">1</property>
@@ -8733,7 +8733,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_export_session_activate" last_modification_time="Sat, 12 Feb 2005 21:57:07 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4273">
+ <widget class="GtkImage" id="image4343">
<property name="visible">True</property>
<property name="stock">gtk-convert</property>
<property name="icon_size">1</property>
@@ -8768,7 +8768,7 @@ suitable for agility tests)</property>
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image4274">
+ <widget class="GtkImage" id="image4344">
<property name="visible">True</property>
<property name="stock">gtk-connect</property>
<property name="icon_size">1</property>
@@ -8836,7 +8836,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_preferences_activate" last_modification_time="Mon, 04 Oct 2004 19:19:19 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4275">
+ <widget class="GtkImage" id="image4345">
<property name="visible">True</property>
<property name="stock">gtk-preferences</property>
<property name="icon_size">1</property>
@@ -8863,7 +8863,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_quit1_activate" last_modification_time="Wed, 22 Sep 2004 23:17:31 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4276">
+ <widget class="GtkImage" id="image4346">
<property name="visible">True</property>
<property name="stock">gtk-quit</property>
<property name="icon_size">1</property>
@@ -8897,7 +8897,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_person_add_single_activate" last_modification_time="Thu, 18 Aug 2005 23:07:39 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4277">
+ <widget class="GtkImage" id="image4347">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
@@ -8918,7 +8918,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_person_add_multiple_activate" last_modification_time="Thu, 18 Aug 2005 23:01:23 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4278">
+ <widget class="GtkImage" id="image4348">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
@@ -8945,7 +8945,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_recuperate_person_activate" last_modification_time="Sun, 12 Dec 2004 00:40:31 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4279">
+ <widget class="GtkImage" id="image4349">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
@@ -8966,7 +8966,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_recuperate_persons_from_session_activate" last_modification_time="Tue, 26 Jul 2005 19:12:07 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4280">
+ <widget class="GtkImage" id="image4350">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
@@ -8993,7 +8993,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_edit_current_person_clicked" last_modification_time="Sun, 17 Oct 2004 11:43:33 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4281">
+ <widget class="GtkImage" id="image4351">
<property name="visible">True</property>
<property name="stock">gtk-edit</property>
<property name="icon_size">1</property>
@@ -9014,7 +9014,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_show_all_person_events_activate" last_modification_time="Mon, 29 Aug 2005 09:51:24 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4282">
+ <widget class="GtkImage" id="image4352">
<property name="visible">True</property>
<property name="stock">gtk-index</property>
<property name="icon_size">1</property>
@@ -9041,7 +9041,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_delete_current_person_from_session_activate" last_modification_time="Thu, 28 Jul 2005 15:49:38 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4283">
+ <widget class="GtkImage" id="image4353">
<property name="visible">True</property>
<property name="stock">gtk-remove</property>
<property name="icon_size">1</property>
@@ -9070,7 +9070,7 @@ suitable for agility tests)</property>
<child>
<widget class="GtkMenuItem" id="execute_simple_jumps1">
<property name="visible">True</property>
- <property name="label" translatable="yes">Simple jump with no special technique</property>
+ <property name="label" translatable="yes">Execute simple jump</property>
<property name="use_underline">True</property>
<child>
@@ -9126,6 +9126,16 @@ suitable for agility tests)</property>
</child>
<child>
+ <widget class="GtkMenuItem" id="jumps_max">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Maximum Jump (like Abalakov but with free technique)</property>
+ <property name="label" translatable="yes">Max</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_normal_jump_activate" last_modification_time="Fri, 01 May 2009 11:53:57 GMT"/>
+ </widget>
+ </child>
+
+ <child>
<widget class="GtkMenuItem" id="dj">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Drop Jump</property>
@@ -9168,7 +9178,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_button_more_clicked" last_modification_time="Thu, 10 Mar 2005 18:52:25 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4284">
+ <widget class="GtkImage" id="image4354">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -9193,7 +9203,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_edit_selected_jump_clicked" last_modification_time="Sun, 17 Oct 2004 11:47:42 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4285">
+ <widget class="GtkImage" id="image4355">
<property name="visible">True</property>
<property name="stock">gtk-edit</property>
<property name="icon_size">1</property>
@@ -9214,7 +9224,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_delete_selected_jump_clicked" last_modification_time="Tue, 19 Oct 2004 11:54:17 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4286">
+ <widget class="GtkImage" id="image4356">
<property name="visible">True</property>
<property name="stock">gtk-remove</property>
<property name="icon_size">1</property>
@@ -9295,7 +9305,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_button_more_rj_clicked" last_modification_time="Fri, 11 Mar 2005 14:45:23 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4287">
+ <widget class="GtkImage" id="image4357">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -9320,7 +9330,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_edit_selected_jump_rj_clicked" last_modification_time="Sun, 07 Nov 2004 17:37:37 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4288">
+ <widget class="GtkImage" id="image4358">
<property name="visible">True</property>
<property name="stock">gtk-edit</property>
<property name="icon_size">1</property>
@@ -9341,7 +9351,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_repair_selected_reactive_jump_clicked" last_modification_time="Wed, 07 Dec 2005 01:14:11 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4289">
+ <widget class="GtkImage" id="image4359">
<property name="visible">True</property>
<property name="stock">gtk-preferences</property>
<property name="icon_size">1</property>
@@ -9362,7 +9372,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_delete_selected_jump_rj_clicked" last_modification_time="Sun, 07 Nov 2004 17:37:37 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4290">
+ <widget class="GtkImage" id="image4360">
<property name="visible">True</property>
<property name="stock">gtk-remove</property>
<property name="icon_size">1</property>
@@ -9389,7 +9399,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_jump_type_add_activate" last_modification_time="Thu, 10 Mar 2005 18:52:25 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4291">
+ <widget class="GtkImage" id="image4361">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
@@ -9552,7 +9562,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_button_run_more_clicked" last_modification_time="Fri, 22 Apr 2005 14:37:06 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4292">
+ <widget class="GtkImage" id="image4362">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -9577,7 +9587,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_edit_selected_run_clicked" last_modification_time="Fri, 22 Apr 2005 14:34:58 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4293">
+ <widget class="GtkImage" id="image4363">
<property name="visible">True</property>
<property name="stock">gtk-edit</property>
<property name="icon_size">1</property>
@@ -9598,7 +9608,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_delete_selected_run_clicked" last_modification_time="Fri, 22 Apr 2005 14:34:58 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4294">
+ <widget class="GtkImage" id="image4364">
<property name="visible">True</property>
<property name="stock">gtk-remove</property>
<property name="icon_size">1</property>
@@ -9679,7 +9689,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_button_run_interval_more_clicked" last_modification_time="Tue, 16 Aug 2005 01:18:41 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4295">
+ <widget class="GtkImage" id="image4365">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -9704,7 +9714,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_edit_selected_run_interval_clicked" last_modification_time="Tue, 16 Aug 2005 12:33:39 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4296">
+ <widget class="GtkImage" id="image4366">
<property name="visible">True</property>
<property name="stock">gtk-edit</property>
<property name="icon_size">1</property>
@@ -9725,7 +9735,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_repair_selected_run_interval_clicked" last_modification_time="Wed, 03 May 2006 15:15:38 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4297">
+ <widget class="GtkImage" id="image4367">
<property name="visible">True</property>
<property name="stock">gtk-preferences</property>
<property name="icon_size">1</property>
@@ -9746,7 +9756,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_delete_selected_run_interval_clicked" last_modification_time="Tue, 16 Aug 2005 12:33:39 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4298">
+ <widget class="GtkImage" id="image4368">
<property name="visible">True</property>
<property name="stock">gtk-remove</property>
<property name="icon_size">1</property>
@@ -9773,7 +9783,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_run_type_add_activate" last_modification_time="Fri, 22 Apr 2005 14:34:58 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4299">
+ <widget class="GtkImage" id="image4369">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
@@ -9877,7 +9887,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_menuitem_view_stats_activate" last_modification_time="Tue, 26 Jul 2005 23:54:29 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4300">
+ <widget class="GtkImage" id="image4370">
<property name="visible">True</property>
<property name="stock">gtk-refresh</property>
<property name="icon_size">1</property>
@@ -9898,7 +9908,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_show_report_activate" last_modification_time="Tue, 06 Sep 2005 09:10:32 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4301">
+ <widget class="GtkImage" id="image4371">
<property name="visible">True</property>
<property name="stock">gtk-refresh</property>
<property name="icon_size">1</property>
@@ -9966,7 +9976,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_menuitem_manual_activate" last_modification_time="Wed, 03 Oct 2007 23:31:41 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4302">
+ <widget class="GtkImage" id="image4372">
<property name="visible">True</property>
<property name="stock">gtk-info</property>
<property name="icon_size">1</property>
@@ -10002,7 +10012,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_about1_activate" last_modification_time="Wed, 22 Sep 2004 23:17:31 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4303">
+ <widget class="GtkImage" id="image4373">
<property name="visible">True</property>
<property name="stock">gtk-about</property>
<property name="icon_size">1</property>
@@ -10029,7 +10039,7 @@ suitable for agility tests)</property>
<signal name="activate" handler="on_debug_crash_activate" last_modification_time="Thu, 23 Oct 2008 22:57:02 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image4304">
+ <widget class="GtkImage" id="image4374">
<property name="visible">True</property>
<property name="stock">gtk-dialog-error</property>
<property name="icon_size">1</property>
@@ -10568,6 +10578,25 @@ suitable for agility tests)</property>
</child>
<child>
+ <widget class="GtkButton" id="button_jumps_max">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Maximum Jump (like Abalakov but with free technique)</property>
+ <property name="can_focus">True</property>
+ <property name="label">Max</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <signal name="clicked" handler="on_normal_jump_activate" last_modification_time="Sat, 02 Oct 2004 20:26:49 GMT"/>
+ <signal name="enter" handler="on_button_enter" last_modification_time="Tue, 01 May 2007 20:00:28 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
<widget class="GtkButton" id="button_dj">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Drop Jump</property>
@@ -12807,7 +12836,7 @@ suitable for agility tests)</property>
<property name="right_padding">0</property>
<child>
- <widget class="GtkButton" id="button13">
+ <widget class="GtkButton" id="button_reaction_time">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Execute reaction time</property>
@@ -12815,6 +12844,7 @@ suitable for agility tests)</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_reaction_time_activate" last_modification_time="Sun, 04 Mar 2007 19:11:16 GMT"/>
+ <signal name="enter" handler="on_button_enter" last_modification_time="Fri, 01 May 2009 11:43:59 GMT"/>
</widget>
</child>
</widget>
@@ -13492,28 +13522,6 @@ suitable for agility tests)</property>
</child>
<child>
- <widget class="GtkCheckButton" id="check_multi_sync">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Sychronize Chronopics</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">True</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
<widget class="GtkButton" id="button_multi_chronopic_start">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -13552,6 +13560,62 @@ suitable for agility tests)</property>
<property name="x_options">fill</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox352">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">4</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="check_multi_sync">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Synchronize chronopics</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Sync</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="check_multi_delete_first">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Delete first TC and TF of each chronopic</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Delete first</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
@@ -13600,7 +13664,7 @@ suitable for agility tests)</property>
<child>
<widget class="GtkLabel" id="label692">
<property name="visible">True</property>
- <property name="label" translatable="yes">1</property>
+ <property name="label">1</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -13685,7 +13749,7 @@ suitable for agility tests)</property>
<child>
<widget class="GtkLabel" id="label693">
<property name="visible">True</property>
- <property name="label" translatable="yes">2</property>
+ <property name="label">2</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -13770,7 +13834,7 @@ suitable for agility tests)</property>
<child>
<widget class="GtkLabel" id="label694">
<property name="visible">True</property>
- <property name="label" translatable="yes">3</property>
+ <property name="label">3</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -13855,7 +13919,7 @@ suitable for agility tests)</property>
<child>
<widget class="GtkLabel" id="label695">
<property name="visible">True</property>
- <property name="label" translatable="yes">4</property>
+ <property name="label">4</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -25844,7 +25908,8 @@ comments</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">True</property>
- <property name="resizable">False</property>
+ <property name="default_height">480</property>
+ <property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
@@ -25862,442 +25927,416 @@ comments</property>
<property name="spacing">8</property>
<child>
- <widget class="GtkTable" id="table48">
+ <widget class="GtkScrolledWindow" id="scrolledwindow36">
<property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">8</property>
-
- <child>
- <widget class="GtkLabel" id="label533">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Persons</b></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label534">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Tests</b></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
- <widget class="GtkTable" id="table49">
+ <widget class="GtkViewport" id="viewport5">
<property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">6</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">4</property>
- <property name="column_spacing">8</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
<child>
- <widget class="GtkLabel" id="label536">
+ <widget class="GtkTable" id="table68">
<property name="visible">True</property>
- <property name="label" translatable="yes">Jumps</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
+ <property name="n_rows">2</property>
+ <property name="n_columns">8</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">0</property>
+ <property name="column_spacing">4</property>
- <child>
- <widget class="GtkLabel" id="label537">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Jumps
+ <child>
+ <widget class="GtkLabel" id="label699">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Jumps</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label700">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Jumps
reactive</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkLabel" id="label538">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Runs</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkLabel" id="label701">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Runs</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkLabel" id="label539">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Runs
+ <child>
+ <widget class="GtkLabel" id="label702">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Runs
intervallic</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkLabel" id="label540">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Reaction
+ <child>
+ <widget class="GtkLabel" id="label703">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Reaction
times</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkLabel" id="label541">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Pulses</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkLabel" id="label704">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Pulses</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkTreeView" id="treeview_jumps_rj">
- <property name="visible">True</property>
- <property name="headers_visible">True</property>
- <property name="rules_hint">False</property>
- <property name="reorderable">False</property>
- <property name="enable_search">False</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</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>
- <property name="x_options"></property>
- <property name="y_options">fill</property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkLabel" id="label705">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Multi Chronopic</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkTreeView" id="treeview_runs">
- <property name="visible">True</property>
- <property name="headers_visible">True</property>
- <property name="rules_hint">False</property>
- <property name="reorderable">False</property>
- <property name="enable_search">False</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</property>
- </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">fill</property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkTreeView" id="treeview_jumps_rj">
+ <property name="visible">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </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="y_options">fill</property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkTreeView" id="treeview_runs_i">
- <property name="visible">True</property>
- <property name="headers_visible">True</property>
- <property name="rules_hint">False</property>
- <property name="reorderable">False</property>
- <property name="enable_search">False</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</property>
- </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">fill</property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkTreeView" id="treeview_runs">
+ <property name="visible">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </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="y_options">fill</property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkTreeView" id="treeview_rts">
- <property name="visible">True</property>
- <property name="headers_visible">True</property>
- <property name="rules_hint">False</property>
- <property name="reorderable">False</property>
- <property name="enable_search">False</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</property>
- </widget>
- <packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"></property>
- <property name="y_options">fill</property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkTreeView" id="treeview_runs_i">
+ <property name="visible">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkTreeView" id="treeview_pulses">
- <property name="visible">True</property>
- <property name="headers_visible">True</property>
- <property name="rules_hint">False</property>
- <property name="reorderable">False</property>
- <property name="enable_search">False</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</property>
- </widget>
- <packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"></property>
- <property name="y_options">fill</property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkTreeView" id="treeview_rts">
+ <property name="visible">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkTreeView" id="treeview_jumps">
- <property name="visible">True</property>
- <property name="headers_visible">True</property>
- <property name="rules_hint">False</property>
- <property name="reorderable">False</property>
- <property name="enable_search">False</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"></property>
- <property name="y_options">fill</property>
- </packing>
- </child>
- </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="y_options">fill</property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkTreeView" id="treeview_pulses">
+ <property name="visible">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkVBox" id="vbox148">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">4</property>
+ <child>
+ <widget class="GtkTreeView" id="treeview_mcs">
+ <property name="visible">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkLabel" id="label535">
- <property name="visible">True</property>
- <property name="label">
-</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkTreeView" id="treeview_persons">
+ <property name="visible">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkTreeView" id="treeview_persons">
- <property name="visible">True</property>
- <property name="headers_visible">True</property>
- <property name="rules_hint">False</property>
- <property name="reorderable">False</property>
- <property name="enable_search">False</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</property>
+ <child>
+ <widget class="GtkLabel" id="label698">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Persons</b></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview_jumps">
+ <property name="visible">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</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>
</widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
</child>
</widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options">fill</property>
- </packing>
</child>
</widget>
<packing>
@@ -26530,13 +26569,13 @@ times</property>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
@@ -26565,7 +26604,7 @@ times</property>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
- <property name="fill">True</property>
+ <property name="fill">False</property>
</packing>
</child>
</widget>
@@ -27002,7 +27041,7 @@ by you</property>
<child>
<widget class="GtkTable" id="table51">
<property name="visible">True</property>
- <property name="n_rows">7</property>
+ <property name="n_rows">8</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
@@ -27568,6 +27607,90 @@ by you</property>
<property name="y_options"></property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkLabel" id="label706">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">MultiChronopic</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_multichronopic_server">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_multichronopic_you">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
diff --git a/images/chronojump_320.png b/images/chronojump_320.png
index 89b54a7..2b5b9f1 100644
Binary files a/images/chronojump_320.png and b/images/chronojump_320.png differ
diff --git a/images/gesell_dbt.png b/images/gesell_dbt.png
index d39e437..f2f6305 100644
Binary files a/images/gesell_dbt.png and b/images/gesell_dbt.png differ
diff --git a/images/jump_max.png b/images/jump_max.png
new file mode 100644
index 0000000..8184ea0
Binary files /dev/null and b/images/jump_max.png differ
diff --git a/images/mini/gesell_dbt.png b/images/mini/gesell_dbt.png
index 1a63852..f29d1fc 100644
Binary files a/images/mini/gesell_dbt.png and b/images/mini/gesell_dbt.png differ
diff --git a/images/mini/jump_max.png b/images/mini/jump_max.png
new file mode 100644
index 0000000..0a1f2d4
Binary files /dev/null and b/images/mini/jump_max.png differ
diff --git a/images/mini/multiChronopic.png b/images/mini/multiChronopic.png
index 8839520..64794cc 100644
Binary files a/images/mini/multiChronopic.png and b/images/mini/multiChronopic.png differ
diff --git a/images/mini/reaction_time.png b/images/mini/reaction_time.png
new file mode 100644
index 0000000..04e65be
Binary files /dev/null and b/images/mini/reaction_time.png differ
diff --git a/images/multiChronopic.png b/images/multiChronopic.png
index 1793b3c..5c6fbc2 100644
Binary files a/images/multiChronopic.png and b/images/multiChronopic.png differ
diff --git a/images/reaction_time.png b/images/reaction_time.png
new file mode 100644
index 0000000..080bb76
Binary files /dev/null and b/images/reaction_time.png differ
diff --git a/images/svg/bosco_jumps.svg b/images/svg/bosco_jumps.svg
index 5f4dee6..c010622 100644
--- a/images/svg/bosco_jumps.svg
+++ b/images/svg/bosco_jumps.svg
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
+ xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
@@ -9,7 +9,7 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="500"
id="svg1507"
- inkscape:version="0.45"
+ inkscape:version="0.46"
sodipodi:version="0.32"
width="500"
version="1.0"
@@ -33,15 +33,15 @@
borderopacity="1.0"
id="base"
inkscape:current-layer="svg1507"
- inkscape:cx="412.21323"
- inkscape:cy="411.98008"
- inkscape:pageopacity="0.0"
+ inkscape:cx="249.41916"
+ inkscape:cy="251.15186"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-height="691"
- inkscape:window-width="1024"
+ inkscape:window-width="1022"
inkscape:window-x="0"
inkscape:window-y="25"
- inkscape:zoom="2.6926626"
+ inkscape:zoom="0.74380693"
pagecolor="#ffffff"
showguides="true"
inkscape:guide-bbox="true"
@@ -111,6 +111,13 @@
</sodipodi:namedview>
<defs
id="defs1509">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 250 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="500 : 250 : 1"
+ inkscape:persp3d-origin="250 : 166.66667 : 1"
+ id="perspective2810" />
<marker
inkscape:stockid="TriangleInS"
orient="auto"
@@ -234,8 +241,8 @@
id="rect3163"
width="105.68886"
height="133.49869"
- x="276.80402"
- y="341.50131" />
+ x="238.98889"
+ y="358.43973" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2479"
@@ -269,8 +276,8 @@
id="rect13272"
width="72.63607"
height="113.81557"
- x="157.04536"
- y="357.29092" />
+ x="119.23024"
+ y="374.22934" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect13270"
@@ -837,16 +844,16 @@
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- x="171.40369"
- y="350.11691"
+ x="133.58856"
+ y="367.05533"
id="text10098"><tspan
sodipodi:role="line"
id="tspan10100"
- x="171.40369"
- y="350.11691">RJ startIn</tspan></text>
+ x="133.58856"
+ y="367.05533">RJ startIn</tspan></text>
<g
id="g2720"
- transform="translate(33.592437,27.836134)">
+ transform="translate(-4.2226893,44.77456)">
<path
id="path10104"
d="M 162.96212,408.05366 L 162.96212,392.63003"
@@ -865,7 +872,7 @@
<path
style="fill:#000000;stroke:none"
id="path10134"
- d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z " />
+ d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z" />
<path
style="fill:#000000;stroke:none"
id="path10136"
@@ -899,7 +906,7 @@
<path
style="fill:#000000;stroke:none"
id="path10152"
- d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z " />
+ d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z" />
<path
style="fill:#000000;stroke:none"
id="path10154"
@@ -1345,7 +1352,7 @@
y="314.91913">RJ</tspan></text>
<g
id="g3207"
- transform="translate(78.256303,20.483193)">
+ transform="translate(40.441177,37.421619)">
<g
transform="translate(13.321559,160.03121)"
id="g2780">
@@ -1360,7 +1367,7 @@
transform="matrix(0.1406052,-1.499527e-2,1.499527e-2,0.1406052,182.19433,208.02859)"
id="g2786">
<path
- d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z "
+ d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z"
id="path2788"
style="fill:#000000;stroke:none" />
<path
@@ -1416,7 +1423,7 @@
<path
style="fill:#000000;stroke:none"
id="path2911"
- d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z " />
+ d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z" />
<path
style="fill:#000000;stroke:none"
id="path2913"
@@ -1441,7 +1448,7 @@
<path
style="fill:#000000;stroke:none"
id="path2818"
- d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z " />
+ d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z" />
<path
style="fill:#000000;stroke:none"
id="path2820"
@@ -1475,13 +1482,13 @@
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- x="308.42969"
- y="334.77344"
+ x="270.61456"
+ y="351.71185"
id="text3110"><tspan
sodipodi:role="line"
id="tspan3112"
- x="308.42969"
- y="334.77344">Free</tspan></text>
+ x="270.61456"
+ y="351.71185">Free</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
@@ -2012,4 +2019,144 @@
</g>
</g>
</g>
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="449.77493"
+ y="332.83084"
+ id="text2812"><tspan
+ sodipodi:role="line"
+ id="tspan2814"
+ x="449.77493"
+ y="332.83084">Max</tspan></text>
+ <g
+ id="g3036"
+ transform="translate(-389.79218,341.18221)"
+ inkscape:export-filename="/home/xavier/informatica/progs_meus/chronojump/chronojump/images/mini/jump_max.png"
+ inkscape:export-xdpi="101.58866"
+ inkscape:export-ydpi="101.58866">
+ <g
+ transform="translate(574.42876,-147.0087)"
+ id="g2819">
+ <g
+ id="g2821">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path2823"
+ d="M 194.76769,221.77246 L 194.49048,247.7019 L 194.12151,270.92511 L 193.91346,286.44535"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.32092023;stroke-linecap:round;stroke-linejoin:round;marker-start:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ transform="matrix(0.1406052,-1.499527e-2,1.499527e-2,0.1406052,182.19433,208.02859)"
+ id="g2825">
+ <path
+ d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z"
+ id="path2827"
+ style="fill:#000000;stroke:none" />
+ <path
+ d=""
+ id="path2829"
+ style="fill:#000000;stroke:none" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path2831"
+ d="M 194.68091,221.79113 L 210.88738,224.48791 L 218.43351,207.85656"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.62464416;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.62464404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 190.0254,290.48733 L 201.25216,290.42139"
+ id="path2833" />
+ </g>
+ <g
+ transform="translate(578.42876,-147.64747)"
+ id="g2835">
+ <g
+ id="g2837"
+ transform="translate(207.64664,-0.6635752)">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path2839"
+ d="M 62.706424,200.8781 L 62.429209,226.80754 L 62.060243,250.03075 L 61.852188,265.55099"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.32092023;stroke-linecap:round;stroke-linejoin:round;marker-start:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ transform="matrix(0.1406052,-1.499527e-2,1.499527e-2,0.1406052,50.133065,187.13423)"
+ id="g2841">
+ <path
+ d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z"
+ id="path2843"
+ style="fill:#000000;stroke:none" />
+ <path
+ d=""
+ id="path2845"
+ style="fill:#000000;stroke:none" />
+ </g>
+ <path
+ id="path2847"
+ d="M 60.50767,268.20638 L 63.38999,279.05704"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.62464404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.62464416;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 270.23303,199.95803 L 271.78134,178.63172 L 272.60915,162.00037"
+ id="path2849"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <path
+ id="path2851"
+ d="M 837.34888,79.902608 L 837.34888,64.478978"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#008b00;stroke-width:3.71499991;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#TriangleOutS);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path2853"
+ d="M 783.76083,95.14755 L 783.76083,110.57118"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#008b00;stroke-width:3.71499991;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#TriangleOutS);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path2855"
+ d="M 761.0115,145.39663 L 784.59065,145.32376"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#006f8a;stroke-width:2.06560731;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path2859"
+ d="M 796.51411,143.39506 L 808.1481,143.36481"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.68355179;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path2861"
+ d="M 816.80897,106.01536 L 796.31353,120.80441 L 813.70521,126.42794 L 799.77975,140.24935"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.40507388;stroke-linecap:round;stroke-linejoin:round;marker-start:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ transform="matrix(0.1457033,-1.5538982e-2,1.5538982e-2,0.1457033,811.62779,97.104288)"
+ id="g2863">
+ <path
+ d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z"
+ id="path2865"
+ style="fill:#000000;stroke:none" />
+ <path
+ d=""
+ id="path2867"
+ style="fill:#000000;stroke:none" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path2869"
+ d="M 818.64329,104.68602 L 816.72778,118.41974 L 826.59744,126.10844"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.68355167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path2879"
+ d="M 792.39405,145.39663 L 815.9732,145.32376"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#006f8a;stroke-width:2.06560731;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path2881"
+ d="M 836.1261,145.39663 L 859.70525,145.32376"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#006f8a;stroke-width:2.06560731;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text2981"
+ y="132.11501"
+ x="801.41681"
+ style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="132.11501"
+ x="801.41681"
+ id="tspan2983"
+ sodipodi:role="line">?</tspan></text>
+ </g>
</svg>
diff --git a/sqlite_diagrams/chronojump_sqlite.dia b/sqlite_diagrams/chronojump_sqlite.dia
index 50806fa..0aa86e2 100644
Binary files a/sqlite_diagrams/chronojump_sqlite.dia and b/sqlite_diagrams/chronojump_sqlite.dia differ
diff --git a/sqlite_diagrams/chronojump_sqlite.png b/sqlite_diagrams/chronojump_sqlite.png
index fe57d04..824ba50 100644
Binary files a/sqlite_diagrams/chronojump_sqlite.png and b/sqlite_diagrams/chronojump_sqlite.png differ
diff --git a/src/chronojump.cs b/src/chronojump.cs
index a5fcf21..18ee7ff 100644
--- a/src/chronojump.cs
+++ b/src/chronojump.cs
@@ -388,7 +388,6 @@ Console.WriteLine("--6--");
private static void createBlankDBServer() {
Log.WriteLine("Creating blank database for server");
- Log.WriteLine("Creating blank database for server2");
if(Sqlite.CheckFileServer())
Console.WriteLine("File already exists. Cannot create.");
else {
@@ -396,6 +395,10 @@ Console.WriteLine("--6--");
Sqlite.CreateFile();
Sqlite.CreateTables(true); //server
Console.WriteLine("Done! Exiting");
+ string myVersion = readVersion();
+ Console.WriteLine("CAUTION: client info about versionAvailable (on server): " + myVersion);
+ SqlitePreferences.Update ("availableVersion", myVersion, true);
+ Console.WriteLine("Maybe you don't want to show this version on pings, change it to last stable published version");
}
}
@@ -557,7 +560,7 @@ Console.WriteLine("--6--");
return returnString;
}
- private string readVersion() {
+ private static string readVersion() {
string version = "";
try {
StreamReader reader = File.OpenText(Constants.FileNameVersion);
diff --git a/src/constants.cs b/src/constants.cs
index 6e1e5d4..5ae2531 100644
--- a/src/constants.cs
+++ b/src/constants.cs
@@ -42,7 +42,7 @@ public class Constants
public const string IubIndexFormula = "IUB (abk-cmj)/cmj *100";
//tests types
- public enum TestTypes { JUMP, JUMP_RJ, RUN, RUN_I, RT, PULSE }
+ public enum TestTypes { JUMP, JUMP_RJ, RUN, RUN_I, RT, PULSE, MULTICHRONOPIC }
//sqlite tables
//instead of typing the tableName directly (that can crash if it's bad written and it's not detected by compiler)
@@ -114,6 +114,7 @@ public class Constants
};
+ public static string MultiChronopicName = "MultiChronopic";
public static string RunAnalysisName = "RunAnalysis"; //Josep Ma Padullés test
public static string TakeOffName = "TakeOff"; //translate (take off?)
public static string TakeOffWeightName = "TakeOffWeight"; //translate (take off?)
diff --git a/src/execute/multiChronopic.cs b/src/execute/multiChronopic.cs
index d9b9124..2b51483 100644
--- a/src/execute/multiChronopic.cs
+++ b/src/execute/multiChronopic.cs
@@ -61,6 +61,7 @@ public class MultiChronopicExecute : EventExecute
bool cp4StartedIn;
bool syncFirst;
+ bool deleteFirst;
private enum syncStates { NOTHING, CONTACTED, DONE } //done == released
static bool firstValue;
@@ -73,7 +74,7 @@ public class MultiChronopicExecute : EventExecute
//execution
public MultiChronopicExecute(EventExecuteWindow eventExecuteWin, int personID, string personName, int sessionID, string type,
- Chronopic cp, bool syncFirst, Gtk.Statusbar appbar, Gtk.Window app) {
+ Chronopic cp, bool syncFirst, bool deleteFirst, Gtk.Statusbar appbar, Gtk.Window app) {
this.eventExecuteWin = eventExecuteWin;
this.personID = personID;
this.personName = personName;
@@ -82,6 +83,7 @@ public class MultiChronopicExecute : EventExecute
this.cp = cp;
this.syncFirst = syncFirst;
+ this.deleteFirst = deleteFirst;
this.appbar = appbar;
this.app = app;
@@ -91,7 +93,7 @@ public class MultiChronopicExecute : EventExecute
}
public MultiChronopicExecute(EventExecuteWindow eventExecuteWin, int personID, string personName, int sessionID, string type,
- Chronopic cp, Chronopic cp2, bool syncFirst, Gtk.Statusbar appbar, Gtk.Window app) {
+ Chronopic cp, Chronopic cp2, bool syncFirst, bool deleteFirst, Gtk.Statusbar appbar, Gtk.Window app) {
this.eventExecuteWin = eventExecuteWin;
this.personID = personID;
this.personName = personName;
@@ -101,6 +103,7 @@ public class MultiChronopicExecute : EventExecute
this.cp = cp;
this.cp2 = cp2;
this.syncFirst = syncFirst;
+ this.deleteFirst = deleteFirst;
this.appbar = appbar;
this.app = app;
@@ -110,7 +113,7 @@ public class MultiChronopicExecute : EventExecute
}
public MultiChronopicExecute(EventExecuteWindow eventExecuteWin, int personID, string personName, int sessionID, string type,
- Chronopic cp, Chronopic cp2, Chronopic cp3, bool syncFirst, Gtk.Statusbar appbar, Gtk.Window app) {
+ Chronopic cp, Chronopic cp2, Chronopic cp3, bool syncFirst, bool deleteFirst, Gtk.Statusbar appbar, Gtk.Window app) {
this.eventExecuteWin = eventExecuteWin;
this.personID = personID;
this.personName = personName;
@@ -121,6 +124,7 @@ public class MultiChronopicExecute : EventExecute
this.cp2 = cp2;
this.cp3 = cp3;
this.syncFirst = syncFirst;
+ this.deleteFirst = deleteFirst;
this.appbar = appbar;
this.app = app;
@@ -130,7 +134,7 @@ public class MultiChronopicExecute : EventExecute
}
public MultiChronopicExecute(EventExecuteWindow eventExecuteWin, int personID, string personName, int sessionID, string type,
- Chronopic cp, Chronopic cp2, Chronopic cp3, Chronopic cp4, bool syncFirst, Gtk.Statusbar appbar, Gtk.Window app) {
+ Chronopic cp, Chronopic cp2, Chronopic cp3, Chronopic cp4, bool syncFirst, bool deleteFirst, Gtk.Statusbar appbar, Gtk.Window app) {
this.eventExecuteWin = eventExecuteWin;
this.personID = personID;
this.personName = personName;
@@ -142,6 +146,7 @@ public class MultiChronopicExecute : EventExecute
this.cp3 = cp3;
this.cp4 = cp4;
this.syncFirst = syncFirst;
+ this.deleteFirst = deleteFirst;
this.appbar = appbar;
this.app = app;
@@ -164,6 +169,12 @@ public class MultiChronopicExecute : EventExecute
cp4InStr = "";
cp4OutStr = "";
+ if(type == Constants.RunAnalysisName) {
+ syncFirst = false;
+ deleteFirst = false;
+ }
+
+
//initialize eventDone as a mc
eventDone = new MultiChronopic();
}
@@ -253,9 +264,8 @@ public class MultiChronopicExecute : EventExecute
}
firstValue = true;
- writingStarted = false;
-
-
+ //writingStarted = false;
+
//start thread
if(chronopics > 0) {
thread = new Thread(new ThreadStart(waitEventPre));
@@ -304,9 +314,13 @@ public class MultiChronopicExecute : EventExecute
string outEqual = "";
inStr = ""; outStr = "";
+ int runAnalysisTcCount = 0;
+
+ bool isFirstOut = true;
+ bool isFirstIn = true;
syncStates syncing = syncStates.DONE;
- if(syncFirst) {
+ if(type != Constants.RunAnalysisName || syncFirst) {
syncing = syncStates.NOTHING;
syncMessage = Catalog.GetString("Press Test button in all Chronopics simultaneously.");
needShowSyncMessage = true;
@@ -341,19 +355,43 @@ public class MultiChronopicExecute : EventExecute
needShowSyncMessage = true;
}
else {
- needSensitiveButtonFinish = true;
+ if(type != Constants.RunAnalysisName)
+ needSensitiveButtonFinish = true;
if(myPS == Chronopic.Plataforma.ON && myLS == States.OFF) {
- double lastOut = timestamp/1000.0;
- Log.WriteLine(cpNum.ToString() + " landed: " + lastOut.ToString());
- outStr = outStr + outEqual + lastOut.ToString();
- outEqual = "=";
+ //this is for multiChronopic, not for runAnalysis
+ if(deleteFirst && isFirstOut)
+ isFirstOut = false;
+ else {
+ double lastOut = timestamp/1000.0;
+ Log.WriteLine(cpNum.ToString() + " landed: " + lastOut.ToString());
+ outStr = outStr + outEqual + lastOut.ToString();
+ outEqual = "=";
+ }
+ /*
+ if it's a runAnalysis,
+ should end when arrive at 2n photocell (controlled by cp1)
+ */
+ if(cpNum == 1 && type == Constants.RunAnalysisName) {
+ runAnalysisTcCount ++;
+ if(runAnalysisTcCount == 2) {
+ success = true;
+ //better call also finish
+ //then all cps know about ending
+ finish = true;
+ }
+ }
}
else if(myPS == Chronopic.Plataforma.OFF && myLS == States.ON) {
- double lastIn = timestamp/1000.0;
- Log.WriteLine(cpNum.ToString() + " jumped: " + lastIn.ToString());
- inStr = inStr + inEqual + lastIn.ToString();
- inEqual = "=";
+ //this is for multiChronopic, not for runAnalysis
+ if(deleteFirst && isFirstIn)
+ isFirstIn = false;
+ else {
+ double lastIn = timestamp/1000.0;
+ Log.WriteLine(cpNum.ToString() + " jumped: " + lastIn.ToString());
+ inStr = inStr + inEqual + lastIn.ToString();
+ inEqual = "=";
+ }
}
prepareEventGraphMultiChronopic = new PrepareEventGraphMultiChronopic(
@@ -382,13 +420,16 @@ public class MultiChronopicExecute : EventExecute
} while ( ! success && ! cancel && ! finish );
if (finish) {
+ finishThisCp(cpNum);
+
//call write on gui/chronojump.cs, because if done in execute/MultiChronopic,
//will be called n times if n chronopics are working
//write(false); //tempTable
//event will be raised, and managed in chronojump.cs
- fakeButtonFinished.Click();
- finishThisCp(cpNum);
+ //only one call (that comes from first chronopic)
+ if(cpNum == 1)
+ fakeButtonFinished.Click();
}
if(cancel) {
//event will be raised, and managed in chronojump.cs
@@ -439,15 +480,15 @@ public class MultiChronopicExecute : EventExecute
maybe we come here four times, one for any chronopic,
best is to put one bool in order to only let on get inside
*/
- bool writingStarted;
+ //bool writingStarted;
public override void MultiChronopicWrite(bool tempTable)
{
Log.WriteLine("----------WRITING A----------");
- if(writingStarted)
- return;
- else
- writingStarted = true; //only one execution can "get in"
+ // if(writingStarted)
+ // return;
+ // else
+ // writingStarted = true; //only one execution can "get in"
Log.WriteLine("----------WRITING B----------");
Console.WriteLine("cp1 In:" + cp1InStr);
@@ -489,7 +530,6 @@ public class MultiChronopicExecute : EventExecute
/* //TODO
- //event will be raised, and managed in chronojump.cs
string myStringPush =
//Catalog.GetString("Last jump: ") +
personName + " " +
diff --git a/src/exportSession.cs b/src/exportSession.cs
index 97b32a3..92b5750 100644
--- a/src/exportSession.cs
+++ b/src/exportSession.cs
@@ -35,6 +35,7 @@ public class ExportSession
protected string [] myRunsInterval;
protected string [] myReactionTimes;
protected string [] myPulses;
+ protected string [] myMCs;
protected Session mySession;
protected TextWriter writer;
protected static Gtk.Window app1;
@@ -169,6 +170,7 @@ public class ExportSession
myRunsInterval = SqliteRunInterval.SelectRuns(mySession.UniqueID, -1);
myReactionTimes = SqliteReactionTime.SelectReactionTimes(mySession.UniqueID, -1);
myPulses = SqlitePulse.SelectPulses(mySession.UniqueID, -1);
+ myMCs = SqliteMultiChronopic.SelectTests(mySession.UniqueID, -1);
}
protected virtual void printTitles(string title) {
@@ -197,6 +199,8 @@ public class ExportSession
printReactionTimes(Catalog.GetString("Reaction times"));
printPulses(Catalog.GetString("Pulses"));
+
+ printMCs(Catalog.GetString("MultiChronopic"));
printFooter();
}
@@ -666,6 +670,121 @@ public class ExportSession
}
}
+ protected void printMCs(string title)
+ {
+ int dec=prefsDigitsNumber; //decimals
+
+ ArrayList myData = new ArrayList(1);
+ bool isFirstHeader = true;
+
+ if(myMCs.Length > 0)
+ printTitles(title);
+
+ foreach (string testString in myMCs) {
+ myData = new ArrayList(1);
+
+ myData.Add( "\n" +
+ Catalog.GetString("Person ID") + ":" +
+ Catalog.GetString("Person name") + ":" +
+ Catalog.GetString("MC ID") + ":" +
+ Catalog.GetString("Type") + ":" +
+ Catalog.GetString("Description") + ":" +
+ Catalog.GetString("Simulated") );
+
+ string [] myStr = testString.Split(new char[] {':'});
+ MultiChronopic mc = new MultiChronopic();
+ mc.UniqueID = Convert.ToInt32(myStr[1].ToString());
+ mc.PersonID = Convert.ToInt32(myStr[2].ToString());
+ mc.Type = myStr[4].ToString();
+ mc.Cp1StartedIn = Convert.ToInt32(myStr[5].ToString());
+ mc.Cp2StartedIn = Convert.ToInt32(myStr[6].ToString());
+ mc.Cp3StartedIn = Convert.ToInt32(myStr[7].ToString());
+ mc.Cp4StartedIn = Convert.ToInt32(myStr[8].ToString());
+ mc.Cp1InStr = myStr[9].ToString();
+ mc.Cp1OutStr = myStr[10].ToString();
+ mc.Cp2InStr = myStr[11].ToString();
+ mc.Cp2OutStr = myStr[12].ToString();
+ mc.Cp3InStr = myStr[13].ToString();
+ mc.Cp3OutStr = myStr[14].ToString();
+ mc.Cp4InStr = myStr[15].ToString();
+ mc.Cp4OutStr = myStr[16].ToString();
+ mc.Description = myStr[17].ToString();
+ mc.Simulated = Convert.ToInt32(myStr[18].ToString());
+
+ myData.Add (
+ mc.PersonID + ":" +
+ myStr[0] + ":" + mc.UniqueID + ":" + //person.name, mc.uniqueID
+ mc.Type + " " + mc.GetCPsString() + ":" +
+ Util.RemoveNewLine(mc.Description) + ":" + Util.NoYes(mc.Simulated.ToString())
+ );
+
+ writeData(myData);
+
+ myData = new ArrayList(1);
+
+ string cols4 = ": : : :";
+ myData.Add( mc.DeleteCols(
+ " " + ":" +
+ Catalog.GetString ("Time") + ":" +
+ Catalog.GetString ("State") + cols4 +
+ Catalog.GetString ("Change") + cols4 +
+ Catalog.GetString ("IN-IN") + cols4 +
+ Catalog.GetString ("OUT-OUT") + cols4
+ , mc.CPs(), false)
+ );
+
+ string titleStr = "CP1:CP2:CP3:CP4:";
+ myData.Add( mc.DeleteCols(
+ " " + ":" +
+ " " + ":" +
+ titleStr +
+ titleStr +
+ titleStr +
+ titleStr
+ , mc.CPs(), false)
+ );
+
+ string [] averages = mc.Statistics(true, dec); //first boolean is averageOrSD
+ int count = 0;
+ myData.Add( mc.DeleteCols(
+ Catalog.GetString("AVG") + ": : " + cols4 + " " + cols4 +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[count++], dec ))
+ , mc.CPs(), false)
+ );
+
+ string [] sds = mc.Statistics(false, dec); //first boolean is averageOrSD
+ count = 0;
+ myData.Add( mc.DeleteCols(
+ Catalog.GetString("SD") + ": : " + cols4 + " " + cols4 +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[count++], dec )) + ":" +
+ Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[count++], dec ))
+ , mc.CPs(), false)
+
+ );
+
+ ArrayList array = mc.AsArrayList(dec);
+ foreach(string row in array)
+ myData.Add(mc.DeleteCols(row, mc.CPs(), true));
+
+
+ writeData(myData);
+ writeData("VERTICAL-SPACE");
+ }
+ }
+
protected virtual void printFooter()
{
}
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index 5d00fa0..58e1ef1 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -106,6 +106,7 @@ public class ChronoJumpWindow
[Widget] Gtk.Button button_sj_l;
[Widget] Gtk.Button button_cmj;
[Widget] Gtk.Button button_abk;
+ [Widget] Gtk.Button button_jumps_max;
[Widget] Gtk.Button button_dj;
[Widget] Gtk.Button button_rocket;
[Widget] Gtk.Button button_take_off;
@@ -133,6 +134,7 @@ public class ChronoJumpWindow
[Widget] Gtk.Button button_reaction_time_execute;
[Widget] Gtk.Button button_pulse_free;
[Widget] Gtk.Button button_pulse_custom;
+ [Widget] Gtk.Button button_reaction_time;
//[Widget] Gtk.Button button_pulse_more;
//multiChronopic
@@ -152,6 +154,7 @@ public class ChronoJumpWindow
[Widget] Gtk.Image image_cp4_yes;
[Widget] Gtk.Image image_cp4_no;
[Widget] Gtk.CheckButton check_multi_sync;
+ [Widget] Gtk.CheckButton check_multi_delete_first;
[Widget] Gtk.Button button_last;
[Widget] Gtk.Button button_rj_last;
@@ -362,8 +365,6 @@ public class ChronoJumpWindow
EvaluatorWindow evalWin;
- //SessionUploadWindow sessionUploadWin;
-
static EventExecuteWindow eventExecuteWin;
//platform state variables
@@ -1665,12 +1666,12 @@ public class ChronoJumpWindow
// is for not confusing with the person treeviews that controls who does events
if (myTreeViewMultiChronopic.EventSelectedID == 0) {
myTreeViewMultiChronopic.Unselect();
- showHideActionEventButtons(false, "MultiChronopic"); //hide
+ showHideActionEventButtons(false, Constants.MultiChronopicName); //hide
} else if (myTreeViewMultiChronopic.EventSelectedID == -1) {
myTreeViewMultiChronopic.SelectHeaderLine();
- showHideActionEventButtons(true, "MultiChronopic");
+ showHideActionEventButtons(true, Constants.MultiChronopicName);
} else {
- showHideActionEventButtons(true, "MultiChronopic"); //show
+ showHideActionEventButtons(true, Constants.MultiChronopicName); //show
}
}
@@ -1883,7 +1884,7 @@ public class ChronoJumpWindow
Log.WriteLine("Bye!");
if(simulated == false) {
- sp.Close();
+ serialPortsClose();
}
File.Delete(runningFileName);
@@ -1902,7 +1903,7 @@ public class ChronoJumpWindow
Log.WriteLine("Bye!");
if(simulated == false) {
- sp.Close();
+ serialPortsClose();
}
File.Delete(runningFileName);
@@ -2252,6 +2253,29 @@ public class ChronoJumpWindow
private void on_paste1_activate (object o, EventArgs args) {
}
+ private void serialPortsClose() {
+ sp.Close();
+
+ image_cp1_no.Show();
+ image_cp1_yes.Hide();
+ //close connection with other chronopics on multiChronopic
+ if(image_cp2_yes.Visible) {
+ sp2.Close();
+ image_cp2_no.Show();
+ image_cp2_yes.Hide();
+ }
+ if(image_cp3_yes.Visible) {
+ sp3.Close();
+ image_cp3_no.Show();
+ image_cp3_yes.Hide();
+ }
+ if(image_cp4_yes.Visible) {
+ sp4.Close();
+ image_cp4_no.Show();
+ image_cp4_yes.Hide();
+ }
+ }
+
void on_radiobutton_simulated (object o, EventArgs args)
{
Log.WriteLine(string.Format("RAD - simul. cpRunning: {0}", cpRunning));
@@ -2262,26 +2286,8 @@ public class ChronoJumpWindow
//close connection with chronopic if initialized
if(cpRunning) {
- sp.Close();
-
- image_cp1_no.Show();
- image_cp1_yes.Hide();
- //close connection with other chronopics on multiChronopic
- if(image_cp2_yes.Visible) {
- sp2.Close();
- image_cp2_no.Show();
- image_cp2_yes.Hide();
- }
- if(image_cp3_yes.Visible) {
- sp3.Close();
- image_cp3_no.Show();
- image_cp3_yes.Hide();
- }
- if(image_cp4_yes.Visible) {
- sp4.Close();
- image_cp4_no.Show();
- image_cp4_yes.Hide();
- }
+ serialPortsClose();
+
table_multi_chronopic_buttons.Sensitive = false;
combo_port_windows.Sensitive = false;
combo_port_linux.Sensitive = false;
@@ -2705,8 +2711,15 @@ public class ChronoJumpWindow
statsWin.ShowUpdateStatsButton();
}
+ //mark to only get inside on_multi_chronopic_finished one time
+ bool multiFinishingByClickFinish;
private void on_finish_multi_clicked (object o, EventArgs args)
{
+ if(multiFinishingByClickFinish)
+ return;
+ else
+ multiFinishingByClickFinish = true;
+
currentEventExecute.Finish = true;
//unhide event buttons for next event
@@ -2722,9 +2735,10 @@ public class ChronoJumpWindow
}
//if user doesn't touch the platform after pressing "finish", sometimes it gets waiting a Read_event
- //now the event finishes ok, and next will be ok, also
+ //now the event finishes ok, and next will be ok
//
//not for multiChronopic:
+
private void checkFinishTotally (object o, EventArgs args)
{
if(currentEventExecute.TotallyFinished)
@@ -2774,9 +2788,13 @@ public class ChronoJumpWindow
sep = ", ";
}
- errorWin = ErrorWindow.Show(string.Format(Catalog.GetString("Please, touch the contact platform on Chronopic/s [{0}] for full finishing.\nThen press button\n"), cancelStr));
+ errorWin = ErrorWindow.Show(string.Format(
+ Catalog.GetString("Please, touch the contact platform on Chronopic/s [{0}] for full finishing.") +
+ "\n" + Catalog.GetString("Then press this button:\n"), cancelStr));
errorWin.Button_accept.Clicked += new EventHandler(checkFinishMultiTotally);
} else {
+ Log.WriteLine("totallyFinished");
+ /*
//call write here, because if done in execute/MultiChronopic, will be called n times if n chronopics are working
currentEventExecute.MultiChronopicWrite(false);
currentMultiChronopic = (MultiChronopic) currentEventExecute.EventDone;
@@ -2784,7 +2802,7 @@ Console.WriteLine("W");
//if this multichronopic has more chronopics than other in session, then reload treeview, else simply add
- if(currentMultiChronopic.MaxCPs() != SqliteMultiChronopic.MaxCPs(currentSession.UniqueID)) {
+ if(currentMultiChronopic.CPs() != SqliteMultiChronopic.MaxCPs(currentSession.UniqueID)) {
treeview_multi_chronopic_storeReset();
fillTreeView_multi_chronopic();
} else
@@ -2792,10 +2810,11 @@ Console.WriteLine("W");
Console.WriteLine("X");
//since 0.7.4.1 when test is done, treeview select it. action event button have to be shown
- showHideActionEventButtons(true, "MultiChronopic"); //show
+ showHideActionEventButtons(true, Constants.MultiChronopicName); //show
//unhide buttons for delete last test
sensitiveGuiYesEvent();
+ */
}
}
@@ -2828,6 +2847,8 @@ Console.WriteLine("X");
//no abk_l button currently
// } else if(o == (object) button_abk_l) {
// currentEventType = new JumpType("ABKl");
+ } else if(o == (object) button_jumps_max) {
+ currentEventType = new JumpType("Max");
} else if(o == (object) button_dj) {
currentEventType = new JumpType("DJ");
} else if(o == (object) button_rocket) {
@@ -2880,6 +2901,8 @@ Console.WriteLine("X");
} else if(o == (object) button_run_interval_mtgug) {
currentEventType = new RunType("MTGUG");
//reactionTime
+ } else if(o == (object) button_reaction_time) {
+ currentEventType = new ReactionTimeType("reactionTime");
//pulse
} else if(o == (object) button_pulse_free) {
currentEventType = new PulseType("Free");
@@ -2887,9 +2910,9 @@ Console.WriteLine("X");
currentEventType = new PulseType("Custom");
//multiChronopic
} else if(o == (object) button_multi_chronopic_start) {
- currentEventType = new MultiChronopicType("multiChronopic");
+ currentEventType = new MultiChronopicType(Constants.MultiChronopicName);
} else if(o == (object) button_run_analysis) {
- currentEventType = new MultiChronopicType("runAnalysis");
+ currentEventType = new MultiChronopicType(Constants.RunAnalysisName);
}
changeTestImage(currentEventType.Type.ToString(), currentEventType.Name, currentEventType.ImageFileName);
@@ -2939,6 +2962,10 @@ Console.WriteLine("X");
myType = new JumpType(eventName);
else if (eventTypeString == EventType.Types.RUN.ToString())
myType = new RunType(eventName);
+ else if (eventTypeString == EventType.Types.REACTIONTIME.ToString())
+ myType = new ReactionTimeType(eventName);
+ else if (eventTypeString == EventType.Types.PULSE.ToString())
+ myType = new PulseType(eventName);
else if (eventTypeString == EventType.Types.MULTICHRONOPIC.ToString())
myType = new MultiChronopicType(eventName);
else Log.WriteLine("Error on eventTypeHasLongDescription");
@@ -4045,9 +4072,9 @@ Console.WriteLine("X");
Log.WriteLine("multi chronopic accepted");
if(o == (object) button_multi_chronopic_start)
- currentMultiChronopicType = new MultiChronopicType("multiChronopic");
+ currentMultiChronopicType = new MultiChronopicType(Constants.MultiChronopicName);
else if(o == (object) button_run_analysis)
- currentMultiChronopicType = new MultiChronopicType("runAnalysis");
+ currentMultiChronopicType = new MultiChronopicType(Constants.RunAnalysisName);
//used by cancel and finish
currentEventType = new MultiChronopicType();
@@ -4074,6 +4101,7 @@ Console.WriteLine("X");
); //-1: unlimited pulses (or changes)
eventExecuteWin.ButtonCancel.Clicked += new EventHandler(on_cancel_multi_clicked);
+ multiFinishingByClickFinish = false;
eventExecuteWin.ButtonFinish.Clicked += new EventHandler(on_finish_multi_clicked);
//when user clicks on update the eventExecute window
@@ -4082,12 +4110,6 @@ Console.WriteLine("X");
eventExecuteWin.ButtonUpdate.Clicked += new EventHandler(on_update_clicked);
- /*
- currentEventExecute = new MultiChronopicExecute(eventExecuteWin, currentPerson.UniqueID, currentPerson.Name,
- currentSession.UniqueID, currentPulseType.Name, pulseStep, totalPulses,
- cp, appbar2, app1, prefsDigitsNumber, volumeOn);
- */
-
bool syncNeeded = false;
if(currentMultiChronopicType.SyncNeeded && check_multi_sync.Active)
syncNeeded = true;
@@ -4096,46 +4118,70 @@ Console.WriteLine("X");
currentEventExecute = new MultiChronopicExecute(
eventExecuteWin, currentPerson.UniqueID, currentPerson.Name,
currentSession.UniqueID, currentMultiChronopicType.Name,
- cp, syncNeeded, appbar2, app1);
+ cp, syncNeeded, check_multi_delete_first.Active, appbar2, app1);
else if(image_cp2_yes.Visible && image_cp3_no.Visible)
currentEventExecute = new MultiChronopicExecute(
eventExecuteWin, currentPerson.UniqueID, currentPerson.Name,
currentSession.UniqueID, currentMultiChronopicType.Name,
- cp, cp2, syncNeeded, appbar2, app1);
+ cp, cp2, syncNeeded, check_multi_delete_first.Active, appbar2, app1);
else if(image_cp3_yes.Visible && image_cp4_no.Visible)
currentEventExecute = new MultiChronopicExecute(
eventExecuteWin, currentPerson.UniqueID, currentPerson.Name,
currentSession.UniqueID, currentMultiChronopicType.Name,
- cp, cp2, cp3, syncNeeded, appbar2, app1);
+ cp, cp2, cp3, syncNeeded, check_multi_delete_first.Active, appbar2, app1);
else if(image_cp4_yes.Visible)
currentEventExecute = new MultiChronopicExecute(
eventExecuteWin, currentPerson.UniqueID, currentPerson.Name,
currentSession.UniqueID, currentMultiChronopicType.Name,
- cp, cp2, cp3, cp4, syncNeeded, appbar2, app1);
+ cp, cp2, cp3, cp4, syncNeeded, check_multi_delete_first.Active, appbar2, app1);
//if(simulated)
// currentEventExecute.SimulateInitValues(rand);
+ //mark to only get inside on_multi_chronopic_finished one time
+ multiFinishing = false;
currentEventExecute.Manage();
currentEventExecute.FakeButtonFinished.Clicked += new EventHandler(on_multi_chronopic_finished);
}
+ bool multiFinishing;
private void on_multi_chronopic_finished (object o, EventArgs args) {
+ if(multiFinishing)
+ return;
+ else
+ multiFinishing = true;
+
currentEventExecute.FakeButtonFinished.Clicked -= new EventHandler(on_multi_chronopic_finished);
-/*
if ( ! currentEventExecute.Cancel ) {
+Console.WriteLine("T");
+ /*
+ on runAnalysis test, when cp1 ends, run ends,
+ but cp2 is still waiting event
+ with this will ask cp2 to press button
+ solves problem with threads at ending
+ */
+
+ on_finish_multi_clicked(o, args);
+Console.WriteLine("U");
+ //call write here, because if done in execute/MultiChronopic, will be called n times if n chronopics are working
+ currentEventExecute.MultiChronopicWrite(false);
Console.WriteLine("V");
currentMultiChronopic = (MultiChronopic) currentEventExecute.EventDone;
Console.WriteLine("W");
- myTreeViewMultiChronopic.Add(currentPerson.Name, currentMultiChronopic);
+ //if this multichronopic has more chronopics than other in session, then reload treeview, else simply add
+ if(currentMultiChronopic.CPs() != SqliteMultiChronopic.MaxCPs(currentSession.UniqueID)) {
+ treeview_multi_chronopic_storeReset();
+ fillTreeView_multi_chronopic();
+ } else
+ myTreeViewMultiChronopic.Add(currentPerson.Name, currentMultiChronopic);
Console.WriteLine("X");
//since 0.7.4.1 when test is done, treeview select it. action event button have to be shown
- showHideActionEventButtons(true, "MultiChronopic"); //show
+ showHideActionEventButtons(true, Constants.MultiChronopicName); //show
//unhide buttons for delete last test
sensitiveGuiYesEvent();
@@ -4143,7 +4189,6 @@ Console.WriteLine("X");
//unhide buttons that allow doing another test
sensitiveGuiEventDone();
- */
}
@@ -4696,7 +4741,7 @@ Console.WriteLine("X");
appbar2.Push( 1, Catalog.GetString ( "Deleted multi chronopic" ));
myTreeViewMultiChronopic.DelEvent(myTreeViewMultiChronopic.EventSelectedID);
- showHideActionEventButtons(false, "MultiChronopic");
+ showHideActionEventButtons(false, Constants.MultiChronopicName);
}
@@ -5142,7 +5187,7 @@ Console.WriteLine("X");
button_repair_selected_pulse.Sensitive = show;
success = true;
}
- if (type == "ALL" || type == "MultiChronopic") {
+ if (type == "ALL" || type == Constants.MultiChronopicName) {
button_edit_selected_multi_chronopic.Sensitive = show;
button_delete_selected_multi_chronopic.Sensitive = show;
success = true;
diff --git a/src/gui/dialogServerStats.cs b/src/gui/dialogServerStats.cs
index daf6fcb..3b811e0 100644
--- a/src/gui/dialogServerStats.cs
+++ b/src/gui/dialogServerStats.cs
@@ -47,6 +47,8 @@ public class DialogServerStats
[Widget] Gtk.Label label_rt_you;
[Widget] Gtk.Label label_pulses_server;
[Widget] Gtk.Label label_pulses_you;
+ [Widget] Gtk.Label label_multichronopic_server;
+ [Widget] Gtk.Label label_multichronopic_you;
[Widget] Gtk.Label label_date;
@@ -89,6 +91,9 @@ public class DialogServerStats
case "Pulses":
label_pulses_server.Text = s[1];
break;
+ case "MultiChronopic":
+ label_multichronopic_server.Text= s[1];
+ break;
default:
//do nothing
break;
@@ -122,6 +127,9 @@ public class DialogServerStats
case "Pulses":
label_pulses_you.Text = s[1];
break;
+ case "MultiChronopic":
+ label_multichronopic_you.Text= s[1];
+ break;
default:
//do nothing
break;
diff --git a/src/gui/eventExecute.cs b/src/gui/eventExecute.cs
index 554cb9a..e256f6e 100644
--- a/src/gui/eventExecute.cs
+++ b/src/gui/eventExecute.cs
@@ -1576,19 +1576,29 @@ public class EventExecuteWindow
for(int i=0; i < ticks; i++) {
if(cpStart.Length > i) {
- double x = multiChronopicGetX(ancho, Convert.ToDouble(cpStart[i]), timeOld, timeTotal);
- pixmap.DrawLine(penStart, Convert.ToInt32(xOld), heightStart, Convert.ToInt32(x), heightStart);
- timeOld += Convert.ToDouble(cpStart[i]);
- xOld = x;
- lastCpIsStart = true;
+ try {
+ double x = multiChronopicGetX(ancho, Convert.ToDouble(cpStart[i]), timeOld, timeTotal);
+ pixmap.DrawLine(penStart, Convert.ToInt32(xOld), heightStart, Convert.ToInt32(x), heightStart);
+ timeOld += Convert.ToDouble(cpStart[i]);
+ xOld = x;
+ lastCpIsStart = true;
+ } catch {
+ //solve problems if a string is empty or with old value
+ //sometimes happens at runAnalysis when there's only cp1
+ }
}
if(cpEnd.Length > i) {
- double x = multiChronopicGetX(ancho, Convert.ToDouble(cpEnd[i]), timeOld, timeTotal);
- pixmap.DrawLine(penEnd, Convert.ToInt32(xOld), heightEnd, Convert.ToInt32(x), heightEnd);
- timeOld += Convert.ToDouble(cpEnd[i]);
- xOld = x;
- lastCpIsStart = false;
+ try {
+ double x = multiChronopicGetX(ancho, Convert.ToDouble(cpEnd[i]), timeOld, timeTotal);
+ pixmap.DrawLine(penEnd, Convert.ToInt32(xOld), heightEnd, Convert.ToInt32(x), heightEnd);
+ timeOld += Convert.ToDouble(cpEnd[i]);
+ xOld = x;
+ lastCpIsStart = false;
+ } catch {
+ //solve problems if a string is empty or with old value
+ //sometimes happens at runAnalysis when there's only cp1
+ }
}
}
diff --git a/src/gui/server.cs b/src/gui/server.cs
index 2e363c5..72d00d6 100644
--- a/src/gui/server.cs
+++ b/src/gui/server.cs
@@ -48,6 +48,9 @@ public class SessionUploadPersonData {
public int pulsesU;
public int pulsesE;
public int pulsesS;
+ public int mcsU;
+ public int mcsE;
+ public int mcsS;
public string testTypes;
public string sports;
@@ -61,6 +64,7 @@ public class SessionUploadPersonData {
int runsIU, int runsIE, int runsIS,
int rtsU, int rtsE, int rtsS,
int pulsesU, int pulsesE, int pulsesS,
+ int mcsU, int mcsE, int mcsS,
string testTypes, string sports) {
}
}
@@ -76,6 +80,7 @@ public class SessionUploadWindow {
private TreeStore store_ri;
private TreeStore store_rts;
private TreeStore store_pulses;
+ private TreeStore store_mcs;
[Widget] Gtk.TreeView treeview_persons;
[Widget] Gtk.TreeView treeview_jumps;
@@ -84,6 +89,7 @@ public class SessionUploadWindow {
[Widget] Gtk.TreeView treeview_runs_i;
[Widget] Gtk.TreeView treeview_rts;
[Widget] Gtk.TreeView treeview_pulses;
+ [Widget] Gtk.TreeView treeview_mcs;
[Widget] Gtk.Label label_uploaded_test_types;
[Widget] Gtk.Label label_uploaded_sports;
@@ -114,7 +120,8 @@ public class SessionUploadWindow {
treeview_runs,
treeview_runs_i,
treeview_rts,
- treeview_pulses
+ treeview_pulses,
+ treeview_mcs
);
store_persons = new TreeStore(typeof (string), typeof (string), typeof (string), typeof (string) );
@@ -124,6 +131,7 @@ public class SessionUploadWindow {
store_ri = new TreeStore(typeof (string), typeof (string), typeof (string) );
store_rts = new TreeStore(typeof (string), typeof (string), typeof (string) );
store_pulses = new TreeStore(typeof (string), typeof (string), typeof (string) );
+ store_mcs = new TreeStore(typeof (string), typeof (string), typeof (string) );
treeview_persons.Model = store_persons;
treeview_jumps.Model = store_j;
@@ -132,6 +140,7 @@ public class SessionUploadWindow {
treeview_runs_i.Model = store_ri;
treeview_rts.Model = store_rts;
treeview_pulses.Model = store_pulses;
+ treeview_mcs.Model = store_mcs;
label_thanks.Hide();
button_close.Sensitive = false;
@@ -149,7 +158,8 @@ public class SessionUploadWindow {
}
private void createTreeViews (Gtk.TreeView treeview_persons, Gtk.TreeView treeview_jumps, Gtk.TreeView treeview_jumps_rj,
- Gtk.TreeView treeview_runs, Gtk.TreeView treeview_runs_i, Gtk.TreeView treeview_rts, Gtk.TreeView treeview_pulses)
+ Gtk.TreeView treeview_runs, Gtk.TreeView treeview_runs_i, Gtk.TreeView treeview_rts,
+ Gtk.TreeView treeview_pulses, Gtk.TreeView treeview_mcs)
{
String [] personCols = {"ID", Catalog.GetString("Name"), "U", "E"};
String [] testCols = {"U", "E", "S"};
@@ -160,6 +170,7 @@ public class SessionUploadWindow {
createTreeView(treeview_runs_i, testCols, 1);
createTreeView(treeview_rts, testCols, 1);
createTreeView(treeview_pulses, testCols, 1);
+ createTreeView(treeview_mcs, testCols, 1);
}
private void createTreeView (Gtk.TreeView tv, String [] cols, int existsPos) {
@@ -184,6 +195,7 @@ public class SessionUploadWindow {
fillTest (Constants.TestTypes.RUN_I, p.runsIU, p.runsIE, p.runsIS);
fillTest (Constants.TestTypes.RT, p.rtsU, p.rtsE, p.rtsS);
fillTest (Constants.TestTypes.PULSE, p.pulsesU, p.pulsesE, p.pulsesS);
+ fillTest (Constants.TestTypes.MULTICHRONOPIC, p.mcsU, p.mcsE, p.mcsS);
if(p.testTypes.Length > 0) {
label_uploaded_test_types.Text = "<b>" + Catalog.GetString("Uploaded test type") + "</b>: " + p.testTypes;
@@ -237,6 +249,9 @@ public class SessionUploadWindow {
case Constants.TestTypes.PULSE:
store_pulses.AppendValues (u, e, s);
break;
+ case Constants.TestTypes.MULTICHRONOPIC:
+ store_mcs.AppendValues (u, e, s);
+ break;
}
}
diff --git a/src/jumpType.cs b/src/jumpType.cs
index 3605a4b..a1e3c87 100644
--- a/src/jumpType.cs
+++ b/src/jumpType.cs
@@ -39,7 +39,7 @@ public class JumpType : EventType
public override bool FindIfIsPredefined() {
string [] predefinedTests = {
- "Free", "SJ", "CMJ", "ABK", "Rocket",
+ "Free", "SJ", "CMJ", "ABK", "Max", "Rocket",
"SJl", "CMJl", "ABKl", "DJ",
"RJ(j)", "RJ(t)", "RJ(unlimited)",
"RJ(hexagon)", "triple jump"
@@ -64,7 +64,7 @@ public class JumpType : EventType
imageFileName = "";
//if this changes, sqlite/jumpType.cs initialize tables should change
- if(name == "Free" || name == "SJ" || name == "CMJ" || name == "ABK" || name == "Rocket") {
+ if(name == "Free" || name == "SJ" || name == "CMJ" || name == "ABK" || name == "Max" || name == "Rocket") {
startIn = true;
hasWeight = false;
isRepetitive = false;
@@ -93,6 +93,10 @@ public class JumpType : EventType
else if (name == "ABK") {
description = Catalog.GetString("Abalakov Jump");
imageFileName = "jump_abk.png";
+ } else if (name == "Max") {
+ description = Catalog.GetString("Maximum Jump");
+ longDescription = "Maximum Jump (like Abalakov but with free technique)";
+ imageFileName = "jump_max.png";
} else if (name == "Rocket") {
description = Catalog.GetString("Rocket Jump");
imageFileName = "jump_rocket.png";
diff --git a/src/multiChronopic.cs b/src/multiChronopic.cs
index 5a75f79..edd3f5d 100644
--- a/src/multiChronopic.cs
+++ b/src/multiChronopic.cs
@@ -101,7 +101,7 @@ public class MultiChronopic : Event
return SqliteMultiChronopic.Insert(dbconOpened, tableName,
uniqueID.ToString(),
personID, sessionID,
- "", //type
+ type,
cp1StartedIn, cp2StartedIn, cp3StartedIn, cp4StartedIn,
cp1InStr, cp1OutStr,
cp2InStr, cp2OutStr,
@@ -405,6 +405,7 @@ public class MultiChronopic : Event
myData[count++] = getIndex(averageOrSD, cp2iiStr);
myData[count++] = getIndex(averageOrSD, cp3iiStr);
myData[count++] = getIndex(averageOrSD, cp4iiStr);
+
myData[count++] = getIndex(averageOrSD, cp1ooStr);
myData[count++] = getIndex(averageOrSD, cp2ooStr);
myData[count++] = getIndex(averageOrSD, cp3ooStr);
@@ -423,7 +424,7 @@ public class MultiChronopic : Event
Util.GetNumberOfJumps(str, false)).ToString();
}
- public int MaxCPs() {
+ public int CPs() {
if(cp3InStr == "" && cp3OutStr == "")
return 2;
else if(cp4InStr == "" && cp4OutStr == "")
@@ -432,6 +433,69 @@ public class MultiChronopic : Event
return 4;
}
+ public string GetCPsString () {
+ string cpsStr = "";
+ string sep = "";
+ if(this.cp1InStr.Length + this.cp1OutStr.Length > 0) {
+ cpsStr += sep + "1";
+ sep = ", ";
+ }
+ if(this.cp2InStr.Length + this.cp2OutStr.Length > 0) {
+ cpsStr += sep + "2";
+ sep = ", ";
+ }
+ if(CPs() >= 3 && this.cp3InStr.Length + this.cp3OutStr.Length > 0) {
+ cpsStr += sep + "3";
+ sep = ", ";
+ }
+ if(CPs() == 4 && this.cp4InStr.Length + this.cp4OutStr.Length > 0) {
+ cpsStr += sep + "4";
+ sep = ", ";
+ }
+ return cpsStr;
+ }
+
+ /*
+ we pass maxCPs because treeviewMultiChronopic will use maxCPs in session (from sqliteMultiChronopic)
+ but exportSession will use mc.CPs (cps of this multiChronopic)
+ */
+ public string [] DeleteCols(string [] s1, int maxCPs, bool deleteSubRowId) {
+ /*
+ deleteSubRowId is reffered to the "-1" at end of each row in treeview
+ this is not used in exportSession, then this bools allows to delete it
+ */
+
+ if(deleteSubRowId)
+ s1[19] = "";
+
+ if(maxCPs == 2) {
+ string [] s2 = new String[11+1];
+ for(int i=0, count=0; i < s1.Length; i++) {
+ if(i != 4 && i != 5 && i != 8 && i != 9 && i != 12 && i != 13 && i != 16 && i != 17)
+ s2[count++] = s1[i];
+ }
+ return s2;
+ }
+ else if(maxCPs == 3) {
+ string [] s2 = new String[15+1];
+ for(int i=0, count=0; i < s1.Length; i++) {
+ if(i != 5 && i != 9 && i != 13 && i != 17)
+ s2[count++] = s1[i];
+ }
+ return s2;
+ }
+ else //maxCPs == 4
+ return s1;
+ }
+
+ //export session passes a string instead of a stringArray
+ public string DeleteCols(string s1, int maxCPs, bool deleteSubRowId) {
+ string [] strArr = s1.Split(new char[] {':'});
+ strArr = DeleteCols(strArr, maxCPs, deleteSubRowId);
+ return Util.StringArrayToString(strArr, ":");
+ }
+
+
public int Cp1StartedIn {
get { return cp1StartedIn; }
diff --git a/src/multiChronopicType.cs b/src/multiChronopicType.cs
index 96040ee..4df9cc3 100644
--- a/src/multiChronopicType.cs
+++ b/src/multiChronopicType.cs
@@ -39,13 +39,13 @@ public class MultiChronopicType : EventType
this.name = name;
//if this changes, sqlite/pulseType.cs initialize table should change
- if(name == "multiChronopic") {
+ if(name == Constants.MultiChronopicName) {
syncNeeded = true;
imageFileName = "multiChronopic.png";
description = "";
longDescription = "";
- } else if(name == "runAnalysis") {
+ } else if(name == Constants.RunAnalysisName) {
syncNeeded = false;
imageFileName = "run_analysis.png";
description = "";
diff --git a/src/reactionTimeType.cs b/src/reactionTimeType.cs
index f49e722..a406c0b 100644
--- a/src/reactionTimeType.cs
+++ b/src/reactionTimeType.cs
@@ -27,5 +27,13 @@ public class ReactionTimeType : EventType
type = Types.REACTIONTIME;
}
+ public ReactionTimeType(string name) {
+ type = Types.REACTIONTIME;
+ this.name = name;
+ imageFileName = "reaction_time.png";
+ description = "";
+ longDescription = "";
+ }
+
}
diff --git a/src/server.cs b/src/server.cs
index f527be6..cbccce6 100644
--- a/src/server.cs
+++ b/src/server.cs
@@ -476,6 +476,35 @@ public class Server
sessionUploadPersonData.pulsesE = countE;
sessionUploadPersonData.pulsesS = countS;
+ //upload multiChronopic
+ countU = 0;
+ countE = 0;
+ countS = 0;
+
+ string [] mcs = SqliteMultiChronopic.SelectTests(currentSession.UniqueID, person.UniqueID);
+ foreach(string mc in mcs) {
+ string [] js = mc.Split(new char[] {':'});
+ //select mc
+ MultiChronopic test = SqliteMultiChronopic.SelectMultiChronopicData(Convert.ToInt32(js[1])); //uniqueID
+ //fix it to server person, session keys
+ test.PersonID = person.ServerUniqueID;
+ test.SessionID = currentSession.ServerUniqueID;
+ //upload...
+ uCode = serverUploadTest(myServer, Constants.TestTypes.MULTICHRONOPIC, Constants.MultiChronopicTable, test);
+
+ if(uCode == Constants.UploadCodes.OK)
+ countU ++;
+ else if(uCode == Constants.UploadCodes.EXISTS)
+ countE ++;
+ else //SIMULATED
+ countS ++;
+ }
+
+ //other thread updates the gui:
+ sessionUploadPersonData.mcsU = countU;
+ sessionUploadPersonData.mcsE = countE;
+ sessionUploadPersonData.mcsS = countS;
+
needUpdateServerSession = true;
while(needUpdateServerSession) {
//wait until data is printed on the other thread
@@ -554,6 +583,10 @@ public class Server
Pulse pulse = (Pulse)myTest;
idAtServer = myServer.UploadPulse(pulse);
break;
+ case Constants.TestTypes.MULTICHRONOPIC :
+ MultiChronopic mc = (MultiChronopic)myTest;
+ idAtServer = myServer.UploadMultiChronopic(mc);
+ break;
}
diff --git a/src/sqlite/jumpType.cs b/src/sqlite/jumpType.cs
index 0d6a980..c48771b 100644
--- a/src/sqlite/jumpType.cs
+++ b/src/sqlite/jumpType.cs
@@ -57,6 +57,7 @@ class SqliteJumpType : Sqlite
"CMJl:1:1:CMJ jump with weight",
"ABK:1:0:ABK jump",
"ABKl:1:1:ABK jump with weight",
+ "Max:1:0:;Maximum jump",
"DJ:0:0:DJ jump",
"Rocket:1:0:Rocket jump",
"TakeOff:0:0:Take off",
@@ -83,6 +84,7 @@ class SqliteJumpType : Sqlite
SqliteEvent.GraphLinkInsert (Constants.JumpTable, "CMJl", "jump_cmj_l.png", true);
SqliteEvent.GraphLinkInsert (Constants.JumpTable, "ABK", "jump_abk.png", true);
SqliteEvent.GraphLinkInsert (Constants.JumpTable, "ABKl", "jump_abk_l.png", true);
+ SqliteEvent.GraphLinkInsert (Constants.JumpTable, "Max", "jump_max.png", true);
SqliteEvent.GraphLinkInsert (Constants.JumpTable, "Rocket", "jump_rocket.png", true);
SqliteEvent.GraphLinkInsert (Constants.JumpTable, "DJ", "jump_dj.png", true);
}
@@ -122,7 +124,7 @@ class SqliteJumpType : Sqlite
"RJ(unlimited):1:0:1:-1:Jump unlimited until finish is clicked",
"RJ(hexagon):1:0:1:18:Reactive Jump on a hexagon until three full revolutions are done",
"triple jump:0:0:1:3:Triple jump",
- "RunAnalysis:0:0:1:-1:Run between two photocells recording contact and flight times in contact platform/s. Until finish button is clicked."
+ //"RunAnalysis:0:0:1:-1:Run between two photocells recording contact and flight times in contact platform/s. Until finish button is clicked."
};
foreach(string myJumpType in iniJumpTypes) {
JumpRjTypeInsert(myJumpType, true);
diff --git a/src/sqlite/main.cs b/src/sqlite/main.cs
index a362b86..8fc06c5 100644
--- a/src/sqlite/main.cs
+++ b/src/sqlite/main.cs
@@ -72,7 +72,7 @@ class Sqlite
* Important, change this if there's any update to database
* Important2: if database version get numbers higher than 1, check if the comparisons with currentVersion works ok
*/
- static string lastChronojumpDatabaseVersion = "0.69";
+ static string lastChronojumpDatabaseVersion = "0.70";
public Sqlite() {
}
@@ -844,11 +844,13 @@ class Sqlite
}
if(currentVersion == "0.65") {
dbcon.Open();
- SqliteJumpType.JumpRjTypeInsert ("RunAnalysis:0:0:1:-1:Run between two photocells recording contact and flight times in contact platform/s. Until finish button is clicked.", true);
+ //now runAnalysis is a multiChronopic event
+ //SqliteJumpType.JumpRjTypeInsert ("RunAnalysis:0:0:1:-1:Run between two photocells recording contact and flight times in contact platform/s. Until finish button is clicked.", true);
SqlitePreferences.Update ("databaseVersion", "0.66", true);
- Log.WriteLine("Converted DB to 0.66 (added RunAnalysis Reactive jump)");
+ //Log.WriteLine("Converted DB to 0.66 (added RunAnalysis Reactive jump)");
+ Log.WriteLine("Converted DB to 0.66 (done nothing)");
dbcon.Close();
currentVersion = "0.66";
}
@@ -889,7 +891,16 @@ class Sqlite
dbcon.Close();
currentVersion = "0.69";
}
-
+ if(currentVersion == "0.69") {
+ dbcon.Open();
+ SqliteJumpType.JumpTypeInsert ("Max:1:0:Maximum jump", true);
+ SqliteEvent.GraphLinkInsert (Constants.JumpTable, "Max", "jump_max.png", true);
+ SqlitePreferences.Update ("databaseVersion", "0.70", true);
+
+ Log.WriteLine("Converted DB to 0.70 (added Maximum jump test)");
+ dbcon.Close();
+ currentVersion = "0.70";
+ }
}
@@ -1013,10 +1024,11 @@ class Sqlite
SqliteCountry.initialize();
//changes [from - to - desc]
+ //0.69 - 0.70 added Maximum jump test
//0.68 - 0.69 added Gesell-DBT test
//0.67 - 0.68 added multiChronopic tests table
//0.66 - 0.67 added TakeOff jumps
- //0.65 - 0.66 added run analysis (JumpRj test (masked as run interval))
+ //0.65 - 0.66 added done nothing
//0.64 - 0.65 added Sevaluator on client
//0.63 - 0.64 added margaria test
//0.62 - 0.63 added 'versionAvailable' to preferences
diff --git a/src/sqlite/personSession.cs b/src/sqlite/personSession.cs
index cc7cc2d..2f744e0 100644
--- a/src/sqlite/personSession.cs
+++ b/src/sqlite/personSession.cs
@@ -60,7 +60,7 @@ class SqlitePersonSession : Sqlite
" WHERE personID == " + personID +
" AND sessionID == " + sessionID;
- Log.WriteLine(dbcmd.CommandText.ToString());
+ //Log.WriteLine(dbcmd.CommandText.ToString());
dbcmd.ExecuteNonQuery();
SqliteDataReader reader;
diff --git a/src/sqlite/server.cs b/src/sqlite/server.cs
index 9469a31..18478fb 100644
--- a/src/sqlite/server.cs
+++ b/src/sqlite/server.cs
@@ -201,6 +201,7 @@ class SqliteServer : Sqlite
stats.Add("RunsInterval:" + Sqlite.Count(Constants.RunIntervalTable, true).ToString());
stats.Add("ReactionTimes:" + Sqlite.Count(Constants.ReactionTimeTable, true).ToString());
stats.Add("Pulses:" + Sqlite.Count(Constants.PulseTable, true).ToString());
+ stats.Add("MultiChronopic:" + Sqlite.Count(Constants.MultiChronopicTable, true).ToString());
dbcon.Close();
@@ -230,6 +231,7 @@ class SqliteServer : Sqlite
stats.Add("RunsInterval:" + Sqlite.CountCondition(Constants.RunIntervalTable, true, "simulated", ">", "0").ToString());
stats.Add("ReactionTimes:" + Sqlite.CountCondition(Constants.ReactionTimeTable, true, "simulated", ">", "0").ToString());
stats.Add("Pulses:" + Sqlite.CountCondition(Constants.PulseTable, true, "simulated", ">", "0").ToString());
+ stats.Add("MultiChronopic:" + Sqlite.CountCondition(Constants.MultiChronopicTable, true, "simulated", ">", "0").ToString());
dbcon.Close();
diff --git a/src/treeViewMultiChronopic.cs b/src/treeViewMultiChronopic.cs
index 0966b18..c5b27d2 100644
--- a/src/treeViewMultiChronopic.cs
+++ b/src/treeViewMultiChronopic.cs
@@ -110,9 +110,8 @@ public class TreeViewMultiChronopic : TreeViewEvent
ArrayList array = mc.AsArrayList(pDN);
string title;
- //title = mc.Type; //currently ""
- title = mc.Type + " CPs: " + getCpsString(mc);
+ title = mc.Type + " CPs: " + mc.GetCPsString();
title += "; n: " + array.Count.ToString();
if(mc.Simulated == Constants.Simulated)
title += " (s) ";
@@ -128,31 +127,9 @@ public class TreeViewMultiChronopic : TreeViewEvent
myData[count++] = mc.Description;
myData[count++] = mc.UniqueID.ToString();
- return deleteCols(myData, maxCPs);
+ return mc.DeleteCols(myData, maxCPs, false);
}
- private string getCpsString(MultiChronopic mc) {
- string cpsStr = "";
- string sep = "";
- if(mc.Cp1InStr.Length + mc.Cp1OutStr.Length > 0) {
- cpsStr += sep + "1";
- sep = ", ";
- }
- if(mc.Cp2InStr.Length + mc.Cp2OutStr.Length > 0) {
- cpsStr += sep + "2";
- sep = ", ";
- }
- if(maxCPs >= 3 && mc.Cp3InStr.Length + mc.Cp3OutStr.Length > 0) {
- cpsStr += sep + "3";
- sep = ", ";
- }
- if(maxCPs == 4 && mc.Cp4InStr.Length + mc.Cp4OutStr.Length > 0) {
- cpsStr += sep + "4";
- sep = ", ";
- }
- return cpsStr;
- }
-
protected override int getNumOfSubEvents(System.Object myObject)
{
MultiChronopic mc = (MultiChronopic)myObject;
@@ -189,12 +166,12 @@ public class TreeViewMultiChronopic : TreeViewEvent
myData[count++] = "";
for(int i=0; i<8;i++)
- myData[count++] = cleanZeroOrMinus(Util.TrimDecimals( averages[i], pDN ));
+ myData[count++] = Util.RemoveZeroOrMinus(Util.TrimDecimals( averages[i], pDN ));
myData[count++] = ""; //desc
myData[count++] = "-1"; //mark to non select here, select first line
- return deleteCols(myData, maxCPs);
+ return mc.DeleteCols(myData, maxCPs, false);
}
protected override string [] printSD(System.Object myObject, int cols) {
@@ -209,21 +186,13 @@ public class TreeViewMultiChronopic : TreeViewEvent
myData[count++] = "";
for(int i=0; i<8;i++)
- myData[count++] = cleanZeroOrMinus(Util.TrimDecimals( sds[i], pDN ));
+ myData[count++] = Util.RemoveZeroOrMinus(Util.TrimDecimals( sds[i], pDN ));
myData[count++] = ""; //desc
myData[count++] = "-1"; //mark to non select here, select first line
- return deleteCols(myData, maxCPs);
+ return mc.DeleteCols(myData, maxCPs, false);
}
-
-
- private string cleanZeroOrMinus(string myValue) {
- if(myValue == "0" || myValue == "-")
- return "";
- else
- return myValue;
- }
protected override string [] getSubLineToStore(System.Object myObject, int lineCount)
{
@@ -256,14 +225,15 @@ public class TreeViewMultiChronopic : TreeViewEvent
myData[count++] = ""; //description column
myData[count++] = "-1"; //mark to non select here, select first line
- return deleteCols(myData, maxCPs);
+ return mc.DeleteCols(myData, maxCPs, false);
} else {
ArrayList array = mc.AsArrayList(pDN);
- return deleteCols( array[lineCount-1].ToString().Split(new char[] {':'} ), maxCPs );
+ return mc.DeleteCols( array[lineCount-1].ToString().Split(new char[] {':'} ), maxCPs, false );
}
}
+ /*
private string [] deleteCols(string [] s1, int maxCPs) {
if(maxCPs == 2) {
string [] s2 = new String[11+1];
@@ -283,7 +253,7 @@ public class TreeViewMultiChronopic : TreeViewEvent
}
else //maxCPs == 4
return s1;
-
}
+ */
}
diff --git a/src/util.cs b/src/util.cs
index a6efa20..fe1d7cf 100644
--- a/src/util.cs
+++ b/src/util.cs
@@ -279,6 +279,14 @@ public class Util
return myStringBuilder.ToString();
}
+ public static string RemoveZeroOrMinus(string myString)
+ {
+ if(myString == "0" || myString == "-")
+ return "";
+ else
+ return myString;
+ }
+
public static string ChangeEqualForColon(string myString)
{
StringBuilder myStringBuilder = new StringBuilder(myString);
diff --git a/version.txt b/version.txt
index 4810611..cc02ea7 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-0.8.3.2
+0.8.9.0
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]