public ShapeTemplate(ShapeTemplate shapeTemplate) : this(shapeTemplate.Name, shapeTemplate.PropertiesFilepath) { this.Backgroud = shapeTemplate.Backgroud; this.Color = shapeTemplate.Color; this.EditableColor = shapeTemplate.EditableColor; }
private static void LoadBaseTemplate(DataElement node, ShapeTemplate template) { string colorStr = node.GetAttribValue("color"); string backgroudStr = node.GetAttribValue("background"); template.Color = Color.FromArgb(int.Parse(colorStr)); template.Backgroud = bool.Parse(backgroudStr); string editableColorStr = node.GetAttribValue("editable_color"); if(editableColorStr != null) { template.EditableColor = bool.Parse(editableColorStr); } DataElement circlesEl = node.GetChild("circles"); List<ShapeCircle> allCircles = template.RootCircle.AllCircles; int index = 0; foreach(DataElement circleEl in circlesEl.CollectChildren("circle")) { string positionStr = circleEl.GetAttribValue("position"); string radiusStr = circleEl.GetAttribValue("radius"); string angleStr = circleEl.GetAttribValue("angle"); ShapeCircle circle = allCircles[index]; circle.Position = Vector2f.Parse(positionStr); circle.Radius = float.Parse(radiusStr); circle.Angle = float.Parse(angleStr); ++index; } DataElement circlesSettingsEl = node.GetChild("circles_settings"); index = 0; foreach(DataElement circleSettingsEl in circlesSettingsEl.CollectChildren("settings")) { ShapeTemplate.ShapeCircleSettings settings = template.PerCircleSettings[index]; string enableOffsetStr = circleSettingsEl.GetAttribValue("enable_offset"); string enableRotateStr = circleSettingsEl.GetAttribValue("enable_rotate"); settings.EnableOffset = bool.Parse(enableOffsetStr); settings.EnableRotate = bool.Parse(enableRotateStr); ++index; } }
private static void SaveBaseTemplate(DataElement node, string folder, ShapeTemplate template) { node.CreateAttribute("name", template.Name); node.CreateAttribute("color", template.Color.ToArgb().ToString()); node.CreateAttribute("editable_color", template.EditableColor.ToString()); node.CreateAttribute("background", template.Backgroud.ToString()); DataElement circlesEl = node.CreateChild("circles"); foreach(ShapeCircle circle in template.RootCircle.AllCircles) { DataElement circleEl = circlesEl.CreateChild("circle"); circleEl.CreateAttribute("position", circle.Position.ToString()); circleEl.CreateAttribute("radius", circle.Radius.ToString()); circleEl.CreateAttribute("angle", circle.Angle.ToString()); } DataElement circlesSettingsEl = node.CreateChild("circles_settings"); foreach(ShapeTemplate.ShapeCircleSettings settings in template.PerCircleSettings) { DataElement circleSettingsEl = circlesSettingsEl.CreateChild("settings"); circleSettingsEl.CreateAttribute("enable_offset", settings.EnableOffset.ToString()); circleSettingsEl.CreateAttribute("enable_rotate", settings.EnableRotate.ToString()); } if(!string.IsNullOrEmpty(template.PropertiesFilepath)) { string relPropertiesFilepath = DirMethods.EvaluateRelativePath(folder, template.PropertiesFilepath); node.CreateAttribute("rel_properties_filepath", relPropertiesFilepath); } }
private void HandleTemplateChanged(ShapeTemplate sender) { InvalidateView(); }
private void OnActiveTemplateChanged(IEditor sender, ShapeTemplate previous) { if(previous != null) { TreeNodeEx node = this.TemplatesNode.Nodes.FindFirstByText(previous.Name); node.BackColor = node.BackDefaultColor; } if(this.ActiveTemplate != null) { TreeNodeEx node = this.TemplatesNode.Nodes.FindFirstByText(this.ActiveTemplate.Name); node.Select(); node.BackColor = Color.Yellow; } else { m_TemplatesTreeView.SelectedNode = null; } }
private void OnTemplateRemoved(ShapeTemplatesSet sender, ShapeTemplate template) { TreeNodeEx node = this.TemplatesNode.Nodes.FindFirstByText(template.Name); node.Remove(); }
private void OnTemplateAdded(ShapeTemplatesSet sender, ShapeTemplate template) { this.TemplatesNode.Nodes.Add(template.Name, template); if(this.SelectTemplateOnCreate) { this.ActiveTemplate = template; } }
protected ShapeCircle CloneRootCircle(ShapeTemplate owner, ISceneView sceneView) { ShapeCircle clone = new ShapeCircle(owner, this.RootCircle.Transform.Clone(), sceneView); foreach(ShapeCircle circle in this.RootCircle.Children) { CloneCircle(circle, clone); } return clone; }
protected ShapeCircle CloneRootCircle(ShapeTemplate owner) { return CloneRootCircle(owner, this.RootCircle.SceneView); }
private void RemoveTemplate(ShapeTemplate template) { ReplaceTemplate(template, null); }
private void ReplaceTemplate(ShapeTemplate template, ShapeTemplate newTemplate) { m_TemplatesListBox.Objects.Replace(template, newTemplate); if(this.Templates.Contains(template)) { m_OldNewTemplateMap[template] = newTemplate; } else { foreach(KeyValuePair<ShapeTemplate, ShapeTemplate> kvp in m_OldNewTemplateMap) { if(kvp.Value == template) { m_OldNewTemplateMap[kvp.Key] = newTemplate; break; } } } }
private void AddTemplate(ShapeTemplate template) { m_TemplatesListBox.Items.Add(template.Name, template); this.Template = template; }
private bool RenameShapeTemplate(ShapeTemplate shapeTemplate, string name) { CheckValueCorrectnessDelegate checker = CreateTemplateNameChecker(shapeTemplate.Name); if(checker(name) == null) { shapeTemplate.Name = name; if(this.Template == shapeTemplate) { m_NameTextBox.Text = name; m_TemplatesListBox.SelectedItem.Text = name; } return true; } return false; }
private void OnActiveTemplateChanged(IEditor sender, ShapeTemplate previous) { Invalidate(); if(this.ActiveTemplate != null) { this.SelectedShape = null; } }