private int InitializePropertiesSection(int y)
        {
            String_PropertyEditor idEditor = new String_PropertyEditor(m_goData, "properties/Id");

            idEditor.Text = "Id";
            idEditor.UpdateEditorValue();
            idEditor.Top    = y;
            idEditor.Width  = Width;
            idEditor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(idEditor);
            idEditor.EditorJsonValueChangedCallback = this;
            m_editors.Add(idEditor);
            y = idEditor.Bottom + DEFAULT_SEPARATOR;

            Bool_PropertyEditor activeEditor = new Bool_PropertyEditor(m_goData, "properties/Active");

            activeEditor.Text = "Active";
            activeEditor.UpdateEditorValue();
            activeEditor.Top    = y;
            activeEditor.Width  = Width;
            activeEditor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(activeEditor);
            activeEditor.EditorJsonValueChangedCallback = this;
            m_editors.Add(activeEditor);
            y = activeEditor.Bottom + DEFAULT_SEPARATOR;

            ParsablePropertyEditor <int> orderEditor = new ParsablePropertyEditor <int>(m_goData, "properties/Order");

            orderEditor.Text = "Order";
            orderEditor.UpdateEditorValue();
            orderEditor.Top    = y;
            orderEditor.Width  = Width;
            orderEditor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(orderEditor);
            orderEditor.EditorJsonValueChangedCallback = this;
            m_editors.Add(orderEditor);
            y = orderEditor.Bottom + DEFAULT_SEPARATOR;

            JsonStringPropertyEditor metaDataEditor = new JsonStringPropertyEditor(m_goData, "properties/MetaData");

            metaDataEditor.Text = "MetaData";
            metaDataEditor.UpdateEditorValue();
            metaDataEditor.Top    = y;
            metaDataEditor.Width  = Width;
            metaDataEditor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(metaDataEditor);
            metaDataEditor.EditorJsonValueChangedCallback = this;
            m_editors.Add(metaDataEditor);
            y = metaDataEditor.Bottom + DEFAULT_SEPARATOR;

            return(y);
        }
