Prechádzať zdrojové kódy

Digital form and menu column changes

Kenric Nugteren 1 rok pred
rodič
commit
0cd29f8e14

+ 12 - 2
InABox.Core/DigitalForms/DFUtils.cs

@@ -140,6 +140,11 @@ namespace InABox.Core
             }
         }
 
+        public static IEnumerable<Type> GetFormInstanceTypes()
+        {
+            return FormInstanceTypes.Select(x => x.Value.Item1);
+        }
+
         public static Type? GetFormInstanceType(string appliesTo)
         {
             if (FormInstanceTypes.TryGetValue(appliesTo, out var result))
@@ -229,11 +234,16 @@ namespace InABox.Core
             ).FirstOrDefault();
         }
 
-        public static Type FormEntityType(Type TForm)
+        public static Type FormEntityLinkType(Type TForm)
         {
             var formInstanceType = TForm.GetInterfaceDefinition(typeof(IDigitalFormInstance<>))
                 ?? throw new Exception("Form does not implement IDigitalFormInstance<>");
-            var linkType = formInstanceType.GenericTypeArguments[0];
+            return formInstanceType.GenericTypeArguments[0];
+        }
+
+        public static Type FormEntityType(Type TForm)
+        {
+            var linkType = FormEntityLinkType(TForm);
             var linkInterface = linkType.GetInterfaceDefinition(typeof(IEntityLink<>));
             return linkInterface!.GenericTypeArguments[0];
         }

+ 2 - 0
inabox.wpf/DynamicGrid/Columns/DynamicMenuColumn.cs

@@ -63,6 +63,8 @@ namespace InABox.DynamicGrid
                 return false;
             };
         }
+
+        public ContextMenu GetMenu() => _menu;
         
         public MenuItem AddItem(string text, System.Drawing.Bitmap? image, Action<CoreRow?>? action, object? parent = null, bool enabled = true)
         {

+ 3 - 1
inabox.wpf/DynamicGrid/DynamicGrid.cs

@@ -1361,7 +1361,9 @@ namespace InABox.DynamicGrid
             var row = Data.Rows[rowindex];
             var menu = column?.ContextMenu?.Invoke(SelectedRows);
             if (menu != null && menu.Items.Count > 0)
+            {
                 menu.IsOpen = true;
+            }
         }
 
         private void DataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
@@ -1405,7 +1407,7 @@ namespace InABox.DynamicGrid
             if (dac != null)
             {
                 var bRefresh = false;
-                if(e.ChangedButton == MouseButton.Left)
+                if(e.ChangedButton == MouseButton.Left || (e.ChangedButton == MouseButton.Right && dac is DynamicMenuColumn))
                 {
                     foreach (var row in SelectedRows)
                         if (dac.Action?.Invoke(row) == true)