Ejemplo n.º 1
0
        void AddNumberBox(FieldBind field)
        {
            string         name = field.GetEditorName();
            LabeledTextbox c    = new LabeledTextbox(name);

            c.Name = name + "_TB";

            c.Text = field.GetValue().ToString();

            field.GetDataAction = () => {
                if (int.TryParse(c.Text, out int r))
                {
                    return(r);
                }
                else
                {
                    return(0);
                }
            };
            field.Reverted += (object o) => { c.Text = o.ToString(); };
            //c.TextChanged += (object sender, EventArgs e) =>
            //{
            //    field.data = c.Text;
            //};
            this.flowPanel.Controls.Add(c);
        }
Ejemplo n.º 2
0
        void AddEnumComboBox(FieldBind field)
        {
            string   name = field.GetEditorName();
            ComboBox c    = new ComboBox();

            c.Name = name + "_TB";

            var names = Enum.GetNames(field.field.FieldType);

            if (names.Length > 0)
            {
                c.Items.AddRange(names);
                c.Text = Enum.GetName(field.field.FieldType, field.GetValue());
                field.GetDataAction = () => {
                    return(Enum.Parse(field.field.FieldType, c.Text));
                };
            }
            else
            {
                field.GetDataAction = () => {
                    return(Activator.CreateInstance(field.field.FieldType));
                };
            }



            field.Reverted += (object o) => { c.Text = Enum.GetName(field.field.FieldType, o); };
            //c.TextChanged += (object sender, EventArgs e) =>
            //{
            //    field.data = c.Text;
            //};
            this.flowPanel.Controls.Add(c);
        }
Ejemplo n.º 3
0
        void AddTextBox(FieldBind field)
        {
            string         name = field.GetEditorName();
            LabeledTextbox c    = new LabeledTextbox(name);

            c.Name = name + "_TB";

            c.Text = (string)field.GetValue();

            field.GetDataAction = () => { return(c.Text); };
            field.Reverted     += (object o) => { c.Text = (string)o; };
            //c.TextChanged += (object sender, EventArgs e) =>
            //{
            //    field.data = c.Text;
            //};
            this.flowPanel.Controls.Add(c);
        }
Ejemplo n.º 4
0
        void AddCheckbox(FieldBind field)
        {
            string   name = field.GetEditorName();
            CheckBox c    = new CheckBox();

            c.Name    = name + "_CB";
            c.Text    = name;
            c.Checked = (bool)field.GetValue();

            field.GetDataAction = () => { return(c.Checked); };
            field.Reverted     += (object o) => { c.Checked = (bool)o; };

            //c.CheckedChanged += (object sender, EventArgs e) =>
            //{
            //    field.data = c.Checked;
            //};
            this.flowPanel.Controls.Add(c);
        }
Ejemplo n.º 5
0
        public void Setup(object loadedObj, string name)
        {
            this.loadedObject   = loadedObj;
            this.objectType     = loadedObj.GetType();
            this.labelName.Text = name == null ? objectType.Name : name;

            var fields = objectType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
                         .Where(x => x.GetCustomAttribute <EditorFieldAttribute>() != null).ToArray();

            this.fieldBinds = new FieldBind[fields.Length];

            for (int j = 0; j < fields.Length; j++)
            {
                //var curVal = fields[j].GetValue(loadedObj);

                var pb = new FieldBind(fields[j], loadedObj);

                //TODO: Handle dynamically or with classes
                if (fields[j].FieldType == typeof(bool))
                {
                    AddCheckbox(pb);
                }
                else if (fields[j].FieldType == typeof(string))
                {
                    AddTextBox(pb);
                }
                else if (fields[j].FieldType == typeof(int))
                {
                    AddNumberBox(pb);
                }
                else if (fields[j].FieldType.IsSubclassOf(typeof(Enum)))
                {
                    AddEnumComboBox(pb);
                }
                else
                {
                    Console.WriteLine("Unknown type");
                }
                this.fieldBinds[j] = pb;
            }
        }