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); }
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(); }
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(); }