[chronojump] ConnectingReal has own mini window. Small refactoring
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] ConnectingReal has own mini window. Small refactoring
- Date: Sun, 16 Oct 2016 00:02:45 +0000 (UTC)
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]