Esempio n. 1
0
        private void AddList(ObsProperty property, ObsData setting, List<Control> controls)
        {
            string name = property.Name;

            int index = 0;
            string[] names = property.GetListItemNames();
            object[] values = property.GetListItemValues();
            EventHandler selectedIndexChanged = null;
            ComboBox combobox = new ComboBox { Width = 300 };

            combobox.Items.AddRange(names.ToArray());

            //if (namelist.Length > 0)
            //	combobox.SelectedIndex = 0;

            if (property.ListType == ObsComboType.List)
                combobox.DropDownStyle = ComboBoxStyle.DropDownList;

            switch (property.ListFormat)
            {
                case ObsComboFormat.Float:
                    {
                        index = Array.IndexOf(values, setting.GetDouble(name));

                        selectedIndexChanged = (sender, args) =>
                        {
                            double value = (double)values.GetValue(combobox.SelectedIndex);
                            setting.SetDouble(name, value);
                            view.PropertyChanged(property);
                        };
                        break;
                    }
                case ObsComboFormat.Int:
                    {
                        var val = setting.GetInt(name);
                        index = Array.IndexOf(values, setting.GetInt(name));

                        selectedIndexChanged = (sender, args) =>
                        {
                            long value = (long)values[combobox.SelectedIndex];
                            setting.SetInt(name, (int)value);
                            view.PropertyChanged(property);
                        };
                        break;
                    }
                case ObsComboFormat.String:
                    {
                        index = Array.IndexOf(values, setting.GetString(name));

                        selectedIndexChanged = (sender, args) =>
                        {
                            string value = (string)values[combobox.SelectedIndex];
                            setting.SetString(name, value);
                            view.PropertyChanged(property);
                        };
                        break;
                    }
            }

            if (index != -1)
                combobox.SelectedIndex = index;

            combobox.SelectedIndexChanged += selectedIndexChanged;

            if (index == -1 && names.Length > 0)
                combobox.SelectedIndex = 0;

            controls.Add(combobox);
        }