public static void SaveShapeTemplates(ShapeTemplatesSet templates, string filepath) { string folder = Directory.GetParent(filepath).FullName; Document document = new Document("root"); DataElement templatesEl = document.RootElement.CreateChild("templates"); foreach(ShapeTemplate template in templates) { if(template is CircleTemplate) { SaveTemplate(templatesEl.CreateChild("circle"), folder, (CircleTemplate)template); } else if(template is ImageTemplate) { SaveTemplate(templatesEl.CreateChild("image"), folder, (ImageTemplate)template); } else if(template is RectTemplate) { SaveTemplate(templatesEl.CreateChild("rect"), folder, (RectTemplate)template); } else { throw new ArgumentException(); } } document.Save(filepath); }
public Scene(ScenesSet scenesSet, ShapeTemplatesSet shapeTemplatesSet, ISceneView sceneView) { m_ScenesSet = scenesSet; m_ShapeTemplatesSet = shapeTemplatesSet; m_SceneView = sceneView; m_Size = Settings.DefaultSceneSize; m_Shapes = new List<Shape>(); this.UserPropertiesFilepath = "SceneProperties.xml"; }
public static void OpenTemplates(ShapeTemplatesSet templates, string filepath) { string folder = Directory.GetParent(filepath).FullName; templates.RemoveAllTemplates(); Document document = Document.CreateFromFile(filepath); DataElement templatesEl = document.RootElement.GetChild("templates"); foreach(DataElement templateEl in templatesEl.Children) { switch(templateEl.Name) { case "circle": CreateCircleTemplate(templateEl, folder, templates); break; case "image": CreateImageTemplate(templateEl, folder, templates); break; case "rect": CreateRectTemplate(templateEl, folder, templates); break; default: throw new ArgumentException(); } } }
public static ScenesSet OpenScenes(ISceneView sceneView, string filepath, out string templatesFilepath) { Document document = Document.CreateFromFile(filepath); DataElement templatesEl = document.RootElement.GetChild("templates"); templatesFilepath = templatesEl.GetAttribValue("filepath"); while(!File.Exists(templatesFilepath)) { DialogResult dialogResult = MessageBox.Show("Would you like to select correct one?", "No template descriptor", MessageBoxButtons.YesNo, MessageBoxIcon.Error); if(dialogResult == DialogResult.Yes) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.DefaultExt = "template"; openFileDialog.Filter = "Template (*.Template)|*.Template"; openFileDialog.RestoreDirectory = true; if(openFileDialog.ShowDialog() == DialogResult.OK) { templatesFilepath = openFileDialog.FileName; } } else { return null; /* canceled by user */ } } ShapeTemplatesSet templates = new ShapeTemplatesSet(); OpenTemplates(templates, templatesFilepath); ScenesSet scenes = new ScenesSet(templates, sceneView); DataElement scenesContainer = document.RootElement.GetChild("scenes"); foreach(DataElement sceneElement in scenesContainer.CollectChildren("scene")) { string name = sceneElement.GetAttribValue("name"); Scene scene = scenes.CreateScene(name); LoadScene(sceneElement, scene, templates); } return scenes; }
private static void LoadShape(DataElement node, Shape shape, ShapeTemplatesSet templates) { string templateName = node.GetAttribValue("template_name"); ShapeTemplate template = templates.FindTemplate(templateName); shape.Template = template; shape.ZOrder = float.Parse(node.GetAttribValue("z_order")); string colorStr = node.GetAttribValue("color"); if(colorStr != null) { shape.Color = Color.FromArgb(int.Parse(colorStr)); } if(shape.EditableColor) { node.CreateAttribute("color", shape.Color.ToArgb().ToString()); } DataElement circlesEl = node.GetChild("circles"); IList<DataElement> circleElList = circlesEl.CollectChildren("circle"); IList<ShapeCircle> circles = shape.Circles; for(int index = 0; index < circleElList.Count; ++index) { DataElement circleEl = circleElList[index]; ShapeCircle circle = circles[index]; LoadShapeCircle(circleEl, circle); } DataElement userPropertiesEl = node.GetChild("user_properties"); LoadUserProperties(userPropertiesEl, shape); }
private static void LoadScene(DataElement sceneElement, Scene scene, ShapeTemplatesSet templates) { scene.Size = Vector2f.Parse(sceneElement.GetAttribValue("size")); DataElement shapesEl = sceneElement.GetChild("shapes"); foreach(DataElement shapeEl in shapesEl.CollectChildren("shape")) { string name = shapeEl.GetAttribValue("name"); Shape shape = scene.CreateShape(name); LoadShape(shapeEl, shape, templates); } DataElement propertiesContainer = sceneElement.GetChild("properties"); if(propertiesContainer != null) { LoadUserProperties(propertiesContainer, scene); } }
private static void CreateRectTemplate(DataElement node, string folder, ShapeTemplatesSet templates) { TemplateBaseInfo info = LoadTemplateBaseInfo(node, folder); RectTemplate template = templates.CreateRectTemplate(info.name, info.propertiesFilepath); LoadRectTemplate(node, template); }
private static void CreateImageTemplate(DataElement node, string folder, ShapeTemplatesSet templates) { TemplateBaseInfo info = LoadTemplateBaseInfo(node, folder); ImageTemplate template = templates.CreateImageTemplate(info.name, info.propertiesFilepath); string relDiffuseFilepath = node.GetAttribValue("rel_diffuse_filepath"); template.DiffuseFilepath = DirMethods.EvaluateAbsolutePath(folder, relDiffuseFilepath); LoadRectTemplate(node, template); }
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; } }
public void CreateScenes(ISceneView sceneView) { if(DoBeforeCloseActions()) { ScenesSet previous = this.Scenes; this.ScenesFilepath = null; m_TemplatesFilepath = null; ShapeTemplatesSet templatesSet = new ShapeTemplatesSet(); this.Scenes = new ScenesSet(templatesSet, sceneView); NotifyNewScenes(previous); History.ResetChanges(); } }