diff --git a/VECTO/GUI/MainForm.Designer.vb b/VECTO/GUI/MainForm.Designer.vb index 55d649948fdcd261b9b4a8da6ce35ca1d3c7b7a5..c2574209af51bce6640c5dce1fb644ae2b17d0a1 100644 --- a/VECTO/GUI/MainForm.Designer.vb +++ b/VECTO/GUI/MainForm.Designer.vb @@ -43,6 +43,8 @@ Partial Class MainForm Me.ToolStripProgBarOverall = New System.Windows.Forms.ToolStripProgressBar() Me.TabControl1 = New System.Windows.Forms.TabControl() Me.TabPageGEN = New System.Windows.Forms.TabPage() + Me.btnImportXML = New System.Windows.Forms.Button() + Me.btnExportXML = New System.Windows.Forms.Button() Me.Label6 = New System.Windows.Forms.Label() Me.btStartV3 = New System.Windows.Forms.Button() Me.LbDecl = New System.Windows.Forms.Label() @@ -112,8 +114,6 @@ 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.btnExportXML = New System.Windows.Forms.Button() - Me.btnImportXML = New System.Windows.Forms.Button() Me.StatusBAR.SuspendLayout() Me.TabControl1.SuspendLayout() Me.TabPageGEN.SuspendLayout() @@ -205,6 +205,29 @@ Partial Class MainForm Me.TabPageGEN.Text = "Job Files" Me.TabPageGEN.UseVisualStyleBackColor = True ' + 'btnImportXML + ' + Me.btnImportXML.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.btnImportXML.Location = New System.Drawing.Point(464, 271) + Me.btnImportXML.Name = "btnImportXML" + Me.btnImportXML.Size = New System.Drawing.Size(104, 23) + Me.btnImportXML.TabIndex = 23 + Me.btnImportXML.Text = "Import from XML" + Me.btnImportXML.UseVisualStyleBackColor = True + Me.btnImportXML.Visible = False + ' + 'btnExportXML + ' + Me.btnExportXML.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.btnExportXML.Enabled = False + Me.btnExportXML.Location = New System.Drawing.Point(343, 272) + Me.btnExportXML.Name = "btnExportXML" + Me.btnExportXML.Size = New System.Drawing.Size(115, 23) + Me.btnExportXML.TabIndex = 22 + Me.btnExportXML.Text = "Export as XML" + Me.btnExportXML.UseVisualStyleBackColor = True + Me.btnExportXML.Visible = False + ' 'Label6 ' Me.Label6.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) @@ -765,27 +788,6 @@ Partial Class MainForm Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(198, 22) Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder" ' - 'btnExportXML - ' - Me.btnExportXML.Enabled = False - Me.btnExportXML.Location = New System.Drawing.Point(357, 271) - Me.btnExportXML.Name = "btnExportXML" - Me.btnExportXML.Size = New System.Drawing.Size(115, 23) - Me.btnExportXML.TabIndex = 22 - Me.btnExportXML.Text = "Export as XML" - Me.btnExportXML.UseVisualStyleBackColor = True - Me.btnExportXML.Visible = False - ' - 'btnImportXML - ' - Me.btnImportXML.Location = New System.Drawing.Point(489, 271) - Me.btnImportXML.Name = "btnImportXML" - Me.btnImportXML.Size = New System.Drawing.Size(104, 23) - Me.btnImportXML.TabIndex = 23 - Me.btnImportXML.Text = "Import from XML" - Me.btnImportXML.UseVisualStyleBackColor = True - Me.btnImportXML.Visible = False - ' 'MainForm ' Me.AcceptButton = Me.btStartV3 diff --git a/VECTO/GUI/MainForm.resx b/VECTO/GUI/MainForm.resx index 1ab95c20be0eb1a9777f7aae6720fb67961848f1..851f4024a3ae6d8b88b0c9c9cb15cd69128464c9 100644 --- a/VECTO/GUI/MainForm.resx +++ b/VECTO/GUI/MainForm.resx @@ -205,6 +205,9 @@ sDbhv9/4m+ZgnX1wey9Idfa/Y3WQPgGrg/QJWB2kj96I/gcOkiuMy/nVgwAAAABJRU5ErkJggg== </value> </data> + <metadata name="ToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>850, 12</value> + </metadata> <metadata name="ConMenFilelist.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>219, 14</value> </metadata> @@ -223,6 +226,9 @@ <metadata name="CmOpenFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>732, 12</value> </metadata> + <metadata name="ToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>850, 12</value> + </metadata> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>49</value> </metadata> diff --git a/VECTO/GUI/MainForm.vb b/VECTO/GUI/MainForm.vb index 2fa0d71d9cc4044ecc0b67ba13c65ef2a65daab6..5000bfcd0766ae217a076b7893966fa5914d367d 100644 --- a/VECTO/GUI/MainForm.vb +++ b/VECTO/GUI/MainForm.vb @@ -47,6 +47,7 @@ Imports TUGraz.VectoCommon.Utils Imports TUGraz.VectoCore.OutputData Imports TUGraz.VectoCore.OutputData.FileIO Imports TUGraz.VectoCore.Utils +Imports VectoAuxiliaries ''' <summary> ''' Main application form. Loads at application start. Closing form ends application. @@ -252,7 +253,7 @@ Public Class MainForm 'Dim exportPlugins As Dictionary(Of String, String) = PluginRegistry.Instance.GetExportPluginList() Dim exportPlugin As IExportPlugin = PluginRegistry.Instance.GetExportPlugin("TUG.IVT.Vecto.XMLExport") btnExportXML.Visible = Not exportPlugin Is Nothing - + Dim importPlugin As IImportPlugin = PluginRegistry.Instance.GetImportPlugin("TUG.IVT.Vecto.XMLImport") btnImportXML.Visible = Not importPlugin Is Nothing @@ -549,8 +550,13 @@ Public Class MainForm x = New String() {""} + Dim extensions As String = "vecto" + Dim inputDataExtensions As String() = + PluginRegistry.Instance.GetKnownInputExtensions().Select(Function(e) e.Substring(1)).ToArray() + If (inputDataExtensions.Any()) Then extensions = String.Join(",", extensions, String.Join(",", inputDataExtensions)) + 'STANDARD/BATCH - If JobfileFileBrowser.OpenDialog("", True, "vecto") Then + If JobfileFileBrowser.OpenDialog("", True, extensions) Then chck = True x = JobfileFileBrowser.Files End If @@ -990,23 +996,45 @@ lbFound: 'list of finished runs Dim finishedRuns As List(Of Integer) = New List(Of Integer) - + Dim plugins As KeyValuePair(Of String, IInputDataPlugin)() = PluginRegistry.Instance.GetInputDataPlugins().ToArray() For Each jobFile As String In JobFileList Try sender.ReportProgress(0, New VectoProgress With {.Target = "ListBox", .Message = "Reading File " + jobFile, .Link = jobFile}) - Dim dataProvider As IInputDataProvider = JSONInputDataFactory.ReadJsonJob(jobFile) - Dim fileWriter As FileOutputWriter = New FileOutputWriter(jobFile) + If (Path.GetExtension(jobFile) = VectoCore.Configuration.Constants.FileExtensions.VectoJobFile) Then + Dim dataProvider As IInputDataProvider = JSONInputDataFactory.ReadJsonJob(jobFile) + Dim fileWriter As FileOutputWriter = New FileOutputWriter(jobFile) - Dim runsFactory As SimulatorFactory = New SimulatorFactory(mode, dataProvider, fileWriter) - runsFactory.WriteModalResults = Cfg.ModOut - runsFactory.ModalResults1Hz = Cfg.Mod1Hz - - For Each runId As Integer In jobContainer.AddRuns(runsFactory) - fileWriters.Add(runId, fileWriter) - Next + Dim runsFactory As SimulatorFactory = New SimulatorFactory(mode, dataProvider, fileWriter) + runsFactory.WriteModalResults = Cfg.ModOut + runsFactory.ModalResults1Hz = Cfg.Mod1Hz + For Each runId As Integer In jobContainer.AddRuns(runsFactory) + fileWriters.Add(runId, fileWriter) + Next + Else + Dim handled As Boolean = False + For Each entry As KeyValuePair(Of String, IInputDataPlugin) In plugins + If Not handled AndAlso entry.Value.CanHandleJob(jobFile) Then + Dim dataprovider As IInputDataProvider = entry.Value.ReadVectoJob(jobFile) + Dim fileWriter As FileOutputWriter = New FileOutputWriter(jobFile) + + Dim runsFactory As SimulatorFactory = New SimulatorFactory(mode, dataprovider, fileWriter) + runsFactory.WriteModalResults = Cfg.ModOut + runsFactory.ModalResults1Hz = Cfg.Mod1Hz + + For Each runId As Integer In jobContainer.AddRuns(runsFactory) + fileWriters.Add(runId, fileWriter) + Next + handled = True + End If + Next + If Not handled Then + sender.ReportProgress(0, + New VectoProgress With {.Target = "ListBoxError", .Message = "No Input Provider for job: " + jobFile}) + End If + End If sender.ReportProgress(0, New VectoProgress With {.Target = "ListBox", .Message = "Finished Reading Data for job: " + jobFile}) diff --git a/VECTO/GUI/VehicleForm.Designer.vb b/VECTO/GUI/VehicleForm.Designer.vb index 51b04da0fb5bdd014a2143978a00490bcd368ac6..eb5daacfc16877c8c494fc1b5340fbf35426602a 100644 --- a/VECTO/GUI/VehicleForm.Designer.vb +++ b/VECTO/GUI/VehicleForm.Designer.vb @@ -936,7 +936,7 @@ Partial Class VehicleForm Me.GroupBox2.Size = New System.Drawing.Size(280, 111) Me.GroupBox2.TabIndex = 4 Me.GroupBox2.TabStop = False - Me.GroupBox2.Text = "Angular Gear" + Me.GroupBox2.Text = "Angledrive" ' 'pnAngledriveFields ' @@ -1034,7 +1034,7 @@ Partial Class VehicleForm Me.Label8.TabIndex = 10 Me.Label8.Text = "HDV Class" ' - 'F_VEH + 'VehicleForm ' Me.AcceptButton = Me.ButOK Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -1058,7 +1058,7 @@ Partial Class VehicleForm Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.MaximizeBox = False - Me.Name = "F_VEH" + Me.Name = "VehicleForm" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent Me.Text = "F05_VEH" Me.GroupBox6.ResumeLayout(False) diff --git a/VECTO/MainModule.vb b/VECTO/MainModule.vb index 71827c1ba0918485a5f5c30d82b20de702fb358e..ed21da1c77d25c47b58c7ed15292bd04b5570470 100644 --- a/VECTO/MainModule.vb +++ b/VECTO/MainModule.vb @@ -12,6 +12,7 @@ Imports System.Collections.Generic Imports System.IO Imports System.Reflection Imports System.Runtime.Remoting +Imports TUGraz.VectoCommon Imports TUGraz.VectoCommon.InputData Imports TUGraz.VectoCommon.OutputData Imports TUGraz.VectoCommon.Utils @@ -79,7 +80,8 @@ Module MainModule Dim exportPluginType As Type = GetType(IExportPlugin) Dim importPluginType As Type = GetType(IImportPlugin) - Dim exportPluginTypes As ICollection(Of Type) = New List(Of Type) + Dim inputDataPluginType As Type = GetType(IInputDataPlugin) + For Each assembly As Assembly In assemblies If assembly <> Nothing Then Dim types As Type() = assembly.GetTypes() @@ -100,14 +102,17 @@ Module MainModule PluginRegistry.Instance.RegisterPlugin(plugin) End If End If + If type.GetInterface(inputDataPluginType.FullName) <> Nothing Then + Dim plugin As IInputDataPlugin = TryCast(Activator.CreateInstance(type), IInputDataPlugin) + If Not plugin Is Nothing Then + PluginRegistry.Instance.RegisterPlugin(plugin) + End If + End If End If Next End If Next 'End If - - - End Sub End Module diff --git a/VectoConsole/Program.cs b/VectoConsole/Program.cs index 493c3c14e6c8e03f778807199aaa210930bb8a29..a670734c2801bbbc135b6a5bd090cff19078da95 100644 --- a/VectoConsole/Program.cs +++ b/VectoConsole/Program.cs @@ -42,6 +42,7 @@ using NLog.Config; using NLog.Targets; using TUGraz.VectoAPI.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Models.Simulation.Impl; @@ -183,6 +184,7 @@ Examples: return 1; } + var plugins = PluginRegistry.Instance.GetInputDataPlugins().ToArray(); foreach (var file in jobFiles) { Console.WriteLine(@"Reading job: " + file); if (Path.GetExtension(file) == Constants.FileExtensions.VectoJobFile) { @@ -194,15 +196,20 @@ Examples: }; _jobContainer.AddRuns(runsFactory); - } - if (Path.GetExtension(file) == Constants.FileExtensions.VectoXMLDeclarationFile) { - var dataProvider = new XMLInputDataProvider(new XmlTextReader(file), true); - fileWriter = new FileOutputWriter(file); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); - if (args.Contains("-mod")) { - runsFactory.WriteModalResults = true; + } else { + var handled = false; + foreach (var plugin in plugins) { + if (!handled && plugin.Value.CanHandleJob(file)) { + var dataProvider = plugin.Value.ReadVectoJob(file); + fileWriter = new FileOutputWriter(file); + var runsFactory = new SimulatorFactory(mode, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = args.Contains("-1Hz"); + runsFactory.WriteModalResults = args.Contains("-mod"); + + _jobContainer.AddRuns(runsFactory); + handled = true; + } } - _jobContainer.AddRuns(runsFactory); } }