Exemple #1
0
        /// <summary>
        /// Вставить компоненты схемы из буфера обмена
        /// </summary>
        public bool PasteFromClipboard(int x, int y)
        {
            try
            {
                if (SchemeView == null)
                {
                    throw new ScadaException(Localization.UseRussian ?
                                             "Схема не загружена." :
                                             "Scheme is not loaded.");
                }

                lock (SchemeView.SyncRoot) lock (clipboard) lock (selComponents)
                        {
                            selComponents.Clear();
                            History.BeginPoint();

                            foreach (BaseComponent srcComponent in clipboard)
                            {
                                BaseComponent newComponent = srcComponent.Clone();
                                newComponent.ID       = SchemeView.GetNextComponentID();
                                newComponent.Location = new Point(newComponent.Location.X + x, newComponent.Location.Y + y);

                                SchemeView.Components[newComponent.ID] = newComponent;
                                SchemeView.SchemeDoc.OnItemChanged(SchemeChangeTypes.ComponentAdded, newComponent);
                                selComponents.Add(newComponent);
                            }

                            History.EndPoint();
                        }

                OnSelectionChanged();
                PointerMode = PointerModes.Select;
                return(true);
            }
            catch (ScadaException ex)
            {
                log.WriteError(string.Format(Localization.UseRussian ?
                                             "Ошибка при вставке компонентов схемы из буфера обмена: {0}" :
                                             "Error pasting scheme components from clipboard: {0}", ex.Message));
                return(false);
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при вставке компонентов схемы из буфера обмена" :
                                   "Error pasting scheme components from clipboard");
                return(false);
            }
        }
Exemple #2
0
        /// <summary>
        /// Создать компонент схемы
        /// </summary>
        public bool CreateComponent(int x, int y)
        {
            try
            {
                // проверка возможности создания компонента
                if (SchemeView == null)
                {
                    throw new ScadaException(Localization.UseRussian ?
                                             "Схема не загружена." :
                                             "Scheme is not loaded.");
                }

                if (string.IsNullOrEmpty(NewComponentTypeName))
                {
                    throw new ScadaException(Localization.UseRussian ?
                                             "Не определён тип создаваемого компонента." :
                                             "Type of the creating component is not defined.");
                }

                // создание компонента
                BaseComponent component = compManager.CreateComponent(NewComponentTypeName);

                if (component == null)
                {
                    return(false);
                }
                else
                {
                    component.ID           = SchemeView.GetNextComponentID();
                    component.Location     = new Point(x, y);
                    component.SchemeView   = SchemeView;
                    component.ItemChanged += Scheme_ItemChanged;

                    // добавление компонента на схему
                    lock (SchemeView.SyncRoot)
                    {
                        SchemeView.Components[component.ID] = component;
                    }

                    SchemeView.SchemeDoc.OnItemChanged(SchemeChangeTypes.ComponentAdded, component);

                    // выбор добавленного компонента
                    lock (selComponents)
                    {
                        selComponents.Clear();
                        selComponents.Add(component);
                    }

                    OnSelectionChanged();
                    PointerMode = PointerMode.Select;
                    return(true);
                }
            }
            catch (ScadaException ex)
            {
                log.WriteError(string.Format(Localization.UseRussian ?
                                             "Ошибка при создании компонента схемы: {0}" :
                                             "Error creating scheme component: {0}", ex.Message));
                return(false);
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при создании компонента схемы" :
                                   "Error creating scheme component");
                return(false);
            }
        }