private void AddonButtonClick(object sender, EventArgs e) { Logger.LogTrace("MainForm.AddonButtonClick called ..."); NavigationAddon addon = null; OPMAddonMenuItem button = sender as OPMAddonMenuItem; if (button != null) { addon = button.Tag as NavigationAddon; if (addon == null) { return; } if (!string.IsNullOrEmpty(_launchPath)) { addon.AddonPanel.Tag = _launchPath; _launchPath = string.Empty; } if (addon != null) { pnlNavContainer.SuspendLayout(); addon.AddonPanel.Dock = DockStyle.Fill; addon.AddonPanel.Visible = true; addon.AddonPanel.PanelTitle = button.Text.Replace("\r", "").Replace("\n", ""); addon.AddonPanel.NavigationAction -= new NavBaseCtl.NavigationActionEventHandler(OnNavigationAction); addon.AddonPanel.NavigationAction += new NavBaseCtl.NavigationActionEventHandler(OnNavigationAction); pnlNavContainer.Controls.Clear(); pnlNavContainer.Controls.Add(addon.AddonPanel); pnlNavContainer.ResumeLayout(); foreach (OPMToolStripMenuItem tsButton in msMain.Items) { if (tsButton is OPMAddonMenuItem) { if (button.Tag != tsButton.Tag) { NavigationAddon na = tsButton.Tag as NavigationAddon; if (na != null && na.AddonPanel != null) { na.AddonPanel.OnActiveStateChanged(false); } tsButton.Checked = false; } } } addon.AddonPanel.OnActiveStateChanged(true); ThemeManager.SetDoubleBuffer(addon.AddonPanel); //button.Image = null; button.Checked = true; //button.BackColor = Color.FromArgb(150, ThemeManager.GradientNormalColor2); AddonAppConfig.LastNavAddon = button.Name; SetTitle($"{Translator.TranslatedAppName} - {button.Text}"); } } Logger.LogTrace("MainForm.AddonButtonClick done."); }
/// <summary> /// Gets all the navigation addons and displays them in the /// navigation bar. /// </summary> private bool GetNavigationAddons() { Logger.LogTrace("MainForm.GetNavigationAddons called ..."); AddonsCore.Instance.PreviewEnded += new PreviewEndedEventHandler(Instance_PreviewEnded); if (AddonsCore.Instance.NavAddonsLoader == null || AddonsCore.Instance.NavAddonsLoader.Addons == null || AddonsCore.Instance.NavAddonsLoader.Addons.Count < 1) { return(false); } IDictionaryEnumerator enumerator = AddonsCore.Instance.NavAddonsLoader.Addons.GetEnumerator(); Translator.TranslateToolStrip(msMain, DesignMode); OPMAddonMenuItem catalogButton = null; OPMAddonMenuItem previousAddonButton = null; while (enumerator.MoveNext()) { NavigationAddon addon = enumerator.Value as NavigationAddon; if (addon != null) { string name = Translator.Translate(addon.Name); OPMAddonMenuItem button = new OPMAddonMenuItem(name.Replace("*", "")); button.Name = addon.AddonTypeName; button.Click += new EventHandler(AddonButtonClick); //button.AutoSize = true; NavBaseCtl panel = addon.AddonPanel; button.Image = panel.SmallAddonImage; button.Tag = addon; button.ImageTransparentColor = Color.Magenta; msMain.Items.Add(button); if (addon.AddonTypeName == AddonAppConfig.LastNavAddon) { previousAddonButton = button; } if (addon.AddonTypeName.ToLowerInvariant().Contains("catalog")) { catalogButton = button; } } } msMain.ResumeLayout(); if (!string.IsNullOrEmpty(_launchPath)) { // Need to figure out which navigation addon must be used to open this file if (msMain.Items.Count >= 1) { string ext = PathUtils.GetExtension(_launchPath); foreach (OPMToolStripMenuItem button in msMain.Items) { NavigationAddon addon = button.Tag as NavigationAddon; if (addon != null && addon.AddonPanel != null && addon.AddonPanel.HandledFileTypes != null && addon.AddonPanel.HandledFileTypes.Count > 0 && addon.AddonPanel.HandledFileTypes.Contains(ext)) { AddonButtonClick(button, null); return(true); } } ErrorDispatcher.DispatchError("ProTONE Media Library cannot handle this file: " + _launchPath, false); Process.GetCurrentProcess().Kill(); return(true); } } if (previousAddonButton != null) { AddonButtonClick(previousAddonButton, null); } else if (msMain.Items.Count >= 1) { foreach (OPMToolStripMenuItem button in msMain.Items) { if (button is OPMAddonMenuItem && button.Tag is NavigationAddon) { AddonButtonClick(button, null); break; } } } Logger.LogTrace("MainForm.GetNavigationAddons done."); return(true); }