void RestoreDefaults(AbstractSettingsPage p)
 {
     p.RestoreDefaults();
     if (p.SubCategories != null)
     {
         foreach (var ssp in p.SubCategories)
         {
             RestoreDefaults(ssp);
         }
     }
 }
        TreeViewItem _BuildCategoryNode(AbstractSettingsPage Page)
        {
            var ret = new TreeViewItem();

            ret.Tag    = Page;
            ret.Header = Page.SettingCategoryName;

            var subCategories = Page.SubCategories;

            if (subCategories != null)
            {
                foreach (var sc in subCategories)
                {
                    ret.Items.Add(_BuildCategoryNode(sc));
                }
            }

            return(ret);
        }
        bool ApplySettings(AbstractSettingsPage p)
        {
            if (!p.ApplyChanges())
            {
                return(false);
            }

            if (p.SubCategories != null)
            {
                foreach (var ssp in p.SubCategories)
                {
                    if (!ApplySettings(ssp))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }