Exemple #1
0
        /*private void check_Checked(object sender, RoutedEventArgs e)
         * {
         *  TweakType type = (TweakType)(sender as CheckBox).Tag;
         *  bool state = (bool)(sender as CheckBox).IsChecked;
         *
         *  foreach (Tweak tweak in myGroup.Tweaks)
         *  {
         *      if (!tweak.IsAvailable())
         *          continue;
         *
         *      if (tweak.Type != type)
         *          continue;
         *
         *      if (state && (tweak.Sellected == null ? !tweak.Optional : (bool)tweak.Sellected))
         *          tweak.Apply();
         *      else if(!state)
         *          tweak.Undo();
         *  }
         * }*/

        void OnStatusChanged(object sender, EventArgs arg)
        {
            Dictionary <TweakType, TweakStat> stats = new Dictionary <TweakType, TweakStat>();

            int active   = 0;
            int selected = 0;

            foreach (Tweak tweak in myGroup.Tweaks)
            {
                if (!tweak.IsAvailable())
                {
                    continue;
                }

                if (tweak.Test())
                {
                    active++;
                }

                if (tweak.Sellected == null ? !tweak.Optional : (bool)tweak.Sellected)
                {
                    selected++;
                }

                TweakStat stat = null;
                if (!stats.TryGetValue(tweak.Type, out stat))
                {
                    stat = new TweakStat();
                    stats.Add(tweak.Type, stat);
                }

                stat.total++;
                if (tweak.Test())
                {
                    stat.enabled++;
                }
            }
            if (active == 0)
            {
                toggle.IsChecked = false;
            }
            else if (active >= selected)
            {
                toggle.IsChecked = true;
            }
            else
            {
                toggle.IsChecked = null;
            }


            foreach (TweakType type in stats.Keys)
            {
                TweakStat stat = stats[type];

                boxes[type].Content = string.Format("{0} {1}/{2}", Tweak.GetTypeStr(type), stat.enabled, stat.total);

                /*if (stat.enabled == 0)
                 *  boxes[type].IsChecked = false;
                 * else if (stat.enabled == stat.total)
                 *  boxes[type].IsChecked = true;
                 * else
                 *  boxes[type].IsChecked = null;*/
            }
        }
Exemple #2
0
        public TweakGroup(Group group)
        {
            myGroup = group;

            InitializeComponent();

            Dictionary <TweakType, TweakStat> tweaks = new Dictionary <TweakType, TweakStat>();

            foreach (Tweak tweak in group.Tweaks)
            {
                if (!tweak.IsAvailable())
                {
                    continue;
                }

                tweak.StatusChanged += OnStatusChanged;

                TweakStat stat = null;
                if (!tweaks.TryGetValue(tweak.Type, out stat))
                {
                    stat = new TweakStat();
                    tweaks.Add(tweak.Type, stat);
                }

                stat.total++;
                if (tweak.Test())
                {
                    stat.enabled++;
                }
            }

            toggle.Click += new RoutedEventHandler(toggle_Checked);

            int height = 32;

            int i = 0;

            foreach (TweakType type in tweaks.Keys)
            {
                TweakStat stat = tweaks[type];

                ContentControl item;

                /*if (tweaks.Count > 1)
                 * {
                 *  CheckBox check = new CheckBox();
                 *  check.Click += new RoutedEventHandler(rect_Click);
                 *  check.Click += new RoutedEventHandler(check_Checked);
                 *  check.Tag = type;
                 *  item = check;
                 * }
                 * else*/
                {
                    item            = new Label();
                    item.Padding    = new Thickness(17, 0, 0, 0);
                    item.MouseDown += new MouseButtonEventHandler(rect_Click);
                }
                boxes.Add(type, item);

                item.Content = string.Format("{0}", Tweak.GetTypeStr(type));

                item.Height              = 16;
                item.VerticalAlignment   = VerticalAlignment.Top;
                item.HorizontalAlignment = HorizontalAlignment.Left;

                //check.IsEnabled

                checks.Children.Add(item);
                RowDefinition row = new RowDefinition();
                row.Height = new GridLength(item.Height);
                checks.RowDefinitions.Add(row);
                Grid.SetRow(item, i++);
                //Grid.SetColumn(item, 1);

                height += (int)item.Height;
            }

            this.Height = height;

            OnStatusChanged(null, null);

            toggle.Click    += new RoutedEventHandler(rect_Click);
            rect.MouseDown  += new MouseButtonEventHandler(rect_Click);
            label.MouseDown += new MouseButtonEventHandler(rect_Click);
        }
Exemple #3
0
        public void Update()
        {
            Dictionary <TweakManager.TweakType, TweakStat> stats = new Dictionary <TweakManager.TweakType, TweakStat>();

            int active  = 0;
            int changed = 0;

            foreach (TweakManager.Tweak tweak in myGroup.Tweaks.Values)
            {
                if (!tweak.IsAvailable())
                {
                    continue;
                }

                bool Status = tweak.Test();

                TweakStat stat = null;
                if (!stats.TryGetValue(tweak.Type, out stat))
                {
                    stat = new TweakStat();
                    stats.Add(tweak.Type, stat);
                }

                stat.total++;
                if (Status)
                {
                    stat.enabled++;
                    active++;
                }
                else if (tweak.State != TweakManager.Tweak.States.Unsellected)
                {
                    stat.undone++;
                    changed++;
                }
            }
            if (changed > 0)
            {
                toggle.IsChecked = null;
            }
            else if (active == 0)
            {
                toggle.IsChecked = false;
            }
            else
            {
                toggle.IsChecked = true;
            }
            oldValue = toggle.IsChecked;

            foreach (TweakManager.TweakType type in stats.Keys)
            {
                TweakStat stat = stats[type];

                string aux = "";
                if (stat.undone != 0)
                {
                    aux = Translate.fmt("tweak_undone", stat.undone);
                }

                boxes[type].Content = string.Format("{0}: {1}/{2}{3}", TweakManager.Tweak.GetTypeStr(type), stat.enabled, stat.total, aux);
                //if (stat.enabled == 0)
                //    boxes[type].IsChecked = false;
                //else if (stat.enabled == stat.total)
                //    boxes[type].IsChecked = true;
                //else
                //    boxes[type].IsChecked = null;
            }
        }