105 lines
3.4 KiB
C#
105 lines
3.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
using VDash.Overlay.Config;
|
|
using VDash.WindowSelectors;
|
|
|
|
namespace VDash.UI
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for CreateWindowOverlay.xaml
|
|
/// </summary>
|
|
public partial class WindowOverlayEditor : UserControl,IOverlayEditor
|
|
{
|
|
public WindowOverlayConfig OverlayConfig { get; set; } = new WindowOverlayConfig();
|
|
|
|
public SelectorWrapper[] Selectors { get; private set; } =
|
|
{
|
|
new SelectorWrapper("By Process Name", typeof(FromProcessName), typeof(ProcessSelectorEditor)),
|
|
new SelectorWrapper("By Window Title", typeof(FromWindowTitle), typeof(WindowSelectorEditor))
|
|
};
|
|
|
|
|
|
|
|
public IOverlayConfig Config { get { return OverlayConfig; } }
|
|
|
|
|
|
public WindowOverlayEditor()
|
|
{
|
|
InitializeComponent();
|
|
DataContext = OverlayConfig;
|
|
|
|
cbSelector.ItemsSource = Selectors;
|
|
SetupDropDown();
|
|
}
|
|
|
|
public WindowOverlayEditor(ref WindowOverlayConfig config)
|
|
{
|
|
InitializeComponent();
|
|
OverlayConfig = config;
|
|
DataContext = OverlayConfig;
|
|
cbSelector.ItemsSource = Selectors;
|
|
SetupDropDown();
|
|
}
|
|
|
|
private void SetupDropDown()
|
|
{
|
|
if (OverlayConfig.Selector != null)
|
|
{
|
|
SelectorWrapper wrapper = Selectors.Single(x => x.SelectorType == OverlayConfig.Selector.GetType());
|
|
IWindowSelector selector = OverlayConfig.Selector;
|
|
UserControl editor = (UserControl)Activator.CreateInstance(wrapper.EditorType, new object[] { selector });
|
|
wrapper.Editor = editor;
|
|
wrapper.Selector = selector;
|
|
cbSelector.SelectedItem = wrapper;
|
|
}
|
|
}
|
|
|
|
public class SelectorWrapper
|
|
{
|
|
public string FriendlyName { get; set; }
|
|
//public IWindowSelector Selector{ get; private set; }
|
|
public Type SelectorType { get; set; }
|
|
//public UserControl Control { get; set; }
|
|
public Type EditorType { get; set; }
|
|
|
|
public IWindowSelector Selector { get; set; }
|
|
|
|
public UserControl Editor { get; set; } = null;
|
|
|
|
public SelectorWrapper(string friendlyName, Type selectorType, Type editorType)
|
|
{
|
|
FriendlyName = friendlyName;
|
|
SelectorType = selectorType;
|
|
EditorType = editorType;
|
|
|
|
Selector = (IWindowSelector)Activator.CreateInstance(selectorType);
|
|
Editor = (UserControl)Activator.CreateInstance(EditorType, new object[] { Selector });
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return FriendlyName;
|
|
}
|
|
}
|
|
|
|
private void cbSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
var wrapper = (SelectorWrapper)cbSelector.SelectedItem;
|
|
OverlayConfig.Selector = wrapper.Selector;
|
|
bdrSelector.Child = wrapper.Editor;
|
|
}
|
|
}
|
|
}
|