public void Save() { var content = File.ReadAllText(path); var stripped = replacers .CreateResult(content, (regex, result) => regex.Replace(result, string.Empty)) .Trim(Environment.NewLine.ToCharArray()); var fans = string.Join(Environment.NewLine, Fans.Select(f => $@"xxx Pwm {f.Id} name={f.Name} active={f.Active.ToString().ToLower()} min={f.Min} max={f.Max} variate={f.Variate.ToString().ToLower()} logged={f.Logged.ToString().ToLower()} xxx end ")); var controllers = string.Join(Environment.NewLine, Config.Select(fc => fc.Controller).Select(c => $@"xxx FanController {c.Id} name={c.Name} pwm={c.Fan.Id} method={(int)c.Method} enabled={c.Active.ToString().ToLower()} xxx end ")); var temps = string.Join(Environment.NewLine, Config.SelectMany(fc => fc.Curves.SelectMany(c => c.Temps.Select(t => $@"xxx FanControllerTemp from FanController {fc.Controller.Id} temp={t.Temp.Id} MinTemp={t.MinTemp} MaxTemp={t.MaxTemp} hysteresis={t.Hysteresis} ControlPoints={c.Curve.RenderOutput()} xxx end "))) .ToList()); File.WriteAllText(path, $@"{stripped} {fans} {controllers} {temps}"); }
/// <summary> /// Creates a duplicate of the full object model /// </summary> /// <returns>A clone of this model</returns> public object Clone() { return(new MachineModel { Channels = (Channels)Channels.Clone(), Electronics = (Electronics)Electronics.Clone(), Fans = Fans.Select(fan => (Fan)fan.Clone()).ToList(), Heat = (Heat)Heat.Clone(), Job = (Job)Job.Clone(), MessageBox = (MessageBox)MessageBox.Clone(), Move = (Move)Move.Clone(), Network = (Network)Network.Clone(), Messages = Messages.Select(item => (Message)item.Clone()).ToList(), Scanner = (Scanner)Scanner.Clone(), Sensors = (Sensors)Sensors.Clone(), Spindles = Spindles.Select(spindle => (Spindle)spindle.Clone()).ToList(), State = (State)State.Clone(), Storages = Storages.Select(storage => (Storage)storage.Clone()).ToList(), Tools = Tools.Select(tool => (Tool)tool.Clone()).ToList() }); }