[chronojump] ConnectingReal has own mini window. Small refactoring



commit c5f0f326e7f3c5803f0f09fa50ea4cc787cadbba
Author: Xavier de Blas <xaviblas gmail com>
Date:   Sun Oct 16 02:01:49 2016 +0200

    ConnectingReal has own mini window. Small refactoring

 diagrams/classes/chronopicConnection-1-6-3.dia |  Bin 4712 -> 6837 bytes
 src/chronopic2016.cs                           |  144 ++++++++++++++++++++----
 src/gui/chronojump.cs                          |   87 ++++-----------
 3 files changed, 147 insertions(+), 84 deletions(-)
---
diff --git a/diagrams/classes/chronopicConnection-1-6-3.dia b/diagrams/classes/chronopicConnection-1-6-3.dia
index e67deb2..d469147 100644
Binary files a/diagrams/classes/chronopicConnection-1-6-3.dia and 
b/diagrams/classes/chronopicConnection-1-6-3.dia differ
diff --git a/src/chronopic2016.cs b/src/chronopic2016.cs
index 38aa4da..126093b 100644
--- a/src/chronopic2016.cs
+++ b/src/chronopic2016.cs
@@ -19,12 +19,16 @@
 
 using System;
 using System.IO.Ports;
+using System.Threading;
+using Gtk;
 
 public class Chronopic2016
 {
        public Chronopic2016()
        {
                //this is constructed only one time
+
+               FakeButtonContactsRealDone = new Gtk.Button();
        }
 
        //used on contacts
@@ -36,32 +40,83 @@ public class Chronopic2016
        private string lastConnectedRealSerialNumber = "";
        private ChronopicRegisterPort.Types lastConnectedRealType = ChronopicRegisterPort.Types.UNKNOWN;
 
-       public bool IsLastConnectedReal(ChronopicRegisterPort crp)
+
+       // -----ConnectContactsReal START ----->
+
+       Gtk.Window chronopic_contacts_real_win;
+       Gtk.ProgressBar progressbar;
+
+       private Thread connectContactsRealThread;
+       //used to pass crp to connectContactsRealThread
+       private ChronopicRegisterPort crpConnectContactsRealThread;
+       public bool SuccededConnectContactsRealThread;
+       public Gtk.Button FakeButtonContactsRealDone;
+
+       private void createGui(Gtk.Window app1, string labelStr)
        {
-               LogB.Information("lastConnectedRealPort");
-               LogB.Information(lastConnectedRealPort);
-               LogB.Information("lastConnectedRealSerialNumber");
-               LogB.Information(lastConnectedRealSerialNumber);
-               LogB.Information("lastConnectedRealType");
-               LogB.Information(lastConnectedRealType.ToString());
-               crp.ToString();
-
-               if(lastConnectedRealPort != "" && lastConnectedRealSerialNumber != "" && 
-                               lastConnectedRealType == ChronopicRegisterPort.Types.CONTACTS &&
-                               crp.Port == lastConnectedRealPort &&
-                               crp.SerialNumber == lastConnectedRealSerialNumber)
-                       return true;
+               chronopic_contacts_real_win = new Window ("Chronopic connection");
+               chronopic_contacts_real_win.AllowGrow = false;
+               chronopic_contacts_real_win.Modal = true;
+               chronopic_contacts_real_win.TransientFor = app1;
+               chronopic_contacts_real_win.BorderWidth= 20;
 
-               return false;
+               chronopic_contacts_real_win.DeleteEvent += on_delete_event;
+
+               Gtk.VBox vbox_main = new Gtk.VBox(false, 20);
+               chronopic_contacts_real_win.Add(vbox_main);
+
+               LogB.Information("Connecting real (starting connection)");
+               LogB.Information("Press test button on Chronopic");
+
+               Gtk.Label label = new Gtk.Label();
+               label.Text = labelStr;
+               vbox_main.Add(label);
+
+               progressbar = new Gtk.ProgressBar();
+               vbox_main.Add(progressbar);
+
+               chronopic_contacts_real_win.ShowAll();
+       }
+
+       private void on_delete_event (object o, DeleteEventArgs args)
+       {
+               LogB.Information("calling on_delete_event");
+
+               args.RetVal = true;
+
+               hideAndNull();
+       }
+       private void hideAndNull()
+       {
+               chronopic_contacts_real_win.Hide();
+               chronopic_contacts_real_win = null;
+       }
+
+
+       public void ConnectContactsReal(Gtk.Window app1, ChronopicRegisterPort crp, string labelStr)
+       {
+               createGui(app1, labelStr);
+
+               crpConnectContactsRealThread = crp;
+
+               connectContactsRealThread = new Thread (new ThreadStart (connectContactsRealDo));
+               GLib.Idle.Add (new GLib.IdleHandler (pulseConnectContactsReal));
+
+               LogB.ThreadStart();
+               connectContactsRealThread.Start();
        }
-       public bool ConnectContactsReal(ChronopicRegisterPort crp)
+
+       private void connectContactsRealDo()
        {
+               ChronopicRegisterPort crp = crpConnectContactsRealThread;
+
                string message = "";
                bool success = false;
 
                sp = new SerialPort(crp.Port);
                ChronopicInit chronopicInit = new ChronopicInit();
-               bool connected = chronopicInit.Do(1, out cp, out sp, platformState, crp.Port, out message, 
out success);
+               bool connected = chronopicInit.Do(1, out cp, out sp,
+                               platformState, crp.Port, out message, out success);
 
                if(connected) {
                        lastConnectedRealPort = crp.Port;
@@ -69,11 +124,60 @@ public class Chronopic2016
                        lastConnectedRealType = ChronopicRegisterPort.Types.CONTACTS;
                }
 
-               return connected;
+               SuccededConnectContactsRealThread = connected;
+       }
+
+       bool pulseConnectContactsReal()
+       {
+               if(! connectContactsRealThread.IsAlive)
+               {
+                       progressbar.Fraction = 1.0;
+                       LogB.ThreadEnding();
+                       connectContactsRealEnd();
+                       LogB.ThreadEnded();
+
+                       return false;
+               }
+
+               progressbar.Pulse();
+               Thread.Sleep (50);
+               return true;
+       }
+
+       private void connectContactsRealEnd()
+       {
+               if(SuccededConnectContactsRealThread)
+                       LogB.Information("Success at Connecting real!");
+               else
+                       LogB.Warning("Failure at Connecting real!");
+
+               hideAndNull();
+
+               FakeButtonContactsRealDone.Click();
        }
 
-       //store a boolean in order to read info faster
-       public bool StoredCanCaptureContacts;
+
+       public bool IsLastConnectedReal(ChronopicRegisterPort crp)
+       {
+               LogB.Information(string.Format(
+                                       "lastConnectedReal (port:{0}, serialNumber:{1}, type:{2})",
+                               lastConnectedRealPort, lastConnectedRealSerialNumber,
+                               lastConnectedRealType.ToString()));
+               LogB.Information(crp.ToString());
+
+               if(lastConnectedRealPort != "" && lastConnectedRealSerialNumber != "" &&
+                               lastConnectedRealType == ChronopicRegisterPort.Types.CONTACTS &&
+                               crp.Port == lastConnectedRealPort &&
+                               crp.SerialNumber == lastConnectedRealSerialNumber)
+                       return true;
+
+               return false;
+       }
+
+       public bool StoredCanCaptureContacts; //store a boolean in order to read info faster
+
+       //<-----ConnectContactsReal END -----
+
 
        //called from gui/chronojump.cs
        //done here because sending the SP is problematic on windows
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index 4ac1a24..53bb2d5 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -3601,6 +3601,8 @@ public partial class ChronoJumpWindow
                }
        }
 
