Ejemplo n.º 1
0
        public Theme()
        {
            var main = Current == null;

            try
            {
                isolatedStore = ApplicationData.Current.LocalSettings.CreateContainer("Theme", ApplicationDataCreateDisposition.Always);
                Current ??= this;

                this.Add("MessageFontSize", GetValueOrDefault("MessageFontSize", 14d));

                var emojiSet = SettingsService.Current.Appearance.EmojiSet;
                switch (emojiSet.Id)
                {
                case "microsoft":
                    this.Add("EmojiThemeFontFamily", new FontFamily($"XamlAutoFontFamily"));
                    break;

                case "apple":
                    this.Add("EmojiThemeFontFamily", new FontFamily($"ms-appx:///Assets/Emoji/{emojiSet.Id}.ttf#Segoe UI Emoji"));
                    break;

                default:
                    this.Add("EmojiThemeFontFamily", new FontFamily($"ms-appdata:///local/emoji/{emojiSet.Id}.{emojiSet.Version}.ttf#Segoe UI Emoji"));
                    break;
                }

                this.Add("ThreadStackLayout", new StackLayout());
            }
            catch { }

            MergedDictionaries.Add(new ResourceDictionary {
                Source = new Uri("ms-appx:///Themes/ThemeGreen.xaml")
            });

            if (main)
            {
                UpdateAcrylicBrushes();
                Initialize();
            }
        }
Ejemplo n.º 2
0
        public override void LoadDictionariesFromFiles(List <string> inList)
        {
            foreach (var filePath in inList)
            {
                // Only Globalization resource dictionaries should be added
                // Ignore other types
                var globalizationResourceDictionary = LoadFromFile(filePath) as GlobalizationResourceDictionary;
                if (globalizationResourceDictionary == null)
                {
                    continue;
                }

                MergedDictionaries.Add(globalizationResourceDictionary);

                if (globalizationResourceDictionary.LinkedStyle == null)
                {
                    continue;
                }

                var styleFile = globalizationResourceDictionary.LinkedStyle + ".xaml";
                if (globalizationResourceDictionary.Source != null)
                {
                    var path = Path.Combine(Path.GetDirectoryName(globalizationResourceDictionary.Source), styleFile);
                    // Todo: Check for file and if not there, look in the Styles dir

                    var tempStyleDict = LoadFromFile(path, false);
                    if (tempStyleDict != null)
                    {
                        MergedDictionaries.Add(tempStyleDict);
                    }
                    return;
                }

                var styleDict = LoadFromFile(styleFile, false);
                if (styleDict != null)
                {
                    MergedDictionaries.Add(styleDict);
                }
            }
        }
Ejemplo n.º 3
0
        ///<summary>Creates a new <see cref="VsThemeDictionary"/>, initializing the <see cref="VsServiceProvider"/> if it has not been initialized.</summary>
        public VsThemeDictionary()
        {
            if (ServiceProvider.GlobalProvider.GetService(typeof(SVsFrameworkMultiTargeting)) != null)
            {
                return;                 // Do nothing when hosted in VS
            }
            VsServiceProvider.Initialize();
            service = Activator.CreateInstance(WindowManagement.GetType("Microsoft.VisualStudio.Platform.WindowManagement.ColorThemeService"));

            // Add an empty dictionary for the loader to replace.
            MergedDictionaries.Add(new ResourceDictionary());
            ThemeIndex = 0;

            typeof(EnvironmentRenderCapabilities)
            .GetProperty("VisualEffectsAllowed")
            .SetValue(EnvironmentRenderCapabilities.Current, 1 | 2);

            Themes = Enumerable.Range(0, (int)service.Themes.Count)
                     .Select(i => new ColorTheme(i, service.Themes[i]))
                     .ToList()
                     .AsReadOnly();
        }
