using System; using System.Drawing; using System.Windows.Forms; using CefSharp; using CefSharp.WinForms; using TweetDuck.Core.Controls; using TweetDuck.Core.Handling; using TweetDuck.Core.Handling.General; using TweetDuck.Core.Utils; namespace TweetDuck.Core.Other{ sealed partial class FormGuide : Form{ private const string GuideUrl = "https://tweetduck.chylex.com/guide/v1/"; private readonly ChromiumWebBrowser browser; public FormGuide(){ InitializeComponent(); Text = Program.BrandName+" Guide"; FormBrowser owner = FormManager.TryFind<FormBrowser>(); if (owner != null){ Size = new Size(owner.Size.Width*3/4, owner.Size.Height*3/4); VisibleChanged += (sender, args) => this.MoveToCenter(owner); } this.browser = new ChromiumWebBrowser(GuideUrl){ MenuHandler = new ContextMenuGuide(), JsDialogHandler = new JavaScriptDialogHandler(), LifeSpanHandler = new LifeSpanHandler(), RequestHandler = new RequestHandlerBrowser() }; browser.LoadingStateChanged += browser_LoadingStateChanged; browser.FrameLoadStart += browser_FrameLoadStart; browser.BrowserSettings.BackgroundColor = (uint)BackColor.ToArgb(); browser.Dock = DockStyle.None; browser.Location = ControlExtensions.InvisibleLocation; Controls.Add(browser); Disposed += (sender, args) => { Program.UserConfig.ZoomLevelChanged -= Config_ZoomLevelChanged; browser.Dispose(); }; Program.UserConfig.ZoomLevelChanged += Config_ZoomLevelChanged; } private void browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e){ if (!e.IsLoading){ this.InvokeAsyncSafe(() => { browser.Location = Point.Empty; browser.Dock = DockStyle.Fill; }); browser.LoadingStateChanged -= browser_LoadingStateChanged; } } private void browser_FrameLoadStart(object sender, FrameLoadStartEventArgs e){ BrowserUtils.SetZoomLevel(browser.GetBrowser(), Program.UserConfig.ZoomLevel); } private void Config_ZoomLevelChanged(object sender, EventArgs e){ BrowserUtils.SetZoomLevel(browser.GetBrowser(), Program.UserConfig.ZoomLevel); } } }