[chronojump] Discover creates buttons "Use this", updates progressBars with final results



commit 6fc53f8fa133231e4bc8cc0ac70b409b1d47f8ef
Author: Xavier de Blas <xaviblas gmail com>
Date:   Fri May 13 11:41:50 2022 +0200

    Discover creates buttons "Use this", updates progressBars with final results

 glade/app1.glade              | 71 +++++++++++++++++++++++++++++++++++--------
 src/execute/arduinoCapture.cs | 26 +++++++++++-----
 src/gui/app1/chronojump.cs    | 41 +++++++++++++++++++------
 3 files changed, 107 insertions(+), 31 deletions(-)
---
diff --git a/glade/app1.glade b/glade/app1.glade
index 9236a6558..337332049 100644
--- a/glade/app1.glade
+++ b/glade/app1.glade
@@ -26569,6 +26569,9 @@ Concentric</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
@@ -32977,6 +32980,18 @@ Concentric</property>
                                                             <property name="can_focus">False</property>
                                                             <property name="spacing">6</property>
                                                             <child>
+                                                            <widget class="GtkLabel" 
id="label_video_encoder_tests_will_be_filmed">
+                                                            <property name="can_focus">False</property>
+                                                            <property name="label" translatable="yes">Tests 
will be filmed</property>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="pack_type">end</property>
+                                                            <property name="position">0</property>
+                                                            </packing>
+                                                            </child>
+                                                            <child>
                                                             <widget class="GtkHBox" 
id="hbox_video_encoder_capturing">
                                                             <property name="can_focus">False</property>
                                                             <property name="spacing">4</property>
@@ -33013,18 +33028,6 @@ Concentric</property>
                                                             </packing>
                                                             </child>
                                                             <child>
-                                                            <widget class="GtkLabel" 
id="label_video_encoder_tests_will_be_filmed">
-                                                            <property name="can_focus">False</property>
-                                                            <property name="label" translatable="yes">Tests 
will be filmed</property>
-                                                            </widget>
-                                                            <packing>
-                                                            <property name="expand">False</property>
-                                                            <property name="fill">False</property>
-                                                            <property name="pack_type">end</property>
-                                                            <property name="position">0</property>
-                                                            </packing>
-                                                            </child>
-                                                            <child>
                                                             <widget class="GtkHBox" 
id="hbox_video_encoder_no_capturing">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
@@ -42353,6 +42356,9 @@ then click this button.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
@@ -50272,7 +50278,7 @@ Since Chronojump 2.1.3, backups contain the complete data.</property>
                                                     <property name="spacing">25</property>
                                                     <child>
                                                       <widget class="GtkFrame" id="frame_micro_discover">
-                                                        <property name="width_request">300</property>
+                                                        <property name="width_request">450</property>
                                                         <property name="height_request">250</property>
                                                         <property name="visible">True</property>
                                                         <property name="can_focus">False</property>
@@ -50285,12 +50291,21 @@ Since Chronojump 2.1.3, backups contain the complete data.</property>
                                                             <property name="can_focus">False</property>
                                                             <property name="border_width">4</property>
                                                             <child>
+                                                            <widget class="GtkHBox" id="hbox223">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <child>
                                                             <widget class="GtkVBox" id="vbox270">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
                                                             <property name="border_width">20</property>
                                                             <property name="spacing">20</property>
                                                             <child>
+                                                            <widget class="GtkHBox" id="hbox224">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="spacing">6</property>
+                                                            <child>
                                                             <widget class="GtkLabel" 
id="label_micro_discover_ports">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
@@ -50303,6 +50318,26 @@ Since Chronojump 2.1.3, backups contain the complete data.</property>
                                                             </packing>
                                                             </child>
                                                             <child>
+                                                            <widget class="GtkLabel" 
id="label_micro_discover_ports_detecting">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="xalign">0</property>
+                                                            <property name="label" 
translatable="yes">Detecting …</property>
+                                                            </widget>
+                                                            <packing>
+                                                            <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">0</property>
+                                                            </packing>
+                                                            </child>
+                                                            <child>
                                                             <widget class="GtkTable" 
id="table_micro_discover">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
@@ -50311,6 +50346,9 @@ Since Chronojump 2.1.3, backups contain the complete data.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
@@ -50319,6 +50357,13 @@ Since Chronojump 2.1.3, backups contain the complete data.</property>
                                                             </packing>
                                                             </child>
                                                             </widget>
