Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 protected virtual void OnUnloaded(ToolWindowConfiguration config, ToolWindow window)
 {
     if (this.Unloaded == null)
     {
         return;
     }
     this.Unloaded(this, new ToolWindowConfigurationEventArgs(config, window));
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
 public ToolWindowConfigurationEventArgs(ToolWindowConfiguration configuration, ToolWindow window)
 {
     this.Configuration = configuration;
     this.Window        = window;
 }