chronojump r473 - in trunk: . build/data glade src src/execute src/gui src/sqlite web/data/langs/_en/Pages web/html_created_no_edit/print



Author: xaviblas
Date: Wed Mar 25 20:24:06 2009
New Revision: 473
URL: http://svn.gnome.org/viewvc/chronojump?rev=473&view=rev

Log:
0.8.2.9
doing multiChronopic
done sqlite conversion: new db: 0.68
created src/execute/multiChronopic.cs
created src/multiChronopic.cs
created src/sqlite/multiChronopic.cs
created src/treeViewMultiChronopic.cs

Fixed contants chronopic3 name (mistake on last svn ci)


Added:
   trunk/src/execute/multiChronopic.cs
   trunk/src/multiChronopic.cs
   trunk/src/sqlite/multiChronopic.cs
   trunk/src/treeViewMultiChronopic.cs
   trunk/web/data/langs/_en/Pages/construction_modular_circuit_platform
Modified:
   trunk/Makefile
   trunk/build/data/chronojump.prg
   trunk/build/data/chronojump_mini.prg
   trunk/build/data/version.txt
   trunk/changelog.txt
   trunk/glade/chronojump.glade
   trunk/src/constants.cs
   trunk/src/execute/event.cs
   trunk/src/execute/jump.cs
   trunk/src/gui/chronojump.cs
   trunk/src/jumpType.cs
   trunk/src/sqlite/main.cs
   trunk/version.txt
   trunk/web/data/langs/_en/Pages/construction_contact_platform
   trunk/web/data/langs/_en/Pages/screenshots
   trunk/web/html_created_no_edit/print/construction_contact_platform.html
   trunk/web/html_created_no_edit/print/screenshots.html

Modified: trunk/Makefile
==============================================================================
--- trunk/Makefile	(original)
+++ trunk/Makefile	Wed Mar 25 20:24:06 2009
@@ -39,13 +39,13 @@
 
 CHRONOJUMP_DEP_GRAPHS = src/stats/graphs/graphData.cs src/stats/graphs/graphSerie.cs src/stats/graphs/global.cs src/stats/graphs/sjCmjAbk.cs src/stats/graphs/sjCmjAbkPlus.cs src/stats/graphs/djIndex.cs src/stats/graphs/djQ.cs src/stats/graphs/rjIndex.cs src/stats/graphs/rjPotencyBosco.cs src/stats/graphs/rjEvolution.cs src/stats/graphs/ieIub.cs src/stats/graphs/fv.cs src/stats/graphs/potency.cs src/stats/graphs/rjAVGSD.cs
 
-CHRONOJUMP_DEP_SQLITE = src/sqlite/main.cs src/sqlite/preferences.cs src/sqlite/person.cs src/sqlite/session.cs src/sqlite/jump.cs src/sqlite/jumpRj.cs src/sqlite/jumpType.cs src/sqlite/run.cs src/sqlite/runInterval.cs src/sqlite/runType.cs src/sqlite/personSession.cs src/sqlite/stat.cs src/sqlite/pulse.cs src/sqlite/pulseType.cs src/sqlite/reactionTime.cs src/sqlite/event.cs src/sqlite/sport.cs src/sqlite/speciallity.cs src/sqlite/country.cs src/sqlite/server.cs
+CHRONOJUMP_DEP_SQLITE = src/sqlite/main.cs src/sqlite/preferences.cs src/sqlite/person.cs src/sqlite/session.cs src/sqlite/jump.cs src/sqlite/jumpRj.cs src/sqlite/jumpType.cs src/sqlite/run.cs src/sqlite/runInterval.cs src/sqlite/runType.cs src/sqlite/personSession.cs src/sqlite/stat.cs src/sqlite/pulse.cs src/sqlite/pulseType.cs src/sqlite/reactionTime.cs src/sqlite/multiChronopic.cs src/sqlite/event.cs src/sqlite/sport.cs src/sqlite/speciallity.cs src/sqlite/country.cs src/sqlite/server.cs
 
-CHRONOJUMP_DEP_EXECUTE = src/execute/event.cs src/execute/jump.cs src/execute/run.cs src/execute/pulse.cs src/execute/reactionTime.cs
+CHRONOJUMP_DEP_EXECUTE = src/execute/event.cs src/execute/jump.cs src/execute/run.cs src/execute/pulse.cs src/execute/reactionTime.cs src/execute/multiChronopic.cs
 
 CHRONOJUMP_DEP_SERVER = chronojump_server/ChronojumpServer.cs
 
-CHRONOJUMP_DEP = src/chronojump.cs src/person.cs src/event.cs src/eventType.cs src/jump.cs src/jumpType.cs src/run.cs src/runType.cs src/pulse.cs src/pulseType.cs src/reactionTime.cs src/reactionTimeType.cs src/session.cs src/exportSession.cs src/treeViewEvent.cs src/treeViewPerson.cs src/treeViewJump.cs src/treeViewRun.cs src/treeViewPulse.cs src/treeViewReactionTime.cs src/util.cs src/utilGtk.cs src/constants.cs src/report.cs src/updateProgressBar.cs src/prepareEventGraphObjects.cs src/sport.cs src/log.cs src/serverPing.cs src/serverEvaluator.cs src/server.cs $(CHRONOJUMP_DEP_GUI) $(CHRONOJUMP_DEP_STATS) $(CHRONOJUMP_DEP_GRAPHS) $(CHRONOJUMP_DEP_SQLITE) $(CHRONOJUMP_DEP_REPORT) $(CHRONOJUMP_DEP_EXECUTE) $(CHRONOJUMP_DEP_SERVER)
+CHRONOJUMP_DEP = src/chronojump.cs src/person.cs src/event.cs src/eventType.cs src/jump.cs src/jumpType.cs src/run.cs src/runType.cs src/pulse.cs src/pulseType.cs src/reactionTime.cs src/reactionTimeType.cs src/multiChronopic.cs src/session.cs src/exportSession.cs src/treeViewEvent.cs src/treeViewPerson.cs src/treeViewJump.cs src/treeViewRun.cs src/treeViewPulse.cs src/treeViewReactionTime.cs src/treeViewMultiChronopic.cs src/util.cs src/utilGtk.cs src/constants.cs src/report.cs src/updateProgressBar.cs src/prepareEventGraphObjects.cs src/sport.cs src/log.cs src/serverPing.cs src/serverEvaluator.cs src/server.cs $(CHRONOJUMP_DEP_GUI) $(CHRONOJUMP_DEP_STATS) $(CHRONOJUMP_DEP_GRAPHS) $(CHRONOJUMP_DEP_SQLITE) $(CHRONOJUMP_DEP_REPORT) $(CHRONOJUMP_DEP_EXECUTE) $(CHRONOJUMP_DEP_SERVER)
 
 RESOURCES_GLADE = -resource:glade/chronojump.glade,chronojump.glade
 

Modified: trunk/build/data/chronojump.prg
==============================================================================
Binary files. No diff available.

Modified: trunk/build/data/chronojump_mini.prg
==============================================================================
Binary files. No diff available.

Modified: trunk/build/data/version.txt
==============================================================================
--- trunk/build/data/version.txt	(original)
+++ trunk/build/data/version.txt	Wed Mar 25 20:24:06 2009
@@ -1 +1 @@
-0.8.2.8
+0.8.2.9

Modified: trunk/changelog.txt
==============================================================================
--- trunk/changelog.txt	(original)
+++ trunk/changelog.txt	Wed Mar 25 20:24:06 2009
@@ -48,13 +48,49 @@
 in execution graph put avgs as horizontal lines
 and plot all tests of same type of same person
 
+25 mar 2009
+        0.8.2.9
+ doing multiChronopic
+ done sqlite conversion: new db: 0.68
+ created src/execute/multiChronopic.cs
+ created src/multiChronopic.cs
+ created src/sqlite/multiChronopic.cs
+ created src/treeViewMultiChronopic.cs
+
+count time(s)  cp change diff same cp diff all cp
+1          10   1     IN           10          10
+2          15   2     IN           15           5
+3          20   1    OUT           10           5
+3          20   3     IN           20           0
+4          25   2    OUT           10           5
+5          30   3    OUT           10           5
+6          60   1     IN           40          30
+7          65   2     IN           40           5
+8          70   3     IN           40           5
+
+do like this:
+                     state  time change   time IN-IN time OUT-OUT
+count time(s)  cp1 cp2 cp3  cp1 cp2 cp3  cp1 cp2 cp3  cp1 cp2 cp3
+0           0  OUT OUT OUT 
+1          10   IN           10
+2          15       IN           15
+3          20  OUT      IN   10      20                20
+4          25  	   OUT           10                        25
+5          30          OUT           10                        30 
+6          60   IN           40           50
+7          65       IN           40           50
+8          70           IN           40           50
+
+
+	Fixed contants chronopic3 name (mistake on last svn ci)
 
 19 mar 2009
         0.8.2.8
         db 0.67
 	done takeoff, added in db, created images
 
