[chronojump] Encoder analyze csharp can be finished



commit 79ca69d55ca2cd9e0675e7e2a9e3c63d95653414
Author: Xavier de Blas <xaviblas gmail com>
Date:   Wed Feb 20 12:57:41 2013 +0100

    Encoder analyze csharp can be finished

 glade/chronojump.glade |  170 ++++++++++++++++++++++++++----------------------
 src/gui/chronojump.cs  |    2 +-
 src/gui/encoder.cs     |   63 ++++++++++++------
 3 files changed, 137 insertions(+), 98 deletions(-)
---
diff --git a/glade/chronojump.glade b/glade/chronojump.glade
index a207717..61b6154 100644
--- a/glade/chronojump.glade
+++ b/glade/chronojump.glade
@@ -12449,7 +12449,7 @@ on current Chronojump version.</property>
                                                           <widget class="GtkHBox" id="hbox76">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
-                                                            <property name="spacing">12</property>
+                                                            <property name="spacing">20</property>
                                                             <child>
                                                             <widget class="GtkHBox" id="hbox77">
                                                             <property name="visible">True</property>
@@ -12600,175 +12600,189 @@ on current Chronojump version.</property>
                                                             </packing>
                                                             </child>
                                                             <child>
-                                                            <widget class="GtkVSeparator" id="vseparator2">
+                                                            <widget class="GtkHBox" id="hbox82">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
+                                                            <property name="spacing">4</property>
+                                                            <child>
+                                                            <widget class="GtkProgressBar" 
id="encoder_pulsebar_capture">
+                                                            <property name="width_request">125</property>
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="activity_mode">True</property>
+                                                            <property name="show_text">True</property>
+                                                            <property 
name="pulse_step">0.10000000149</property>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
-                                                            <property name="fill">True</property>
-                                                            <property name="position">1</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">0</property>
                                                             </packing>
                                                             </child>
                                                             <child>
-                                                            <widget class="GtkButton" 
id="button_encoder_recalculate">
+                                                            <widget class="GtkButton" 
id="button_encoder_capture_cancel">
                                                             <property name="visible">True</property>
+                                                            <property name="sensitive">False</property>
                                                             <property name="can_focus">True</property>
                                                             <property name="can_default">True</property>
                                                             <property name="receives_default">True</property>
                                                             <property name="has_tooltip">True</property>
-                                                            <property name="tooltip" 
translatable="yes">Recalculate signal with changed parameters</property>
+                                                            <property name="tooltip" 
translatable="yes">Cancel process</property>
                                                             <property 
name="use_action_appearance">False</property>
                                                             <property name="use_underline">True</property>
-                                                            <signal name="clicked" 
handler="on_button_encoder_recalculate_clicked" swapped="no"/>
+                                                            <signal name="clicked" 
handler="on_button_encoder_cancel_clicked" swapped="no"/>
                                                             <child>
-                                                            <widget class="GtkImage" id="image23">
+                                                            <widget class="GtkImage" id="image8">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
-                                                            <property name="stock">gtk-refresh</property>
+                                                            <property name="stock">gtk-cancel</property>
                                                             </widget>
                                                             </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">2</property>
-                                                            </packing>
-                                                            </child>
-                                                            <child>
-                                                            <widget class="GtkHBox" id="hbox85">
-                                                            <property name="visible">True</property>
-                                                            <property name="can_focus">False</property>
-                                                            <property name="spacing">6</property>
-                                                            <child>
-                                                            <widget class="GtkEntry" 
id="entry_encoder_signal_comment">
-                                                            <property name="width_request">125</property>
-                                                            <property name="visible">True</property>
-                                                            <property name="can_focus">True</property>
-                                                            <property name="has_tooltip">True</property>
-                                                            <property name="tooltip" translatable="yes">Add 
a comment</property>
-                                                            <property name="invisible_char">●</property>
-                                                            <property 
name="invisible_char_set">True</property>
-                                                            <property 
name="primary_icon_activatable">False</property>
-                                                            <property 
name="secondary_icon_activatable">False</property>
-                                                            <property 
name="primary_icon_sensitive">True</property>
-                                                            <property 
name="secondary_icon_sensitive">True</property>
-                                                            </widget>
-                                                            <packing>
-                                                            <property name="expand">False</property>
-                                                            <property name="fill">False</property>
-                                                            <property name="position">0</property>
+                                                            <property name="position">1</property>
                                                             </packing>
                                                             </child>
                                                             <child>
