+ sprintf "%.1f %% (%d / %d)" percent nb nbTotal
+
+let roamingDir =
+ Path.Combine (System.Environment.GetFolderPath (System.Environment.SpecialFolder.ApplicationData), "Parasitemia")
+
+let predefinedPPIFilename = "predefined-ppi.json"
+let predefinedPPIFilepath = Path.Combine (roamingDir, predefinedPPIFilename)
+
+let sensorSizesFilename = "sensor-sizes.json"
+let sensorSizesFilepath = Path.Combine (roamingDir, sensorSizesFilename)
+
+let private savePredefinedPPIToFile (predefinedPPI : PredefinedPPI list) =
+ try
+ Directory.CreateDirectory roamingDir |> ignore
+ use file = new StreamWriter (predefinedPPIFilepath)
+ file.Write (JsonConvert.SerializeObject (predefinedPPI, JsonSerializerSettings (Formatting = Formatting.Indented)))
+ with
+ ex ->
+ Logger.Log.Error "Unable to save predefined PPI to file \"%s\": %O" predefinedPPIFilepath ex
+
+let private saveSensorSizesToFile (sensorSizes : SensorSize list) =
+ try
+ Directory.CreateDirectory roamingDir |> ignore
+ use file = new StreamWriter (sensorSizesFilepath)
+ file.Write (JsonConvert.SerializeObject (sensorSizes, JsonSerializerSettings (Formatting = Formatting.Indented)))
+ with
+ ex ->
+ Logger.Log.Error "Unable to save sensor sizes to file \"%s\": %O" sensorSizesFilepath ex
+
+let predefinedPPI : PredefinedPPI list =
+ try
+ use file = new StreamReader (predefinedPPIFilepath)
+ JsonConvert.DeserializeObject<PredefinedPPI list> (file.ReadToEnd ())
+ with
+ | ex ->
+ savePredefinedPPIToFile defaultPredefinedPPI
+ defaultPredefinedPPI
+
+let sensorSizes : SensorSize list =
+ try
+ use file = new StreamReader (sensorSizesFilepath)
+ JsonConvert.DeserializeObject<SensorSize list> (file.ReadToEnd ())
+ with
+ | ex ->
+ saveSensorSizesToFile defaultSensorSizes
+ defaultSensorSizes