-        RunAnalysis done (only remains to export, report ok)
+        RunAnalysis done (only remains to export, report ok) update: but needs to be
+	redone as a new treeview
         db 0.66
 
 	Added a pulsebar (activity) on upload session

Modified: trunk/glade/chronojump.glade
==============================================================================
--- trunk/glade/chronojump.glade	(original)
+++ trunk/glade/chronojump.glade	Wed Mar 25 20:24:06 2009
@@ -13155,6 +13155,805 @@
 		      <property name="type">tab</property>
 		    </packing>
 		  </child>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox169">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkFrame" id="frame44">
+			  <property name="visible">True</property>
+			  <property name="label_xalign">0</property>
+			  <property name="label_yalign">0.5</property>
+			  <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+			  <child>
+			    <widget class="GtkAlignment" id="alignment129">
+			      <property name="visible">True</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xscale">1</property>
+			      <property name="yscale">1</property>
+			      <property name="top_padding">0</property>
+			      <property name="bottom_padding">0</property>
+			      <property name="left_padding">0</property>
+			      <property name="right_padding">0</property>
+
+			      <child>
+				<widget class="GtkVBox" id="vbox170">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">0</property>
+
+				  <child>
+				    <widget class="GtkHBox" id="hbox313">
+				      <property name="visible">True</property>
+				      <property name="homogeneous">False</property>
+				      <property name="spacing">4</property>
+
+				      <child>
+					<widget class="GtkFrame" id="frame45">
+					  <property name="visible">True</property>
+					  <property name="label_xalign">0</property>
+					  <property name="label_yalign">0.5</property>
+					  <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+					  <child>
+					    <widget class="GtkAlignment" id="alignment131">
+					      <property name="visible">True</property>
+					      <property name="xalign">0.5</property>
+					      <property name="yalign">0.5</property>
+					      <property name="xscale">1</property>
+					      <property name="yscale">1</property>
+					      <property name="top_padding">0</property>
+					      <property name="bottom_padding">0</property>
+					      <property name="left_padding">12</property>
+					      <property name="right_padding">0</property>
+
+					      <child>
+						<widget class="GtkTable" id="table62">
+						  <property name="visible">True</property>
+						  <property name="n_rows">2</property>
+						  <property name="n_columns">1</property>
+						  <property name="homogeneous">False</property>
+						  <property name="row_spacing">0</property>
+						  <property name="column_spacing">0</property>
+
+						  <child>
+						    <widget class="GtkHBox" id="hbox311">
+						      <property name="visible">True</property>
+						      <property name="homogeneous">False</property>
+						      <property name="spacing">8</property>
+
+						      <child>
+							<widget class="GtkButton" id="button34">
+							  <property name="visible">True</property>
+							  <property name="can_focus">True</property>
+							  <property name="label" translatable="yes">button34</property>
+							  <property name="use_underline">True</property>
+							  <property name="relief">GTK_RELIEF_NORMAL</property>
+							  <property name="focus_on_click">True</property>
+							</widget>
+							<packing>
+							  <property name="padding">0</property>
+							  <property name="expand">False</property>
+							  <property name="fill">False</property>
+							</packing>
+						      </child>
+
+						      <child>
+							<widget class="GtkLabel" id="label671">
+							  <property name="visible">True</property>
+							  <property name="label" translatable="yes">Connected?</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>
+						    </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">fill</property>
+						    </packing>
+						  </child>
+
+						  <child>
+						    <widget class="GtkHBox" id="hbox310">
+						      <property name="visible">True</property>
+						      <property name="homogeneous">False</property>
+						      <property name="spacing">0</property>
+
+						      <child>
+							<widget class="GtkLabel" id="label668">
+							  <property name="visible">True</property>
+							  <property name="label" translatable="yes">/dev/tty</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="GtkEntry" id="entry_multi_chronopic_cp2">
+							  <property name="visible">True</property>
+							  <property name="can_focus">True</property>
+							  <property name="editable">True</property>
+							  <property name="visibility">True</property>
+							  <property name="max_length">0</property>
+							  <property name="text" translatable="yes"></property>
+							  <property name="has_frame">True</property>
+							  <property name="invisible_char">â</property>
+							  <property name="activates_default">False</property>
+							  <property name="width_chars">5</property>
+							</widget>
+							<packing>
+							  <property name="padding">0</property>
+							  <property name="expand">False</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">0</property>
+						      <property name="bottom_attach">1</property>
+						      <property name="x_options">fill</property>
+						    </packing>
+						  </child>
+						</widget>
+					      </child>
+					    </widget>
+					  </child>
+
+					  <child>
+					    <widget class="GtkLabel" id="label673">
+					      <property name="visible">True</property>
+					      <property name="label">&lt;b&gt;Chronopic2&lt;/b&gt;</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.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="type">label_item</property>
+					    </packing>
+					  </child>
+					</widget>
+					<packing>
+					  <property name="padding">0</property>
+					  <property name="expand">False</property>
+					  <property name="fill">True</property>
+					</packing>
+				      </child>
+
+				      <child>
+					<widget class="GtkFrame" id="frame46">
+					  <property name="visible">True</property>
+					  <property name="label_xalign">0</property>
+					  <property name="label_yalign">0.5</property>
+					  <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+					  <child>
+					    <widget class="GtkAlignment" id="alignment132">
+					      <property name="visible">True</property>
+					      <property name="xalign">0.5</property>
+					      <property name="yalign">0.5</property>
+					      <property name="xscale">1</property>
+					      <property name="yscale">1</property>
+					      <property name="top_padding">0</property>
+					      <property name="bottom_padding">0</property>
+					      <property name="left_padding">12</property>
+					      <property name="right_padding">0</property>
+
+					      <child>
+						<widget class="GtkTable" id="table63">
+						  <property name="visible">True</property>
+						  <property name="n_rows">2</property>
+						  <property name="n_columns">1</property>
+						  <property name="homogeneous">False</property>
+						  <property name="row_spacing">0</property>
+						  <property name="column_spacing">0</property>
+
+						  <child>
+						    <widget class="GtkHBox" id="hbox314">
+						      <property name="visible">True</property>
+						      <property name="homogeneous">False</property>
+						      <property name="spacing">8</property>
+
+						      <child>
+							<widget class="GtkButton" id="button35">
+							  <property name="visible">True</property>
+							  <property name="can_focus">True</property>
+							  <property name="label" translatable="yes">button34</property>
+							  <property name="use_underline">True</property>
+							  <property name="relief">GTK_RELIEF_NORMAL</property>
+							  <property name="focus_on_click">True</property>
+							</widget>
+							<packing>
+							  <property name="padding">0</property>
+							  <property name="expand">False</property>
+							  <property name="fill">False</property>
+							</packing>
+						      </child>
+
+						      <child>
+							<widget class="GtkLabel" id="label674">
+							  <property name="visible">True</property>
+							  <property name="label" translatable="yes">Connected?</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>
+						    </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">fill</property>
+						    </packing>
+						  </child>
+
+						  <child>
+						    <widget class="GtkHBox" id="hbox315">
+						      <property name="visible">True</property>
+						      <property name="homogeneous">False</property>
+						      <property name="spacing">0</property>
+
+						      <child>
+							<widget class="GtkLabel" id="label675">
+							  <property name="visible">True</property>
+							  <property name="label" translatable="yes">/dev/tty</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="GtkEntry" id="entry2">
+							  <property name="visible">True</property>
+							  <property name="can_focus">True</property>
+							  <property name="editable">True</property>
+							  <property name="visibility">True</property>
+							  <property name="max_length">0</property>
+							  <property name="text" translatable="yes"></property>
+							  <property name="has_frame">True</property>
+							  <property name="invisible_char">â</property>
+							  <property name="activates_default">False</property>
+							  <property name="width_chars">5</property>
+							</widget>
+							<packing>
+							  <property name="padding">0</property>
+							  <property name="expand">False</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">0</property>
+						      <property name="bottom_attach">1</property>
+						      <property name="x_options">fill</property>
+						    </packing>
+						  </child>
+						</widget>
+					      </child>
+					    </widget>
+					  </child>
+
+					  <child>
+					    <widget class="GtkLabel" id="label676">
+					      <property name="visible">True</property>
+					      <property name="label">&lt;b&gt;Chronopic3&lt;/b&gt;</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.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="type">label_item</property>
+					    </packing>
+					  </child>
+					</widget>
+					<packing>
+					  <property name="padding">0</property>
+					  <property name="expand">False</property>
+					  <property name="fill">True</property>
+					</packing>
+				      </child>
+
+				      <child>
+					<widget class="GtkFrame" id="frame47">
+					  <property name="visible">True</property>
+					  <property name="label_xalign">0</property>
+					  <property name="label_yalign">0.5</property>
+					  <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+					  <child>
+					    <widget class="GtkAlignment" id="alignment133">
+					      <property name="visible">True</property>
+					      <property name="xalign">0.5</property>
+					      <property name="yalign">0.5</property>
+					      <property name="xscale">1</property>
+					      <property name="yscale">1</property>
+					      <property name="top_padding">0</property>
+					      <property name="bottom_padding">0</property>
+					      <property name="left_padding">12</property>
+					      <property name="right_padding">0</property>
+
+					      <child>
+						<widget class="GtkTable" id="table64">
+						  <property name="visible">True</property>
+						  <property name="n_rows">2</property>
+						  <property name="n_columns">1</property>
+						  <property name="homogeneous">False</property>
+						  <property name="row_spacing">0</property>
+						  <property name="column_spacing">0</property>
+
+						  <child>
+						    <widget class="GtkHBox" id="hbox316">
+						      <property name="visible">True</property>
+						      <property name="homogeneous">False</property>
+						      <property name="spacing">8</property>
+
+						      <child>
+							<widget class="GtkButton" id="button36">
+							  <property name="visible">True</property>
+							  <property name="can_focus">True</property>
+							  <property name="label" translatable="yes">button34</property>
+							  <property name="use_underline">True</property>
+							  <property name="relief">GTK_RELIEF_NORMAL</property>
+							  <property name="focus_on_click">True</property>
+							</widget>
+							<packing>
+							  <property name="padding">0</property>
+							  <property name="expand">False</property>
+							  <property name="fill">False</property>
+							</packing>
+						      </child>
+
+						      <child>
+							<widget class="GtkLabel" id="label677">
+							  <property name="visible">True</property>
+							  <property name="label" translatable="yes">Connected?</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>
+						    </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">fill</property>
+						    </packing>
+						  </child>
+
+						  <child>
+						    <widget class="GtkHBox" id="hbox317">
+						      <property name="visible">True</property>
+						      <property name="homogeneous">False</property>
+						      <property name="spacing">0</property>
+
+						      <child>
+							<widget class="GtkLabel" id="label678">
+							  <property name="visible">True</property>
+							  <property name="label" translatable="yes">/dev/tty</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="GtkEntry" id="entry3">
+							  <property name="visible">True</property>
+							  <property name="can_focus">True</property>
+							  <property name="editable">True</property>
+							  <property name="visibility">True</property>
+							  <property name="max_length">0</property>
+							  <property name="text" translatable="yes"></property>
+							  <property name="has_frame">True</property>
+							  <property name="invisible_char">â</property>
+							  <property name="activates_default">False</property>
+							  <property name="width_chars">5</property>
+							</widget>
+							<packing>
+							  <property name="padding">0</property>
+							  <property name="expand">False</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">0</property>
+						      <property name="bottom_attach">1</property>
+						      <property name="x_options">fill</property>
+						    </packing>
+						  </child>
+						</widget>
+					      </child>
+					    </widget>
+					  </child>
+
+					  <child>
+					    <widget class="GtkLabel" id="label679">
+					      <property name="visible">True</property>
+					      <property name="label">&lt;b&gt;Chronopic4&lt;/b&gt;</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.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="type">label_item</property>
+					    </packing>
+					  </child>
+					</widget>
+					<packing>
+					  <property name="padding">0</property>
+					  <property name="expand">False</property>
+					  <property name="fill">True</property>
+					</packing>
+				      </child>
+				    </widget>
+				    <packing>
+				      <property name="padding">4</property>
+				      <property name="expand">True</property>
+				      <property name="fill">True</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkHBox" id="hbox307">
+				      <property name="visible">True</property>
+				      <property name="homogeneous">False</property>
+				      <property name="spacing">0</property>
+
+				      <child>
+					<widget class="GtkAlignment" id="alignment130">
+					  <property name="visible">True</property>
+					  <property name="xalign">0.5</property>
+					  <property name="yalign">0.5</property>
+					  <property name="xscale">1</property>
+					  <property name="yscale">1</property>
+					  <property name="top_padding">0</property>
+					  <property name="bottom_padding">0</property>
+					  <property name="left_padding">0</property>
+					  <property name="right_padding">0</property>
+
+					  <child>
+					    <widget class="GtkButton" id="button_multi_chronopic_start">
+					      <property name="visible">True</property>
+					      <property name="can_focus">True</property>
+					      <property name="label" translatable="yes">Start</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_button_multi_chronopic_start_clicked" last_modification_time="Tue, 24 Mar 2009 23:07:49 GMT"/>
+					    </widget>
+					  </child>
+					</widget>
+					<packing>
+					  <property name="padding">0</property>
+					  <property name="expand">False</property>
+					  <property name="fill">False</property>
+					</packing>
+				      </child>
+				    </widget>
+				    <packing>
+				      <property name="padding">4</property>
+				      <property name="expand">False</property>
+				      <property name="fill">True</property>
+				    </packing>
+				  </child>
+				</widget>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkHBox" id="hbox308">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkScrolledWindow" id="scrolledwindow35">
+			      <property name="width_request">200</property>
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+			      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+			      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+			      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+			      <child>
+				<widget class="GtkTreeView" id="treeview_multi_chronopic">
+				  <property name="visible">True</property>
+				  <property name="headers_visible">True</property>
+				  <property name="rules_hint">True</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>
+				  <signal name="button_release_event" handler="on_treeview_button_release_event" last_modification_time="Sun, 21 Oct 2007 23:49:19 GMT"/>
+				</widget>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkVBox" id="vbox171">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">0</property>
+
+			      <child>
+				<widget class="GtkButton" id="button31">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Change zoom (z)</property>
+				  <property name="can_focus">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <accelerator key="z" modifiers="0" signal="clicked"/>
+
+				  <child>
+				    <widget class="GtkImage" id="image4207">
+				      <property name="visible">True</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkButton" id="button32">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Edit selected (e)</property>
+				  <property name="can_focus">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <accelerator key="e" modifiers="0" signal="clicked"/>
+
+				  <child>
+				    <widget class="GtkImage" id="image4208">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-edit</property>
+				      <property name="icon_size">1</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkButton" id="button33">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Delete selected (d)</property>
+				  <property name="can_focus">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <accelerator key="d" modifiers="0" signal="clicked"/>
+
+				  <child>
+				    <widget class="GtkImage" id="image4209">
+				      <property name="visible">True</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">True</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="tab_expand">False</property>
+		      <property name="tab_fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label666">
+		      <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.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="type">tab</property>
+		    </packing>
+		  </child>
 		</widget>
 		<packing>
 		  <property name="padding">4</property>

