From 8d0b20fbdf32dbdbf84d463748fdbd338e9caf4f Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Wed, 10 Jul 2019 17:33:48 +0200 Subject: [PATCH] adding configuration option for output folder to gui and for initializing filewriters when running simulation --- VECTO/Configuration.vb | 5 +++++ VECTO/GUI/MainForm.Designer.vb | 38 +++++++++++++++++++++++++++++++++- VECTO/GUI/MainForm.vb | 29 +++++++++++++++++++++++--- 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/VECTO/Configuration.vb b/VECTO/Configuration.vb index 0af42028db..685d15b68f 100644 --- a/VECTO/Configuration.vb +++ b/VECTO/Configuration.vb @@ -32,6 +32,8 @@ Public Class Configuration Public ValidateRunData As Boolean + public OutputFolder As String + Public Const DefaultFuelType As FuelType = FuelType.DieselCI Private Const FormatVersion As Short = 2 @@ -58,6 +60,7 @@ Public Class Configuration FirstRun = True DeclMode = True ValidateRunData = True + OutputFolder = "" End Sub Public Sub Load() @@ -86,6 +89,7 @@ Public Class Configuration FirstRun = body.GetEx(Of Boolean)("FirstRun") DeclMode = body.GetEx(Of Boolean)("DeclMode") ValidateRunData = IsNothing(body("ValidateRunData")) OrElse body.GetEx(Of Boolean)("ValidateRunData") + OutputFolder = If(body("OutputFolder") Is Nothing, "", body("OutputFolder").Value(of string)()) End Using Catch ex As Exception GUIMsg(MessageType.Err, "Error while loading settings!") @@ -111,6 +115,7 @@ Public Class Configuration body.Add("FirstRun", FirstRun) body.Add("DeclMode", DeclMode) body.Add("ValidateRunData", ValidateRunData) + body.Add("OutputFolder", OutputFolder) JSONFileWriter.WriteFile(New Dictionary(Of String, Object) From {{"Header", header}, {"Body", body}}, FilePath) End Sub diff --git a/VECTO/GUI/MainForm.Designer.vb b/VECTO/GUI/MainForm.Designer.vb index 6308e8eb09..d6703a1de4 100644 --- a/VECTO/GUI/MainForm.Designer.vb +++ b/VECTO/GUI/MainForm.Designer.vb @@ -116,6 +116,9 @@ Partial Class MainForm Me.OpenInGraphWindowToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) + Me.GroupBox4 = New System.Windows.Forms.GroupBox() + Me.tbOutputFolder = New System.Windows.Forms.TextBox() + Me.Label2 = New System.Windows.Forms.Label() Me.StatusBAR.SuspendLayout Me.TabControl1.SuspendLayout Me.TabPageGEN.SuspendLayout @@ -133,6 +136,7 @@ Partial Class MainForm Me.SplitContainer1.SuspendLayout Me.ToolStrip1.SuspendLayout Me.CmOpenFile.SuspendLayout + Me.GroupBox4.SuspendLayout Me.SuspendLayout ' 'StatusBAR @@ -375,6 +379,7 @@ Partial Class MainForm ' 'PanelOptAllg ' + Me.PanelOptAllg.Controls.Add(Me.GroupBox4) Me.PanelOptAllg.Controls.Add(Me.GroupBox3) Me.PanelOptAllg.Controls.Add(Me.GroupBox2) Me.PanelOptAllg.Controls.Add(Me.GroupBox1) @@ -820,6 +825,33 @@ Partial Class MainForm Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(173, 22) Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder" ' + 'GroupBox4 + ' + Me.GroupBox4.Controls.Add(Me.Label2) + Me.GroupBox4.Controls.Add(Me.tbOutputFolder) + Me.GroupBox4.Location = New System.Drawing.Point(183, 4) + Me.GroupBox4.Name = "GroupBox4" + Me.GroupBox4.Size = New System.Drawing.Size(344, 71) + Me.GroupBox4.TabIndex = 19 + Me.GroupBox4.TabStop = false + Me.GroupBox4.Text = "Results Output" + ' + 'tbOutputFolder + ' + Me.tbOutputFolder.Location = New System.Drawing.Point(6, 38) + Me.tbOutputFolder.Name = "tbOutputFolder" + Me.tbOutputFolder.Size = New System.Drawing.Size(215, 20) + Me.tbOutputFolder.TabIndex = 0 + ' + 'Label2 + ' + Me.Label2.AutoSize = true + Me.Label2.Location = New System.Drawing.Point(7, 19) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(84, 13) + Me.Label2.TabIndex = 1 + Me.Label2.Text = "Output Directory" + ' 'MainForm ' Me.AcceptButton = Me.btStartV3 @@ -858,6 +890,8 @@ Partial Class MainForm Me.ToolStrip1.ResumeLayout(false) Me.ToolStrip1.PerformLayout Me.CmOpenFile.ResumeLayout(false) + Me.GroupBox4.ResumeLayout(false) + Me.GroupBox4.PerformLayout Me.ResumeLayout(false) Me.PerformLayout @@ -951,5 +985,7 @@ End Sub Friend WithEvents cbValidateRunData As System.Windows.Forms.CheckBox Friend WithEvents cbActVmod As System.Windows.Forms.CheckBox Friend WithEvents EPTPJobEditorToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem - + Friend WithEvents GroupBox4 As GroupBox + Friend WithEvents Label2 As Label + Friend WithEvents tbOutputFolder As TextBox End Class diff --git a/VECTO/GUI/MainForm.vb b/VECTO/GUI/MainForm.vb index 0e69f888b7..de084af857 100644 --- a/VECTO/GUI/MainForm.vb +++ b/VECTO/GUI/MainForm.vb @@ -51,6 +51,7 @@ Imports TUGraz.VectoCore Imports TUGraz.VectoCore.InputData.FileIO.XML Imports TUGraz.VectoCore.InputData.FileIO.XML.Declaration Imports TUGraz.VectoCore.InputData.FileIO.XML.Engineering +Imports TUGraz.VectoCore.Models.Simulation Imports TUGraz.VectoCore.OutputData Imports TUGraz.VectoCore.OutputData.FileIO Imports TUGraz.VectoCore.Utils @@ -937,7 +938,7 @@ Imports TUGraz.VectoCore.Utils AllowSleepOff() - Dim sumFileWriter As FileOutputWriter = New FileOutputWriter(JobFileList(0)) + Dim sumFileWriter As FileOutputWriter = New FileOutputWriter(GetOutputDirectory(JobFileList(0))) Dim sumWriter As SummaryDataContainer = New SummaryDataContainer(sumFileWriter) Dim jobContainer As JobContainer = New JobContainer(sumWriter) @@ -987,7 +988,8 @@ Imports TUGraz.VectoCore.Utils Continue For End If - Dim fileWriter As FileOutputWriter = New FileOutputWriter(jobFile) + Dim outFile As String = GetOutputDirectory(jobFile) + Dim fileWriter As FileOutputWriter = New FileOutputWriter(outFile) Dim runsFactory As SimulatorFactory = New SimulatorFactory(mode, input, fileWriter) runsFactory.WriteModalResults = Cfg.ModOut @@ -1087,7 +1089,7 @@ Imports TUGraz.VectoCore.Utils Next For Each job As String In JobFileList - dim w as FileOutputWriter = new FileOutputWriter(job) + dim w as FileOutputWriter = new FileOutputWriter(GetOutputDirectory(job)) For Each entry as KeyValuePair(Of string, string) In _ new Dictionary(Of string, string) _ from {{w.XMLFullReportName, "XML Manufacturer Report"}, {w.XMLCustomerReportName, "XML Customer Report"}, @@ -1127,6 +1129,23 @@ Imports TUGraz.VectoCore.Utils End If End Sub + Private Function GetOutputDirectory(jobFile As String) As String + + dim outFile as String = jobfile + If (Not string.IsNullOrWhiteSpace(tbOutputFolder.Text)) Then + Dim outPath as string = tbOutputFolder.Text + if (path.IsPathRooted(outPath)) Then + outFile = Path.Combine(outPath, Path.GetFileName(jobFile)) + Else + outFile = Path.Combine(path.GetDirectoryName(jobFile), outPath, path.GetFileName(jobFile)) + End If + If (Not directory.Exists(path.GetDirectoryName(outFile))) then + Directory.CreateDirectory(path.GetDirectoryName(outFile)) + End If + End If + Return outFile + End Function + Private Shared Sub PrintRuns(progress As Dictionary(Of Integer, JobContainer.ProgressEntry), fileWriters As Dictionary(Of Integer, FileOutputWriter)) @@ -1435,6 +1454,9 @@ Imports TUGraz.VectoCore.Utils RbDecl.Checked = Cfg.DeclMode cbValidateRunData.Checked = cfg.ValidateRunData + + tbOutputFolder.Text = Cfg.OutputFolder + End Sub 'Update config class from options in GUI, e.g. before running calculations @@ -1442,6 +1464,7 @@ Imports TUGraz.VectoCore.Utils Cfg.ModOut = ChBoxModOut.Checked Cfg.Mod1Hz = ChBoxMod1Hz.Checked Cfg.ValidateRunData = cbValidateRunData.Checked + Cfg.OutputFolder = tbOutputFolder.Text End Sub #End Region -- GitLab