[chronojump] RunEncoder at load set can edit/delete



commit ad1be64183e88d6eb3f0b90b210a6541f1791df3
Author: Xavier de Blas <xaviblas gmail com>
Date:   Wed Sep 18 17:07:57 2019 +0200

    RunEncoder at load set can edit/delete

 src/forceSensor.cs     |   4 +-
 src/gui/forceSensor.cs |   4 +-
 src/gui/runEncoder.cs  | 123 +++++++++++++++++++++++++++++++++++++++++++++++--
 src/runEncoder.cs      |  23 ++++++++-
 4 files changed, 145 insertions(+), 9 deletions(-)
---
diff --git a/src/forceSensor.cs b/src/forceSensor.cs
index ebfa19ac..d82d2517 100644
--- a/src/forceSensor.cs
+++ b/src/forceSensor.cs
@@ -111,9 +111,9 @@ public class ForceSensor
                        "\" WHERE uniqueID = " + uniqueID;
        }
 
-       public void UpdateSQLJustComments()
+       public void UpdateSQLJustComments(bool dbconOpened)
        {
-               SqliteForceSensor.UpdateComments (false, uniqueID, comments); //SQL not opened
+               SqliteForceSensor.UpdateComments (dbconOpened, uniqueID, comments); //SQL not opened
        }
 
        public string [] ToStringArray (int count)
diff --git a/src/gui/forceSensor.cs b/src/gui/forceSensor.cs
index ae0b64e0..9b7fe457 100644
--- a/src/gui/forceSensor.cs
+++ b/src/gui/forceSensor.cs
@@ -1424,7 +1424,7 @@ LogB.Information(" re R ");
                if(comment != fs.Comments)
                {
                        fs.Comments = comment;
-                       fs.UpdateSQL(true);
+                       fs.UpdateSQLJustComments(true);
 
                        //update treeview
                        genericWin.on_edit_selected_done_update_treeview();
@@ -1556,7 +1556,7 @@ LogB.Information(" re R ");
        private void on_button_force_sensor_save_comment_clicked (object o, EventArgs args)
        {
                currentForceSensor.Comments = 
UtilGtk.TextViewGetCommentValidSQL(textview_force_sensor_capture_comment);
-               currentForceSensor.UpdateSQLJustComments();
+               currentForceSensor.UpdateSQLJustComments(false);
        }
 
        private void on_button_force_sensor_analyze_analyze_clicked (object o, EventArgs args)
diff --git a/src/gui/runEncoder.cs b/src/gui/runEncoder.cs
index e10a4c4c..238602d9 100644
--- a/src/gui/runEncoder.cs
+++ b/src/gui/runEncoder.cs
@@ -536,11 +536,9 @@ public partial class ChronoJumpWindow
                genericWin.SetButtonCancelLabel(Catalog.GetString("Close"));
                genericWin.SetButtonAcceptSensitive(false);
                genericWin.Button_accept.Clicked += new EventHandler(on_run_encoder_load_accepted);
-               /*
                genericWin.Button_row_edit.Clicked += new EventHandler(on_run_encoder_load_signal_row_edit);
                genericWin.Button_row_edit_apply.Clicked += new 
EventHandler(on_run_encoder_load_signal_row_edit_apply);
                genericWin.Button_row_delete.Clicked += new 
EventHandler(on_run_encoder_load_signal_row_delete_prequestion);
-               */
 
                genericWin.ShowNow();
        }
@@ -589,6 +587,125 @@ public partial class ChronoJumpWindow
                event_execute_label_message.Text = "Loaded: " + Util.GetLastPartOfPath(re.Filename);
        }
 