+                                                            <packing>
+                                                            <property name="expand">True</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">0</property>
+                                                            </packing>
+                                                            </child>
+                                                            </widget>
                                                             </child>
                                                           </widget>
                                                         </child>
diff --git a/src/execute/arduinoCapture.cs b/src/execute/arduinoCapture.cs
index 649c1b0e5..7375f1d24 100644
--- a/src/execute/arduinoCapture.cs
+++ b/src/execute/arduinoCapture.cs
@@ -551,6 +551,9 @@ public class MicroDiscover : MicroComms
        public enum Status { NOTSTARTED, CONNECTING, DETECTING, DONE };
        private List<Status> progressBar_l; //progressBars status
 
+       //devices discovered compatible with current mode
+       private static List<ChronopicRegisterPort.Types> discovered_l;
+
        //9600
        //private string rfidStr = "YES Chronojump RFID";
        //Chronopic multitest will send a J (9600)
@@ -573,14 +576,16 @@ public class MicroDiscover : MicroComms
        }
 
        //mode is forceSensor, runsEncoder, ...
-       public List<string> DiscoverOneMode (Constants.Modes mode)
+       public void DiscoverOneMode (Constants.Modes mode)
        {
-               List<string> discovered_l = new List<string> ();
+               discovered_l = new List<ChronopicRegisterPort.Types> ();
+               bool success;
                for (int i = 0; i < micro_l.Count ; i ++)
                {
                        micro = micro_l[i]; //micro is the protected variable
 
                        progressBar_l[i] = Status.CONNECTING;
+                       success = false;
 
                        LogB.Information("Discover loop, port: " + micro.PortName);
                        if(connectAndSleep ())
@@ -589,23 +594,25 @@ public class MicroDiscover : MicroComms
 
                                flush(); //after connect
                                if(mode == Constants.Modes.RUNSSIMPLE || mode == 
Constants.Modes.RUNSINTERVALLIC)
-                                       discoverWichro ();
+                                       success = discoverWichro ();
                                if(mode == Constants.Modes.FORCESENSOR)
-                                       discoverForceSensor ();
+                                       success = discoverForceSensor ();
                                else if(mode == Constants.Modes.RUNSENCODER)
-                                       discoverRaceAnalyzer ();
+                                       success = discoverRaceAnalyzer ();
                        } else
                                micro.Discovered = ChronopicRegisterPort.Types.UNKNOWN;
 
                        micro.ClosePort (); //close even connect failed?
-                       discovered_l.Add(string.Format("{0} {1}", micro.PortName, micro.Discovered));
+
+                       //add to list only the relevant, eg in races will be Wichro (and maybe Chronopic 
multitest)
+                       if(success)
+                               discovered_l.Add(micro.Discovered);
+
                        progressBar_l[i] = Status.DONE;
 
                        if(cancel)
                                break;
                }
-
-               return discovered_l;
        }
 
        /*
@@ -891,6 +898,9 @@ public class MicroDiscover : MicroComms
        public List<Status> ProgressBar_l {
                get { return progressBar_l; }
        }
+       public List<ChronopicRegisterPort.Types> Discovered_l {
+               get { return discovered_l; }
+       }
 }
 
 /*
diff --git a/src/gui/app1/chronojump.cs b/src/gui/app1/chronojump.cs
index 5967f4d87..cff1fea7d 100644
--- a/src/gui/app1/chronojump.cs
+++ b/src/gui/app1/chronojump.cs
@@ -302,6 +302,7 @@ public partial class ChronoJumpWindow
        [Widget] Gtk.Table table_micro_discover;
        [Widget] Gtk.Button button_contacts_detect;
        [Widget] Gtk.Label label_micro_discover_ports;
+       [Widget] Gtk.Label label_micro_discover_ports_detecting;
        [Widget] Gtk.EventBox eventbox_button_micro_discover_cancel_close;
        [Widget] Gtk.Image image_button_micro_discover_cancel_close;
        [Widget] Gtk.Label label_button_micro_discover_cancel_close;
@@ -4554,6 +4555,7 @@ public partial class ChronoJumpWindow
           */
 
        List<Gtk.ProgressBar> progressbar_micro_discover_l;