예제 #2
0
            private void InitializeComponent(ItemEditorInfo[] metaEditors, ItemEditorInfo[] propertyEditors, string id, string meta, string tags)
            {
                IsProxyEditor = true;

                m_subProperties["id"]   = Newtonsoft.Json.JsonConvert.SerializeObject(id);
                m_subProperties["tags"] = string.IsNullOrEmpty(tags) ? "null" : Newtonsoft.Json.JsonConvert.SerializeObject(tags.Split('|'));

                MetroButton applyButton = new MetroButton();

                MetroSkinManager.ApplyMetroStyle(applyButton);
                applyButton.Text   = "Apply";
                applyButton.Width  = Width - 20;
                applyButton.Top    = Height;
                applyButton.Left   = 10;
                applyButton.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                applyButton.Click += new EventHandler(applyButton_Click);
                Controls.Add(applyButton);
                Height += applyButton.Height + DEFAULT_SEPARATOR;

                MetroButton removeButton = new MetroButton();

                MetroSkinManager.ApplyMetroStyle(removeButton);
                removeButton.Text   = "Remove";
                removeButton.Width  = Width - 20;
                removeButton.Top    = Height;
                removeButton.Left   = 10;
                removeButton.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                removeButton.Click += new EventHandler(removeButton_Click);
                Controls.Add(removeButton);
                Height += removeButton.Height + DEFAULT_SEPARATOR;

                m_idEditor        = new String_PropertyEditor(m_subProperties, "id");
                m_idEditor.Width  = Width - 20;
                m_idEditor.Top    = Height;
                m_idEditor.Left   = 10;
                m_idEditor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                Controls.Add(m_idEditor);
                m_idEditor.EditorJsonValueChangedCallback = this;
                Height += m_idEditor.Height + DEFAULT_SEPARATOR;

                if (metaEditors != null && metaEditors.Length > 0)
                {
                    string[] metaParts      = string.IsNullOrEmpty(meta) ? null : meta.Split('|');
                    int      metaPartsIndex = 0;
                    foreach (ItemEditorInfo info in metaEditors)
                    {
                        if (metaParts != null && metaPartsIndex < metaParts.Length)
                        {
                            m_subProperties[info.property] = Newtonsoft.Json.JsonConvert.SerializeObject(metaParts[metaPartsIndex]);
                        }
                        metaPartsIndex++;
                        try
                        {
                            object           obj      = Activator.CreateInstance(info.editorType, m_subProperties, info.property);
                            MetroUserControl editor   = obj as MetroUserControl;
                            IEditorJsonValue jvEditor = obj as IEditorJsonValue;
                            if (editor != null && jvEditor != null)
                            {
                                jvEditor.Text = info.property;
                                jvEditor.UpdateEditorValue();
                                editor.Top    = Height;
                                editor.Width  = Width - 20;
                                editor.Left   = 10;
                                editor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                                Controls.Add(editor);
                                jvEditor.EditorJsonValueChangedCallback = this;
                                m_metaEditors.Add(new KeyValuePair <string, IEditorJsonValue>(info.property, jvEditor));
                                Height += editor.Height + DEFAULT_SEPARATOR;
                            }
                        }
                        catch (Exception ex)
                        {
                            while (ex.InnerException != null)
                            {
                                ex = ex.InnerException;
                            }
                            ErrorPropertyEditor editor = new ErrorPropertyEditor(info.property, ex.Message);
                            editor.Tag    = string.Format("{0}\n{1}\n\nStack trace:\n{2}", ex.GetType().Name, ex.Message, ex.StackTrace);
                            editor.Top    = Height;
                            editor.Width  = Width - 20;
                            editor.Left   = 10;
                            editor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                            Controls.Add(editor);
                            Height += editor.Height + DEFAULT_SEPARATOR;
                        }
                    }
                }

                if (propertyEditors != null && propertyEditors.Length > 0)
                {
                    foreach (ItemEditorInfo info in propertyEditors)
                    {
                        m_subProperties[info.property] = "null";
                        try
                        {
                            object           obj      = Activator.CreateInstance(info.editorType, m_subProperties, info.property);
                            MetroUserControl editor   = obj as MetroUserControl;
                            IEditorJsonValue jvEditor = obj as IEditorJsonValue;
                            if (editor != null && jvEditor != null)
                            {
                                jvEditor.Text = info.property;
                                jvEditor.UpdateEditorValue();
                                editor.Top    = Height;
                                editor.Width  = Width - 20;
                                editor.Left   = 10;
                                editor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                                Controls.Add(editor);
                                jvEditor.EditorJsonValueChangedCallback = this;
                                m_propertyEditors.Add(new KeyValuePair <string, IEditorJsonValue>(info.property, jvEditor));
                                Height += editor.Height + DEFAULT_SEPARATOR;
                            }
                        }
                        catch (Exception ex)
                        {
                            while (ex.InnerException != null)
                            {
                                ex = ex.InnerException;
                            }
                            ErrorPropertyEditor editor = new ErrorPropertyEditor(info.property, ex.Message);
                            editor.Tag    = string.Format("{0}\n{1}\n\nStack trace:\n{2}", ex.GetType().Name, ex.Message, ex.StackTrace);
                            editor.Top    = Height;
                            editor.Width  = Width - 20;
                            editor.Left   = 10;
                            editor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                            Controls.Add(editor);
                            Height += editor.Height + DEFAULT_SEPARATOR;
                        }
                    }
                }

                m_tagsEditor        = new Tags_PropertyEditor(m_subProperties, "tags");
                m_tagsEditor.Width  = Width - 20;
                m_tagsEditor.Top    = Height;
                m_tagsEditor.Left   = 10;
                m_tagsEditor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                Controls.Add(m_tagsEditor);
                m_tagsEditor.EditorJsonValueChangedCallback = this;
                Height += m_tagsEditor.Height;

                UpdateJsonValue();
                UpdateProperties();
            }
