private void SetupCSSElements()
        {
            _viewCSSElements.Clear();
            foreach (var cssElementName in _fontSettings.CssElements.Keys)
            {
                foreach (var cssElementCode in _fontSettings.CssElements[cssElementName].Keys)
                {
                    CSSElementListItem item = new CSSElementListItem {
                        Name = cssElementName, Class = cssElementCode
                    };
                    foreach (var font in _fontSettings.CssElements[cssElementName][cssElementCode])
                    {
                        item.Fonts.Add(font);
                    }
                    _viewCSSElements.Add(item);
                }
            }
            _myDataSourceCSS.DataSource      = _viewCSSElements;
            listBoxCSSElements.DataSource    = _myDataSourceCSS;
            listBoxCSSElements.DisplayMember = "FullName";

            _myDataSourceCSSFonts.DataSource = _myDataSourceCSS;
            _myDataSourceCSSFonts.DataMember = "Fonts";

            listBoxCSSFonts.DataSource    = _myDataSourceCSSFonts;
            listBoxCSSFonts.DisplayMember = "Name";
        }
 private void AddCSSElement(string name, string className)
 {
     CSSElementListItem newViewElement;
     if (!_fontSettings.CssElements.ContainsKey(name))
     {
         _fontSettings.CssElements.Add(name, new Dictionary<string, List<ICSSFontFamily>>());
         _fontSettings.CssElements[name].Add(className, new List<ICSSFontFamily>());
         newViewElement = new CSSElementListItem {Class = className, Name = name};
         _viewCSSElements.Add(newViewElement);
     }
     else
     {
         if (!_fontSettings.CssElements[name].ContainsKey(className))
         {
             _fontSettings.CssElements[name].Add(className, new List<ICSSFontFamily>());
             newViewElement = new CSSElementListItem { Class = className, Name = name };
             _viewCSSElements.Add(newViewElement);
         }
         else
         {
             newViewElement = _viewCSSElements.Find(x=>((x.Name== name)&&(x.Class == className)));
         }
     }
     _myDataSourceCSS.ResetBindings(false);
     if (newViewElement != null && _myDataSourceCSS.Count != 0 )
     {
         _myDataSourceCSS.MoveNext();
         while (_myDataSourceCSS.Current != newViewElement)
         {
             _myDataSourceCSS.MoveNext();
         }
     }
 }
        private void buttonAddCSSFont_Click(object sender, EventArgs e)
        {
            AddFontsForm addForm = new AddFontsForm(_fontSettings.Fonts);
            DialogResult result  = addForm.ShowDialog(this);

            if (result == DialogResult.OK && addForm.SelectedFont != null)
            {
                CSSElementListItem currentElement = _myDataSourceCSS.Current as CSSElementListItem;
                if (currentElement != null)
                {
                    ICSSFontFamily font = _fontSettings.Fonts[addForm.SelectedFont];
                    if (font != null)
                    {
                        currentElement.Fonts.Add(font);
                        _fontSettings.CssElements[currentElement.Name][currentElement.Class].Add(font);
                        _myDataSourceCSSFonts.ResetBindings(false);
                    }
                }
            }
        }
        private void buttonRemoveCSS_Click(object sender, EventArgs e)
        {
            CSSElementListItem current = _myDataSourceCSS.Current as CSSElementListItem;

            if (current != null)
            {
                _myDataSourceCSS.RemoveCurrent();
                if (_fontSettings.CssElements.ContainsKey(current.Name))
                {
                    if (_fontSettings.CssElements[current.Name].ContainsKey(current.Class))
                    {
                        _fontSettings.CssElements[current.Name].Remove(current.Class);
                    }
                    if (_fontSettings.CssElements[current.Name].Count == 0)
                    {
                        _fontSettings.CssElements.Remove(current.Name);
                    }
                }
            }
        }
        private void AddCSSElement(string name, string className)
        {
            CSSElementListItem newViewElement;

            if (!_fontSettings.CssElements.ContainsKey(name))
            {
                _fontSettings.CssElements.Add(name, new Dictionary <string, List <ICSSFontFamily> >());
                _fontSettings.CssElements[name].Add(className, new List <ICSSFontFamily>());
                newViewElement = new CSSElementListItem {
                    Class = className, Name = name
                };
                _viewCSSElements.Add(newViewElement);
            }
            else
            {
                if (!_fontSettings.CssElements[name].ContainsKey(className))
                {
                    _fontSettings.CssElements[name].Add(className, new List <ICSSFontFamily>());
                    newViewElement = new CSSElementListItem {
                        Class = className, Name = name
                    };
                    _viewCSSElements.Add(newViewElement);
                }
                else
                {
                    newViewElement = _viewCSSElements.Find(x => ((x.Name == name) && (x.Class == className)));
                }
            }
            _myDataSourceCSS.ResetBindings(false);
            if (newViewElement != null && _myDataSourceCSS.Count != 0)
            {
                _myDataSourceCSS.MoveNext();
                while (_myDataSourceCSS.Current != newViewElement)
                {
                    _myDataSourceCSS.MoveNext();
                }
            }
        }
        private void SetupCSSElements()
        {
            _viewCSSElements.Clear();
            foreach (var cssElementName in _fontSettings.CssElements.Keys)
            {
                foreach (var cssElementCode in _fontSettings.CssElements[cssElementName].Keys)
                {
                    CSSElementListItem item = new CSSElementListItem {Name = cssElementName, Class = cssElementCode};
                    foreach (var font in _fontSettings.CssElements[cssElementName][cssElementCode])
                    {
                        item.Fonts.Add(font);
                    }
                    _viewCSSElements.Add(item);
                }
            }
            _myDataSourceCSS.DataSource = _viewCSSElements;
            listBoxCSSElements.DataSource = _myDataSourceCSS;
            listBoxCSSElements.DisplayMember = "FullName";

            _myDataSourceCSSFonts.DataSource = _myDataSourceCSS;
            _myDataSourceCSSFonts.DataMember = "Fonts";

            listBoxCSSFonts.DataSource = _myDataSourceCSSFonts;
            listBoxCSSFonts.DisplayMember = "Name";
        }