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 Valve.VR; using VDash.Overlay; using VDash.Utilities; namespace VDash { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public static OverlayManager OverlayManager = new OverlayManager(); public MainWindow() { InitializeComponent(); //Connect to VR runtime... EVRInitError initError = EVRInitError.None; var ret = OpenVR.Init(ref initError, EVRApplicationType.VRApplication_Overlay); if (initError != EVRInitError.None) { throw new Exception($"Error connecting to VR: {initError.ToString()}"); } lvOverlays.ItemsSource = OverlayManager.Overlays; #region Debug //StartOverlayWindow("Discord"); //StartOverlayWindow("Microsoft Visual Studio"); //StartOverlayWindow("Notepad++"); //StartOverlayWindow("Putty"); //StartOverlayWindow("Paint"); //Overlay.WindowOverlay obsoverlay = new Overlay.WindowOverlay("obs", "obs", new WindowSelectors.FromProcessName("obs64"), false); //obsoverlay.Create(); //obsoverlay.DestroyOnNoWindowFound = true; //var bringWindow = new Overlay.Actions.BringWindowToFrontAction(true); //obsoverlay.OverlayShownActions.Add(bringWindow); //var displays = User32.GetDisplays(); //MonitorOverlay mo0 = new MonitorOverlay("left", "Left Monitor", displays[0]); //mo0.Create(); //MonitorOverlay mo1 = new MonitorOverlay("center", "Center Monitor", displays[1]); //mo1.Create(); //MonitorOverlay mo2= new MonitorOverlay("right", "Right Monitor", displays[2]); //mo2.Create(); #endregion } private void btnAdd_Click(object sender, RoutedEventArgs e) { Window w = new Window(); var uc = new UI.CreateNewOverlay(); uc.Created += (x, y) => { w.Close(); }; w.Content = uc; w.Width = 500; w.Height = 400; w.SizeToContent = System.Windows.SizeToContent.Height; w.Show(); } private void btnRemove_Click(object sender, RoutedEventArgs e) { if(lvOverlays.SelectedItem == null) { return; } IOverlay overlay = (IOverlay)lvOverlays.SelectedItem; overlay.Dispose(); OverlayManager.Overlays.Remove(overlay); } } }