public void OnPerformTranslation()
        {
            lblNoItems.Text      = Translator.Translate("TXT_THEREARENOITEMS");
            lblNoProperties.Text = Translator.Translate("TXT_THEREARENOITEMS");
            lblNoPreview.Text    = Translator.Translate("TXT_THEREARENOITEMS");

            tsmiAbout.Text = Translator.Translate("TXT_ABOUT",
                                                  Translator.TranslatedAppName);

            tsmiFile.Text     = Translator.Translate("TXT_FILE");
            tsmiSettings.Text = Translator.Translate("TXT_SETTINGS");
            tXTAPPHELPToolStripMenuItem.Text = Translator.Translate("TXT_APPHELP");
            tXTHELPToolStripMenuItem.Text    = Translator.Translate("TXT_HELP");
            tsmiExit.Text = Translator.Translate("TXT_EXIT");

            foreach (OPMToolStripMenuItem tsmi in msMain.Items)
            {
                if (tsmi.Tag is NavigationAddon)
                {
                    NavigationAddon addon = (tsmi.Tag as NavigationAddon);

                    string name = Translator.Translate(addon.Name);
                    tsmi.Text = name.Replace("*", "");
                }
            }

            for (int j = 0; j < msMain.Items.Count; j++)
            {
                if (msMain.Items[j] != null &&
                    (msMain.Items[j].Tag is NavigationAddon) &&
                    (msMain.Items[j] as OPMToolStripMenuItem).Checked)
                {
                    string appname = Translator.TranslatedAppName;
                    string text    = msMain.Items[j].Text;

                    SetTitle($"{appname} - {text}");
                    break;
                }
            }

            Translator.TranslateToolStrip(msMain, DesignMode);
        }
예제 #2
0
        /// <summary>
        /// Loads the navigation add-ons, as defined in the registry.
        /// </summary>
        protected override void Load()
        {
            // Initialize each of navigation addons. Careful not to break the loop
            // on eventual exceptions. It's important to try loading as much as
            // possible registered addons.
            if (AddonsConfig.NavigationAddons != null)
            {
                foreach (string addonName in AddonsConfig.NavigationAddons)
                {
                    try
                    {
                        Logger.LogTrace("Loading navigation addon: {0} ...", addonName);

                        NavigationAddon navAddon = new NavigationAddon(addonName);
                        Addons.Add(addonName, navAddon);
                    }
                    catch (Exception ex)
                    {
                        ErrorDispatcher.DispatchError($"Could not load addon: {addonName}.\nError: { ex.Message}", false);
                    }
                }
            }
        }
        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);
        }