-                                                            <widget class="GtkButton" 
id="button_encoder_update_signal">
+                                                            <widget class="GtkButton" 
id="button_encoder_capture_finish">
                                                             <property name="visible">True</property>
+                                                            <property name="sensitive">False</property>
                                                             <property name="can_focus">True</property>
+                                                            <property name="can_default">True</property>
                                                             <property name="receives_default">True</property>
                                                             <property name="has_tooltip">True</property>
-                                                            <property name="tooltip" 
translatable="yes">Update signal (save it again if changed)</property>
+                                                            <property name="tooltip" 
translatable="yes">Finish capture</property>
                                                             <property 
name="use_action_appearance">False</property>
-                                                            <signal name="clicked" 
handler="on_button_encoder_save_clicked" swapped="no"/>
+                                                            <property name="use_underline">True</property>
+                                                            <signal name="clicked" 
handler="on_button_encoder_capture_finish_clicked" swapped="no"/>
                                                             <child>
-                                                            <widget class="GtkImage" id="image19">
+                                                            <widget class="GtkImage" id="image13">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
-                                                            <property name="stock">gtk-save</property>
+                                                            <property name="stock">gtk-goto-last</property>
                                                             </widget>
                                                             </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">1</property>
+                                                            <property name="position">2</property>
                                                             </packing>
                                                             </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">3</property>
+                                                            <property name="position">1</property>
                                                             </packing>
                                                             </child>
                                                             <child>
-                                                            <widget class="GtkHBox" id="hbox82">
+                                                            <widget class="GtkButton" 
id="button_encoder_recalculate">
                                                             <property name="visible">True</property>
-                                                            <property name="can_focus">False</property>
-                                                            <property name="spacing">6</property>
+                                                            <property name="can_focus">True</property>
+                                                            <property name="can_default">True</property>
+                                                            <property name="receives_default">True</property>
+                                                            <property name="has_tooltip">True</property>
+                                                            <property name="tooltip" 
translatable="yes">Recalculate signal with changed parameters</property>
+                                                            <property 
name="use_action_appearance">False</property>
+                                                            <property name="use_underline">True</property>
+                                                            <signal name="clicked" 
handler="on_button_encoder_recalculate_clicked" swapped="no"/>
                                                             <child>
-                                                            <widget class="GtkProgressBar" 
id="encoder_pulsebar_capture">
-                                                            <property name="width_request">125</property>
+                                                            <widget class="GtkImage" id="image23">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
-                                                            <property name="activity_mode">True</property>
-                                                            <property name="show_text">True</property>
-                                                            <property 
name="pulse_step">0.10000000149</property>
+                                                            <property name="stock">gtk-refresh</property>
+                                                            </widget>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">0</property>
+                                                            <property name="position">2</property>
                                                             </packing>
                                                             </child>
                                                             <child>
-                                                            <widget class="GtkButton" 
id="button_encoder_capture_cancel">
+                                                            <widget class="GtkHBox" id="hbox87">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="spacing">8</property>
+                                                            <child>
+                                                            <widget class="GtkButton" 
id="button_encoder_load_signal">
                                                             <property name="visible">True</property>
-                                                            <property name="sensitive">False</property>
                                                             <property name="can_focus">True</property>
-                                                            <property name="can_default">True</property>
                                                             <property name="receives_default">True</property>
                                                             <property name="has_tooltip">True</property>
-                                                            <property name="tooltip" 
translatable="yes">Cancel process</property>
+                                                            <property name="tooltip" translatable="yes">Load 
signal</property>
                                                             <property 
name="use_action_appearance">False</property>
-                                                            <property name="use_underline">True</property>
-                                                            <signal name="clicked" 
handler="on_button_encoder_cancel_clicked" swapped="no"/>
+                                                            <signal name="clicked" 
handler="on_button_encoder_load_signal_clicked" swapped="no"/>
                                                             <child>
-                                                            <widget class="GtkImage" id="image8">
+                                                            <widget class="GtkImage" id="image24">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
-                                                            <property name="stock">gtk-cancel</property>
+                                                            <property name="stock">gtk-open</property>
                                                             </widget>
                                                             </child>
                                                             </widget>
                                                             <packing>
-                                                            <property name="expand">False</property>
-                                                            <property name="fill">False</property>
-                                                            <property name="position">1</property>
+                                                            <property name="expand">True</property>
+                                                            <property name="fill">True</property>
+                                                            <property name="position">0</property>
                                                             </packing>
                                                             </child>
