Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 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";
 }
Ejemplo n.º 3
0
 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();
     }
   }
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
 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);
   }
 }
Ejemplo n.º 7
0
 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);
 }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
0
 private void OnTemplateRemoved(ShapeTemplatesSet sender, ShapeTemplate template)
 {
   TreeNodeEx node = this.TemplatesNode.Nodes.FindFirstByText(template.Name);
   node.Remove();
 }
Ejemplo n.º 10
0
 private void OnTemplateAdded(ShapeTemplatesSet sender, ShapeTemplate template)
 {
   this.TemplatesNode.Nodes.Add(template.Name, template);
   if(this.SelectTemplateOnCreate)
   {
     this.ActiveTemplate = template;
   }
 }
Ejemplo n.º 11
0
 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();
   }
 }