+       protected void on_run_encoder_load_signal_row_edit (object o, EventArgs args) {
+               LogB.Information("row edit at load signal");
+               LogB.Information(genericWin.TreeviewSelectedUniqueID.ToString());
+               genericWin.ShowEditRow(true);
+       }
+
+       protected void on_run_encoder_load_signal_row_edit_apply (object o, EventArgs args)
+       {
+               LogB.Information("row edit apply at load signal. Opening db:");
+
+               Sqlite.Open();
+
+               //1) select set
+               int setID = genericWin.TreeviewSelectedUniqueID;
+               RunEncoder re = (RunEncoder) SqliteRunEncoder.Select(true, setID, -1, -1)[0];
+
+               //2) if changed comment, update SQL, and update treeview
+               //first remove conflictive characters
+               string comment = Util.RemoveTildeAndColonAndDot(genericWin.EntryEditRow);
+               if(comment != re.Comments)
+               {
+                       re.Comments = comment;
+                       re.UpdateSQLJustComments(true);
+
+                       //update treeview
+                       genericWin.on_edit_selected_done_update_treeview();
+               }
+
+               //3) change the session param and the url of signal and curves (if any)
+               string idName = genericWin.GetComboSelected;
+               LogB.Information("new person: " + idName);
+               int newPersonID = Util.FetchID(idName);
+               if(newPersonID != currentPerson.UniqueID)
+               {
+                       //change stuff on signal
+                       RunEncoder reChangedPerson = re.ChangePerson(idName);
+                       reChangedPerson.UpdateSQL(true);
+                       genericWin.RemoveSelectedRow();
+                       genericWin.SetButtonAcceptSensitive(false);
+               }
+
+               genericWin.ShowEditRow(false);
+               genericWin.SensitiveEditDeleteIfSelected();
+
+               //remove signal from gui just in case the edited signal is the same we have loaded
+               //removeSignalFromGuiBecauseDeletedOrCancelled();
+               blankRunEncoderInterface();
+
+               Sqlite.Close();
+       }
+
+       // ----start of runEncoderDeleteTest stuff -------
+
+       protected void on_run_encoder_load_signal_row_delete_prequestion (object o, EventArgs args)
+       {
+               if(preferences.askDeletion) {
+                       ConfirmWindow confirmWin = ConfirmWindow.Show(Catalog.GetString(
+                                               "Are you sure you want to delete this set?"), "", "");
+                       confirmWin.Button_accept.Clicked += new 
EventHandler(on_run_encoder_load_signal_row_delete);
+               } else
+                       on_run_encoder_load_signal_row_delete (o, args);
+       }
+
+       protected void on_run_encoder_load_signal_row_delete (object o, EventArgs args)
+       {
+               LogB.Information("row delete at load set");
+
+               int setID = genericWin.TreeviewSelectedUniqueID;
+               LogB.Information(setID.ToString());
+
+               //if it's current set use the delete set from the gui interface that updates gui
+               if(currentRunEncoder != null && setID == Convert.ToInt32(currentRunEncoder.UniqueID))
+                       run_encoder_delete_current_test_accepted(o, args);
+               else {
+                       RunEncoder re = (RunEncoder) SqliteRunEncoder.Select(false, setID, -1, -1)[0];
+                       runEncoderDeleteTestDo(re);
+
+                       //genericWin selected row is deleted, unsensitive the "load" button
+                       genericWin.SetButtonAcceptSensitive(false);
+               }
+               genericWin.Delete_row_accepted();
+       }
+
+       private void run_encoder_delete_current_test_pre_question()
+       {
+               //solve possible gui problems
+               if(currentRunEncoder == null || currentRunEncoder.UniqueID == -1)
+               {
+                       new DialogMessage(Constants.MessageTypes.WARNING, "Test does not exists. Cannot be 
deleted");
+                       return;
+               }
+
+               if(preferences.askDeletion) {
+                       ConfirmWindow confirmWin = ConfirmWindow.Show(Catalog.GetString(
+                                               "Are you sure you want to delete this set?"), "", "");
+                       confirmWin.Button_accept.Clicked += new 
EventHandler(run_encoder_delete_current_test_accepted);
+               } else
+                       run_encoder_delete_current_test_accepted(new object(), new EventArgs());
+       }
+       private void run_encoder_delete_current_test_accepted(object o, EventArgs args)
+       {
+               runEncoderDeleteTestDo(currentRunEncoder);
+
+               //empty currentRunEncoder (assign -1)
+               currentRunEncoder = new RunEncoder();
+
+               //empty GUI
+               blankRunEncoderInterface();
+       }
+
+       private void runEncoderDeleteTestDo(RunEncoder re)
+       {
+               //int uniqueID = currentRunEncoder.UniqueID;
+               SqliteRunEncoder.DeleteSQLAndFiles (false, re); //deletes also the .csv
+       }
+
+       // --- end of runEncoderDeleteTest stuff -------
+
+
        private void on_button_run_encoder_recalculate_clicked (object o, EventArgs args)
        {
                if(! Util.FileExists(lastRunEncoderFullPath))
@@ -624,7 +741,7 @@ public partial class ChronoJumpWindow
        private void on_button_race_analyzer_save_comment_clicked (object o, EventArgs args)
        {
                currentRunEncoder.Comments = 
UtilGtk.TextViewGetCommentValidSQL(textview_race_analyzer_comment);
-               currentRunEncoder.UpdateSQLJustComments();
+               currentRunEncoder.UpdateSQLJustComments(false);
        }
 
        private void raceEncoderCopyTempAndDoGraphs()
diff --git a/src/runEncoder.cs b/src/runEncoder.cs
index b24d2425..338d61bf 100644
--- a/src/runEncoder.cs
+++ b/src/runEncoder.cs
@@ -114,9 +114,9 @@ public class RunEncoder
                        "\" WHERE uniqueID = " + uniqueID;
        }
 
-       public void UpdateSQLJustComments()
+       public void UpdateSQLJustComments(bool dbconOpened)
        {
-               SqliteRunEncoder.UpdateComments (false, uniqueID, comments); //SQL not opened
+               SqliteRunEncoder.UpdateComments (dbconOpened, uniqueID, comments); //SQL not opened
        }
 
        public string [] ToStringArray (int count)
@@ -150,6 +150,25 @@ public class RunEncoder
                        return DevicesStringMANUAL;
        }
 
+       //uniqueID:name
+       public RunEncoder ChangePerson(string newIDAndName)
+       {
+               int newPersonID = Util.FetchID(newIDAndName);
+               string newPersonName = Util.FetchName(newIDAndName);
+               string newFilename = filename;
+
+               personID = newPersonID;
+               newFilename = newPersonID + "-" + newPersonName + "-" + dateTime + ".csv";
+
+               bool success = false;
+               success = Util.FileMove(url, filename, newFilename);
+               if(success)
+                       filename = newFilename;
+
+               //will update SqliteRunEncoder
+               return (this);
+       }
+
        public static string GetScript() {
                return System.IO.Path.Combine(UtilEncoder.GetSprintPath(), "sprintEncoder.R");
        }


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