+       List<Gtk.Button> button_micro_discover_l;
        private void setup_progressbar_micro_discover_l (List<string> discoverPorts_l)
        {
                // 1) delete old progressbars
@@ -4565,12 +4567,15 @@ public partial class ChronoJumpWindow
                                */
 
                //table_micro_discover = new Gtk.Table((uint) microDiscover.ProgressBar_l.Count +1, 3, 
false); //not homogeneous
-               table_micro_discover.Resize((uint) discoverPorts_l.Count +1, 3);
+               table_micro_discover.Resize((uint) discoverPorts_l.Count, 3);
                table_micro_discover.ColumnSpacing = 20;
                table_micro_discover.RowSpacing = 12;
 
-               // 2) add new progressbars on the list
+               // 2) create the lists of widgets to be able to access later
                progressbar_micro_discover_l = new List<Gtk.ProgressBar> ();
+               button_micro_discover_l = new List<Gtk.Button> ();
+
+               // 3) create and show the table
                for (int i = 0; i < discoverPorts_l.Count; i ++)
                {
                        Gtk.Label l = new Gtk.Label(discoverPorts_l[i]);
@@ -4578,8 +4583,14 @@ public partial class ChronoJumpWindow
 
                        Gtk.ProgressBar pb = new Gtk.ProgressBar();
                        pb.Text = "----"; //to have height
+                       pb.SetSizeRequest(125, -1);
                        table_micro_discover.Attach (pb, (uint) 1, (uint) 2, (uint) i, (uint) i+1);
                        progressbar_micro_discover_l.Add (pb);
+
+                       Gtk.Button b = new Gtk.Button("Use this");
+                       b.Sensitive = false;
+                       button_micro_discover_l.Add (b);
+                       table_micro_discover.Attach (b, (uint) 2, (uint) 3, (uint) i, (uint) i+1);
                }
                table_micro_discover.ShowAll();
        }
@@ -4604,6 +4615,7 @@ public partial class ChronoJumpWindow
                                        "Found 1 device.",
                                        "Found {0} devices.",
                                        discoverPorts_l.Count), discoverPorts_l.Count);
+               label_micro_discover_ports_detecting.Visible = true;
 
                app1s_notebook_sup_entered_from = notebook_sup.CurrentPage; //CONTACTS or ENCODER
                notebook_sup.CurrentPage = Convert.ToInt32(notebook_sup_pages.MICRODISCOVER);
@@ -4627,14 +4639,7 @@ public partial class ChronoJumpWindow
 
        private void discoverDo ()
        {
-               List<string> discovered_l = microDiscover.DiscoverOneMode (current_mode);
-
-               string discoveredStr = "Discovered: ";
-               foreach (string str in discovered_l)
-                       discoveredStr += "\n- " + str;
-
-               //new DialogMessage( Constants.MessageTypes.INFO, discoveredStr +
-               //              string.Format("\n{0} ms", cDebug.StartToEndInMs()) );
+               microDiscover.DiscoverOneMode (current_mode);
        }
        private bool pulseDiscoverGTK ()
        {
@@ -4678,8 +4683,16 @@ public partial class ChronoJumpWindow
                                        (progressbar_micro_discover_l[i]).Text = 
Catalog.GetString("Cancelled");
 
                                (progressbar_micro_discover_l[i]).Fraction = 1;
+
+                               if (i < microDiscover.Discovered_l.Count && discoverMatchCurrentMode 
(microDiscover.Discovered_l[i]))
+                               {
+                                       LogB.Information("found in " + i);
+                                       (progressbar_micro_discover_l[i]).Text = 
ChronopicRegisterPort.TypePrint(microDiscover.Discovered_l[i]);
+                                       button_micro_discover_l[i].Sensitive = true;
+                               }
                        }
 
+                       label_micro_discover_ports_detecting.Visible = false;
                        image_button_micro_discover_cancel_close.Pixbuf =
                                new Pixbuf (null, Util.GetImagePath(false) + "image_close.png");
                        label_button_micro_discover_cancel_close.Text = Catalog.GetString("Close");
@@ -4691,6 +4704,14 @@ public partial class ChronoJumpWindow
                return true;
        }
 
+       private bool discoverMatchCurrentMode (ChronopicRegisterPort.Types crpt)
+       {
+               if (current_mode == Constants.Modes.FORCESENSOR && crpt == 
ChronopicRegisterPort.Types.ARDUINO_FORCE)
+                       return true;
+
+               return false;
+       }
+
        private void on_button_micro_discover_cancel_close_clicked (object o, EventArgs args)
        {
                if (discoverThread != null && discoverThread.IsAlive && microDiscover != null)


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