Modified: trunk/src/constants.cs
==============================================================================
--- trunk/src/constants.cs	(original)
+++ trunk/src/constants.cs	Wed Mar 25 20:24:06 2009
@@ -65,6 +65,7 @@
 	public const string TempRunIntervalTable = "tempRunInterval";
 	public const string PulseTable = "pulse";
 	public const string ReactionTimeTable = "reactionTime";
+	public const string MultiChronopicTable = "multiChronopic";
 
 	//tests types
 	public const string JumpTypeTable = "jumpType";
@@ -94,7 +95,7 @@
 	
 	public const string ChronometerCp1 = "Chronopic1";
 	public const string ChronometerCp2 = "Chronopic2";
-	public const string ChronometerCp3 = "Chronopic32";
+	public const string ChronometerCp3 = "Chronopic3";
 	public static string [] Chronometers = {
 		UndefinedDefault, 
 		ChronometerCp1,

Modified: trunk/src/execute/event.cs
==============================================================================
--- trunk/src/execute/event.cs	(original)
+++ trunk/src/execute/event.cs	Wed Mar 25 20:24:06 2009
@@ -145,7 +145,6 @@
 		simulatedCurrentTimeIntervalsAreContact = false;
 	}
 
-	//protected virtual Chronopic.Plataforma chronopicInitialValue(Chronopic cp)
 	protected Chronopic.Plataforma chronopicInitialValue(Chronopic cp)
 	{
 		Chronopic.Plataforma myPlatformState  = Chronopic.Plataforma.UNKNOW; //on (in platform), off (jumping), or unknow
@@ -220,7 +219,7 @@
 	//onTimer allow to update progressbar_time every 50 milliseconds
 	//also can change platform state in simulated mode
 	//protected void onTimer( Object source, ElapsedEventArgs e )
-	protected void onTimer( )
+	protected virtual void onTimer( )
 	{
 		timerCount = timerCount + .05; //0,05 segons == 50 milliseconds, time between each call of onTimer
 		

Modified: trunk/src/execute/jump.cs
==============================================================================
--- trunk/src/execute/jump.cs	(original)
+++ trunk/src/execute/jump.cs	Wed Mar 25 20:24:06 2009
@@ -601,7 +601,6 @@
 			//if chronopic signal is Ok and state has changed
 			if (ok && (
 					(platformState == Chronopic.Plataforma.ON && loggedState == States.OFF) ||
-					//(platformState == Chronopic.Plataforma.OFF && loggedState == States.ON) ) ) {
 					(platformState == Chronopic.Plataforma.OFF && loggedState == States.ON) ) 
 						&& !cancel && !finish) {
 				
@@ -916,6 +915,8 @@
 			double speed = (fall /10) / Util.GetTotalTime(tcString, tvString);
 	
 	/*		
+	 *		Josep Ma PadullÃs test
+	 *
 			string tcStringWithoutFirst = Util.DeleteFirstSubEvent(tcString);
 			string tvStringWithoutFirst = Util.DeleteFirstSubEvent(tvString);
 		

Added: trunk/src/execute/multiChronopic.cs
==============================================================================
--- (empty file)
+++ trunk/src/execute/multiChronopic.cs	Wed Mar 25 20:24:06 2009
@@ -0,0 +1,346 @@
+/*
+ * This file is part of ChronoJump
+ *
+ * ChronoJump is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or   
+ *    (at your option) any later version.
+ *    
+ * ChronoJump is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ *    GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Xavier de Blas: 
+ */
+
+using System;
+using System.Data;
+using System.Text; //StringBuilder
+
+using System.Threading;
+using System.IO.Ports;
+using Mono.Unix;
+
+public class MultiChronopicExecute : EventExecute
+{
+	//better as private and don't inherit, don't know why
+	//protected Chronopic cp;
+	private Chronopic cp;
+
+	//2nd Chronopic stuff
+	protected Thread thread2;
+	SerialPort sp2;
+	private Chronopic cp2;
+	private Chronopic.Plataforma platformState2;
+	protected States loggedState2;
+	private string port2;
+	
+	//3rd Chronopic stuff
+	protected Thread thread3;
+	SerialPort sp3;
+	private Chronopic cp3;
+	private Chronopic.Plataforma platformState3;
+	protected States loggedState3;
+	private string port3;
+	
+	//4th Chronopic stuff
+	protected Thread thread4;
+	SerialPort sp4;
+	private Chronopic cp4;
+	private Chronopic.Plataforma platformState4;
+	protected States loggedState4;
+	private string port4;
+	
+
+	static bool firstValue = true;
+
+	
+
+	public MultiChronopicExecute() {
+	}
+
+	//jump execution
+	public MultiChronopicExecute(Chronopic cp, Gtk.Statusbar appbar, Gtk.Window app, string port2)
+	{
+		this.cp = cp;
+		this.appbar = appbar;
+		this.app = app;
+		this.port2 = port2;
+		
+		fakeButtonFinished = new Gtk.Button();
+		
+		simulated = false;
+	}
+	
+	public override void SimulateInitValues(Random randSent)
+	{
+	}
+
+	//onTimer allow to update progressbar_time every 50 milliseconds
+	//also can change platform state in simulated mode
+	//protected void onTimer( Object source, ElapsedEventArgs e )
+	protected override void onTimer( )
+	{
+		timerCount = timerCount + .05; //0,05 segons == 50 milliseconds, time between each call of onTimer
+		
+		/* this will be good for not continue counting the time on eventWindow when event has finished
+		 * this will help to sync chronopic data with the timerCount data
+		 * later also, copy the value of the chronopic to the timerCount label
+		 */
+
+		/*
+		//updateTimeProgressBar();
+		if(needEndEvent) {
+			eventExecuteWin.EventEnded();
+			//needEndEvent = false;
+		} else 
+			updateTimeProgressBar();
+		
+		
+		if(simulated) {
+			eventSimulatedShouldChangePlatform();
+		}
+
+		if(needUpdateEventProgressBar) {
+			//update event progressbar
+			eventExecuteWin.ProgressBarEventOrTimePreExecution(
+					updateProgressBar.IsEvent,
+					updateProgressBar.PercentageMode,
+					updateProgressBar.ValueToShow
+					);  
+
+			needUpdateEventProgressBar = false;
+		}
+		
+	
+		if(needUpdateGraph) {
+			updateGraph();
+			needUpdateGraph = false;
+		}
+		
+		if(needSensitiveButtonFinish) {
+			eventExecuteWin.ButtonFinishMakeSensitive();
+			needSensitiveButtonFinish = false;
+		}
+		
+		//check if it should finish by time
+		if(shouldFinishByTime()) {
+			finish = true;
+			updateProgressBarForFinish();
+		} 
+		//else 
+		//	updateTimeProgressBar();
+		*/
+	}
+			
+
+	//private bool connectChronopic2(string myPort) 
+	private bool connectOtherChronopics(Chronopic myCp, SerialPort mySp, Chronopic.Plataforma myPS, string myPort) 
+	{
+		bool success = false;
+		try {
+			Log.WriteLine(string.Format("chronopic port: {0}", myPort));
+			mySp = new SerialPort(myPort);
+			mySp.Open();
+			//-- Create chronopic object, for accessing chronopic
+			myCp = new Chronopic(mySp);
+
+			//-- Obtener el estado inicial de la plataforma
+			bool ok=false;
+			do
+				ok=myCp.Read_platform(out myPS);
+			while(!ok);
+			if (!ok) {
+				//-- Si hay error terminar
+				Log.WriteLine(string.Format("Error: {0}", myCp.Error));
+				success = false;
+			}
+		} catch {
+			success = false;
+		}
+		return success;
+	}
+
+	public override void Manage()
+	{
+		connectOtherChronopics(cp2, sp2, platformState2, port2);
+		//connectOtherChronopics(cp3, sp3, platformState3, port3);
+		//connectOtherChronopics(cp4, sp4, platformState4, port4);
+
+		platformState = chronopicInitialValue(cp);
+		platformState2 = chronopicInitialValue(cp2);
+		//platformState3 = chronopicInitialValue(cp3);
+		//platformState4 = chronopicInitialValue(cp4);
+		
+		string cpStr = "";
+		string cp2Str = "";
+		//3
+		//4
+		
+		if (platformState==Chronopic.Plataforma.ON) {
+			cpStr = "cp1" + " " + "IN";
+			loggedState = States.ON;
+		} else {
+			cpStr = "cp1" + " " + "OUT";
+			loggedState = States.OFF;
+		}
+			
+		if (platformState2==Chronopic.Plataforma.ON) {
+			cp2Str = "cp2" + " " + "IN";
+			loggedState2 = States.ON;
+		} else {
+			cp2Str = "cp2" + " " + "OUT";
+			loggedState2 = States.OFF;
+		}
+		//3
+		//4
+			
+		appbar.Push( 1, cpStr + " / " + cp2Str);
+
+		//start thread
+		//Log.Write("Start thread");
+		thread = new Thread(new ThreadStart(waitEvent));
+		thread2 = new Thread(new ThreadStart(waitEvent2));
+		//3
+		//4
+
+		GLib.Idle.Add (new GLib.IdleHandler (PulseGTK));
+
+		thread.Start(); 
+		thread2.Start(); 
+		//3
+		//4
+	}
+
+	
+	protected override void waitEvent ()
+	{
+		double timestamp = 0;
+		bool success = false;
+		bool ok;
+
+		do {
+			ok = cp.Read_event(out timestamp, out platformState);
+			
+			//if chronopic signal is Ok and state has changed
+			if (ok && (
+					(platformState == Chronopic.Plataforma.ON && loggedState == States.OFF) ||
+					(platformState == Chronopic.Plataforma.OFF && loggedState == States.ON) ) 
+						&& !cancel && !finish) {
+				
+				//while no finished time or jumps, continue recording events
+				if ( ! success) {
+					//don't record the time until the first event
+					if (firstValue) {
+						firstValue = false;
+
+						//but start timer
+						initializeTimer();
+					} else {
+						if(platformState == Chronopic.Plataforma.ON && loggedState == States.OFF)
+							Log.WriteLine("cp1 landed");
+						else if(platformState == Chronopic.Plataforma.OFF && loggedState == States.ON)
+							Log.WriteLine("cp1 jumped");
+								
+						needSensitiveButtonFinish = true;
+					}
+				}
+
+				if(platformState == Chronopic.Plataforma.OFF)
+					loggedState = States.OFF;
+				else
+					loggedState = States.ON;
+
+			}
+		} while ( ! success && ! cancel && ! finish );
+	
+		if (finish) {
+			totallyFinished = true;
+		}
+		if(cancel) {
+			//event will be raised, and managed in chronojump.cs
+			fakeButtonFinished.Click();
+			totallyCancelled = true;
+		}
+	}
+		
+	private void waitEvent2 ()
+	{
+		double timestamp = 0;
+		bool success = false;
+		bool ok;
+
+		do {
+			ok = cp2.Read_event(out timestamp, out platformState2);
+			
+			//if chronopic signal is Ok and state has changed
+			if (ok && (
+					(platformState2 == Chronopic.Plataforma.ON && loggedState2 == States.OFF) ||
+					(platformState2 == Chronopic.Plataforma.OFF && loggedState2 == States.ON) ) 
+						&& !cancel && !finish) {
+				
+				//while no finished time or jumps, continue recording events
+				if ( ! success) {
+					//don't record the time until the first event
+					if (firstValue) {
+						firstValue = false;
+
+						//but start timer
+						initializeTimer();
+					} else {
+						if(platformState2 == Chronopic.Plataforma.ON && loggedState2 == States.OFF)
+							Log.WriteLine("cp2 landed");
+						else if(platformState2 == Chronopic.Plataforma.OFF && loggedState2 == States.ON)
+							Log.WriteLine("cp2 jumped");
+								
+						needSensitiveButtonFinish = true;
+					}
+				}
+
+				if(platformState2 == Chronopic.Plataforma.OFF)
+					loggedState2 = States.OFF;
+				else
+					loggedState2 = States.ON;
+
+			}
+		} while ( ! success && ! cancel && ! finish );
+	
+		if (finish) {
+			totallyFinished = true;
+		}
+		if(cancel) {
+			//event will be raised, and managed in chronojump.cs
+			fakeButtonFinished.Click();
+			totallyCancelled = true;
+		}
+	}
+	
+	protected override bool shouldFinishByTime() {
+		return false; //this kind of events (simple or Dj jumps) cannot be finished by time
+	}
+	
+	protected override void updateTimeProgressBar() {
+		/*
+		//has no finished, but move progressbar time
+		eventExecuteWin.ProgressBarEventOrTimePreExecution(
+				false, //isEvent false: time
+				false, //activity mode
+				-1	//don't want to show info on label
+				); 
+				*/
+	}
+
+	protected override void write()
+	{
+	}
+	
+
+	~MultiChronopicExecute() {}
+	   
+}
+

Modified: trunk/src/gui/chronojump.cs
==============================================================================
--- trunk/src/gui/chronojump.cs	(original)
+++ trunk/src/gui/chronojump.cs	Wed Mar 25 20:24:06 2009
@@ -41,6 +41,7 @@
 	[Widget] Gtk.TreeView treeview_runs_interval;
 	[Widget] Gtk.TreeView treeview_reaction_times;
 	[Widget] Gtk.TreeView treeview_pulses;
+	[Widget] Gtk.TreeView treeview_multi_chronopic;
 	[Widget] Gtk.Box hbox_combo_jumps;
 	[Widget] Gtk.Box hbox_combo_jumps_rj;
 	[Widget] Gtk.Box hbox_combo_runs;
@@ -181,6 +182,8 @@
 	[Widget] Gtk.MenuItem menuitem_run_interval_unlimited;
 	[Widget] Gtk.MenuItem menuitem_run_interval_mtgug;
 	[Widget] Gtk.MenuItem menuitem_run_analysis;
+				
+	[Widget] Gtk.Entry entry_multi_chronopic_cp2;
 
 	[Widget] Gtk.Button button_edit_current_person;
 	[Widget] Gtk.MenuItem menuitem_edit_current_person;
@@ -251,6 +254,9 @@
 	//pulses
 	private TreeStore treeview_pulses_store;
 	private TreeViewPulses myTreeViewPulses;
+	//multiChronopic
+	private TreeStore treeview_multi_chronopic_store;
+	private TreeViewMultiChronopic myTreeViewMultiChronopic;
 
 	//preferences variables
 	private static string chronopicPort;
@@ -435,13 +441,14 @@
 		loadPreferences ();
 		preferencesLoaded = true;
 
-		createTreeView_persons(treeview_persons);
-		createTreeView_jumps(treeview_jumps);
-		createTreeView_jumps_rj(treeview_jumps_rj);
-		createTreeView_runs(treeview_runs);
-		createTreeView_runs_interval(treeview_runs_interval);
-		createTreeView_reaction_times(treeview_reaction_times);
-		createTreeView_pulses(treeview_pulses);
+		createTreeView_persons (treeview_persons);
+		createTreeView_jumps (treeview_jumps);
+		createTreeView_jumps_rj (treeview_jumps_rj);
+		createTreeView_runs (treeview_runs);
+		createTreeView_runs_interval (treeview_runs_interval);
+		createTreeView_reaction_times (treeview_reaction_times);
+		createTreeView_pulses (treeview_pulses);
+		createTreeView_multi_chronopic (treeview_multi_chronopic);
 
 		createComboJumps();
 		createComboJumpsRj();
@@ -801,6 +808,13 @@
 					Pulse myPulse = SqlitePulse.SelectPulseData( myTreeViewPulses.EventSelectedID );
 					treeviewPulsesContextMenu(myPulse);
 				}
+			} else if(myTv == treeview_multi_chronopic) {
+				/*
+				if (myTreeViewPulses.EventSelectedID > 0) {
+					Pulse myPulse = SqlitePulse.SelectPulseData( myTreeViewPulses.EventSelectedID );
+					treeviewPulsesContextMenu(myPulse);
+				}
+				*/
 			} else
 				Log.WriteLine(myTv.ToString());
 		}
