diff --git a/src/AasxCsharpLibrary/AdminShellUtil.cs b/src/AasxCsharpLibrary/AdminShellUtil.cs index 6a22a2c3e..e9d89ac53 100644 --- a/src/AasxCsharpLibrary/AdminShellUtil.cs +++ b/src/AasxCsharpLibrary/AdminShellUtil.cs @@ -1099,6 +1099,18 @@ public static void SetFieldLazyValue( return; } + // list of strings is vary common, therefore a special case is justified + if (tut?.IsGenericType == true + && tut.GetGenericTypeDefinition() == typeof(List<>) + && tut.GetGenericArguments().Count() == 1 + && tut.GetGenericArguments()[0] == typeof(string) + && value is IEnumerable vstr2) + { + var lststr = vstr2.ToList(); + f.SetValue(obj, lststr); + return; + } + // 2024-01-04: make function more suitable for switch (Type.GetTypeCode(tut)) { diff --git a/src/AasxCsharpLibrary/Extensions/ExtendEnvironment.cs b/src/AasxCsharpLibrary/Extensions/ExtendEnvironment.cs index 4e1a154ea..f2c51227e 100644 --- a/src/AasxCsharpLibrary/Extensions/ExtendEnvironment.cs +++ b/src/AasxCsharpLibrary/Extensions/ExtendEnvironment.cs @@ -417,6 +417,20 @@ public static IEnumerable AllConceptDescriptions(this AasCo yield return cd; } + /// + /// Enumerates any Identifiables in the Environment. Will not return null. + /// Is tolerant, if the list is null. + /// + public static IEnumerable AllIdentifiables(this AasCore.Aas3_0.IEnvironment env) + { + foreach (var aas in env.AllAssetAdministrationShells()) + yield return aas; + foreach (var sm in env.AllSubmodels()) + yield return sm; + foreach (var cd in env.AllConceptDescriptions()) + yield return cd; + } + /// /// Returns the number of AssetAdministrationShells. /// Is tolerant, if the list is null. diff --git a/src/AasxIntegrationBase/AnyUI/AnyUiContextPlusDialogs.cs b/src/AasxIntegrationBase/AnyUI/AnyUiContextPlusDialogs.cs index c0a9e9a44..0a88ea16c 100644 --- a/src/AasxIntegrationBase/AnyUI/AnyUiContextPlusDialogs.cs +++ b/src/AasxIntegrationBase/AnyUI/AnyUiContextPlusDialogs.cs @@ -445,7 +445,8 @@ public async virtual Task MenuExecuteSystemCommand( string caption, string workDir, string cmd, - string args) + string args, + string[] ignoreError = null) { await Task.Yield(); throw new NotImplementedException("MenuExecuteSystemCommand"); diff --git a/src/AasxIntegrationBase/LogInstance.cs b/src/AasxIntegrationBase/LogInstance.cs index 483db6f7b..37a6d2005 100644 --- a/src/AasxIntegrationBase/LogInstance.cs +++ b/src/AasxIntegrationBase/LogInstance.cs @@ -250,12 +250,18 @@ public void Append(StoredPrint sp) /// public int NumberErrors = 0; + /// + /// Incremented for each blue (important) message + /// + public int NumberBlues = 0; + /// /// Clears errors /// public void ClearNumberErrors() { NumberErrors = 0; + NumberBlues = 0; } #region //////// Append to Log @@ -282,6 +288,10 @@ public void Info(string msg, params object[] args) /// public void Info(StoredPrint.Color color, string msg, params object[] args) { + if (color == StoredPrint.Color.Red) + NumberErrors++; + if (color == StoredPrint.Color.Blue) + NumberBlues++; var p = new StoredPrint(color, String.Format(msg, args)); Append(p); } diff --git a/src/AasxPackageExplorer/AasxPackageExplorer.csproj b/src/AasxPackageExplorer/AasxPackageExplorer.csproj index 518af423b..924eebf84 100644 --- a/src/AasxPackageExplorer/AasxPackageExplorer.csproj +++ b/src/AasxPackageExplorer/AasxPackageExplorer.csproj @@ -81,6 +81,9 @@ + + PreserveNewest + PreserveNewest diff --git a/src/AasxPackageExplorer/MainWindow.CommandBindings.cs b/src/AasxPackageExplorer/MainWindow.CommandBindings.cs index 35959ae16..221576a45 100644 --- a/src/AasxPackageExplorer/MainWindow.CommandBindings.cs +++ b/src/AasxPackageExplorer/MainWindow.CommandBindings.cs @@ -97,7 +97,7 @@ public async Task CommandExecution_RedrawAllAsync() /// public bool ScriptModeShutdown = false; - public async Task ExecuteMainMenuCommand(string menuItemName, params object[] args) + public async Task ExecuteMainMenuCommand(string menuItemName, bool scriptMode, params object[] args) { if (menuItemName?.HasContent() != true) { @@ -123,7 +123,7 @@ public async Task ExecuteMainMenuCommand(string menuItemName, params object var ticket = new AasxMenuActionTicket() { MenuItem = mi, - ScriptMode = true, + ScriptMode = scriptMode, ArgValue = new AasxMenuArgDictionary() }; diff --git a/src/AasxPackageExplorer/MainWindow.xaml b/src/AasxPackageExplorer/MainWindow.xaml index 81652d73c..6b634fb0b 100644 --- a/src/AasxPackageExplorer/MainWindow.xaml +++ b/src/AasxPackageExplorer/MainWindow.xaml @@ -382,7 +382,8 @@