[chronojump] 689655 - Add single-leg jumps (better)



commit a755887d69b3a6e53ffe5f9061b53cc491ca1679
Author: Xavier de Blas <xaviblas gmail com>
Date:   Fri Dec 7 11:16:37 2012 +0100

    689655 - Add single-leg jumps (better)

 src/gui/jump.cs |   61 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 55 insertions(+), 6 deletions(-)
---
diff --git a/src/gui/jump.cs b/src/gui/jump.cs
index 080df63..cc1a2f2 100644
--- a/src/gui/jump.cs
+++ b/src/gui/jump.cs
@@ -198,12 +198,38 @@ public class EditJumpWindow : EditEventWindow
 	//this disallows loops on radio actions	
 	private bool toggleRaisesSignal = true;
 
+	private bool slCMJDescriptionIsValid(string description) {
+		string [] d = description.Split(new char[] {' '});
+		if(d.Length != 5)
+			return false;
+		if(! Util.IsNumber(d[4], false))
+			return false;
+		if(d[0] != "Vertical" && d[0] != "Horizontal" && d[0] != "Lateral")
+			return false;
+		if(d[1] != "Right" && d[1] != "Left")
+			return false;
+		if(d[2] != "This" && d[2] != "Opposite" && d[2] != "Unknown")
+			return false;
+		if(d[3] != "This" && d[3] != "Opposite" && d[3] != "Both")
+			return false;
+
+		return true;
+	}
+	private string slCMJDescriptionDefault() {
+		string descDefault = "Vertical Right This This 0";
+		entry_description.Text = descDefault;
+		return descDefault;
+	}
+
 	private void fillSingleLeg(string description) {
 		frame_jumps_single_leg.Show();
 		entry_description.Sensitive = false;
+		
+		if(! slCMJDescriptionIsValid(description))
+			description = slCMJDescriptionDefault();
 
 		string [] d = description.Split(new char[] {' '});
-
+			
 		toggleRaisesSignal = false;
 		
 		switch(d[0]) {
@@ -243,7 +269,11 @@ public class EditJumpWindow : EditEventWindow
 	
 	private void on_radio_single_leg_1_toggled(object o, EventArgs args) {
 		if(toggleRaisesSignal) {
-			string [] d = entry_description.Text.Split(new char[] {' '});
+			string description = entry_description.Text;
+			if(! slCMJDescriptionIsValid(description))
+				description = slCMJDescriptionDefault();
+			string [] d = description.Split(new char[] {' '});
+
 			if(jumps_radiobutton_single_leg_mode_vertical.Active) {
 				d[0] = "Vertical";	
 				d[4] = "0";	
@@ -260,7 +290,11 @@ public class EditJumpWindow : EditEventWindow
 
 	private void on_radio_single_leg_2_toggled(object o, EventArgs args) {
 		if(toggleRaisesSignal) {
-			string [] d = entry_description.Text.Split(new char[] {' '});
+			string description = entry_description.Text;
+			if(! slCMJDescriptionIsValid(description))
+				description = slCMJDescriptionDefault();
+			string [] d = description.Split(new char[] {' '});
+
 			if(jumps_radiobutton_single_leg_right.Active)
 				d[1] = "Right";	
 			else
@@ -273,7 +307,11 @@ public class EditJumpWindow : EditEventWindow
 
 	private void on_radio_single_leg_3_toggled(object o, EventArgs args) {
 		if(toggleRaisesSignal) {
-			string [] d = entry_description.Text.Split(new char[] {' '});
+			string description = entry_description.Text;
+			if(! slCMJDescriptionIsValid(description))
+				description = slCMJDescriptionDefault();
+			string [] d = description.Split(new char[] {' '});
+
 			if(jumps_radiobutton_single_leg_dominance_this_limb.Active)
 				d[2] = "This";	
 			else if(jumps_radiobutton_single_leg_dominance_opposite.Active)
@@ -288,7 +326,11 @@ public class EditJumpWindow : EditEventWindow
 
 	private void on_radio_single_leg_4_toggled(object o, EventArgs args) {
 		if(toggleRaisesSignal) {
-			string [] d = entry_description.Text.Split(new char[] {' '});
+			string description = entry_description.Text;
+			if(! slCMJDescriptionIsValid(description))
+				description = slCMJDescriptionDefault();
+			string [] d = description.Split(new char[] {' '});
+
 			if(jumps_radiobutton_single_leg_fall_this_limb.Active)
 				d[3] = "This";	
 			else if(jumps_radiobutton_single_leg_fall_opposite.Active)
@@ -303,7 +345,10 @@ public class EditJumpWindow : EditEventWindow
 
 	private void on_spin_single_leg_changed(object o, EventArgs args) {
 		if(toggleRaisesSignal) {
-			string [] d = entry_description.Text.Split(new char[] {' '});
+			string description = entry_description.Text;
+			if(! slCMJDescriptionIsValid(description))
+				description = slCMJDescriptionDefault();
+			string [] d = description.Split(new char[] {' '});
 
 			d[4] = jumps_spinbutton_single_leg_distance.Value.ToString();
 
@@ -347,6 +392,10 @@ public class EditJumpWindow : EditEventWindow
 		}
 		
 		frame_jumps_single_leg.Visible = myJumpType.Name == "slCMJ";
+		entry_description.Sensitive = myJumpType.Name != "slCMJ";
+		if(myJumpType.Name == "slCMJ") {
+			fillSingleLeg(entry_description.Text);
+		}
 	}
 
 



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