+                                                            <child>
+                                                            <widget class="GtkHBox" id="hbox85">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <child>
+                                                            <widget class="GtkEntry" 
id="entry_encoder_signal_comment">
+                                                            <property name="width_request">125</property>
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">True</property>
+                                                            <property name="has_tooltip">True</property>
+                                                            <property name="tooltip" translatable="yes">Add 
a comment</property>
+                                                            <property name="invisible_char">●</property>
+                                                            <property 
name="invisible_char_set">True</property>
+                                                            <property 
name="primary_icon_activatable">False</property>
+                                                            <property 
name="secondary_icon_activatable">False</property>
+                                                            <property 
name="primary_icon_sensitive">True</property>
+                                                            <property 
name="secondary_icon_sensitive">True</property>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">4</property>
+                                                            <property name="position">0</property>
                                                             </packing>
                                                             </child>
                                                             <child>
-                                                            <widget class="GtkHBox" id="hbox87">
-                                                            <property name="visible">True</property>
-                                                            <property name="can_focus">False</property>
-                                                            <property name="spacing">6</property>
-                                                            <child>
-                                                            <widget class="GtkButton" 
id="button_encoder_load_signal">
+                                                            <widget class="GtkButton" 
id="button_encoder_update_signal">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">True</property>
                                                             <property name="receives_default">True</property>
                                                             <property name="has_tooltip">True</property>
-                                                            <property name="tooltip" translatable="yes">Load 
signal</property>
+                                                            <property name="tooltip" 
translatable="yes">Update signal (save it again if changed)</property>
                                                             <property 
name="use_action_appearance">False</property>
-                                                            <signal name="clicked" 
handler="on_button_encoder_load_signal_clicked" swapped="no"/>
+                                                            <signal name="clicked" 
handler="on_button_encoder_save_clicked" swapped="no"/>
                                                             <child>
-                                                            <widget class="GtkImage" id="image24">
+                                                            <widget class="GtkImage" id="image19">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
-                                                            <property name="stock">gtk-open</property>
+                                                            <property name="stock">gtk-save</property>
                                                             </widget>
                                                             </child>
                                                             </widget>
                                                             <packing>
-                                                            <property name="expand">True</property>
-                                                            <property name="fill">True</property>
-                                                            <property name="position">0</property>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">1</property>
+                                                            </packing>
+                                                            </child>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">1</property>
                                                             </packing>
                                                             </child>
                                                             <child>
@@ -12792,7 +12806,7 @@ on current Chronojump version.</property>
                                                             <packing>
                                                             <property name="expand">True</property>
                                                             <property name="fill">True</property>
-                                                            <property name="position">1</property>
+                                                            <property name="position">2</property>
                                                             </packing>
                                                             </child>
                                                             </widget>
@@ -12800,7 +12814,7 @@ on current Chronojump version.</property>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
                                                             <property name="pack_type">end</property>
-                                                            <property name="position">5</property>
+                                                            <property name="position">3</property>
                                                             </packing>
                                                             </child>
                                                           </widget>
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index 393b6a7..18ac624 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -5341,7 +5341,7 @@ Console.WriteLine("X");
                
                button_execute_test.Sensitive = false;
 
-               encoderButtonsSensitive(encoderSensEnum.PROCESSING);
+               encoderButtonsSensitive(encoderSensEnum.PROCESSINGR);
                
                //hbox
                hbox_jumps.Sensitive = false;
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index dc00453..0de3f6d 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -40,6 +40,7 @@ public partial class ChronoJumpWindow
        [Widget] Gtk.Button button_encoder_capture_csharp;
        [Widget] Gtk.Button button_encoder_bells;
        [Widget] Gtk.Button button_encoder_capture_cancel;
+       [Widget] Gtk.Button button_encoder_capture_finish;
        [Widget] Gtk.Button button_encoder_recalculate;
        [Widget] Gtk.Button button_encoder_load_signal;
        [Widget] Gtk.Viewport viewport_image_encoder_capture;
@@ -110,13 +111,14 @@ public partial class ChronoJumpWindow
 
        private static int encoderCaptureCountdown;
        private static bool encoderProcessCancel;
