Browse Source

Improved Grid Column Alignments and Row Sizing Options
Added IStore.Type property

frogsoftware 1 year ago
parent
commit
9db2e47d50

+ 3 - 0
InABox.Core/CoreUtils.cs

@@ -2267,6 +2267,9 @@ namespace InABox.Core
             var t = GetEntity(entityName);
             return reader.DeserialiseExpression(t);
         }
+        
+        public static string ExpressionToString<T,TType>(Expression<Func<T, TType>> expression)
+            => ExpressionToString(typeof(T), expression);
 
         public static string ExpressionToString(Type t, Expression expression)
         {

+ 2 - 0
InABox.Database/Stores/IStore.cs

@@ -14,6 +14,8 @@ namespace InABox.Database
 
         IProvider Provider { get; set; }
         
+        Type Type { get; }
+        
         // Called once at Database Startup to initialise caches etc
         void Init();
         

+ 3 - 0
InABox.Database/Stores/Store.cs

@@ -21,6 +21,9 @@ namespace InABox.Database
 
     public class Store<T> : IStore<T> where T : Entity, new()
     {
+
+        public Type Type => typeof(T);
+        
         public bool IsSubStore { get; set; }
 
         public Guid UserGuid { get; set; }

+ 2 - 5
inabox.wpf/DynamicGrid/Columns/EditorColumns/DynamicGridCodeColumn.cs

@@ -18,11 +18,8 @@ public class DynamicGridCodeColumn<TEntity> : DynamicGridEditorColumn<TEntity,Co
             () =>
             {
                 var result = new Label();
-                result.HorizontalContentAlignment = Column.TextAlignment == TextAlignment.Left
-                    ? HorizontalAlignment.Left
-                    : Column.TextAlignment == TextAlignment.Center
-                        ? HorizontalAlignment.Center
-                        : HorizontalAlignment.Right;
+                result.HorizontalContentAlignment = GetHorizontalAlignment(Editor);
+                result.VerticalContentAlignment = GetVerticalAlignment(Editor);
                 var binding = new Binding()
                 {
                     Path = new PropertyPath(MappingName),

+ 26 - 5
inabox.wpf/DynamicGrid/Columns/EditorColumns/DynamicGridEditorColumn.cs

@@ -101,6 +101,31 @@ public abstract class DynamicGridEditorColumn<TEntity, TEditor, TColumn> : IDyna
                 ? TextAlignment.Center
                 : TextAlignment.Right;
     
+    
+    protected HorizontalAlignment GetHorizontalAlignment(TEditor editor) => Definition?.Alignment == Alignment.NotSet
+        ? editor is NumericEditor ? HorizontalAlignment.Right : HorizontalAlignment.Left
+        : Definition?.Alignment == Alignment.BottomLeft || 
+          Definition?.Alignment == Alignment.MiddleLeft || 
+          Definition?.Alignment == Alignment.TopLeft
+            ? HorizontalAlignment.Left
+            : Definition?.Alignment == Alignment.BottomCenter ||
+              Definition?.Alignment == Alignment.MiddleCenter ||
+              Definition?.Alignment == Alignment.TopCenter
+                ? HorizontalAlignment.Center
+                : HorizontalAlignment.Right;
+
+    protected VerticalAlignment GetVerticalAlignment(TEditor editor) => Definition?.Alignment == Alignment.NotSet
+        ? VerticalAlignment.Center
+        : Definition?.Alignment == Alignment.TopLeft ||
+          Definition?.Alignment == Alignment.TopCenter ||
+          Definition?.Alignment == Alignment.TopRight
+            ? VerticalAlignment.Top
+            : Definition?.Alignment == Alignment.MiddleLeft ||
+              Definition?.Alignment == Alignment.MiddleCenter ||
+              Definition?.Alignment == Alignment.MiddleRight
+                ? VerticalAlignment.Center
+                : VerticalAlignment.Bottom;
+    
     private void DoConfigure(TColumn column, TEditor editor)
     {
         Configure(column,editor);
@@ -117,11 +142,7 @@ public abstract class DynamicGridEditorColumn<TEntity, TEditor, TColumn> : IDyna
 
         Column.TextAlignment = GetTextAlignment(editor);
 
-        Column.HorizontalHeaderContentAlignment = Column.TextAlignment == TextAlignment.Left
-            ? HorizontalAlignment.Left
-            : Column.TextAlignment == TextAlignment.Center
-                ? HorizontalAlignment.Center
-                : HorizontalAlignment.Right;
+        Column.HorizontalHeaderContentAlignment = GetHorizontalAlignment(editor);
 
     }
     

+ 2 - 1
inabox.wpf/DynamicGrid/Columns/EditorColumns/DynamicGridMemoColumn.cs

@@ -23,12 +23,13 @@ public class DynamicGridMemoColumn<TEntity> : DynamicGridEditorColumn<TEntity,Me
         };
         column.DisplayBinding = binding;
         column.ValueBinding = binding;
+        column.Padding = new Thickness(2);
 
     }
 
     protected override void Configure(GridTextColumn column, MemoEditor editor)
     {
-        column.TextWrapping = TextWrapping.NoWrap;
+        column.TextWrapping = TextWrapping.Wrap;
         column.UpdateTrigger = UpdateSourceTrigger.PropertyChanged;
     }
     

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

@@ -282,7 +282,7 @@ namespace InABox.DynamicGrid
                     CoreUtils.SetPropertyValue(delete, column.Property, row[column.Property]);
                 }
 
-                //var delete = /* row.ToObject<TEntity>(); */ new TEntity { ID = row.Get<TEntity, Guid>(x => x.ID) };
+                //var delete = /* row.ToObject<TEntity>(); */ 
                 deletes.Add(delete);
             }
 

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

@@ -271,7 +271,7 @@ namespace InABox.DynamicGrid
         private readonly Button DuplicateBtn;
         private readonly Button SwitchViewBtn;
 
-        private readonly GridRowSizingOptions gridRowResizingOptions = new() { CanIncludeHiddenColumns = false, AutoFitMode = AutoFitMode.SmartFit };
+        private readonly GridRowSizingOptions gridRowResizingOptions = new() { CanIncludeHiddenColumns = false, AutoFitMode = AutoFitMode.Default };
         private readonly Button Help;
         private readonly Button Import;