예제 #3
0
        public ConfigControl(string path, ProjectModel model)
        {
            m_path = path;
            string json = File.ReadAllText(m_path);

            ConfigControl.Config config = null;
            try { config = Newtonsoft.Json.JsonConvert.DeserializeObject <ConfigControl.Config>(json); }
            catch { config = new Config(); }

            MetroSkinManager.ApplyMetroStyle(this);

            m_properties["windowColor"]        = Newtonsoft.Json.JsonConvert.SerializeObject(config.window.color);
            m_properties["windowWidth"]        = Newtonsoft.Json.JsonConvert.SerializeObject(config.window.videoMode.width);
            m_properties["windowHeight"]       = Newtonsoft.Json.JsonConvert.SerializeObject(config.window.videoMode.height);
            m_properties["windowStyles"]       = Newtonsoft.Json.JsonConvert.SerializeObject(config.window.style);
            m_properties["windowName"]         = Newtonsoft.Json.JsonConvert.SerializeObject(config.window.name);
            m_properties["lifeCycleFixedFps"]  = Newtonsoft.Json.JsonConvert.SerializeObject(config.lifeCycle.fixedFps);
            m_properties["lifeCycleFixedStep"] = Newtonsoft.Json.JsonConvert.SerializeObject(config.lifeCycle.fixedStep);
            m_properties["scenes"]             = Newtonsoft.Json.JsonConvert.SerializeObject(config.scenes);

            int y = DEFAULT_SEPARATOR;

            m_reloadButton = new MetroButton();
            MetroSkinManager.ApplyMetroStyle(m_reloadButton);
            m_reloadButton.Text   = "Reload config";
            m_reloadButton.Width  = Width;
            m_reloadButton.Top    = y;
            m_reloadButton.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            m_reloadButton.Click += m_reloadButton_Click;
            Controls.Add(m_reloadButton);
            y = m_reloadButton.Bottom + DEFAULT_SEPARATOR;

            m_saveButton = new MetroButton();
            MetroSkinManager.ApplyMetroStyle(m_saveButton);
            m_saveButton.Text   = "Save config";
            m_saveButton.Width  = Width;
            m_saveButton.Top    = y;
            m_saveButton.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            m_saveButton.Click += m_saveButton_Click;
            Controls.Add(m_saveButton);
            y = m_saveButton.Bottom + DEFAULT_SEPARATOR;

            m_saveAsButton = new MetroButton();
            MetroSkinManager.ApplyMetroStyle(m_saveAsButton);
            m_saveAsButton.Text   = "Save config as...";
            m_saveAsButton.Width  = Width;
            m_saveAsButton.Top    = y;
            m_saveAsButton.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            m_saveAsButton.Click += m_saveAsButton_Click;
            Controls.Add(m_saveAsButton);
            y = m_saveAsButton.Bottom + DEFAULT_SEPARATOR;

            m_windowColor        = new Color_PropertyEditor(m_properties, "windowColor");
            m_windowColor.Text   = "Window Color";
            m_windowColor.Width  = Width;
            m_windowColor.Top    = y;
            m_windowColor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(m_windowColor);
            m_windowColor.EditorJsonValueChangedCallback = this;
            y = m_windowColor.Bottom + DEFAULT_SEPARATOR;

            m_windowWidth        = new ParsablePropertyEditor <uint>(m_properties, "windowWidth");
            m_windowWidth.Text   = "Window Width";
            m_windowWidth.Width  = Width;
            m_windowWidth.Top    = y;
            m_windowWidth.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(m_windowWidth);
            m_windowWidth.EditorJsonValueChangedCallback = this;
            y = m_windowWidth.Bottom + DEFAULT_SEPARATOR;

            m_windowHeight        = new ParsablePropertyEditor <uint>(m_properties, "windowHeight");
            m_windowHeight.Text   = "Window Height";
            m_windowHeight.Width  = Width;
            m_windowHeight.Top    = y;
            m_windowHeight.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(m_windowHeight);
            m_windowHeight.EditorJsonValueChangedCallback = this;
            y = m_windowHeight.Bottom + DEFAULT_SEPARATOR;

            m_windowName        = new String_PropertyEditor(m_properties, "windowName");
            m_windowName.Text   = "Window Name";
            m_windowName.Width  = Width;
            m_windowName.Top    = y;
            m_windowName.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(m_windowName);
            m_windowName.EditorJsonValueChangedCallback = this;
            y = m_windowName.Bottom + DEFAULT_SEPARATOR;

            m_windowStyles        = new ArrayStylePropertyEditor(m_properties, "windowStyles");
            m_windowStyles.Text   = "Window Styles";
            m_windowStyles.Width  = Width;
            m_windowStyles.Top    = y;
            m_windowStyles.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(m_windowStyles);
            m_windowStyles.EditorJsonValueChangedCallback = this;
            y = m_windowStyles.Bottom + DEFAULT_SEPARATOR;

            m_lifeCycleFixedFps        = new ParsablePropertyEditor <float>(m_properties, "lifeCycleFixedFps");
            m_lifeCycleFixedFps.Text   = "Life Cycle Fixed Fps";
            m_lifeCycleFixedFps.Width  = Width;
            m_lifeCycleFixedFps.Top    = y;
            m_lifeCycleFixedFps.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(m_lifeCycleFixedFps);
            m_lifeCycleFixedFps.EditorJsonValueChangedCallback = this;
            y = m_lifeCycleFixedFps.Bottom + DEFAULT_SEPARATOR;

            m_lifeCycleFixedStep        = new ParsablePropertyEditor <float>(m_properties, "lifeCycleFixedStep");
            m_lifeCycleFixedStep.Text   = "Life Cycle Fixed Step";
            m_lifeCycleFixedStep.Width  = Width;
            m_lifeCycleFixedStep.Top    = y;
            m_lifeCycleFixedStep.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(m_lifeCycleFixedStep);
            m_lifeCycleFixedStep.EditorJsonValueChangedCallback = this;
            y = m_lifeCycleFixedStep.Bottom + DEFAULT_SEPARATOR;

            m_scenes        = new StringMapPathPropertyEditor(m_properties, "scenes", model == null ? null : model.WorkingDirectory + @"\" + model.ActiveTargetWorkingDirectory);
            m_scenes.Text   = "Scenes";
            m_scenes.Width  = Width;
            m_scenes.Top    = y;
            m_scenes.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
            Controls.Add(m_scenes);
            m_scenes.EditorJsonValueChangedCallback = this;
            y = m_scenes.Bottom + DEFAULT_SEPARATOR;

            m_windowColor.UpdateEditorValue();
            m_windowWidth.UpdateEditorValue();
            m_windowHeight.UpdateEditorValue();
            m_windowName.UpdateEditorValue();
            m_windowStyles.UpdateEditorValue();
            m_lifeCycleFixedFps.UpdateEditorValue();
            m_lifeCycleFixedStep.UpdateEditorValue();
            m_scenes.UpdateEditorValue();
        }