void initialize_db() { // if settings database does not exist, generate it if (Directory.Exists(cotangent.CCOptions.SettingsDBPath) == false) { populate_defaults(); SettingsSerializer serializer = new SettingsSerializer(); serializer.GenerateSettingsFolder(this, cotangent.CCOptions.SettingsDBPath); reset_db(); } try { DebugUtil.Log("Reading settings database from {0}", cotangent.CCOptions.SettingsDBPath); populate_from_disk(cotangent.CCOptions.SettingsDBPath); } catch (Exception e) { DebugUtil.Log("MachineDatabase: fatal exception restoring : " + e.Message); if (FPlatform.InUnityEditor()) { throw; } } // [TODO] sync w/ new known settings? List <MachinePreset> new_defaults = populate_defaults(); foreach (var preset in new_defaults) { SettingsSerializer serializer = new SettingsSerializer(); Manufacturer mfg = FindManufacturerByUUID(preset.Settings.BaseMachine.ManufacturerUUID); MachineModel model = FindModelByUUID(mfg, preset.Settings.BaseMachine.ModelUUID); string machinePath = serializer.CreateNewSettingsFolder(this, mfg, model, cotangent.CCOptions.SettingsDBPath); preset.SourcePath = Path.Combine(machinePath, preset.Settings.Identifier + ".txt"); serializer.StoreSettings(this, preset, true); } }
public void StorePreset(MachinePreset preset) { if (preset.SourcePath.Length == 0) { DebugUtil.Log(2, "MachineDatabase.StorePreset: preset with id " + preset.Settings.Identifier + " has no path!"); return; } SettingsSerializer serializer = new SettingsSerializer(); serializer.StoreSettings(this, preset, false); }
public MachineModel CreateDerivedMachine(Manufacturer mfg, MachineModel derivedFrom, MachinePreset initialPreset, string name) { string existingMachineDir = Path.GetDirectoryName(initialPreset.SourcePath); string useMfgDir = Directory.GetParent(existingMachineDir).FullName; string newMachineDir = Path.Combine(useMfgDir, name); if (Directory.Exists(newMachineDir)) { throw new Exception("ALREADY_EXISTS"); } try { Directory.CreateDirectory(newMachineDir); } catch (Exception) { throw new Exception("CANNOT_CREATE"); } if (!Directory.Exists(newMachineDir)) { throw new Exception("ALREADY_EXISTS"); } string newPresetPath = Path.Combine(newMachineDir, "Default.txt"); MachineModel model = new MachineModel() { Name = name, UUID = System.Guid.NewGuid().ToString() }; add_machine(mfg, model, false); MachinePreset newPreset = new MachinePreset(initialPreset.Settings.CloneAs <PlanarAdditiveSettings>(), newPresetPath); newPreset.Settings.Identifier = "Defaults"; newPreset.Settings.BaseMachine.ManufacturerName = mfg.Name; newPreset.Settings.BaseMachine.ManufacturerUUID = mfg.UUID; newPreset.Settings.BaseMachine.ModelIdentifier = model.Name; newPreset.Settings.BaseMachine.ModelUUID = model.UUID; SettingsSerializer serializer = new SettingsSerializer(); serializer.StoreSettings(this, newPreset, true); model.Presets.Add(newPreset); model.DefaultPreset = newPreset; return(model); }
public MachinePreset CreateDerivedPreset(MachineModel model, MachinePreset derivedFrom, string name) { string machineDir = Path.GetDirectoryName(derivedFrom.SourcePath); string newPath = Path.Combine(machineDir, name + ".txt"); MachinePreset newPreset = new MachinePreset(derivedFrom.Settings.CloneAs <PlanarAdditiveSettings>(), newPath); newPreset.Settings.Identifier = name; SettingsSerializer serializer = new SettingsSerializer(); serializer.StoreSettings(this, newPreset, true); //model.Presets.Add(newPreset); model.Presets.Insert(1, newPreset); return(newPreset); }
public MachineModel CreateManufacturer(string mfgName, string mfgUUID, string defaultMachineUUID) { Manufacturer new_mfg = new Manufacturer() { Name = mfgName, UUID = mfgUUID }; add_manufacturer(new_mfg); MachinePreset preset = new MachinePreset(new GenericPrinterSettings(mfgName, mfgUUID, defaultMachineUUID)); MachineModel model = new MachineModel() { Name = "Unknown", UUID = defaultMachineUUID, Presets = new List <MachinePreset>() { preset } }; add_machine(new_mfg, model); SettingsSerializer serializer = new SettingsSerializer(); string machinePath = serializer.CreateNewSettingsFolder(this, new_mfg, model, cotangent.CCOptions.SettingsDBPath); preset.Settings.Identifier = "Defaults"; preset.Settings.BaseMachine.ManufacturerName = mfgName; preset.Settings.BaseMachine.ManufacturerUUID = mfgUUID; preset.Settings.BaseMachine.ModelIdentifier = "(Unknown)"; preset.Settings.BaseMachine.ModelUUID = defaultMachineUUID; preset.SourcePath = Path.Combine(machinePath, "Default.txt"); serializer.StoreSettings(this, preset, true); model.Presets.Add(preset); model.DefaultPreset = preset; return(model); }
/// <summary> /// Scan through a top-level 'manufacturer' folder for a list of machine folders, /// and then restore any settings files from each of those. /// </summary> bool read_manufacturer(string mfgPath, ref List <MachinePreset> presetsForModels) { SettingsSerializer serializer = new SettingsSerializer(); string[] folders = Directory.GetDirectories(mfgPath); foreach (string machineFolder in folders) { List <PlanarAdditiveSettings> settings; List <string> sourceFilePaths; if (serializer.RestoreFromFolder(machineFolder, out settings, out sourceFilePaths) == false) { DebugUtil.Log(2, "MachineDatabase: did not find any valid settings files in folder " + machineFolder); continue; } for (int i = 0; i < settings.Count; ++i) { MachinePreset preset = new MachinePreset(settings[i], sourceFilePaths[i]); presetsForModels.Add(preset); } } return(presetsForModels.Count > 0); }