+       private static bool encoderProcessFinish;
 
        //CAPTURE is the capture from csharp (not from external python) 
        //difference between CALCULECURVES and RECALCULATE_OR_LOAD is: CALCULECURVES does a autosave at end
        enum encoderModes { CAPTURE, CALCULECURVES, RECALCULATE_OR_LOAD, ANALYZE } 
        enum encoderSensEnum { 
-               NOSESSION, NOPERSON, YESPERSON, PROCESSING, DONENOSIGNAL, DONEYESSIGNAL, SELECTEDCURVE }
-       encoderSensEnum encoderSensEnumStored; //tracks how was sensitive before PROCESSING
+               NOSESSION, NOPERSON, YESPERSON, PROCESSINGCAPTURE, PROCESSINGR, DONENOSIGNAL, DONEYESSIGNAL, 
SELECTEDCURVE }
+       encoderSensEnum encoderSensEnumStored; //tracks how was sensitive before PROCESSINGCAPTURE or 
PROCESSINGR
  
 
        //TODO:put zoom,unzoom (at side of delete curve)  in capture curves (for every curve)
@@ -271,6 +273,11 @@ public partial class ChronoJumpWindow
                encoderProcessCancel = true;
        }
 
+       void on_button_encoder_capture_finish_clicked (object o, EventArgs args) 
+       {
+               encoderProcessFinish = true;
+       }
+
        void on_button_encoder_recalculate_clicked (object o, EventArgs args) 
        {
                if (File.Exists(Util.GetEncoderDataTempFileName()))
@@ -912,7 +919,7 @@ public partial class ChronoJumpWindow
                                        msCount = 1;
                                }
                        }
-               } while (i < recordingTime && ! encoderProcessCancel);
+               } while (i < recordingTime && ! encoderProcessCancel && ! encoderProcessFinish);
                //Log.WriteLine(sum.ToString());
 
                Log.WriteLine("00e");
@@ -1877,7 +1884,8 @@ public partial class ChronoJumpWindow
                //c4 button_encoder_delete_curve , button_encoder_save_curve, entry_encoder_curve_comment
                //c5 button_encoder_analyze
                //c6 button_encoder_analyze_data_show_user_curves
-               //c7 button_cancel (on capture and analyze)
+               //c7 button_encoder_capture_cancel (on capture and analyze)
+               //c8 button_encoder_capture_finish (only on capture)
 
                //other dependencies
                //c5 True needs 
@@ -1885,17 +1893,18 @@ public partial class ChronoJumpWindow
                //      (! radiobutton_encoder_analyze_data_current_signal.Active && user has curves))
                //c6 True needs ! radiobutton_encoder_analyze_data_current_signal.Active
 
-               if(option != encoderSensEnum.PROCESSING)
+               if(option != encoderSensEnum.PROCESSINGCAPTURE && option != encoderSensEnum.PROCESSINGR)
                        encoderSensEnumStored = option;
                
-               //columns                0  1  2  3  4  5  6  7
-               int [] noSession =      {0, 0, 0, 0, 0, 0, 0, 0};
-               int [] noPerson =       {0, 0, 0, 0, 0, 0, 0, 0};
-               int [] yesPerson =      {1, 0, 1, 0, 0, 1, 1, 0};
-               int [] processing =     {0, 0, 0, 0, 0, 0, 0, 1};
-               int [] doneNoSignal =   {1, 0, 1, 0, 0, 1, 1, 0};
-               int [] doneYesSignal =  {1, 1, 1, 1, 0, 1, 1, 0};
-               int [] selectedCurve =  {1, 1, 1, 1, 1, 1, 1, 0};
+               //columns                        0  1  2  3  4  5  6  7  8
+               int [] noSession =              {0, 0, 0, 0, 0, 0, 0, 0, 0};
+               int [] noPerson =               {0, 0, 0, 0, 0, 0, 0, 0, 0};
+               int [] yesPerson =              {1, 0, 1, 0, 0, 1, 1, 0, 0};
+               int [] processingCapture =      {0, 0, 0, 0, 0, 0, 0, 1, 1};
+               int [] processingR =            {0, 0, 0, 0, 0, 0, 0, 1, 0};
+               int [] doneNoSignal =           {1, 0, 1, 0, 0, 1, 1, 0, 0};
+               int [] doneYesSignal =          {1, 1, 1, 1, 0, 1, 1, 0, 0};
+               int [] selectedCurve =          {1, 1, 1, 1, 1, 1, 1, 0, 0};
                int [] table = new int[7];
 
                switch(option) {
@@ -1908,8 +1917,11 @@ public partial class ChronoJumpWindow
                        case encoderSensEnum.YESPERSON:
                                table = yesPerson;
                                break;
-                       case encoderSensEnum.PROCESSING:
-                               table = processing;
+                       case encoderSensEnum.PROCESSINGCAPTURE:
+                               table = processingCapture;
+                               break;
+                       case encoderSensEnum.PROCESSINGR:
+                               table = processingR;
                                break;
                        case encoderSensEnum.DONENOSIGNAL:
                                table = doneNoSignal;
@@ -1960,6 +1972,8 @@ public partial class ChronoJumpWindow
                
                button_encoder_capture_cancel.Sensitive = Util.IntToBool(table[7]);
                button_encoder_analyze_cancel.Sensitive = Util.IntToBool(table[7]);
+               
+               button_encoder_capture_finish.Sensitive = Util.IntToBool(table[8]);
        }
 
        /* end of sensitivity stuff */  
