Просмотр исходного кода

Merge remote-tracking branch 'origin/kenric' into frank

frogsoftware 11 часов назад
Родитель
Сommit
cd15e47e71
2 измененных файлов с 46 добавлено и 4 удалено
  1. 33 0
      InABox.Core/CoreUtils.cs
  2. 13 4
      inabox.wpf/DynamicGrid/DynamicEntityFormGrid.cs

+ 33 - 0
InABox.Core/CoreUtils.cs

@@ -2728,6 +2728,39 @@ namespace InABox.Core
             return to;
         }
 
+        /// <summary>
+        /// Concatenate <paramref name="arr1"/> with <paramref name="arr2"/>, returning a new array.
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="arr1"></param>
+        /// <param name="arr2"></param>
+        /// <returns></returns>
+        public static T[] Concatenate<T>(this T[] arr1, T[] arr2)
+        {
+            var newArr = new T[arr1.Length + arr2.Length];
+            arr1.CopyTo(newArr, 0);
+            arr2.CopyTo(newArr, arr1.Length);
+            return newArr;
+        }
+
+        /// <summary>
+        /// Concatenate all <paramref name="arrays"/> together.
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="arrays"></param>
+        /// <returns></returns>
+        public static T[] Concatenate<T>(params T[][] arrays)
+        {
+            var newArr = new T[arrays.Sum(x => x.Length)];
+            for(int i = 0, idx = 0; i < arrays.Length; ++i)
+            {
+                var arr = arrays[i];
+                arr.CopyTo(newArr, idx);
+                idx += arr.Length;
+            }
+            return newArr;
+        }
+
         public static IEnumerable<T> AnyOr<T>(this IEnumerable<T> enumerable, IEnumerable<T> or)
         {
             var any = false;

+ 13 - 4
inabox.wpf/DynamicGrid/DynamicEntityFormGrid.cs

@@ -16,12 +16,10 @@ namespace InABox.DynamicGrid
         where TEntity : Entity
         where TEntityLink : IEntityLink<TEntity>, new()
     {
-        private TEntity Entity { get; set; }
+        protected virtual TEntity Entity { get; set; }
 
-        public DynamicEntityFormGrid(TEntity entity)
+        public DynamicEntityFormGrid()
         {
-            Entity = entity;
-
             OnBeforeSave += BeforeSave;
             OnCustomiseEditor += DynamicEntityFormGrid_OnCustomiseEditor;
 
@@ -32,6 +30,11 @@ namespace InABox.DynamicGrid
             HiddenColumns.Add(x => x.Form.ID);
         }
 
+        public DynamicEntityFormGrid(TEntity entity) : this()
+        {
+            Entity = entity;
+        }
+
         private void DynamicEntityFormGrid_OnCustomiseEditor(IDynamicEditorForm sender, TForm[]? items, DynamicGridColumn column, BaseEditor editor)
         {
             if(column.ColumnName == "Form.ID")
@@ -40,6 +43,10 @@ namespace InABox.DynamicGrid
             }
         }
 
+        protected virtual void OnFormCreated(TForm form)
+        {
+        }
+
         protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
         {
             var filter = LookupFactory.DefineChildFilter<TEntity, DigitalForm>(new TEntity[] { Entity })
@@ -65,6 +72,8 @@ namespace InABox.DynamicGrid
 
                     SaveItem(form);
 
+                    OnFormCreated(form);
+
                     Refresh(false, true);
                     DoChanged();
                 }