Browse Source

Added way to set the layout of editor by instance instead of by type.

Kenric Nugteren 6 months ago
parent
commit
84f84adde7

+ 1 - 0
inabox.wpf/DynamicGrid/DynamicEditorForm/DynamicEditorForm.xaml.cs

@@ -127,6 +127,7 @@ public partial class DynamicEditorForm : ThemableChromelessWindow, IDynamicEdito
         Form.Setup(type, pages, buttons, pageDataHandler, preloadPages);
     }
     public void SetLayoutType<T>() where T : DynamicEditorGridLayout => Form.SetLayoutType<T>();
+    public void SetLayout(DynamicEditorGridLayout layout) => Form.SetLayout(layout);
 
     // Providing new implementation to avoid using DIalogResult, which breaks if non-modal.
     public new bool? ShowDialog()

+ 8 - 0
inabox.wpf/DynamicGrid/DynamicEditorForm/DynamicEditorGrid.xaml.cs

@@ -573,6 +573,14 @@ public partial class DynamicEditorGrid : UserControl, IDynamicEditorHost
         return page;
     }
 
+    public void SetLayout(DynamicEditorGridLayout layout)
+    {
+        Layout = layout;
+        Layout.OnSelectPage += Layout_SelectPage;
+        Layout.TabStripVisible = _tabStripVisible;
+        Content = Layout;
+    }
+
     public void SetLayoutType<T>() where T : DynamicEditorGridLayout
     {
         LayoutType = typeof(T);

+ 2 - 0
inabox.wpf/DynamicGrid/DynamicEditorForm/EmbeddedDynamicEditorForm.xaml.cs

@@ -394,6 +394,8 @@ namespace InABox.DynamicGrid
 
         public void SetLayoutType(Type t) => Editor.SetLayoutType(t);
 
+        public void SetLayout(DynamicEditorGridLayout layout) => Editor.SetLayout(layout);
+
         private void Editor_OnSelectPage(DynamicEditorGrid sender, BaseObject[] items)
         {
             OnSelectPage?.Invoke(sender, items);

+ 2 - 0
inabox.wpf/DynamicGrid/DynamicEditorForm/IDynamicEditorForm.cs

@@ -47,6 +47,8 @@ namespace InABox.DynamicGrid
 
         void SetLayoutType<T>() where T : DynamicEditorGridLayout;
 
+        void SetLayout(DynamicEditorGridLayout layout);
+
         void UnloadEditorPages(bool saved);
     }
 }