@@ -1969,12 +1983,14 @@ public partial class ChronoJumpWindow
 
        private void encoderThreadStart(encoderModes mode) {
                encoderProcessCancel = false;
+               encoderProcessFinish = false;
                if(mode == encoderModes.CAPTURE) {
                        //encoder_pulsebar_capture.Text = Catalog.GetString("Please, wait.");
                        Log.WriteLine("CCCCCCCCCCCCCCC");
                        encoderThread = new Thread(new ThreadStart(captureCsharp));
                        GLib.Idle.Add (new GLib.IdleHandler (pulseGTKEncoderCapture));
                        Log.WriteLine("DDDDDDDDDDDDDDD");
+                       encoderButtonsSensitive(encoderSensEnum.PROCESSINGCAPTURE);
                } else if(mode == encoderModes.CALCULECURVES || mode == encoderModes.RECALCULATE_OR_LOAD) {
                        //image is inside (is smaller than) viewport
                        image_encoder_width = UtilGtk.WidgetWidth(viewport_image_encoder_capture)-5; 
@@ -1987,6 +2003,7 @@ public partial class ChronoJumpWindow
                                GLib.Idle.Add (new GLib.IdleHandler (pulseGTKEncoderCalculeCurves));
                        else // mode == encoderModes.RECALCULATE_OR_LOAD
                                GLib.Idle.Add (new GLib.IdleHandler (pulseGTKEncoderRecalculateOrLoad));
+                       encoderButtonsSensitive(encoderSensEnum.PROCESSINGR);
                } else { //encoderModes.ANALYZE
                        //the -3 is because image is inside (is smaller than) viewport
                        image_encoder_width = UtilGtk.WidgetWidth(viewport_image_encoder_analyze)-5; 
@@ -1996,15 +2013,16 @@ public partial class ChronoJumpWindow
                
                        encoderThread = new Thread(new ThreadStart(analyze));
                        GLib.Idle.Add (new GLib.IdleHandler (pulseGTKEncoderAnalyze));
+                       encoderButtonsSensitive(encoderSensEnum.PROCESSINGR);
                }
-               encoderButtonsSensitive(encoderSensEnum.PROCESSING);
                encoderThread.Start(); 
        }
-       
+
+       //this is the only who was finish       
        private bool pulseGTKEncoderCapture ()
        {
                Log.WriteLine("PPPPPPPPP");
-               if(! encoderThread.IsAlive || encoderProcessCancel) {
+               if(! encoderThread.IsAlive || encoderProcessCancel || encoderProcessFinish) {
                        finishPulsebar(encoderModes.CAPTURE);
                        Log.Write("dying");
                        return false;
@@ -2115,9 +2133,16 @@ public partial class ChronoJumpWindow
                                mode == encoderModes.CALCULECURVES || 
                                mode == encoderModes.RECALCULATE_OR_LOAD )
                {
+                       Log.WriteLine("ffffffinishPulsebarrrrr");
                        if(encoderProcessCancel) {
-                               encoderButtonsSensitive(encoderSensEnum.DONEYESSIGNAL);
+                               //encoderButtonsSensitive(encoderSensEnum.DONEYESSIGNAL);
+                               encoderButtonsSensitive(encoderSensEnumStored);
                                encoder_pulsebar_capture.Text = Catalog.GetString("Cancelled");
+                       }
+                       if(mode == encoderModes.CAPTURE && encoderProcessFinish) {
+                               //encoderButtonsSensitive(encoderSensEnum.DONEYESSIGNAL);
+                               encoderButtonsSensitive(encoderSensEnumStored);
+                               encoder_pulsebar_capture.Text = Catalog.GetString("Finished");
                        } else {
                                Pixbuf pixbuf = new Pixbuf (Util.GetEncoderGraphTempFileName()); //from a file
                                image_encoder_capture.Pixbuf = pixbuf;


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