public void OnTweetSound() { form.InvokeAsyncSafe(() => { form.OnTweetNotification(); form.OnTweetSound(); }); }
public override bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) { if (base.OnContextMenuCommand(browserControl, browser, frame, parameters, commandId, eventFlags)) { return(true); } switch (commandId) { case CefMenuCommand.Reload: form.InvokeAsyncSafe(form.ReloadToTweetDeck); return(true); case MenuSettings: form.InvokeAsyncSafe(form.OpenSettings); return(true); case MenuAbout: form.InvokeAsyncSafe(form.OpenAbout); return(true); case MenuPlugins: form.InvokeAsyncSafe(form.OpenPlugins); return(true); case MenuMute: form.InvokeAsyncSafe(ToggleMuteNotifications); return(true); default: return(false); } }
public static IResourceHandler CreateFileHandler(string path) { string mimeType; switch (Path.GetExtension(path)) { case ".weba": case ".webm": mimeType = "audio/webm"; break; case ".wav": mimeType = "audio/wav"; break; case ".ogg": mimeType = "audio/ogg"; break; case ".mp3": mimeType = "audio/mp3"; break; case ".flac": mimeType = "audio/flac"; break; case ".opus": mimeType = "audio/ogg; codecs=opus"; break; default: mimeType = null; break; } try{ return(ResourceHandler.FromFilePath(path, mimeType)); }catch { FormBrowser browser = FormManager.TryFind <FormBrowser>(); browser?.InvokeAsyncSafe(() => { using (FormMessage form = new FormMessage("Sound Notification Error", "Could not find custom notification sound file:\n" + path, MessageBoxIcon.Error)){ form.AddButton(FormMessage.Ignore, ControlType.Cancel | ControlType.Focused); Button btnViewOptions = form.AddButton("View Options"); btnViewOptions.Width += 16; btnViewOptions.Location = new Point(btnViewOptions.Location.X - 16, btnViewOptions.Location.Y); if (form.ShowDialog() == DialogResult.OK && form.ClickedButton == btnViewOptions) { browser.OpenSettings(typeof(TabSettingsSounds)); } } }); return(null); } }
public override bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) { if (base.OnContextMenuCommand(browserControl, browser, frame, parameters, commandId, eventFlags)) { return(true); } switch ((int)commandId) { case (int)CefMenuCommand.Reload: form.InvokeAsyncSafe(form.ReloadToTweetDeck); return(true); case MenuSettings: form.InvokeAsyncSafe(form.OpenSettings); return(true); case MenuAbout: form.InvokeAsyncSafe(form.OpenAbout); return(true); case MenuPlugins: form.InvokeAsyncSafe(form.OpenPlugins); return(true); case MenuMute: form.InvokeAsyncSafe(ToggleMuteNotifications); return(true); case MenuOpenTweetUrl: BrowserUtils.OpenExternalBrowser(lastHighlightedTweet); return(true); case MenuCopyTweetUrl: SetClipboardText(lastHighlightedTweet); return(true); case MenuScreenshotTweet: form.InvokeAsyncSafe(form.TriggerTweetScreenshot); return(true); case MenuOpenQuotedTweetUrl: BrowserUtils.OpenExternalBrowser(lastHighlightedQuotedTweet); return(true); case MenuCopyQuotedTweetUrl: SetClipboardText(lastHighlightedQuotedTweet); return(true); } return(false); }
private void timer_Elapsed(object sender, ElapsedEventArgs e) { if (owner == null || browser == null) { return; } if (needsCleanup) { if (!owner.ContainsFocus) { using (IFrame frame = browser.MainFrame){ frame.EvaluateScriptAsync(script).ContinueWith(task => { JavascriptResponse response = task.Result; if (response.Success && (response.Result as bool? ?? false)) { SetNeedsCleanup(false); owner.InvokeAsyncSafe(() => owner.TriggerAnalyticsEvent(Analytics.AnalyticsFile.Event.GCReload)); } }); } } } else { try{ using (Process process = BrowserProcesses.FindProcess(browser)){ if (process?.PrivateMemorySize64 > threshold) { SetNeedsCleanup(true); } } }catch { // ignore I guess? } } }
public override void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) { bool isSelecting = parameters.TypeFlags.HasFlag(ContextMenuType.Selection); bool isEditing = parameters.TypeFlags.HasFlag(ContextMenuType.Editable); model.Remove(CefMenuCommand.Back); model.Remove(CefMenuCommand.Forward); model.Remove(CefMenuCommand.Print); model.Remove(CefMenuCommand.ViewSource); RemoveSeparatorIfLast(model); if (isSelecting) { if (isEditing) { model.AddSeparator(); model.AddItem(MenuWriteApplyROT13, "Apply ROT13"); } model.AddSeparator(); } base.OnBeforeContextMenu(browserControl, browser, frame, parameters, model); if (isSelecting && !isEditing && TwitterUrls.IsTweetDeck(frame.Url)) { InsertSelectionSearchItem(model, MenuSearchInColumn, "Search in a column"); } if (Context.Types.HasFlag(ContextInfo.ContextType.Chirp) && !isSelecting && !isEditing) { model.AddItem(MenuOpenTweetUrl, "Open tweet in browser"); model.AddItem(MenuCopyTweetUrl, "Copy tweet address"); model.AddItem(MenuScreenshotTweet, "Screenshot tweet to clipboard"); if (!string.IsNullOrEmpty(Context.Chirp.QuoteUrl)) { model.AddSeparator(); model.AddItem(MenuOpenQuotedTweetUrl, "Open quoted tweet in browser"); model.AddItem(MenuCopyQuotedTweetUrl, "Copy quoted tweet address"); } model.AddSeparator(); } if (!isSelecting && !isEditing) { AddSeparator(model); IMenuModel globalMenu = model.Count == 0 ? model : model.AddSubMenu(MenuGlobal, Program.BrandName); globalMenu.AddItem(CefMenuCommand.Reload, TitleReloadBrowser); globalMenu.AddCheckItem(MenuMute, TitleMuteNotifications); globalMenu.SetChecked(MenuMute, Config.MuteNotifications); globalMenu.AddSeparator(); globalMenu.AddItem(MenuSettings, TitleSettings); globalMenu.AddItem(MenuPlugins, TitlePlugins); globalMenu.AddItem(MenuAbout, TitleAboutProgram); AddDebugMenuItems(globalMenu); } RemoveSeparatorIfLast(model); form.InvokeAsyncSafe(form.AnalyticsFile.BrowserContextMenus.Trigger); }
public void LoadFontSizeClass(string fsClass) { form.InvokeAsyncSafe(() => { TweetNotification.SetFontSizeClass(fsClass); }); }
public void OnIntroductionClosed(bool showGuide, bool allowDataCollection) { form.InvokeAsyncSafe(() => { form.OnIntroductionClosed(showGuide, allowDataCollection); }); }
public override void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) { model.Remove(CefMenuCommand.Back); model.Remove(CefMenuCommand.Forward); model.Remove(CefMenuCommand.Print); model.Remove(CefMenuCommand.ViewSource); RemoveSeparatorIfLast(model); if (parameters.TypeFlags.HasFlag(ContextMenuType.Selection)) { if (parameters.TypeFlags.HasFlag(ContextMenuType.Editable)) { model.AddSeparator(); model.AddItem(MenuInputApplyROT13, "Apply ROT13"); } model.AddSeparator(); } base.OnBeforeContextMenu(browserControl, browser, frame, parameters, model); lastHighlightedTweetUrl = TweetDeckBridge.LastHighlightedTweetUrl; lastHighlightedQuoteUrl = TweetDeckBridge.LastHighlightedQuoteUrl; if (!TwitterUtils.IsTweetDeckWebsite(frame) || browser.IsLoading) { lastHighlightedTweetUrl = string.Empty; lastHighlightedQuoteUrl = string.Empty; } if (!string.IsNullOrEmpty(lastHighlightedTweetUrl) && (parameters.TypeFlags & (ContextMenuType.Editable | ContextMenuType.Selection)) == 0) { model.AddItem(MenuOpenTweetUrl, "Open tweet in browser"); model.AddItem(MenuCopyTweetUrl, "Copy tweet address"); model.AddItem(MenuScreenshotTweet, "Screenshot tweet to clipboard"); if (!string.IsNullOrEmpty(lastHighlightedQuoteUrl)) { model.AddSeparator(); model.AddItem(MenuOpenQuotedTweetUrl, "Open quoted tweet in browser"); model.AddItem(MenuCopyQuotedTweetUrl, "Copy quoted tweet address"); } model.AddSeparator(); } if ((parameters.TypeFlags & (ContextMenuType.Editable | ContextMenuType.Selection)) == 0) { AddSeparator(model); IMenuModel globalMenu = model.Count == 0 ? model : model.AddSubMenu(MenuGlobal, Program.BrandName); globalMenu.AddItem(CefMenuCommand.Reload, TitleReloadBrowser); globalMenu.AddCheckItem(MenuMute, TitleMuteNotifications); globalMenu.SetChecked(MenuMute, Program.UserConfig.MuteNotifications); globalMenu.AddSeparator(); globalMenu.AddItem(MenuSettings, TitleSettings); globalMenu.AddItem(MenuPlugins, TitlePlugins); globalMenu.AddItem(MenuAbout, TitleAboutProgram); if (HasDevTools) { globalMenu.AddSeparator(); AddDebugMenuItems(globalMenu); } } RemoveSeparatorIfLast(model); form.InvokeAsyncSafe(() => form.TriggerAnalyticsEvent(AnalyticsFile.Event.BrowserContextMenu)); }