public static void ImportPrinter(Printer printer, ProfileManager profileData) { var printerInfo = new PrinterInfo() { Name = printer.Name, ID = printer.Id.ToString(), Make = printer.Make ?? "", Model = printer.Model ?? "", }; profileData.Profiles.Add(printerInfo); var printerSettings = new PrinterSettings() { OemLayer = LoadOemLayer(printer) }; printerSettings.OemLayer[SettingsKey.make] = printerInfo.Make; printerSettings.OemLayer[SettingsKey.model] = printerInfo.Model; LoadQualitySettings(printerSettings, printer); LoadMaterialSettings(printerSettings, printer); printerSettings.ID = printer.Id.ToString(); printerSettings.UserLayer[SettingsKey.printer_name] = printer.Name ?? ""; printerSettings.UserLayer[SettingsKey.baud_rate] = printer.BaudRate ?? ""; printerSettings.UserLayer[SettingsKey.auto_connect] = printer.AutoConnect ? "1" : "0"; printerSettings.UserLayer[SettingsKey.default_material_presets] = printer.MaterialCollectionIds ?? ""; printerSettings.UserLayer[SettingsKey.device_token] = printer.DeviceToken ?? ""; printerSettings.UserLayer[SettingsKey.device_type] = printer.DeviceType ?? ""; // Open the first imported printer if no active printer if (!ApplicationController.Instance.ActivePrinters.Any()) { ApplicationController.Instance.OpenEmptyPrinter(printer.Id.ToString()).ConfigureAwait(false); } // Import macros from the database var allMacros = Datastore.Instance.dbSQLite.Query <CustomCommands>("SELECT * FROM CustomCommands WHERE PrinterId = " + printer.Id); printerSettings.Macros = allMacros.Select(macro => new GCodeMacro() { GCode = macro.Value.Trim(), Name = macro.Name, LastModified = macro.DateLastModified }).ToList(); string query = string.Format("SELECT * FROM PrinterSetting WHERE Name = 'PublishBedImage' and PrinterId = {0};", printer.Id); var publishBedImage = Datastore.Instance.dbSQLite.Query <PrinterSetting>(query).FirstOrDefault(); printerSettings.UserLayer[SettingsKey.publish_bed_image] = publishBedImage?.Value == "true" ? "1" : "0"; printerSettings.UserLayer[SettingsKey.print_leveling_enabled] = printer.DoPrintLeveling ? "true" : "false"; printerSettings.UserLayer[SettingsKey.manual_movement_speeds] = printer.ManualMovementSpeeds; // make sure we clear the one time settings printerSettings.OemLayer[SettingsKey.spiral_vase] = ""; printerSettings.OemLayer[SettingsKey.layer_to_pause] = ""; // TODO: Where can we find CalibrationFiiles in the current model? // layeredProfile.SetActiveValue(""calibration_files"", ???); printerSettings.ID = printer.Id.ToString(); printerSettings.DocumentVersion = PrinterSettings.LatestVersion; printerSettings.Helpers.SetComPort(printer.ComPort); printerSettings.ResetSettingsForNewProfile(); printerSettings.Save(userDrivenChange: false); }