Ejemplo n.º 1
0
        private static ToolStripMenuItem Convert_OptionBool(OptionBool oBool, OptionBase o, Action <OptionBase> onOptionChanged)
        {
            var m = new ToolStripMenuItem
            {
                Text  = o.Caption,
                Tag   = o,
                Image = GetCheckedBitmap(oBool.Value, true),
            };

            // Add childs
            AddChildOptions(m, o, onOptionChanged);
            SetEnabledToSubmenus(m, oBool.Value);

            m.Click += (eSender, eE) =>
            {
                var em     = (ToolStripMenuItem)eSender;
                var eoBool = (OptionBool)em.Tag;
                eoBool.Value = !eoBool.Value;
                em.Image     = GetCheckedBitmap(eoBool.Value, true);
                SetEnabledToSubmenus(em, eoBool.Value);
                if (onOptionChanged != null)
                {
                    onOptionChanged(eoBool);
                }
            };
            return(m);
        }
Ejemplo n.º 2
0
 private void _OnModifiedT(OptionBase option)
 {
     if (OnModifiedT != null)
     {
         OnModifiedT(this);
     }
 }
Ejemplo n.º 3
0
 public static void Add(OptionBase option)
 {
     if (IsLoaded)
     {
         //log.temp("Options '{0}' is added after GlobalOptions was loaded", option.KeyShort);
     }
     Options.Add(option);
 }
Ejemplo n.º 4
0
 private static void AddChildOptions(ToolStripMenuItem m, OptionBase o, Action <OptionBase> onOptionChanged)
 {
     if (o.ChildOptions.Count > 0)
     {
         var prevIsEnum = -1;
         foreach (var childOption in o.ChildOptions)
         {
             var childMenu = Convert(childOption, onOptionChanged, false);
             // some options may not return any menu - since they are debug and we run outside visual studio
             if (childMenu == null)
             {
                 continue;
             }
             if (childOption.OptionType == OptionType.IssueOption)
             {
                 childMenu.ForeColor = Color.SlateBlue;
             }
             if (childMenu == null)
             {
                 continue;
             }
             var oEnum = childOption as IOptionEnum;
             if (oEnum == null ||
                 (oEnum.GetStates().Length > 10 && o.ChildOptions.Count > 1))    //expantion is correct
             {
                 if (prevIsEnum == 1)
                 {
                     m.DropDownItems.Add(new ToolStripSeparator());                  //add separator after OptionEnum
                 }
                 prevIsEnum = 0;
                 m.DropDownItems.Add(childMenu);
             }
             else
             {
                 // Expand OptionEnum to avoid addition submenu level
                 if (prevIsEnum != -1)
                 {
                     m.DropDownItems.Add(new ToolStripSeparator());                   //add separator before OptionEnum
                 }
                 prevIsEnum = 1;
                 //m.DropDownItems.Add(new ToolStripMenuItem(childMenu.Text)); //caption
                 while (childMenu.DropDownItems.Count > 0)
                 {
                     ToolStripItem msub = childMenu.DropDownItems[0];
                     if (!msub.Text.Contains(":  "))
                     {
                         msub.Text = @"{0}:      {1}"._Format(childMenu.Text, msub.Text);
                     }
                     m.DropDownItems.Add(msub);
                 }
             }
         }
     }
 }
Ejemplo n.º 5
0
 private void OnChangeInternalMy(OptionBase option)
 {
     // for the single value we have to sync States when Value is changed
     if (IsSingleValue)
     {
         // Update states checkeds from value
         foreach (var state in States)
         {
             state.IsChecked = state.Value.Equals(_Value);
         }
     }
 }
Ejemplo n.º 6
0
        private static ToolStripMenuItem Convert(OptionBase o, Action <OptionBase> onOptionChanged = null, bool skipChildOptions = true)
        {
            // Hidde options that are invisible to user
            if (o.OptionType == OptionType.Hidden)
            {
                return(null);
            }

            var isDebugOption = o.Caption.ToLower().Contains("debug") ||
                                o.OptionType == OptionType.Debug;

            // Debug options is visible only on debug
            if (isDebugOption && !Shared.IsDebugMode)
            {
                return(null);
            }

            if (skipChildOptions && o.ParentOption != null)
            {
                return(null);
            }

            ToolStripMenuItem m = null;

            var oBool = o as OptionBool;

            if (oBool != null)
            {
                m = Convert_OptionBool(oBool, o, onOptionChanged);
            }

            var oEnum = o as IOptionEnum;

            if (oEnum != null)
            {
                m = Convert_OptionEnum(oEnum, o, onOptionChanged);
            }

            if (m != null)
            {
                // Add special prefix for all debug options
                if (isDebugOption)
                {
                    m.Text = "[DEBUG]   " + m.Text.Replace("Debug", "").Replace("[DEBUG]", "");
                }
            }

            return(m);
        }
Ejemplo n.º 7
0
        private static ToolStripMenuItem Convert_OptionEnum(IOptionEnum oEnum, OptionBase o, Action <OptionBase> onOptionChanged)
        {
            var m = new ToolStripMenuItem
            {
                Text = o.Caption,
                Tag  = o,
            };

            foreach (var state in oEnum.GetStates())
            {
                var msub = state.MenuCache; // improves performance 2 times
                if (msub == null)
                {
                    msub = new ToolStripMenuItem
                    {
                        Text = state.Caption,
                        Tag  = state,
                    };
                    msub.Click += (eSender, eE) =>
                    {
                        var em     = (ToolStripMenuItem)eSender;
                        var estate = (OptionEnumState)em.Tag;
                        var obase  = (OptionBase)estate.OptionEnum;
                        var eoEnum = (IOptionEnum)estate.OptionEnum;
                        eoEnum.ClickedOnValue(estate.Value);
                        if (onOptionChanged != null)
                        {
                            onOptionChanged(obase);
                        }
                    };
                    state.MenuCache = msub;
                }
                var image = GetCheckedBitmap(state.IsChecked, !oEnum.IsSingleValue);
                if (msub.Image != image) //  small performance improvement
                {
                    msub.Image = image;
                }
                m.DropDownItems.Add(msub);
            }
            return(m);
        }
Ejemplo n.º 8
0
 private void OnChangeEvent(OptionBase option)
 {
     SetGUIScale();
 }