void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                if (!_closedOnce)
                {
                    foreach (TabPage tp in tabOptions.TabPages)
                    {
                        BaseCfgPanel panel = tp.Controls[0] as BaseCfgPanel;
                        if (panel != null)
                        {
                            if (DialogResult == DialogResult.OK)
                            {
                                panel.Save();
                            }
                            else
                            {
                                panel.Discard();
                            }
                        }
                    }

                    _closedOnce = true;
                    return;
                }
            }
            catch (SettingsSaveException ex)
            {
                ErrorDispatcher.DispatchError(ex.Message, false);
            }

            e.Cancel = true;
        }
        protected void AddPanel(Type panelType, bool condition, bool alignRight)
        {
            if (condition)
            {
                BaseCfgPanel panel = null;

                try
                {
                    panel = Activator.CreateInstance(panelType) as BaseCfgPanel;
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex);
                }

                if (panel != null)
                {
                    if (AddPanel(panel, condition, alignRight))
                    {
                        if (panel is MultiPageCfgPanel)
                        {
                            List <BaseCfgPanel> subPagesToAdd = new List <BaseCfgPanel>();

                            if (panel is TroubleshootingPanel)
                            {
                                List <BaseCfgPanel> pages = GetTroubleshootingSubPages();
                                if (pages != null)
                                {
                                    subPagesToAdd.AddRange(pages);
                                }
                            }
                            else if (panel is ControlAppPanel)
                            {
                                subPagesToAdd.Add(new KeyMapCfgPanel());
                                List <BaseCfgPanel> pages = GetControlSubPages();
                                if (pages != null)
                                {
                                    subPagesToAdd.AddRange(pages);
                                }
                            }
                            else if (panel is InternetSettingsPanel)
                            {
                                subPagesToAdd.Add(new NetworkCfgPanel());
                                List <BaseCfgPanel> pages = GetInternetSubPages();
                                if (pages != null)
                                {
                                    subPagesToAdd.AddRange(pages);
                                }
                            }

                            foreach (var page in subPagesToAdd)
                            {
                                (panel as MultiPageCfgPanel).AddSubPage(page);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        protected override void DiscardInternal()
        {
            foreach (OPMTabPage tp in tabAddons.TabPages)
            {
                BaseCfgPanel page = tp.Control as BaseCfgPanel;
                if (page != null)
                {
                    page.Discard();
                }
            }

            Modified = false;
        }
Esempio n. 4
0
        void AddonSettingsPanel_HandleCreated(object sender, EventArgs e)
        {
            tabAddons.TabPages.Clear();
            tabAddons.ImageList.Images.Clear();

            if (InitAddonCfg != null)
            {
                foreach (Delegate dlg in InitAddonCfg.GetInvocationList())
                {
                    InitAddonCfgHandler callDlg = dlg as InitAddonCfgHandler;
                    if (callDlg != null)
                    {
                        BaseCfgPanel pageContents = callDlg();
                        if (pageContents != null)
                        {
                            string title = Translator.Translate(pageContents.Title);

                            pageContents.Dock = DockStyle.Fill;

                            OPMTabPage tp = new OPMTabPage(title, pageContents);
                            tp.Dock       = DockStyle.Fill;
                            tp.ImageIndex = tabAddons.ImageList.Images.Count;
                            tp.Tag        = pageContents.Title;

                            tabAddons.ImageList.Images.Add(pageContents.Image);
                            tabAddons.TabPages.Add(tp);

                            pageContents.ModifiedActive -= new EventHandler(OnModifiedActive);
                            pageContents.ModifiedActive += new EventHandler(OnModifiedActive);
                        }
                    }
                }

                if (tabAddons.TabPages.Count > 1)
                {
                    tabAddons.SelectedIndex = 0;
                }
            }
        }
        public override void FireHelpRequest()
        {
            BaseCfgPanel panel = null;

            try
            {
                panel = tabOptions.SelectedTab.Controls[0] as BaseCfgPanel;
            }
            catch
            {
                panel = null;
            }

            if (panel != null)
            {
                HelpTarget.HelpRequest(this.Name, panel.GetHelpTopic());
            }
            else
            {
                base.FireHelpRequest();
            }
        }
        protected bool AddPanel(BaseCfgPanel panel, bool condition, bool alignRight)
        {
            if (condition)
            {
                if (panel != null)
                {
                    string title = Translator.Translate(panel.Title);
                    if (!tabOptions.TabPages.ContainsKey(title))
                    {
                        panel.Dock = DockStyle.Fill;
                        OPMTabPage tp = new OPMTabPage(title, panel);
                        tp.ImageIndex = tabOptions.ImageList.Images.Count;
                        tabOptions.ImageList.Images.Add(panel.Image);

                        tabOptions.TabPages.Add(tp);
                        return(true);
                    }
                }
            }

            return(false);
        }
        private void ShowPanel(BaseCfgPanel panel, string subTitleToOpen = "")
        {
            if (selectedPanel != panel)
            {
                foreach (TabPage tp in tabOptions.TabPages)
                {
                    BaseCfgPanel crtPanel = tp.Controls[0] as BaseCfgPanel;
                    if (panel == crtPanel)
                    {
                        tabOptions.SelectedTab = tp;

                        IMultiPageCfgPanel multiPagePanel = panel as IMultiPageCfgPanel;
                        if (multiPagePanel != null && string.IsNullOrEmpty(subTitleToOpen) == false)
                        {
                            multiPagePanel.SelectSubPage(subTitleToOpen);
                        }

                        selectedPanel = panel;

                        break;
                    }
                }
            }
        }
 protected void AddPanel(BaseCfgPanel panel, bool condition)
 {
     AddPanel(panel, condition, false);
 }