public IOverlay CreateOverlayInstance(IOverlayConfig config) { this.Config = config; this.Initialize(); this.Overlay = new KagamiOverlay(this.Config as KagamiOverlayConfig); return(this.Overlay); }
public IOverlay GetOverlay(string name, bool createIfNotExists = false) { IOverlay result = null; try { _context.Send(_ => { GMapOverlay overlay = _mapControl.Overlays.FirstOrDefault(i => i.Id == name); if (overlay == null) { if (createIfNotExists) { AddOverlay(name); result = GetOverlay(name); return; } throw new ArgumentException($"Overlay {name} not found."); } result = new OverlayAdapter(overlay); }, null); } catch (Exception ex) { } return(result); }
public void Attach(IntPtr windowHandle) { if (windowHandle.Equals(IntPtr.Zero)) { //_logger.Error("Make sure BDO isn't initially minimized and this application is running as admin."); //Debug.WriteLine("could not pinvoke!"); MessageBox.Show("Make sure BDO isn't initially minimized and this application is running as admin.", "Could not attach to BDO", MessageBoxButton.OK, MessageBoxImage.Error); MyApp.exit(); } else { WindowHandle = windowHandle; var r = GetWindowArea(); Size = new Size { Width = r.Width, Height = r.Height }; Config = ScreenConfig.LoadFromFile($"{Size.Width}x{Size.Height}"); _overlay = new Overlay(_notifier, _container); _windowEventHook = new WindowObserver(windowHandle, ObservedWindowEvent); User32.SetForegroundWindow(windowHandle); _overlay.Update(r); _overlay.Topmost = true; } }
/// <summary> /// Zオーダー修正キューに登録する /// </summary> /// <param name="overlay"></param> public static void SubscribeZOrderCorrector( this IOverlay overlay) { lock (ZOrderCorrector) { if (!ZOrderCorrector.IsEnabled) { ZOrderCorrector.Tick -= ZOrderCorrectorOnTick; ZOrderCorrector.Tick += ZOrderCorrectorOnTick; } if (overlay is Window window) { window.Closing += (x, y) => { if (x is IOverlay o) { o.UnsubscribeZOrderCorrector(); } }; } if (!ToCorrectOverlays.Contains(overlay)) { ToCorrectOverlays.Add(overlay); } if (ToCorrectOverlays.Any() && !ZOrderCorrector.IsEnabled) { ZOrderCorrector.Start(); } } }
public void Disconnect(IOverlay overlay) { if (_overlay == overlay) { _overlay = null; } }
/// <summary> /// FFXIVより前面にいるか? /// </summary> /// <param name="overlay"></param> /// <returns></returns> private static bool IsOverlaysGameWindow( this IOverlay overlay) { var xivHandle = GetGameWindowHandle(); var handle = overlay.GetHandle(); if (xivHandle == IntPtr.Zero) { return(false); } while (handle != IntPtr.Zero) { // Overlayウィンドウよりも前面側にFF14のウィンドウがあった if (handle == xivHandle) { return(false); } handle = NativeMethods.GetWindow(handle, NativeMethods.GW_HWNDPREV); } // 前面側にOverlayが存在する、もしくはFF14が起動していない return(true); }
public void Bind(ObjectListView olv, IOverlay overlay) { if (this.objectListView != null) { this.Unbind(); } this.objectListView = olv; this.Overlay = overlay; this.objectListView.LocationChanged += new EventHandler(this.objectListView_LocationChanged); this.objectListView.SizeChanged += new EventHandler(this.objectListView_SizeChanged); this.objectListView.VisibleChanged += new EventHandler(this.objectListView_VisibleChanged); this.objectListView.ParentChanged += new EventHandler(this.objectListView_ParentChanged); for (Control control = this.objectListView.Parent; control != null; control = control.Parent) { control.ParentChanged += new EventHandler(this.objectListView_ParentChanged); TabControl control2 = control as TabControl; if (control2 != null) { control2.Selected += new TabControlEventHandler(this.tabControl_Selected); } } base.Owner = this.objectListView.TopLevelControl as Form; if (base.Owner != null) { base.Owner.LocationChanged += new EventHandler(this.Owner_LocationChanged); base.Owner.SizeChanged += new EventHandler(this.Owner_SizeChanged); base.Owner.ResizeBegin += new EventHandler(this.Owner_ResizeBegin); base.Owner.ResizeEnd += new EventHandler(this.Owner_ResizeEnd); if (base.Owner.TopMost) { BrightIdeasSoftware.NativeMethods.MakeTopMost(this); } } this.UpdateTransparency(); }
/// <summary> /// オーバーレイを登録します。 /// </summary> /// <param name="overlay"></param> internal void RegisterOverlay(IOverlay overlay) { overlay.OnLog += (o, e) => Logger.Log(e.Level, e.Message); overlay.PluginConfig = (IPluginConfig)Config; overlay.Start(); this.Overlays.Add(overlay); }
/// <summary> /// 登録されているオーバーレイを削除します。 /// </summary> /// <param name="overlay">削除するオーバーレイ。</param> internal void RemoveOverlay(IOverlay overlay) { this.Overlays.Remove(overlay); overlay.Dispose(); OverlaysChanged?.Invoke(this, null); }
/// <summary> /// Replace the in-game overlay with the one provided. /// /// Note: this is not designed for fast updates (i.e. only a couple of times per second) /// </summary> /// <param name="overlay"></param> public void DrawOverlayInGame(IOverlay overlay) { SafeInvokeDrawOverlay(new DrawOverlayEventArgs() { Overlay = overlay }); }
private void AddConfigTab(IOverlay overlay) { var label = overlay.GetType().Name; if (overlayNames.ContainsKey(label)) { label = overlayNames[label]; } var tabPage = new ConfigTabPage { Name = overlay.Name, Text = label, IsOverlay = true, }; var control = overlay.CreateConfigControl(); if (control != null) { control.Dock = DockStyle.Fill; control.BackColor = SystemColors.ControlLightLight; tabPage.Controls.Add(control); this.tabControl.TabPages.Add(tabPage); ((GeneralConfigTab)_generalTab.Controls[0]).SetReadmeVisible(false); } }
private void takeScreenShotBtn_Click(object sender, EventArgs e) { if (tabControl.SelectedIndex < 0) { return; } var selTab = tabControl.SelectedIndex; if (pluginMain.Overlays.Count < 1) { return; } IOverlay selectedOverlay = pluginMain.Overlays[selTab]; try { selectedOverlay.TakeScreenShot( new ScreenshotConfig { SavePath = config.ScreenShotSavePath, AutoClipping = config.ScreenShotAutoClipping, BackgroundImagePath = config.ScreenShotBackgroundPath, BackgroundMode = (ScreenshotBackgroundMode)config.ScreenShotBackgroundMode, Margin = config.ScreenShotMargin, }); } catch (Exception ex) { MessageBox.Show(ex.GetBaseException().ToString()); } }
/// <summary> /// Zオーダー修正キューに登録する /// </summary> /// <param name="overlay"></param> public static void SubscribeZOrderCorrector( this IOverlay overlay) { lock (ZOrderLocker) { if (overlay is Window window) { window.Closing += (x, y) => { if (x is IOverlay o) { o.UnsubscribeZOrderCorrector(); } }; } if (!ToCorrectOverlays.Contains(overlay)) { ToCorrectOverlays.Add(overlay); } isCorrecting = 0; LazyZOrderCorrector.Value.Start(); } }
/// <summary> /// オーバーレイとして隠す /// </summary> /// <param name="overlay">overlay</param> public static void HideOverlay( this IOverlay overlay) { if (overlay is Window w) { w.Opacity = 0; } }
/// <summary> /// Somewhere the parent of the bound OLV has changed. Update /// our events. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void objectListView_ParentChanged(object sender, EventArgs e) { ObjectListView olv = this.objectListView; IOverlay overlay = this.Overlay; this.Unbind(); this.Bind(olv, overlay); }
/// <summary> /// オーバーレイを登録します。 /// </summary> /// <param name="overlay"></param> internal void RegisterOverlay(IOverlay overlay) { overlay.OnLog += (o, e) => _logger.Log(e.Level, e.Message); overlay.Start(); this.Overlays.Add(overlay); OverlaysChanged?.Invoke(this, null); }
/// <summary> /// Somewhere the parent of the bound OLV has changed. Update /// our events. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void objectListView_ParentChanged(object sender, EventArgs e) { ObjectListView olv = objectListView; IOverlay overlay = Overlay; Unbind(); Bind(olv, overlay); }
public OverlayTile(IOverlay overlay, TileBase backgroundTile) { overlays = new List <IOverlay>() { overlay }; this.backgroundTile = backgroundTile; }
/// <summary> /// Draws an <see cref="IOverlay"/> over an <see cref="Image"/>. /// </summary> public static void Draw(this IOverlay overlay, Image img, Point Offset = default(Point)) { if (img != null) { using (var g = Graphics.FromImage(img)) overlay.Draw(g, Offset); } }
private static RequestManager InitRequestManager(SessionManager sessionManager, IOverlay overlay) { var context = new DriverContext(); var manager = new RequestManager(sessionManager); var utils = new Utils(); var winUserWrap = new WinUserWrap(); var keyboard = new Keyboard(new KeyboardWrap(), new KeyInteropWrap(), winUserWrap); IMouse mouse = new Mouse(winUserWrap); var wireKeyboard = new WireKeyboard(keyboard); // TODO circular dependency, bad smell? IUIAutomation uiAutomation = new UIAutomation(); IElementFactory elementFactory = new ElementFactory(); ((UIAutomation)uiAutomation).SetElementFactory(elementFactory); ((ElementFactory)elementFactory).SetUIAutomation(uiAutomation); IElementSearcher elementSearcher = new ElementSearcher(uiAutomation, elementFactory); var uacHandler = new UACPromptHandler(uiAutomation, keyboard); var windowFactory = new WindowFactory(uiAutomation, keyboard, winUserWrap); var windowUtils = new WindowUtils(uiAutomation, windowFactory); manager.AddHandler(new ActiveElementHandler(uiAutomation, overlay)); manager.AddHandler(new ButtonUpHandler(mouse)); manager.AddHandler(new ButtonDownHandler(mouse)); manager.AddHandler(new ClearTextHandler(elementFactory)); manager.AddHandler(new ClickElementHandler(mouse, overlay, elementFactory)); manager.AddHandler(new ClickHandler(mouse)); manager.AddHandler(new CloseWindowHandler(windowUtils)); manager.AddHandler(new DeleteSessionHandler(sessionManager)); manager.AddHandler(new DoubleClickHandler(mouse)); manager.AddHandler(new FindElementHandler(uiAutomation, overlay, elementFactory, elementSearcher)); manager.AddHandler(new FindElementsHandler(uiAutomation, overlay, elementFactory, elementSearcher)); manager.AddHandler(new GetElementAttributeHandler(elementFactory)); manager.AddHandler(new GetElementLocationHandler(elementFactory)); manager.AddHandler(new GetElementLocationInViewHandler(elementFactory)); manager.AddHandler(new GetElementSizeHandler(elementFactory)); manager.AddHandler(new GetElementTagNameHandler()); manager.AddHandler(new GetElementTextHandler()); manager.AddHandler(new GetCurrentWindowHandler(uiAutomation)); manager.AddHandler(new GetSourceHandler(uiAutomation)); manager.AddHandler(new GetTitleHandler(uiAutomation)); manager.AddHandler(new GetWindowLocationHandler(windowFactory, windowUtils)); manager.AddHandler(new GetWindowsHandler(windowUtils)); manager.AddHandler(new GetWindowSizeHandler(windowFactory, windowUtils)); manager.AddHandler(new ImplicitWaitHandler()); manager.AddHandler(new IsElementDisplayedHandler()); manager.AddHandler(new IsElementEnabledHandler()); manager.AddHandler(new IsElementSelectedHandler()); manager.AddHandler(new MoveToHandler(mouse, overlay, elementFactory)); manager.AddHandler(new NewSessionHandler(context, sessionManager, uacHandler, utils)); manager.AddHandler(new SameElementHandler()); manager.AddHandler(new ScreenshotHandler()); manager.AddHandler(new SendKeysHandler(wireKeyboard)); manager.AddHandler(new SetElementValueHandler(wireKeyboard, elementFactory)); manager.AddHandler(new SwitchToWindowHandler(uiAutomation, windowFactory, windowUtils)); return manager; }
// Update is called once per frame void Update() { if (VersionManager.Instance().GetMergeWorker() != null) { selectClosestPreview(); if (currentlySelectedObject != null && Input.GetKeyDown(KeyCode.P)) { VersionManager.Instance().GetMergeWorker().PickObject(currentlySelectedObject); } } else { selectVersionable(); if (currentlySelectedObject != null && Input.GetKeyDown(KeyCode.Q)) { VersionController versionController = currentlySelectedObject.GetComponentInParent <VersionController>(); if (VersionManager.Instance().IsObjectStaged(versionController)) { VersionManager.Instance().Unstage(versionController); } else { VersionManager.Instance().Add(versionController); } Debug.Log(currentlySelectedObject == gameObject ? "Adding player" : "Adding closest object"); Debug.Log(currentlySelectedObject); } else if (Input.GetKeyDown(KeyCode.R)) { VersionManager.Instance().ResetToHead(); } else if (Input.GetKeyDown(KeyCode.J)) { if (!VersionManager.Instance().HasBranch("demo")) { VersionManager.Instance().CreateBranch("demo"); } VersionManager.Instance().Checkout("demo"); } else if (Input.GetKeyDown(KeyCode.K)) { VersionManager.Instance().Checkout("master"); } } if (Input.GetKeyDown(KeyCode.O)) { if (overlay != null) { overlay.Destroy(); overlay = null; } else { overlay = new Overlay(VersionManager.Instance().GetHead(), Color.red); } } }
public FindElementHandler( IUIAutomation uiAutomation, IOverlay overlay, IElementFactory elementFactory, IElementSearcher searcher) { this.uiAutomation = uiAutomation; this.overlay = overlay; this.elementFactory = elementFactory; this.searcher = searcher; }
private IOverlay CreateAndRegisterOverlay(IOverlay overlay) { _config.Overlays.Add(overlay.Config); _pluginMain.RegisterOverlay(overlay); AddConfigTab(overlay); return(overlay); }
/// <summary> /// Windowを最前面に持ってくる /// </summary> /// <param name="overlay"></param> public static void EnsureTopMost( this IOverlay overlay) { NativeMethods.SetWindowPos( overlay.GetHandle(), NativeMethods.HWND_TOPMOST, 0, 0, 0, 0, NativeMethods.SWP_NOSIZE | NativeMethods.SWP_NOMOVE | NativeMethods.SWP_NOACTIVATE); }
/// <summary> /// オーバーレイとして隠す /// </summary> /// <param name="overlay">overlay</param> public static void HideOverlay( this IOverlay overlay) { if (overlay is Window w) { w.Opacity = 0; w.Topmost = false; } }
private void cbPreset_SelectedIndexChanged(object sender, EventArgs e) { var preset = (IOverlayPreset)cbPreset.SelectedItem; if (preset.Url == "special:custom") { lblType.Visible = true; cbType.Visible = true; lblTypeDesc.Visible = true; lblPresetDescription.Visible = false; if (preview != null) { preview.Visible = false; } } else { lblType.Visible = false; cbType.Visible = false; lblTypeDesc.Visible = false; lblPresetDescription.Visible = true; if (preview != null) { preview.Dispose(); } switch (preset.Type) { case "MiniParse": #if DEBUG var resourcesPath = "file:///" + PluginMain.PluginDirectory.Replace('\\', '/') + "/libs/resources"; #else var resourcesPath = "file:///" + PluginMain.PluginDirectory.Replace('\\', '/') + "/resources"; #endif var config = new Overlays.MiniParseOverlayConfig(Resources.OverlayPreviewName) { ActwsCompatibility = preset.Supports.Count == 1 && preset.Supports.Contains("actws"), Size = new Size(preset.Size[0], preset.Size[1]), IsLocked = preset.Locked, }; var overlay = new Overlays.MiniParseOverlay(config, config.Name); overlay.Preview = true; overlay.Navigate(preset.Url.Replace("%%", resourcesPath)); preview = overlay; break; default: Registry.Resolve <ILogger>().Log(LogLevel.Error, string.Format(Resources.PresetUsesUnsupportedType, preset.Name, preset.Type)); break; } } }
private void OnProcessExited(object sender, EventArgs e) { Process process = sender as Process; IOverlay overlay = this.overlays.FirstOrDefault(o => o.Process.Id == process.Id); if (process != null && overlay != null) { dispatcher.Invoke((ThreadStart)(() => this.DestroyOverlay(overlay))); } }
/// <summary> /// オーバーレイとして表示させる /// </summary> /// <param name="overlay">overlay</param> public static void ShowOverlay( this IOverlay overlay, double opacity = 1.0d) { if (overlay is Window w) { w.Opacity = opacity; w.Topmost = true; } }
/// <summary> /// Creates a new instance of <see cref="MouseKeyHook"/>. /// </summary> public MouseKeyOverlay(IMouseKeyHook Hook, MouseClickSettings MouseClickSettings, KeymapViewModel Keymap, string FileName, Func <TimeSpan> Elapsed) { _keymap = Keymap; _hook = Hook; _mouseClickOverlay = new MouseClickOverlay(_hook, MouseClickSettings); _scrollOverlay = new ScrollOverlay(_hook, MouseClickSettings); }
private void Setup() { //IBaseFilter ibf = new VideoRendererDefault() as IBaseFilter; //IBaseFilter ibf = new VideoMixingRenderer() as IBaseFilter; //IBaseFilter ibf = new VideoMixingRenderer9() as IBaseFilter; IBaseFilter ibf = new OverlayMixer() as IBaseFilter; IPin pPin; pPin = DsFindPin.ByDirection(ibf, PinDirection.Input, 0); m_io = pPin as IOverlay; }
private void Initialize(IOverlay overlay) { if (overlay == null) { return; } if (Math.Abs(ActualWidth) < Double.Epsilon || Math.Abs(ActualHeight) < Double.Epsilon) { return; } foreach (UIElement child in this.Children) { child.MouseEnter -= PathOnMouseEnter; child.PreviewMouseDown -= ChildOnPreviewMouseDown; } this.Children.Clear(); var puzzle = overlay as Puzzle; var piceSize = new Point(100, 100); var amountX = ActualWidth / piceSize.X; var amountY = ActualHeight / piceSize.Y; for (double y = 0; y < amountY * piceSize.Y; y += piceSize.Y) { for (double x = 0; x < amountX * piceSize.X; x += piceSize.X) { var position = PiecePosition.None; if (Math.Abs(y) < Double.Epsilon) { position = position | PiecePosition.Top; } if (Math.Abs(x) < Double.Epsilon) { position = position | PiecePosition.Left; } var path = puzzle.GetPath(position); path.MouseEnter += PathOnMouseEnter; path.PreviewMouseDown += ChildOnPreviewMouseDown; path.RenderTransform = new TransformGroup() { Children = new TransformCollection() { new TranslateTransform(x, y), new ScaleTransform(1, 1) } }; this.Children.Add(path); } } }
private void AddConfigTab(IOverlay overlay) { var tabPage = new TabPage { Name = overlay.Name, Text = overlay.Name }; var addon = pluginMain.Addons.FirstOrDefault(x => x.OverlayType == overlay.GetType()); if (addon != null) { var control = addon.CreateOverlayConfigControlInstance(overlay); if (control != null) { control.Dock = DockStyle.Fill; tabPage.Controls.Add(control); this.tabControl.TabPages.Add(tabPage); } } }
/// <summary> /// Attach this form to the given ObjectListView /// </summary> public void Bind(ObjectListView olv, IOverlay overlay) { if (this.objectListView != null) this.Unbind(); this.objectListView = olv; this.Overlay = overlay; this.mdiClient = null; this.mdiOwner = null; // NOTE: If you listen to any events here, you *must* stop listening in Unbind() this.objectListView.Disposed += new EventHandler(objectListView_Disposed); this.objectListView.LocationChanged += new EventHandler(objectListView_LocationChanged); this.objectListView.SizeChanged += new EventHandler(objectListView_SizeChanged); this.objectListView.VisibleChanged += new EventHandler(objectListView_VisibleChanged); this.objectListView.ParentChanged += new EventHandler(objectListView_ParentChanged); Control parent = this.objectListView.Parent; while (parent != null) { parent.ParentChanged += new EventHandler(objectListView_ParentChanged); TabControl tabControl = parent as TabControl; if (tabControl != null) { tabControl.Selected += new TabControlEventHandler(tabControl_Selected); } parent = parent.Parent; } this.Owner = this.objectListView.FindForm(); this.myOwner = this.Owner; if (this.Owner != null) { this.Owner.LocationChanged += new EventHandler(Owner_LocationChanged); this.Owner.SizeChanged += new EventHandler(Owner_SizeChanged); this.Owner.ResizeBegin += new EventHandler(Owner_ResizeBegin); this.Owner.ResizeEnd += new EventHandler(Owner_ResizeEnd); if (this.Owner.TopMost) { // We can't do this.TopMost = true; since that will activate the panel, // taking focus away from the owner of the listview NativeMethods.MakeTopMost(this); } // We need special code to handle MDI this.mdiOwner = this.Owner.MdiParent; if (this.mdiOwner != null) { this.mdiOwner.LocationChanged += new EventHandler(Owner_LocationChanged); this.mdiOwner.SizeChanged += new EventHandler(Owner_SizeChanged); this.mdiOwner.ResizeBegin += new EventHandler(Owner_ResizeBegin); this.mdiOwner.ResizeEnd += new EventHandler(Owner_ResizeEnd); // Find the MDIClient control, which houses all MDI children foreach (Control c in this.mdiOwner.Controls) { this.mdiClient = c as MdiClient; if (this.mdiClient != null) { break; } } if (this.mdiClient != null) { this.mdiClient.ClientSizeChanged += new EventHandler(myMdiClient_ClientSizeChanged); } } } this.UpdateTransparency(); }
public System.Windows.Forms.Control CreateOverlayConfigControlInstance(IOverlay overlay) { return new AddonExampleOverlayConfigPanel(); }
/// <summary> /// Remove the given overlay to those on this list /// </summary> /// <param name="overlay">The overlay</param> public virtual void RemoveOverlay(IOverlay overlay) { if (overlay == null) return; this.Overlays.Remove(overlay); GlassPanelForm glassPanel = this.FindGlassPanelForOverlay(overlay); if (glassPanel != null) { this.glassPanels.Remove(glassPanel); glassPanel.Unbind(); glassPanel.Dispose(); } }
public System.Windows.Forms.Control CreateOverlayConfigControlInstance(IOverlay overlay) { return new SpellTimerConfigPanel((SpellTimerOverlay)overlay); }
private static Color ApplyOverlay(IOverlay overlay, Color baseColor) { int newR = baseColor.R + Convert.ToInt32(overlay.R * overlay.Alpha); int newG = baseColor.G + Convert.ToInt32(overlay.G * overlay.Alpha); int newB = baseColor.B + Convert.ToInt32(overlay.B * overlay.Alpha); return new Color(newR, newG, newB); }
public System.Windows.Forms.Control CreateOverlayConfigControlInstance(IOverlay overlay) => new EnmityOverlayConfigPanel((EnmityOverlay)overlay);
/// <summary> /// Is the given overlay shown on this list? /// </summary> /// <param name="overlay">The overlay</param> public virtual bool HasOverlay(IOverlay overlay) { return this.Overlays.Contains(overlay); }
public ClickElementHandler(IMouse mouse, IOverlay overlay, IElementFactory elementFactory) { this.mouse = mouse; this.overlay = overlay; this.elementFactory = elementFactory; }
public ActiveElementHandler(IUIAutomation uiAutomation, IOverlay overlay) { this.uiAutomation = uiAutomation; this.overlay = overlay; }
public System.Windows.Forms.Control CreateOverlayConfigControlInstance(IOverlay overlay) { return new LabelOverlayConfigPanel((LabelOverlay)overlay); }
/// <summary> /// Add the given overlay to those on this list and make it appear /// </summary> /// <param name="overlay">The overlay</param> public virtual void AddOverlay(IOverlay overlay) { if (overlay == null) return; this.Overlays.Add(overlay); this.Invalidate(); }
public System.Windows.Forms.Control CreateOverlayConfigControlInstance(IOverlay overlay) { return new MiniParseConfigPanel((MiniParseOverlay)overlay); }
/// <summary> /// Refresh the display of just one overlays /// </summary> public virtual void RefreshOverlay(IOverlay overlay) { GlassPanelForm glassPanel = this.FindGlassPanelForOverlay(overlay); if (glassPanel != null) glassPanel.Invalidate(); }
private bool ReCreateOverlay(IOverlay overlay) { this.DestroyOverlay(overlay); if (!overlay.Process.HasExited) { this.CreateOverlay(overlay.Process); return true; } return false; }
private GlassPanelForm FindGlassPanelForOverlay(IOverlay overlay) { return this.glassPanels.Find(delegate(GlassPanelForm x) { return x.Overlay == overlay; }); }
private bool DestroyOverlay(IOverlay overlay) { if (this.overlays.Contains(overlay)) { overlay.Process.Exited -= this.OnProcessExited; overlay.PositionChanged -= this.OnOverlayRelativePositionChangedChanged; overlay.DisplayModeChanged -= this.OnOverlayDisplayModeChanged; this.log.Write(LogLevel.Trace, string.Format("Destroying overlay for process {0}.", overlay.Process.Id)); overlay.Close(); return this.overlays.Remove(overlay); } return false; }