@@ -1506,6 +1520,34 @@
 		myMenu.ShowAll();
 	}
 
+	/* ---------------------------------------------------------
+	 * ----------------  TREEVIEW MULTI CHRONOPIC --------------
+	 *  --------------------------------------------------------
+	 */
+
+	private void createTreeView_multi_chronopic (Gtk.TreeView tv) {
+		//myTreeViewMultiChronopic is a TreeViewMultiChronopic instance
+		myTreeViewMultiChronopic = new TreeViewMultiChronopic( tv, prefsDigitsNumber, TreeViewEvent.ExpandStates.MINIMIZED );
+
+		//the glade cursor_changed does not work on mono 1.2.5 windows
+//		tv.CursorChanged += on_treeview_multi_chronopic_cursor_changed; 
+	}
+
+	private void on_button_multi_chronopic_start_clicked (object o, EventArgs args) {
+				
+		//TODO: check this is ok: entry_multi_chronopic_cp2);
+		currentEventExecute = new MultiChronopicExecute(cp, appbar2, app1, 
+				"/dev/tty" + entry_multi_chronopic_cp2.Text);
+
+		currentEventExecute.Manage();
+
+		currentEventExecute.FakeButtonFinished.Clicked += new EventHandler(on_multi_chronopic_finished);
+	}
+
+	private void on_multi_chronopic_finished (object o, EventArgs args) {
+		currentEventExecute.FakeButtonFinished.Clicked -= new EventHandler(on_multi_chronopic_finished);
+	}
+		
 
 
 	/* ---------------------------------------------------------
@@ -2290,6 +2332,7 @@
 			createTreeView_runs_interval (treeview_runs_interval);
 			createTreeView_pulses(treeview_pulses);
 			createTreeView_reaction_times(treeview_reaction_times);
+			createTreeView_multi_chronopic(treeview_multi_chronopic);
 			
 			on_combo_jumps_changed(combo_jumps, args);
 			on_combo_jumps_rj_changed(combo_jumps_rj, args);

Modified: trunk/src/jumpType.cs
==============================================================================
--- trunk/src/jumpType.cs	(original)
+++ trunk/src/jumpType.cs	Wed Mar 25 20:24:06 2009
@@ -29,7 +29,6 @@
 	protected bool isRepetitive;
 	protected bool jumpsLimited;
 	protected double fixedValue;	//0 no fixed value
-					//0.5 if we want only to registry a TC
 	protected bool unlimited;
 
 

Added: trunk/src/multiChronopic.cs
==============================================================================
--- (empty file)
+++ trunk/src/multiChronopic.cs	Wed Mar 25 20:24:06 2009
@@ -0,0 +1,87 @@
+/*
+ * This file is part of ChronoJump
+ *
+ * ChronoJump is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or   
+ *    (at your option) any later version.
+ *    
+ * ChronoJump is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ *    GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Xavier de Blas: 
+ */
+
+using System;
+using System.Data;
+
+public class MultiChronopic : Event 
+{
+	private string cp1InStr;
+	private string cp1OutStr;
+	private string cp2InStr;
+	private string cp2OutStr;
+	private string cp3InStr;
+	private string cp3OutStr;
+	private string cp4InStr;
+	private string cp4OutStr;
+
+	public MultiChronopic() {
+	}
+
+	//after inserting database (SQL)
+	public MultiChronopic(int uniqueID, int personID, int sessionID, 
+			string cp1InStr, string cp1OutStr,
+			string cp2InStr, string cp2OutStr,
+			string cp3InStr, string cp3OutStr,
+			string cp4InStr, string cp4OutStr,
+			string description, int simulated)
+	{
+		this.uniqueID = uniqueID;
+		this.personID = personID;
+		this.sessionID = sessionID;
+		this.cp1InStr = cp1InStr;
+		this.cp1OutStr = cp1OutStr;
+		this.cp2InStr = cp2InStr;
+		this.cp2OutStr = cp2OutStr;
+		this.cp3InStr = cp3InStr;
+		this.cp3OutStr = cp3OutStr;
+		this.cp4InStr = cp4InStr;
+		this.cp4OutStr = cp4OutStr;
+		this.description = description;
+		this.simulated = simulated;
+	}
+
+	/*
+	//used to select a event at SqliteReactionTime.SelectReactionTimeData and at Sqlite.convertTables
+	public MultiChronopic(string [] eventString) {
+		this.uniqueID = Convert.ToInt32(eventString[0]);
+		this.personID = Convert.ToInt32(eventString[1]);
+		this.sessionID = Convert.ToInt32(eventString[2]);
+		//this.type = eventString[3].ToString();
+		this.time = Convert.ToDouble(Util.ChangeDecimalSeparator(eventString[4]));
+		this.description = eventString[5].ToString();
+		this.simulated = Convert.ToInt32(eventString[6]);
+	}
+	*/
+
+	public override int InsertAtDB (bool dbconOpened, string tableName) {
+		return SqliteMultiChronopic.Insert(dbconOpened, tableName, 
+				uniqueID.ToString(), 
+				personID, sessionID, 
+				"default", //type
+				cp1InStr, cp1OutStr,
+				cp2InStr, cp2OutStr,
+				cp3InStr, cp3OutStr,
+				cp4InStr, cp4OutStr,
+				description, simulated);
+	}
+
+	~MultiChronopic() {}
+}

