aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs91
1 files changed, 91 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
index a76799881..ee21b9ac3 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
@@ -181,6 +181,10 @@ namespace Tango.MachineStudio.RML.ViewModels
public RelayCommand CloneRmlCommand { get; set; }
+ public RelayCommand ExportRMLFileCommand { get; set; }
+
+ public RelayCommand ImportRMLFileCommand { get; set; }
+
public MainViewVM(INotificationProvider notificationProvider)
{
_notification = notificationProvider;
@@ -199,6 +203,9 @@ namespace Tango.MachineStudio.RML.ViewModels
ImportForwardDataCommand = new RelayCommand(ImportCCTData, () => ActiveRML != null && IsFree);
ExportForwardDataCommand = new RelayCommand(ExportCCTData, () => ActiveRML != null && SelectedCCT != null && IsFree);
+
+ ExportRMLFileCommand = new RelayCommand(ExportRmlFile, () => SelectedRML != null && IsFree);
+ ImportRMLFileCommand = new RelayCommand(ImportRmlFile, () => IsFree);
}
public override void OnApplicationReady()
@@ -769,5 +776,89 @@ namespace Tango.MachineStudio.RML.ViewModels
}
#endregion
+
+ #region RML Import / Export
+
+ private async void ImportRmlFile()
+ {
+ OpenFileDialog dlg = new OpenFileDialog();
+ dlg.Title = "Import Thread Files";
+ dlg.Filter = "Twine Thread Files|*.rml";
+ dlg.Multiselect = true;
+
+ if (dlg.ShowDialog().Value)
+ {
+ using (_notification.PushTaskItem($"Importing thread files..."))
+ {
+ try
+ {
+ IsFree = false;
+
+ LogManager.Log($"Importing thread files...");
+
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ foreach (var file in dlg.FileNames)
+ {
+ var json = File.ReadAllText(file);
+ var rmlFile = await Rml.FromRmlFile(db, json);
+
+ db.Rmls.Add(rmlFile);
+ }
+
+ await db.SaveChangesAsync();
+ }
+
+ IsFree = true;
+
+ _notification.ShowInfo($"Threads imported successfully.");
+
+ LoadRmls();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error importing thread file.");
+ _notification.ShowError($"An error occurred while trying to import the selected thread file.\n{ex.FlattenMessage()}");
+ }
+ finally
+ {
+ IsFree = true;
+ }
+ }
+ }
+ }
+
+ private async void ExportRmlFile()
+ {
+ SaveFileDialog dlg = new SaveFileDialog();
+ dlg.Title = "Export Thread File";
+ dlg.Filter = "Twine Thread Files|*.rml";
+ dlg.DefaultExt = ".rml";
+ dlg.FileName = SelectedRML.Name;
+
+ if (dlg.ShowDialog().Value)
+ {
+ using (_notification.PushTaskItem($"Exporting Thread '{SelectedRML.Name}'..."))
+ {
+ try
+ {
+ LogManager.Log($"Exporting Thread file {SelectedRML.Name}");
+
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var rmlJsonFile = await SelectedRML.ToRmlFile(db);
+ File.WriteAllText(dlg.FileName, rmlJsonFile);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error exporting Thread file.");
+ _notification.ShowError($"An error occurred while trying to export thread '{SelectedRML.Name}'.\n{ex.FlattenMessage()}");
+ }
+ }
+ }
+ }
+
+ #endregion
}
}