示例#1
0
		public static void SetProperty(PlanCallbackData data)
		{
			lock (_lockPlan)
			{
				var planData = _cachePlan.FirstOrDefault(item => item.PlanUid == data.PlanUid && item.ElementUid == data.ElementUid && item.ElementPropertyType == data.ElementPropertyType);
				if (planData == null)
					_cachePlan.Add(data);
				else
				{
					planData.Value = data.Value;
					planData.LayoutFilter = data.LayoutFilter;
				}
			}
		}
示例#2
0
		public void Initialize()
		{
			_initialized = false;
			if (PlanTreeViewModel != null)
				PlanTreeViewModel.Initialize();
			_initialized = true;
			OnSelectedPlanChanged();

			if (PlanTreeViewModel != null)
			{
				foreach (var plan in PlanTreeViewModel.AllPlans)
				{
					foreach (var element in plan.Plan.AllElements)
					{
						foreach (var planElementBindingItem in element.PlanElementBindingItems)
						{
							var globalVariable = ProcedureExecutionContext.GlobalVariables.FirstOrDefault(x => x.Uid == planElementBindingItem.GlobalVariableUID);
							if (globalVariable != null)
							{
								globalVariable.ValueChanged += () =>
								{
									var planCallbackData = new PlanCallbackData()
									{
										ElementPropertyType = ElementPropertyType.BorderThickness,
										Value = globalVariable.IntValue,
										ElementUid = element.UID,
										PlanUid = plan.Plan.UID
									};
									SetPlanProperty(planCallbackData);
								};
							}
						}
					}
				}
			}
		}
示例#3
0
		void GetPlanProperty(PlanCallbackData data)
		{
			var value = new object();
			var element = GetElement(data);
			if (element != null)
			{
				var elementRectangle = element as ElementBaseRectangle;
				if (elementRectangle != null)
					switch (data.ElementPropertyType)
					{
						case ElementPropertyType.Height:
							value = Convert.ToInt32(elementRectangle.Height);
							break;
						case ElementPropertyType.Width:
							value = Convert.ToInt32(elementRectangle.Width);
							break;
					}
				var elementText = element as IElementTextBlock;
				if (elementText != null)
					switch (data.ElementPropertyType)
					{
						case ElementPropertyType.FontBold:
							value = elementText.FontBold;
							break;
						case ElementPropertyType.FontItalic:
							value = elementText.FontItalic;
							break;
						case ElementPropertyType.FontSize:
							value = Convert.ToInt32(elementText.FontSize);
							break;
						case ElementPropertyType.ForegroundColor:
							value = elementText.ForegroundColor;
							break;
						case ElementPropertyType.Stretch:
							value = elementText.Stretch;
							break;
						case ElementPropertyType.Text:
							value = elementText.Text;
							break;
						case ElementPropertyType.WordWrap:
							value = elementText.WordWrap;
							break;
					}
				switch (data.ElementPropertyType)
				{
					case ElementPropertyType.IsVisible:
						value = !element.IsHidden;
						break;
					case ElementPropertyType.IsEnabled:
						value = !element.IsLocked;
						break;
					case ElementPropertyType.Color:
						value = element.BorderColor;
						break;
					case ElementPropertyType.BackColor:
						value = element.BackgroundColor;
						break;
					case ElementPropertyType.BorderThickness:
						value = Convert.ToInt32(element.BorderThickness);
						break;
					case ElementPropertyType.Left:
						value = Convert.ToInt32(element.GetPosition().X);
						break;
					case ElementPropertyType.Top:
						value = Convert.ToInt32(element.GetPosition().Y);
						break;
				}
			}
			data.Value = value;
		}
示例#4
0
		private ElementBase GetElement(PlanCallbackData data)
		{
			var plan = PlanTreeViewModel == null ? (PlanDesignerViewModel.Plan.UID == data.PlanUid ? PlanDesignerViewModel.PlanViewModel : null) : PlanTreeViewModel.FindPlan(data.PlanUid);
			if (plan == null)
				return null;
			return plan.Plan.AllElements.FirstOrDefault(x => x.UID == data.ElementUid);
		}
示例#5
0
		private void SetPlanProperty(PlanCallbackData data)
		{
			var element = GetElement(data);
			if (element == null)
				return;
			switch (data.ElementPropertyType)
			{
				case ElementPropertyType.IsVisible:
					element.IsHidden = !Utils.Cast<bool>(data.Value);
					break;
				case ElementPropertyType.IsEnabled:
					element.IsLocked = !Utils.Cast<bool>(data.Value);
					break;
				case ElementPropertyType.Color:
					element.BorderColor = Utils.Cast<Color>(data.Value).ToRubezhColor();
					break;
				case ElementPropertyType.BackColor:
					element.BackgroundColor = Utils.Cast<RubezhAPI.Color>(data.Value);
					break;
				case ElementPropertyType.BorderThickness:
					element.BorderThickness = Convert.ToDouble(data.Value);
					break;
				case ElementPropertyType.Left:
					element.SetPosition(new System.Windows.Point(Convert.ToDouble(data.Value), element.GetPosition().Y));
					break;
				case ElementPropertyType.Top:
					element.SetPosition(new System.Windows.Point(element.GetPosition().X, Convert.ToDouble(data.Value)));
					break;
			}
			var elementRectangle = element as ElementBaseRectangle;
			if (elementRectangle != null)
				switch (data.ElementPropertyType)
				{
					case ElementPropertyType.Height:
						elementRectangle.Height = Convert.ToDouble(data.Value);
						break;
					case ElementPropertyType.Width:
						elementRectangle.Width = Convert.ToDouble(data.Value);
						break;
				}
			var elementText = element as IElementTextBlock;
			if (elementText != null)
				switch (data.ElementPropertyType)
				{
					case ElementPropertyType.FontBold:
						elementText.FontBold = Convert.ToBoolean(data.Value);
						break;
					case ElementPropertyType.FontItalic:
						elementText.FontItalic = Convert.ToBoolean(data.Value);
						break;
					case ElementPropertyType.FontSize:
						elementText.FontSize = Convert.ToDouble(data.Value);
						break;
					case ElementPropertyType.ForegroundColor:
						elementText.ForegroundColor = Utils.Cast<Color>(data.Value).ToRubezhColor();
						break;
					case ElementPropertyType.Stretch:
						elementText.Stretch = Convert.ToBoolean(data.Value);
						break;
					case ElementPropertyType.Text:
						elementText.Text = Convert.ToString(data.Value);
						break;
					case ElementPropertyType.WordWrap:
						elementText.WordWrap = Convert.ToBoolean(data.Value);
						break;
				}
			ApplicationService.Invoke(() =>
			{
				var presenterItem = PlanDesignerViewModel.PresenterItems.FirstOrDefault(item => item.Element == element);
				if (presenterItem != null)
				{
					presenterItem.InvalidatePainter();
					presenterItem.DesignerCanvas.Refresh();
				}
			});
		}