Modified: trunk/src/sqlite/main.cs
==============================================================================
--- trunk/src/sqlite/main.cs	(original)
+++ trunk/src/sqlite/main.cs	Wed Mar 25 20:24:06 2009
@@ -72,7 +72,7 @@
 	 * 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.67";
+	static string lastChronojumpDatabaseVersion = "0.68";
 
 	public Sqlite() {
 	}
@@ -442,6 +442,7 @@
 			SqliteRunInterval sqliteRunIntervalObject = new SqliteRunInterval();
 			SqliteReactionTime sqliteReactionTimeObject = new SqliteReactionTime();
 			SqlitePulse sqlitePulseObject = new SqlitePulse();
+			SqliteMultiChronopic sqliteMultiChronopicObject = new SqliteMultiChronopic();
 
 			if(currentVersion == "0.41") {
 				dbcon.Open();
@@ -862,6 +863,17 @@
 				dbcon.Close();
 				currentVersion = "0.67";
 			}
+			if(currentVersion == "0.67") {
+				dbcon.Open();
+				sqliteMultiChronopicObject.createTable(Constants.MultiChronopicTable);
+
+				SqlitePreferences.Update ("databaseVersion", "0.68", true); 
+				
+				Log.WriteLine("Converted DB to 0.68 (added multiChronopic tests table)"); 
+				dbcon.Close();
+				currentVersion = "0.68";
+			}
+
 
 		}
 