Ejemplo n.º 4
0
        protected override void ApplyTheme(ITheme theme)
        {
            base.ApplyTheme(theme);
            if (TryGetResourceDictionaries(theme, out ResourceDictionary? light, out ResourceDictionary? dark))
            {
                switch (BaseTheme)
                {
                case Wpf.BaseTheme.Light:
                    MergedDictionaries.Add(light);
                    break;

                case Wpf.BaseTheme.Dark:
                    MergedDictionaries.Add(dark);
                    break;
                }

                if (this.GetThemeManager() is IThemeManager themeManager)
                {
                    themeManager.ThemeChanged += ThemeManagerOnThemeChanged;
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Dynamically load a Localization ResourceDictionary from a file
        /// </summary>
        public void SwitchStyle(string inFileName, string inResourceDictionaryName = null)
        {
            string path = inFileName;

            if (!File.Exists(path) && !path.Contains(@":\"))
            {
                path = Path.Combine(GlobalizedApplication.Instance.Directory, SubDirectory, inFileName);
            }
            if (File.Exists(path))
            {
                RemoveResourceDictionaries();
                MergedDictionaries.Add(LoadFromFile(path) as StyleResourceDictionary);
                var args = new ResourceDictionaryChangedEventArgs();
                args.ResourceDictionaryNames.Add(Path.GetFileNameWithoutExtension(inFileName));
                args.ResourceDictionaryPaths.Add(path);

                NotifyResourceDictionaryChanged(args);
            }
            else
            {
                Debug.WriteLine("ResourceDictionary not found: " + inFileName);
            }
        }
Ejemplo n.º 6
0
        private void Update(IDictionary <string, Color> values)
        {
            try
            {
                // Because of Compact, UpdateSource may be executed twice, but there is a bug in XAML and manually clear theme dictionaries here:
                // Prior to RS5, when ResourceDictionary.Source property is changed, XAML forgot to clear ThemeDictionaries.
                ThemeDictionaries.Clear();
                MergedDictionaries.Clear();

                MergedDictionaries.Add(new ResourceDictionary {
                    Source = new Uri("ms-appx:///Themes/ThemeGreen.xaml")
                });

                var dict = new ResourceDictionary();

                foreach (var item in values)
                {
                    if (item.Key.EndsWith("Brush"))
                    {
                        dict[item.Key] = new SolidColorBrush((Color)item.Value);
                    }
                    else if (item.Key.EndsWith("Color"))
                    {
                        dict[item.Key] = (Color)item.Value;
                    }
                }

                MergedDictionaries[0].MergedDictionaries.Clear();
                MergedDictionaries[0].MergedDictionaries.Add(dict);

                if (ApiInfo.HasStatusBar)
                {
                    TLWindowContext.GetForCurrentView()?.UpdateTitleBar();
                }
            }
            catch { }
        }
Ejemplo n.º 7
0
        public void Update(ElementTheme flags)
        {
            try
            {
                // Because of Compact, UpdateSource may be executed twice, but there is a bug in XAML and manually clear theme dictionaries here:
                // Prior to RS5, when ResourceDictionary.Source property is changed, XAML forgot to clear ThemeDictionaries.
                ThemeDictionaries.Clear();
                MergedDictionaries.Clear();

                if (flags == ElementTheme.Default)
                {
                    MergedDictionaries.Add(new ResourceDictionary {
                        Source = new Uri("ms-appx:///Themes/ThemeSystem.xaml")
                    });
                }
                else
                {
                    MergedDictionaries.Add(new ResourceDictionary {
                        Source = new Uri("ms-appx:///Themes/ThemeGreen.xaml")
                    });
                }
            }
            catch { }
        }
Ejemplo n.º 8
0
        protected override void ApplyTheme(ITheme theme)
        {
            base.ApplyTheme(theme);
            if (TryGetResourceDictionaries(theme, out ResourceDictionary light, out ResourceDictionary dark))
            {
                switch (BaseTheme)
                {
                case Wpf.BaseTheme.Light:
                    MergedDictionaries.Add(light);
                    break;

                case Wpf.BaseTheme.Dark:
                    MergedDictionaries.Add(dark);
                    break;

                case Wpf.BaseTheme.Inherit:
                    switch (Wpf.Theme.GetSystemTheme())
                    {
                    case Wpf.BaseTheme.Dark:
                        MergedDictionaries.Add(dark);
                        break;

                    default:
                        MergedDictionaries.Add(light);
                        break;
                    }
                    break;
                }

                IThemeManager themeManager = this.GetThemeManager();
                if (themeManager != null)
                {
                    themeManager.ThemeChanged += ThemeManagerOnThemeChanged;
                }
            }
        }
Ejemplo n.º 9
0
 public void Add(ResourceDictionary mergedResourceDictionary)
 {
     MergedDictionaries.Add(mergedResourceDictionary);
 }
 public ThemeResourceDictionary()
 {
     MergedDictionaries.Add(Theme.ResourceDictionary);
 }
 public ThemeResourceDictionary()
 {
     MergedDictionaries.Add(dynamicDictionary);
 }
Ejemplo n.º 12
0
 public SkinResourceDictionary()
 {
     MergedDictionaries.Add(Skin.ResDictionary);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Initializes a new instance of the XamlControlsResources class.
 /// </summary>
 public XamlControlsResources()
 {
     MergedDictionaries.Add(new ResourceDictionary {
         Source = PackUriHelper.GetAbsoluteUri("XamlControlsResources.xaml")
     });
 }
Ejemplo n.º 14
0
 /// <summary>
 /// Initializes a new instance of the Theme class.
 /// </summary>
 public Theme()
 {
     MergedDictionaries.Add(ControlsResources);
 }
Ejemplo n.º 15
0
 public Status()
 {
     MergedDictionaries.Add(Tango.DictionariesByCategory[GetType().Name]);
 }
Ejemplo n.º 16
0
 void AddDictionary(string uriString)
 {
     MergedDictionaries.Add(GetDictionary(uriString));
 }