|
@@ -44,6 +44,33 @@ namespace InABox.WPF
|
|
|
dependencyObject = parent;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public static int GetColumn(this Grid grid, DependencyObject dependencyObject)
|
|
|
+ {
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ var parent = LogicalTreeHelper.GetParent(dependencyObject);
|
|
|
+ if (parent == null)
|
|
|
+ return -1;
|
|
|
+ if (parent == grid)
|
|
|
+ return Grid.GetColumn(dependencyObject as UIElement);
|
|
|
+ dependencyObject = parent;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static int GetColumnSpan(this Grid grid, DependencyObject dependencyObject)
|
|
|
+ {
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ var parent = LogicalTreeHelper.GetParent(dependencyObject);
|
|
|
+ if (parent == null)
|
|
|
+ return -1;
|
|
|
+ if (parent == grid)
|
|
|
+ return Grid.GetColumnSpan(dependencyObject as UIElement);
|
|
|
+ dependencyObject = parent;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public static void SetGridPosition(this FrameworkElement element, int row, int column, int rowspan, int colspan)
|
|
|
{
|
|
|
element.SetValue(Grid.ColumnProperty, column);
|
|
@@ -147,7 +174,7 @@ namespace InABox.WPF
|
|
|
return item;
|
|
|
}
|
|
|
|
|
|
- public static Separator AddSeparator(this ContextMenu menu, int index = -1)
|
|
|
+ private static Separator DoAddSeparator(ItemsControl menu, int index)
|
|
|
{
|
|
|
var separator = new Separator();
|
|
|
|
|
@@ -155,7 +182,7 @@ namespace InABox.WPF
|
|
|
|
|
|
return separator;
|
|
|
}
|
|
|
- public static Separator? AddSeparatorIfNeeded(this ContextMenu menu, int index = -1)
|
|
|
+ private static Separator DoAddSeparatorIfNeeded(ItemsControl menu, int index)
|
|
|
{
|
|
|
if (menu.Items.Count == 0) return null;
|
|
|
|
|
@@ -172,6 +199,25 @@ namespace InABox.WPF
|
|
|
return separator;
|
|
|
}
|
|
|
|
|
|
+ private static void DoRemoveUnnecessarySeparators(ItemsControl menu)
|
|
|
+ {
|
|
|
+ while(menu.Items.Count > 0 && menu.Items[0] is Separator)
|
|
|
+ {
|
|
|
+ menu.Items.RemoveAt(0);
|
|
|
+ }
|
|
|
+ while(menu.Items.Count > 0 && menu.Items[^1] is Separator)
|
|
|
+ {
|
|
|
+ menu.Items.RemoveAt(menu.Items.Count - 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Separator AddSeparator(this ContextMenu menu, int index = -1) => DoAddSeparator(menu, index);
|
|
|
+ public static Separator AddSeparator(this MenuItem menu, int index = -1) => DoAddSeparator(menu, index);
|
|
|
+ public static Separator? AddSeparatorIfNeeded(this ContextMenu menu, int index = -1) => DoAddSeparatorIfNeeded(menu, index);
|
|
|
+ public static Separator? AddSeparatorIfNeeded(this MenuItem menu, int index = -1) => DoAddSeparatorIfNeeded(menu, index);
|
|
|
+ public static void RemoveUnnecessarySeparators(this ContextMenu menu) => DoRemoveUnnecessarySeparators(menu);
|
|
|
+ public static void RemoveUnnecessarySeparators(this MenuItem menu) => DoRemoveUnnecessarySeparators(menu);
|
|
|
+
|
|
|
public static MenuItem AddItem(this ContextMenu menu, string caption, Bitmap? image, Action? click, bool enabled = true, int index = -1)
|
|
|
=> DoAddMenuItem(menu, caption, image, click, enabled, index);
|
|
|
public static MenuItem AddItem(this MenuItem menu, string caption, Bitmap? image, Action? click, bool enabled = true, int index = -1)
|