protected virtual async Task <ToolWindow> Load(ToolWindowConfiguration config) { try { if (!ScreenHelper.WindowBoundsVisible(new Rect(config.Left, config.Top, config.Width, config.Height))) { //Prevent window from opening off screen. config.Left = 0; config.Top = 0; } var window = default(ToolWindow); await global::FoxTunes.Windows.Invoke(() => { window = new ToolWindow(); window.DataContext = this.Core; window.Configuration = config; window.ShowActivated = false; //Don't set owner as it causes an "always on top" type of behaviour. //We have an option for that. //window.Owner = global::FoxTunes.Windows.ActiveWindow; window.Closed += this.OnClosed; }).ConfigureAwait(false); this.Windows[config] = window; this.OnLoaded(config, window); return(window); } catch (Exception e) { Logger.Write(this, LogLevel.Warn, "Failed to load config: {0}", e.Message); return(null); } }
protected virtual void OnUnloaded(ToolWindowConfiguration config, ToolWindow window) { if (this.Unloaded == null) { return; } this.Unloaded(this, new ToolWindowConfigurationEventArgs(config, window)); }
protected virtual void Unload(ToolWindowConfiguration config, ToolWindow window) { UIDisposer.Dispose(window); this.Windows.TryGetValue(config, out window); if (!this.Windows.Remove(config)) { return; } this.OnUnloaded(config, window); }
public async Task <ToolWindowConfiguration> New() { var configs = this.Windows.Keys; var config = new ToolWindowConfiguration() { Width = 400, Height = 250, ShowWithMainWindow = true, ShowWithMiniWindow = false }; var window = await this.Load(config).ConfigureAwait(false); if (window == null) { return(null); } await this.Show(config, window).ConfigureAwait(false); return(config); }
protected virtual Task Show(ToolWindowConfiguration config, ToolWindow window) { var show = false; var main = global::FoxTunes.Windows.IsMainWindowCreated && global::FoxTunes.Windows.MainWindow.IsVisible; var mini = global::FoxTunes.Windows.IsMiniWindowCreated && global::FoxTunes.Windows.MiniWindow.IsVisible; if (config.ShowWithMainWindow && main) { show = true; } else if (config.ShowWithMiniWindow && mini) { show = true; } if (show) { return(global::FoxTunes.Windows.Invoke(window.Show)); } else { return(global::FoxTunes.Windows.Invoke(window.Hide)); } }
public ToolWindowConfigurationEventArgs(ToolWindowConfiguration configuration, ToolWindow window) { this.Configuration = configuration; this.Window = window; }