public LayoutPartPropertyGeneralPageViewModel(LayoutPartSize layoutPartSize)
		{
			_initialized = false;
			_layoutPartSize = layoutPartSize;
			UnitTypes = new ObservableCollection<GridUnitType>(Enum.GetValues(typeof(GridUnitType)).Cast<GridUnitType>());
			_initialized = true;
		}
Example #2
0
		public LayoutPartDescription(LayoutPartDescriptionGroup group, Guid uid, int index, string name, string description, string iconName = null, bool allowMultiple = true, LayoutPartSize size = null, IEnumerable<LayoutPartProperty> properties = null)
		{
			Group = group;
			UID = uid;
			Index = index;
			Name = name;
			Description = description;
			if (!string.IsNullOrEmpty(iconName))
				IconSource = IconPath + iconName;
			AllowMultiple = allowMultiple;
			Size = size ?? new LayoutPartSize()
			{
				PreferedSize = new Size(100, 100)
			};
			var list = new List<LayoutPartProperty>()
			{
				new LayoutPartProperty(LayoutPartPropertyAccess.GetOrSet, typeof(string), LayoutPartPropertyName.Title),
				new LayoutPartProperty(LayoutPartPropertyAccess.GetOrSet, typeof(int), LayoutPartPropertyName.Margin),
				new LayoutPartProperty(LayoutPartPropertyAccess.GetOrSet, typeof(Color), LayoutPartPropertyName.BackgroundColor),
				new LayoutPartProperty(LayoutPartPropertyAccess.GetOrSet, typeof(Color), LayoutPartPropertyName.BorderColor),
				new LayoutPartProperty(LayoutPartPropertyAccess.GetOrSet, typeof(int), LayoutPartPropertyName.BorderThickness),
			};
			if (properties != null)
				list.AddRange(properties);
			Properties = list;
		}
		public LayoutPartDescription()
		{
			Size = new LayoutPartSize()
			{
				PreferedSize = new Size(100, 100)
			};
		}
		public LayoutPartSize GetSize()
		{
			var document = GetLayoutDocument();
			var pair = GetLayoutPositionableElements(document);
			var layoutItem = LayoutDesignerViewModel.Instance.Manager.GetLayoutItemFromModel(document);
			var size = new LayoutPartSize();
			size.PreferedSize = LayoutPartDescriptionViewModel.LayoutPartDescription.Size.PreferedSize;
			size.Margin = (int)document.Margin;
			size.BackgroundColor = document.BackgroundColor;
			size.BorderColor = document.BorderColor;
			size.BorderThickness = document.BorderThickness;
			ReadSize(size, pair.First, layoutItem);
			ReadSize(size, pair.Second, layoutItem);
			ValidateSize(size);
			return size;
		}
		public void UpdateSize(LayoutPartSize layoutPartSize)
		{
			ValidateSize(layoutPartSize);
			var document = GetLayoutDocument();
			var pair = GetLayoutPositionableElements(document);
			var layoutItem = LayoutDesignerViewModel.Instance.Manager.GetLayoutItemFromModel(document);
			WriteSize(layoutPartSize, pair.First, layoutItem);
			WriteSize(layoutPartSize, pair.Second, layoutItem);
			document.Margin = layoutPartSize.Margin;
			document.BackgroundColor = layoutPartSize.BackgroundColor;
			document.BorderColor = layoutPartSize.BorderColor;
			document.BorderThickness = layoutPartSize.BorderThickness;
		}
		private void ValidateSize(LayoutPartSize size)
		{
			if (double.IsNaN(size.Width))
				size.Width = LayoutPartDescriptionViewModel.LayoutPartDescription.Size.Width;
			if (double.IsNaN(size.Height))
				size.Height = LayoutPartDescriptionViewModel.LayoutPartDescription.Size.Height;
		}
		private void WriteSize(LayoutPartSize size, ILayoutPositionableElement element, LayoutItem layoutItem)
		{
			if (element != null)
			{
				var container = (ILayoutOrientableGroup)element.Parent;
				switch (container.Orientation)
				{
					case Orientation.Horizontal:
						element.DockMinWidth = size.MinWidth;
						element.IsDockWidthFixed = size.IsWidthFixed;
						element.DockWidth = new GridLength(size.Width, size.WidthType);
						//layoutItem.View.Width = size.WidthType == GridUnitType.Auto ? (size.Width < size.MinWidth ? size.MinWidth : size.Width) : double.NaN;
						break;
					case Orientation.Vertical:
						element.DockMinHeight = size.MinHeight;
						element.IsDockHeightFixed = size.IsHeightFixed;
						element.DockHeight = new GridLength(size.Height, size.HeightType);
						//layoutItem.View.Height = size.HeightType == GridUnitType.Auto ? (size.Height < size.MinHeight?size.MinHeight:size.Height): double.NaN;
						break;
				}
			}
		}
		private void ReadSize(LayoutPartSize size, ILayoutPositionableElement element, LayoutItem layoutItem)
		{
			if (element != null)
			{
				var container = (ILayoutOrientableGroup)element.Parent;
				switch (container.Orientation)
				{
					case Orientation.Horizontal:
						size.MinWidth = element.DockMinWidth;
						size.IsWidthFixed = element.IsDockWidthFixed;
						size.WidthType = element.DockWidth.GridUnitType;
						//size.Width = element.DockWidth.IsAuto ? layoutItem.View.Width : element.DockWidth.Value;
						size.Width = element.DockWidth.Value;
						break;
					case Orientation.Vertical:
						size.MinHeight = element.DockMinHeight;
						size.IsHeightFixed = element.IsDockHeightFixed;
						size.HeightType = element.DockHeight.GridUnitType;
						//size.Height = element.DockHeight.IsAuto ? layoutItem.View.Height : element.DockHeight.Value;
						size.Height = element.DockHeight.Value;
						break;
				}
			}
		}
Example #9
0
		void ValidateSize(LayoutPartSize size)
		{
			if (double.IsNaN(size.Width))
				size.Width = LayoutPartDescriptionViewModel.LayoutPartDescription.Size.Width;
			if (double.IsNaN(size.Height))
				size.Height = LayoutPartDescriptionViewModel.LayoutPartDescription.Size.Height;
			if (size.HeightType == GridUnitType.Auto && size.Height == 0)
				size.Height = 1;
			if (size.WidthType == GridUnitType.Auto && size.Width == 0)
				size.Width = 1;
		}
Example #10
0
		void WriteSize(LayoutPartSize size, ILayoutPositionableElement element, LayoutItem layoutItem)
		{
			if (element != null)
			{
				var container = (ILayoutOrientableGroup)element.Parent;
				switch (container.Orientation)
				{
					case Orientation.Horizontal:
						element.DockMinWidth = size.MinWidth;
						element.IsDockWidthFixed = size.IsWidthFixed;
						element.DockWidth = new GridLength(size.Width, size.WidthType);
						break;
					case Orientation.Vertical:
						element.DockMinHeight = size.MinHeight;
						element.IsDockHeightFixed = size.IsHeightFixed;
						element.DockHeight = new GridLength(size.Height, size.HeightType);
						break;
				}
			}
		}