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); } }
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; }
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); } } }
private void AddRegionXmlNode(XmlNode nodeRegions, AniRegion region) { XmlNode nodeRegion = nodeRegions.OwnerDocument.CreateElement("Region"); nodeRegions.AppendChild(nodeRegion); SaveRegionProperties(region, nodeRegion); SaveRegionControls(region, nodeRegion); }
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; } }
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); } }
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; } } }
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); }
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); } } }
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); }
public void InsertRegion(int pos, AniRegion region) { _regions.Insert(pos, region); }
public void AddRegion(AniRegion region) { _regions.Add(region); }