Пример #1
0
 /// <summary>
 /// Загрузка изображения.
 /// </summary>
 /// <param name="sign">Идентификатор сущности.</param>
 public void LoadImage(EntitySign sign)
 {
     using (var ec = new EntityController())
     {
         var parentLocation = ec.GetParentLocation(sign);
         if (parentLocation.GetSign() == ((EntitySign)Tag))// В теге хранится текущий идентификатор помещения на плане.
         {
             return;
         }
         Tag = parentLocation.GetSign();
         var byteImage = parentLocation.Plan;
         Controls.Clear();
         this.SuspendDrawing();
         if (byteImage == null)
         {
             Image = null;
         }
         else
         {
             Image = Image.FromStream(new MemoryStream(byteImage));
             ResizeRelativePosition();
             var drawEquipment = ec.GetDrawEquipment(parentLocation);
             var sizeIcons     = GetSizeIcons();
             foreach (var eq in drawEquipment)
             {
                 new IconOnPlan(this, eq.GetSign(), sizeIcons, eq.Point, IconsGetter.GetIconImage(eq.GetType()), eq.ToString());
             }
         }
         this.ResumeDrawing();
     }
 }
Пример #2
0
        /// <summary>
        /// Возвращает родительское помещение.
        /// </summary>
        public Location GetParentLocation(EntitySign sign)
        {
            var entity = GetEntity(sign) as Hierarchy;

            if (entity == null)
            {
                return(null);
            }
            return((entity).GetLocation);
        }
Пример #3
0
        /// <summary>
        /// Удаляет сущность.
        /// </summary>
        public void RemoveEntity(EntitySign sign)
        {
            var entity = GetEntity(sign);

            if (sign.Type.IsSubclassOf(typeof(KindBase)))
            {
                if (((KindBase)entity).Childs.Count != 0)//Не используем каскадное удаление
                {
                    MessageBox.Show("Существует инвентарь с этим типом");
                    return;
                }
            }
            Set(sign.Type).Remove(entity);
        }
Пример #4
0
        /// <summary>
        /// Добавить новую иконку на план при перетаскивании.
        /// </summary>
        /// <param name="e"></param>
        /// <param name="sign">Идентификатор сущности.</param>
        /// <returns></returns>
        private IconOnPlan AddNewIcon(DragEventArgs e, EntitySign sign)
        {
            IconOnPlan icon;
            string     textIcon;

            using (var ec = new EntityController())
            {
                var entity = ec.GetEntity(sign) as Equipment;
                textIcon = entity.ToString();
            }
            this.SuspendDrawing();
            icon = new IconOnPlan(this, sign, GetSizeIcons(), new ScalePoint(new Point(e.X, e.Y), this), IconsGetter.GetIconImage(sign.Type), textIcon);
            this.ResumeDrawing();
            return(icon);
        }
Пример #5
0
 /// <summary>
 /// Найти иконку по идентификатору.
 /// </summary>
 /// <param name="sign">Идентификатор сущности.</param>
 /// <returns></returns>
 private IconOnPlan FindIcon(EntitySign sign) => GetIcons().SingleOrDefault(i => i.Sign == sign);
Пример #6
0
        /// <summary>
        /// Удалить иконку с плана.
        /// </summary>
        /// <param name="removeSign">Идентификатор.</param>
        public void RemoveIcon(EntitySign removeSign)
        {
            var icon = GetIcons().FirstOrDefault(i => i.Sign == removeSign);

            icon?.Dispose();
        }
Пример #7
0
 /// <summary>Возвращает сущность по его метке.
 /// Второй параметр NoTracking.
 /// </summary>
 public EntityBase GetEntity(EntitySign sign)
 {
     Set(sign.Type).Load();
     return((EntityBase)Set(sign.Type).Find(sign.Id));
 }