@@ -890,7 +902,7 @@
 	{
 		dbcon.Open();
 
-		creationTotal = 12;
+		creationTotal = 13;
 		creationRate = 1;
 
 		SqliteServer sqliteServerObject = new SqliteServer();
@@ -959,6 +971,11 @@
 		sqlitePulseObject.createTable(Constants.PulseTable);
 		SqlitePulseType.createTablePulseType();
 		SqlitePulseType.initializeTablePulseType();
+		
+		//multiChronopic tests		
+		creationRate ++;
+		SqliteMultiChronopic sqliteMultiChronopicObject = new SqliteMultiChronopic();
+		sqliteMultiChronopicObject.createTable(Constants.MultiChronopicTable);
 	
 		//sports
 		creationRate ++;
@@ -980,6 +997,7 @@
 		SqliteCountry.initialize();
 		
 		//changes [from - to - desc]
+		//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.64 - 0.65 added Sevaluator on client

Added: trunk/src/sqlite/multiChronopic.cs
==============================================================================
--- (empty file)
+++ trunk/src/sqlite/multiChronopic.cs	Wed Mar 25 20:24:06 2009
@@ -0,0 +1,195 @@
+/*
+ * This file is part of ChronoJump
+ *
+ * ChronoJump is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or   
+ *    (at your option) any later version.
+ *    
+ * ChronoJump is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ *    GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Xavier de Blas: 
+ */
+
+using System;
+using System.Data;
+using System.IO;
+using System.Collections; //ArrayList
+using Mono.Data.Sqlite;
+
+
+class SqliteMultiChronopic : Sqlite
+{
+	public SqliteMultiChronopic() {
+	}
+	
+	~SqliteMultiChronopic() {}
+
+	/*
+	 * create and initialize tables
+	 */
+	
+	protected override void createTable(string tableName)
+	{
+		dbcmd.CommandText = 
+			"CREATE TABLE " + tableName + " ( " +
+			"uniqueID INTEGER PRIMARY KEY, " +
+			"personID INT, " +
+			"sessionID INT, " +
+			"type TEXT, " + //now all as "default", but in the future...
+			"cp1InStr TEXT, " +
+			"cp1OutStr TEXT, " +
+			"cp2InStr TEXT, " +
+			"cp2OutStr TEXT, " +
+			"cp3InStr TEXT, " +
+			"cp3OutStr TEXT, " +
+			"cp4InStr TEXT, " +
+			"cp4OutStr TEXT, " +
+			"description TEXT, " +
+			"simulated INT )";		
+		dbcmd.ExecuteNonQuery();
+	}
+	
+	
+	/*
+	 * multiChronopic class methods
+	 */
+
+	public static int Insert(bool dbconOpened, string tableName, string uniqueID, int personID, int sessionID, string type, 
+			string cp1InStr, string cp1OutStr,
+			string cp2InStr, string cp2OutStr,
+			string cp3InStr, string cp3OutStr,
+			string cp4InStr, string cp4OutStr,
+			string description, int simulated)
+	{
+		if(! dbconOpened)
+			dbcon.Open();
+
+		if(uniqueID == "-1")
+			uniqueID = "NULL";
+
+		dbcmd.CommandText = "INSERT INTO " + tableName +  
+			" (uniqueID, personID, sessionID, type, " + 
+			" cp1InStr, cp1OutStr, cp2InStr, cp2OutStr, cp3InStr, cp3OutStr, cp4InStr, cp4OutStr, " +
+			" description, simulated)" +
+			" VALUES (" + uniqueID + ", " +
+			personID + ", " + sessionID + ", '" + type + "', '" +
+			cp1InStr + "', '" + cp1OutStr + "', '" +
+			cp2InStr + "', '" + cp2OutStr + "', '" +
+			cp3InStr + "', '" + cp3OutStr + "', '" +
+			cp4InStr + "', '" + cp4OutStr + "', '" +
+			description + "', " + simulated + ")" ;
+		Log.WriteLine(dbcmd.CommandText.ToString());
+		dbcmd.ExecuteNonQuery();
+		int myLast = dbcon.LastInsertRowId;
+		
+		if(! dbconOpened)
+			dbcon.Close();
+
+		return myLast;
+	}
+
+	/*
+	//if all persons, put -1 in personID
+	public static string[] SelectAllReactionTimes(int sessionID, int personID) 
+	{
+		string filterPersonString = "";
+		if(personID != -1)
+			filterPersonString = " AND person.uniqueID == " + personID;
+
+		dbcon.Open();
+		dbcmd.CommandText = "SELECT person.name, reactionTime.* " +
+			" FROM person, reactionTime " +
+			" WHERE person.uniqueID == reactionTime.personID" + 
+			" AND reactionTime.sessionID == " + sessionID + 
+			filterPersonString +
+			" ORDER BY upper(person.name), reactionTime.uniqueID";
+		
+		Log.WriteLine(dbcmd.CommandText.ToString());
+		dbcmd.ExecuteNonQuery();
+
+		SqliteDataReader reader;
+		reader = dbcmd.ExecuteReader();
+
+		ArrayList myArray = new ArrayList(2);
+
+		int count = new int();
+		count = 0;
+
+		
+		while(reader.Read()) {
+
+			myArray.Add (reader[0].ToString() + ":" +	//person.name
+					reader[1].ToString() + ":" +	//jump.uniqueID
+					reader[2].ToString() + ":" + 	//jump.personID
+					reader[3].ToString() + ":" + 	//jump.sessionID
+					reader[4].ToString() + ":" + 	//jump.type
+					Util.ChangeDecimalSeparator(reader[5].ToString()) + ":" + 	//jump.time
+					reader[6].ToString() + ":" + 	//description
+					reader[7].ToString()		//simulated
+					);
+			count ++;
+		}
+
+		reader.Close();
+		dbcon.Close();
+
+		string [] myEvents = new string[count];
+		count =0;
+		foreach (string line in myArray) {
+			myEvents [count++] = line;
+		}
+
+		return myEvents;
+	}
+
+	public static ReactionTime SelectReactionTimeData(int uniqueID)
+	{
+		dbcon.Open();
+
+		dbcmd.CommandText = "SELECT * FROM " + Constants.ReactionTimeTable + " WHERE uniqueID == " + uniqueID;
+		
+		Log.WriteLine(dbcmd.CommandText.ToString());
+
+		dbcmd.ExecuteNonQuery();
+
+		SqliteDataReader reader;
+		reader = dbcmd.ExecuteReader();
+		reader.Read();
+		
+		ReactionTime myRT = new ReactionTime(DataReaderToStringArray(reader, 7));
+	
+		dbcon.Close();
+		return myRT;
+	}
+		
+	public static void Update(int eventID, string type, string time, int personID, string description)
+	{
+		dbcon.Open();
+		dbcmd.CommandText = "UPDATE " + Constants.ReactionTimeTable + " SET personID = " + personID + 
+			", type = '" + type +
+			"', time = " + Util.ConvertToPoint(time) +
+			", description = '" + description +
+			"' WHERE uniqueID == " + eventID ;
+		Log.WriteLine(dbcmd.CommandText.ToString());
+		dbcmd.ExecuteNonQuery();
+		dbcon.Close();
+	}
+
+	public static void Delete(string uniqueID)
+	{
+		dbcon.Open();
+		dbcmd.CommandText = "Delete FROM " + Constants.ReactionTimeTable + " WHERE uniqueID == " + uniqueID;
+		Log.WriteLine(dbcmd.CommandText.ToString());
+		dbcmd.ExecuteNonQuery();
+		dbcon.Close();
+	}
+	*/
+}

Added: trunk/src/treeViewMultiChronopic.cs
==============================================================================
--- (empty file)
+++ trunk/src/treeViewMultiChronopic.cs	Wed Mar 25 20:24:06 2009
@@ -0,0 +1,97 @@
+/*
+ * This file is part of ChronoJump
+ *
+ * ChronoJump is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or   
+ *    (at your option) any later version.
+ *    
+ * ChronoJump is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ *    GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Xavier de Blas: 
+ */
+
+using System;
+using System.Data;
+using Gtk;
+using System.Collections; //ArrayList
+using Mono.Unix;
+
+
+public class TreeViewMultiChronopic : TreeViewEvent
+{
+	protected string personName = Catalog.GetString("Person");
+
+	public TreeViewMultiChronopic ()
+	{
+	}
+	
+	public TreeViewMultiChronopic (Gtk.TreeView treeview, int newPrefsDigitsNumber, ExpandStates expandState)
+	{
+		this.treeview = treeview;
+		pDN = newPrefsDigitsNumber;
+		this.expandState = expandState;
+
+		treeviewHasTwoLevels = true;
+		dataLineNamePosition = 0; //position of name in the data to be printed
+
+
+		//These are Not used, TreeViewEvent/Fill will be called always without "filter" here
+		dataLineTypePosition = -1; //position of type in the data to be printed
+		allEventsName = "";
+		
+
+		columnsString = new string[]{personName, 
+			Catalog.GetString("Time"), 
+			Catalog.GetString("State") + "\nCP1", "\nCP2", "\nCP3", "\nCP4",
+			Catalog.GetString("Change") + "\nCP1", "\nCP2", "\nCP3", "\nCP4",
+			Catalog.GetString("IN") + "-" + Catalog.GetString("IN") + "\nCP1", "\nCP2", "\nCP3", "\nCP4",
+			Catalog.GetString("OUT") + "-" + Catalog.GetString("OUT") + "\nCP1", "\nCP2", "\nCP3", "\nCP4",
+			descriptionName};
+
+		eventIDColumn = columnsString.Length ; //column where the uniqueID of event will be (and will be hidded). 
+		store = getStore(columnsString.Length +1); //+1 because, eventID is not show in last col
+		treeview.Model = store;
+		prepareHeaders(columnsString);
+	}
+
+
+	/*	
+	protected override System.Object getObjectFromString(string [] myStringOfData) {
+		ReactionTime myReactionTime = new ReactionTime();
+		myReactionTime.UniqueID = Convert.ToInt32(myStringOfData[1].ToString()); 
+		myReactionTime.Time = Convert.ToDouble(myStringOfData[5].ToString());
+		myReactionTime.Description = myStringOfData[6].ToString();
+		myReactionTime.Simulated = Convert.ToInt32(myStringOfData[7].ToString());
+
+		return myReactionTime;
+	}
+
+	protected override string [] getLineToStore(System.Object myObject)
+	{
+		ReactionTime newReactionTime = (ReactionTime)myObject;
+
+		string title = "";
+		if(newReactionTime.Simulated == Constants.Simulated)
+			title += " (s) ";
+
+		string [] myData = new String [getColsNum()];
+		int count = 0;
+		//myData[count++] = newReactionTime.Type;
+		myData[count++] = title;
+		myData[count++] = Util.TrimDecimals(newReactionTime.Time.ToString(), pDN);
+		
+		myData[count++] = newReactionTime.Description;
+		myData[count++] = newReactionTime.UniqueID.ToString();
+		return myData;
+	}
+	*/
+	
+}

Modified: trunk/version.txt
==============================================================================
--- trunk/version.txt	(original)
+++ trunk/version.txt	Wed Mar 25 20:24:06 2009
@@ -1 +1 @@
-0.8.2.8
+0.8.2.9

Modified: trunk/web/data/langs/_en/Pages/construction_contact_platform
==============================================================================
--- trunk/web/data/langs/_en/Pages/construction_contact_platform	(original)
+++ trunk/web/data/langs/_en/Pages/construction_contact_platform	Wed Mar 25 20:24:06 2009
@@ -106,4 +106,5 @@
 <li>See this video (catalan) that tells how to build contact platform and other dispositives: <a href="http://www.vimeo.com/1205809";>Construccià de dispositius de mesura per a Chronojump</a>.
 <li>Check <a href="construction_contact_platform_buy_stuff.html">where&nbsp;to&nbsp;buy&nbsp;components</a> to create your platform (or update that information).
 <li>Go to <a href="construction_contact_platform_comments_es.html"> Comments on manufacturing</a> (spanish).
+<li>Discuss this information at the forum: <a href="http://forum.chronojump.org/showthread.php?tid=12";>Steel rods contact platform (Chronojump forum)</a>.
 </ul>

Added: trunk/web/data/langs/_en/Pages/construction_modular_circuit_platform
==============================================================================
--- (empty file)
+++ trunk/web/data/langs/_en/Pages/construction_modular_circuit_platform	Wed Mar 25 20:24:06 2009
@@ -0,0 +1,102 @@
+:::startTitle:::
+Construction of a modular contact platform using printed circuits
+:::endTitle:::
+
+<b>NOTE: This page needs english revision.</b>
+<br><br>
+
+Authors: <b>Josep Ma PadullÃs, Xavier de Blas Foix</b>. Chronojump project. Feb 2009.
+<br><br>
+<b>Description</b>
+This platform is created using one side printed circuits boards sized DIN-A4. This boards are rigid and contact is allowed on all its area.
+You can join as many pairs of printed circuits as you want and at any bidemensional disposition. Also you can change the disposition easily at any time.
+<br>
+<b>Comparison</b> with <a href="construction_contact_platform.html">steel rods contact platform</a>.
+<table width="100%" border="0" cellspacing="2" cellpadding="2">
+<tr bgcolor="#e6e6fa"><th width="60%">Adventages</th><th width="30%">Disadventage</th></tr>
+<tr><td valign="top">
+	<ol>
+		<li>Its a good conductor.
+		<li>Its resistant to flexion (fiberglass).
+		<li>All circuit area produces contact. There are no false contacts or problems produced by the toes being placed between rods at raising or falling.
+		<li>Its modular. Allows to change it's size and disposition at any time easily.
+		<li>Its plegable.
+		<li>Building little platforms is easy.
+		<li>Can be converted fast to a timed circuit moving away one circuit pair from the other.
+	</ol>
+</td><td valign="top">
+	<ol>
+		<li>Its more expensive on platforms sized one meter or more. Is not (economically) profitable for platforms where a big size is needed (1mx1m) or more.
+	</ol>
+</td></tr>
+</table>
+
+
+<b>Materials</b>:
+<ul>
+<li>4 one sided printed circuit boards sized DIN-A4 (300mmx200mm)
+<li>1 two sided printed circuit board sized 60mmx80mm
+<li>Double slide tape
+<li>Soldering iron
+<li>RCA female connector
+<li>Cables
+</ul>
+
+We bought them at Diotronic store on Barcelona. The reference of the boards was:
+<ul>
+<li>Fibra 1 cara virgen. REF 250516. Placa VIR FV 1C 200x300 (10,9â cada una +IVA)
+<li>Placa VIR FV 2C 60x80 (1â +IVA)
+<li>Cinta Pattex doble cara rollo (5,12â +IVA)
+</ul>
+
+<p></p><h3>Instructions (click to zoom images)</h3>
+
+<ol>
+<li>Printed board (external view):
+<br>
+<a href=":::imageLink:::/modular_platform_circuit_board_external.jpg"><img src=":::imageLink:::/modular_platform_circuit_board_external_mini.jpg"></a>
+
+<li>Printed board (internal view):
+<br>
+<a href=":::imageLink:::/modular_platform_circuit_board_internal.jpg"><img src=":::imageLink:::/modular_platform_circuit_board_internal_mini.jpg"></a>
+
+<li>First we put the tape on the internal side of the printed circuit board:
+<br>
+<a href=":::imageLink:::/modular_platform_tape_removal.jpg"><img src=":::imageLink:::/modular_platform_tape_removal_mini.jpg"></a>
+
+<li>We leave some space at the center of each of the sides to allow other boards to be connected. The board you can see at center is used as a reference for the space needed.
+<br>
+<a href=":::imageLink:::/modular_platform_circuit_board_internal_tape.jpg"><img src=":::imageLink:::/modular_platform_circuit_board_internal_tape_mini.jpg"></a>
+
+<li>Here you can see the pair of boards for one foot. The little board you can see at left is not inserted, it's there just to show how will be the bridge between two pair of boards.<br>
+At right we wielded a cable at each of the internal sides of the boards. This wieldings are separated in order to not allow contact. Finally, wieldings are connected to a femlae RCA.
+<br>
+<a href=":::imageLink:::/modular_platform_one_foot_done.jpg"><img src=":::imageLink:::/modular_platform_one_foot_done_mini.jpg"></a>
+
+<li>Next we build the bridge between both pair of boards. First we cut the double sided board in four pieces, but in this platform we will use only two. We wield a cable at each of the sides of this double sided boards, having four wields. The bridge will be the ensemble of two pieces of double sided boards and it's wielded cables. That bridge is movable allowing to being inserted and removed doing a little pressure.<br>
+Here you can see the bridge inserted in a pair of boards:
+<table boder="0">
+<tr>
+<td><a href=":::imageLink:::/modular_platform_bridge.jpg"><img src=":::imageLink:::/modular_platform_bridge_mini.jpg"></a></td>
+<td><a href=":::imageLink:::/modular_platform_bridge2.jpg"><img src=":::imageLink:::/modular_platform_bridge2_mini.jpg"></a></td>
+</tr>
+</table>
+
+<li>Here you can see the modular platform done and connected to Boscosystem:
+<br>
+<a href=":::imageLink:::/modular_platform_with_boscosystem.jpg"><img src=":::imageLink:::/modular_platform_with_boscosystem_mini.jpg"></a>
+
+<li>Here you can see the modular platform done and connected to Chronopic3:
+<br>
+<a href=":::imageLink:::/modular_platform_with_chronopic.jpg"><img src=":::imageLink:::/modular_platform_with_chronopic_mini.jpg"></a>
+
+<li>Now there's only a need: buy a plastic cover that can be folded, and optionally add a velcro with a double sided tape.
+</ol>
+
+<hr width ="50%">
+You can discuss about this information on the forum: <a href="http://forum.chronojump.org/showthread.php?tid=13";>New modular platform. Instruction to build it (Chronojump forum)</a>.
+
+<p>
+Josep Ma PadullÃs, Xavier de Blas
+<br>
+<a href=":::imageLink:::/modular_platform_padu_xavi.jpg"><img src=":::imageLink:::/modular_platform_padu_xavi_mini.jpg"></a>

Modified: trunk/web/data/langs/_en/Pages/screenshots
==============================================================================
--- trunk/web/data/langs/_en/Pages/screenshots	(original)
+++ trunk/web/data/langs/_en/Pages/screenshots	Wed Mar 25 20:24:06 2009
@@ -80,7 +80,7 @@
 :::endSoftwarePhoto:::
 
 :::hardPhoto-10::: 
-Modular platform build following these <a href="construction_modular_circuit_platform_es.html">instructions</a> (spanish)
+Modular platform build following these <a href="construction_modular_circuit_platform.html">instructions</a>
 :::endHardwarePhoto:::
 
 

Modified: trunk/web/html_created_no_edit/print/construction_contact_platform.html
==============================================================================
--- trunk/web/html_created_no_edit/print/construction_contact_platform.html	(original)
+++ trunk/web/html_created_no_edit/print/construction_contact_platform.html	Wed Mar 25 20:24:06 2009
@@ -121,5 +121,6 @@
 <li>See this video (catalan) that tells how to build contact platform and other dispositives: <a href="http://www.vimeo.com/1205809";>Construcci&oacute; de dispositius de mesura per a Chronojump</a>.
 <li>Check <a href="construction_contact_platform_buy_stuff.html">where&nbsp;to&nbsp;buy&nbsp;components</a> to create your platform (or update that information).
 <li>Go to <a href="construction_contact_platform_comments_es.html"> Comments on manufacturing</a> (spanish).
+<li>Discuss this information at the forum: <a href="http://forum.chronojump.org/showthread.php?tid=12";>Steel rods contact platform (Chronojump forum)</a>.
 </ul>
 </body></html>
\ No newline at end of file

Modified: trunk/web/html_created_no_edit/print/screenshots.html
==============================================================================
--- trunk/web/html_created_no_edit/print/screenshots.html	(original)
+++ trunk/web/html_created_no_edit/print/screenshots.html	Wed Mar 25 20:24:06 2009
@@ -103,7 +103,7 @@
 </td>
 
 <td width="250"><a href="http://projects.gnome.org/chronojump/images/modular_platform_with_chronopic.jpg";><img src="http://projects.gnome.org/chronojump/images/modular_platform_with_chronopic_mini.jpg"; width="250" height="188"></a> 
-Modular platform build following these <a href="construction_modular_circuit_platform_es.html">instructions</a> (spanish)
+Modular platform build following these <a href="construction_modular_circuit_platform.html">instructions</a>
 </td></tr>
 
 



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