Ejemplo n.º 1
0
        public static Project LoadProject(string prjFile)
        {
            try
            {
                Project     project = new Project();
                XmlDocument xmlDoc  = new XmlDocument();
                xmlDoc.Load(prjFile);

                XmlNode     nodeRegions = xmlDoc.SelectSingleNode("./Regions");
                XmlNodeList regions     = nodeRegions.SelectNodes("./Region");
                for (int i = 0; i < regions.Count; i++)
                {
                    XmlNode nodeRegion = regions[i];

                    AniRegion region = LoadRegion(nodeRegion);

                    LoadRegionControls(nodeRegion, region);

                    project.AddRegion(region);
                }

                return(project);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Ejemplo n.º 2
0
        private void CreateRegion(IAniRegion aniRegion)
        {
            AniRegion newRegion = Activator.CreateInstance(aniRegion.GetType()) as AniRegion;

            newRegion.OnSelectedControlChanged = (sender, e) =>
            {
                this.lstProperties.SelectedObject = e.SelectedControl;
            };
            newRegion.MouseDoubleClick += newRegion_MouseDoubleClick;

            newRegion.RegionName = string.Format("region{0}", this.tabRegions.Items.Count + 1);
            ScrollViewer scrollViewer = new ScrollViewer();

            scrollViewer.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;
            scrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
            scrollViewer.Height  = this.tabRegions.Height;
            scrollViewer.Content = newRegion;
            TabItem tabItem = new TabItem();

            tabItem.Header  = newRegion.RegionName;
            tabItem.Content = scrollViewer;

            SetNewCreateRegionSize(newRegion);

            this.UserRegions.Insert(0, newRegion);
            CurrentProject.InsertRegion(0, newRegion);

            tabRegions.SelectedItem = tabItem;
            this.CurrentRegion      = newRegion;
        }
Ejemplo n.º 3
0
        private static void SaveRegionProperties(AniRegion region, XmlNode nodeRegion)
        {
            XmlAttribute xmlAttrAssembly = nodeRegion.OwnerDocument.CreateAttribute("Assembly");

            xmlAttrAssembly.Value = region.GetType().Assembly.FullName;
            nodeRegion.Attributes.Append(xmlAttrAssembly);

            XmlAttribute xmlAttrTypeName = nodeRegion.OwnerDocument.CreateAttribute("TypeName");

            xmlAttrTypeName.Value = region.GetType().Name;
            nodeRegion.Attributes.Append(xmlAttrTypeName);

            foreach (PropertyInfo p in region.GetType().GetProperties())
            {
                if (null != p.GetCustomAttribute(typeof(AniBox.Framework.Attributes.AniPropertyAttribute), true))
                {
                    XmlAttribute xmlAttr = nodeRegion.OwnerDocument.CreateAttribute(p.Name);
                    Object       prop    = p.GetValue(region);
                    if (null != prop)
                    {
                        xmlAttr.Value = prop.ToString();
                    }
                    else
                    {
                        xmlAttr.Value = "";
                    }
                    nodeRegion.Attributes.Append(xmlAttr);
                }
            }
        }
Ejemplo n.º 4
0
        private void AddRegionXmlNode(XmlNode nodeRegions, AniRegion region)
        {
            XmlNode nodeRegion = nodeRegions.OwnerDocument.CreateElement("Region");

            nodeRegions.AppendChild(nodeRegion);

            SaveRegionProperties(region, nodeRegion);

            SaveRegionControls(region, nodeRegion);
        }
Ejemplo n.º 5
0
 private void SetNewCreateRegionSize(AniRegion newRegion)
 {
     if (UserRegions.Count > 0)
     {
         newRegion.RegionWidth  = UserRegions[0].RegionWidth;
         newRegion.RegionHeight = UserRegions[0].RegionHeight;
     }
     else
     {
         newRegion.RegionWidth  = tabRegions.ActualWidth;
         newRegion.RegionHeight = tabRegions.ActualHeight;
     }
 }
Ejemplo n.º 6
0
        private static void SaveRegionControls(AniRegion region, XmlNode nodeRegion)
        {
            XmlNode nodeControls = nodeRegion.OwnerDocument.CreateElement("Controls");

            nodeRegion.AppendChild(nodeControls);

            foreach (AniControl control in region.AniControls)
            {
                XmlNode nodeControl = nodeControls.OwnerDocument.CreateElement("Control");

                SaveControlProperties(control, nodeControl);

                nodeControls.AppendChild(nodeControl);
            }
        }
Ejemplo n.º 7
0
        private void CalculateRegionsLayoutSize(out double width, out double height)
        {
            width  = 0;
            height = 0;
            for (int i = 0; i < UserRegions.Count; i++)
            {
                AniRegion region = UserRegions[i];
                if (region.XScreenPos + region.RegionWidth > width)
                {
                    width = region.XScreenPos + region.RegionWidth;
                }

                if (region.YScreenPos + region.RegionHeight > height)
                {
                    height = region.YScreenPos + region.RegionHeight;
                }
            }
        }
Ejemplo n.º 8
0
        private static AniRegion LoadRegion(XmlNode nodeRegion)
        {
            string regionName   = nodeRegion.Attributes["TypeName"].Value;
            string assemblyName = nodeRegion.Attributes["Assembly"].Value;
            Type   type         = FindType(assemblyName, regionName);

            if (null == type)
            {
                return(null);
            }
            AniRegion region = Activator.CreateInstance(type) as AniRegion;

            foreach (XmlAttribute attr in nodeRegion.Attributes)
            {
                SetObjectProperty(region, attr);
            }
            return(region);
        }
Ejemplo n.º 9
0
        private static void LoadRegionControls(XmlNode nodeRegion, AniRegion regionObj)
        {
            if (null == regionObj)
            {
                return;
            }
            XmlNodeList nodeControls = nodeRegion.SelectNodes("./Controls/Control");

            for (int i = 0; i < nodeControls.Count; i++)
            {
                XmlNode    nodeControl = nodeControls[i];
                AniControl control     = LoadControl(nodeControl);
                if (null != control)
                {
                    regionObj.AniControls.Add(control);
                }
            }
        }
Ejemplo n.º 10
0
        private RegionsScreen MoveRegionsToScreenWindow(double screenTotalWidth, double screenTotalHeight)
        {
            RegionsScreen screen = new RegionsScreen();

            screen.KeyDown += screen_KeyDown;
            screen.Width    = screenTotalWidth;
            screen.Height   = screenTotalHeight;

            for (int i = 0; i < UserRegions.Count; i++)
            {
                AniRegion    region    = UserRegions[i];
                ScrollViewer container = region.Parent as ScrollViewer;
                if (!_regionOriHostRel.ContainsKey(region))
                {
                    _regionOriHostRel.Add(region, container);
                }
                container.Content = null;
                screen.myCanvas.Children.Add(region);
                Canvas.SetTop(region, region.YScreenPos);
                Canvas.SetLeft(region, region.XScreenPos);
            }

            return(screen);
        }
Ejemplo n.º 11
0
 public void InsertRegion(int pos, AniRegion region)
 {
     _regions.Insert(pos, region);
 }
Ejemplo n.º 12
0
 public void AddRegion(AniRegion region)
 {
     _regions.Add(region);
 }