+       //TODO: move this to chronopic2016 class
+       //on Windows check if last connected port is available with chronopicRegister getPorts()
        bool canCaptureContacts()
        {
                if(! UtilAll.IsWindows())
@@ -3628,65 +3630,6 @@ public partial class ChronoJumpWindow
                return true;
        }
 
-       Thread connectContactsRealThread;
-       //used to pass crp to connectContactsRealThread
-       ChronopicRegisterPort crpConnectContactsRealThread;
-       static bool succededConnectContactsRealThread;
-
-       void connectContactsReal(ChronopicRegisterPort crp)
-       {
-               LogB.Information("Connecting real (starting connection)");
-               LogB.Information("Press test button on Chronopic");
-               event_execute_label_message.Text = "Press TEST button on Chronopic to stablish initial 
communication";
-
-               crpConnectContactsRealThread = crp;
-
-               connectContactsRealThread = new Thread (new ThreadStart (connectContactsRealDo));
-               GLib.Idle.Add (new GLib.IdleHandler (pulseConnectContactsReal));
-
-               LogB.ThreadStart();
-               connectContactsRealThread.Start();
-       }
-       void connectContactsRealDo()
-       {
-               succededConnectContactsRealThread = cp2016.ConnectContactsReal(
-                               crpConnectContactsRealThread);
-       }
-       bool pulseConnectContactsReal()
-       {
-               if(! connectContactsRealThread.IsAlive)
-               {
-                       event_execute_progressbar_event.Fraction = 1.0;
-                       event_execute_progressbar_time.Fraction = 1.0;
-                       LogB.ThreadEnding();
-                       connectContactsRealEnd();
-                       LogB.ThreadEnded();
-
-                       return false;
-               }
-
-               event_execute_progressbar_event.Pulse();
-               event_execute_progressbar_time.Pulse();
-               Thread.Sleep (50);
-               return true;
-       }
-
-       private void connectContactsRealEnd()
-       {
-               event_execute_label_message.Text = "";
-
-               if(! succededConnectContactsRealThread)
-               {
-                       LogB.Information("Failure at Connecting real!");
-                       return;
-               }
-
-               LogB.Information("Success at Connecting real!");
-               changeMultitestFirmwareIfNeeded();
-               on_button_execute_test_accepted();
-       }
-
-
        private void changeMultitestFirmwareIfNeeded()
        {
                //change multitest stuff
@@ -3729,14 +3672,17 @@ public partial class ChronoJumpWindow
                                on_button_execute_test_accepted();
                        } else
                        {
-                               connectContactsReal(crp);
-                               /*
-                                * this will start a thread and if succeeds, then will call:
+                               cp2016.FakeButtonContactsRealDone.Clicked +=
+                                       new EventHandler(on_connection_contacts_real_done);
+
+                               cp2016.ConnectContactsReal(app1, crp,
+                                               "Press TEST button on Chronopic to stablish initial 
communication"); //TODO: translate this
+
+                               /* this will start a thread and if succeeds, then will call:
                                 * changeMultitestFirmwareIfNeeded();
                                 * on_button_execute_test_accepted();
                                 */
                        }
-
                } else {
                        //simulated tests are only allowed on SIMULATED session
                        if(currentSession.Name != Constants.SessionSimulatedName) {
@@ -3746,7 +3692,20 @@ public partial class ChronoJumpWindow
                        on_button_execute_test_accepted();
                }
        }
-       
+
+       private void on_connection_contacts_real_done (object o, EventArgs args)
+       {
+               cp2016.FakeButtonContactsRealDone.Clicked -=
+                       new EventHandler(on_connection_contacts_real_done);
+
+               if(cp2016.SuccededConnectContactsRealThread) {
+                       LogB.Information("Success at Connecting real! (main GUI)");
+                       changeMultitestFirmwareIfNeeded();
+                       on_button_execute_test_accepted();
+               } else
+                       LogB.Warning("Failure at Connecting real!");
+       }
+
        void on_button_execute_test_accepted ()
        {
                bool canCaptureC = cp2016.StoredCanCaptureContacts;


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