예제 #1
0
        private void UpdateSelected()
        {
            if (SelectedEntry == null)
            {
                return;
            }
            try
            {
                var def    = ThemeManager.Inst.Cache.GetDefaultOrFallback();
                var defset = new AlephThemeSet(def, def, new AlephTheme[0]);

                var parser = new ThemeParser();
                parser.LoadFromString(SelectedEntry.Source, SelectedEntry.SourceFilename);
                parser.Parse();
                var theme = parser.Generate();
                var set   = new AlephThemeSet(def, theme, new AlephTheme[0]);

                SelectedEntry.Name        = theme.Name;
                SelectedEntry.ParsedSet   = set;
                SelectedEntry.ParsedTheme = theme;

                foreach (var dv in DefaultValues)
                {
                    dv.Value   = set.GetStrRepr(dv.Key);
                    dv.Changed = set.GetStrRepr(dv.Key) != defset.GetStrRepr(dv.Key);
                }
            }
            catch (Exception e)
            {
                ErrorText = e.ToString();
            }
        }
예제 #2
0
        private static void CreateBrushes(AlephThemeSet t)
        {
            StandardBrush = BrushRefToBrush.Convert(t.Get <BrushRef>("window.tageditor.tag:bordercolor_default"));

            HighlightBrush = new DrawingBrush
            {
                Viewport      = new System.Windows.Rect(0, 0, 8, 8),
                ViewportUnits = BrushMappingMode.Absolute,
                TileMode      = TileMode.Tile,
                Drawing       = new GeometryDrawing
                {
                    Brush    = BrushRefToBrush.Convert(t.Get <BrushRef>("window.tageditor.tag:bordercolor_highlighted")),
                    Geometry = new GeometryGroup
                    {
                        Children = new GeometryCollection(new Geometry[]
                        {
                            new RectangleGeometry {
                                Rect = new System.Windows.Rect(0, 0, 50, 50)
                            },
                            new RectangleGeometry {
                                Rect = new System.Windows.Rect(50, 50, 50, 50)
                            },
                        })
                    }
                }
            };

            StandardBrush.Freeze();
            HighlightBrush.Freeze();

            _currTheme = t;
        }
예제 #3
0
        public void ChangeTheme(AlephTheme t, IEnumerable <AlephTheme> m)
        {
            CurrentBaseTheme = t;
            CurrentModifers  = m.ToList();

            CurrentThemeSet = new AlephThemeSet(Cache.GetDefaultOrFallback(), CurrentBaseTheme, CurrentModifers);

            _listener.RemoveAll(l => !l.IsTargetAlive);
            foreach (var s in _listener.Where(l => l.IsTargetAlive))
            {
                s.OnThemeChanged();
            }
        }
예제 #4
0
        public ThemeEditorViewmodel(ThemeEditor owner)
        {
            Owner = owner;

            var dt = ThemeManager.Inst.Cache.GetDefault();

            foreach (var at in ThemeManager.Inst.Cache.GetAllAvailable())
            {
                var newEntry = new ThemeEditorEntry
                {
                    SourceFilename = at.SourceFilename,
                    Name           = at.Name,
                    Source         = at.Source,
                    OriginalSource = at.Source,
                    ParsedTheme    = at,
                    ParsedSet      = new AlephThemeSet(dt, at, new AlephTheme[0]),
                };
                Entries.Add(newEntry);
                if (at == ThemeManager.Inst.CurrentBaseTheme)
                {
                    _selectedEntry = newEntry;
                }
            }

            var def = new AlephThemeSet(dt, dt, new AlephTheme[0]);

            foreach (var prop in AlephTheme.THEME_PROPERTIES)
            {
                DefaultValues.Add(new ThemeEditorDV
                {
                    Key     = prop.Item1,
                    Default = dt.GetXmlStr(prop.Item1.ToLower()),
                    TypeStr = prop.Item2.ToString(),
                    Value   = SelectedEntry?.ParsedSet?.GetStrRepr(prop.Item1),
                    Changed = SelectedEntry?.ParsedSet?.GetStrRepr(prop.Item1) != def?.GetStrRepr(prop.Item1)
                });
            }
        }
예제 #5
0
 public static System.Drawing.Bitmap GetDBitmapResource(this AlephThemeSet set, string name)
 {
     return(set.GetResource(name, BitmapFromByteArray, () => BitmapFromResource(AlephTheme.GetDefaultResourceUri(name))));
 }
예제 #6
0
 public static System.Drawing.Icon GetIconResource(this AlephThemeSet set, string name)
 {
     return(set.GetResource(name, IconFromByteArray, () => IconFromResource(AlephTheme.GetDefaultResourceUri(name))));
 }
예제 #7
0
 public static BitmapImage GetBitmapImageResource(this AlephThemeSet set, string name)
 {
     return(set.GetResource(name, BitmapImageFromByteArray, () => new BitmapImage(AlephTheme.GetDefaultResourceUri(name))));
 }