Beispiel #1
0
        private volatile SchemeView.SchemeChange schemeChange; // изменение схемы


        /// <summary>
        /// Конструктор
        /// </summary>
        public EditorData()
        {
            schemeChange = null;

            ClientID = "";
            FileName = "";
            Modified = false;
            SchemeView = new SchemeView();
            AddedElement = null;
            CursorPosition = Point.Empty;
            SelectElement = null;
            SetFormTitle = null;
        }
Beispiel #2
0
        private void btnDel_Click(object sender, EventArgs e)
        {
            // удаление изображения из словаря изображений схемы
            ImageInfo imageInfo = lbImages.SelectedItem as ImageInfo;
            int selInd = lbImages.SelectedIndex;

            if (imageInfo != null)
            {
                imageDict.Remove(imageInfo.Name);
                lbImages.Items.RemoveAt(selInd);
                int itemCnt = lbImages.Items.Count;
                if (itemCnt > 0)
                    lbImages.SelectedIndex = selInd < itemCnt ? selInd : itemCnt - 1;

                // создание объекта для передачи изменений
                SchemeView.SchemeChange change = new SchemeView.SchemeChange(SchemeView.ChangeType.ImageDeleted);
                change.ImageOldName = imageInfo.Name;
                editorData.TrySetSchemeChange(change);
                editorData.SetFormTitle();
                StartWaitForChange();
            }

            propGrid.Select();
        }
Beispiel #3
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            // добавление изображения в словарь изображений схемы
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    SchemeView.Image image = new SchemeView.Image();
                    string name = Path.GetFileName(openFileDialog.FileName);
                    image.Name = imageDict.ContainsKey(name) ? "image" + (imageDict.Count + 1) : name;

                    using (FileStream fileStream = new FileStream(
                        openFileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    {
                        image.Data = new byte[fileStream.Length];
                        fileStream.Read(image.Data, 0, image.Data.Length);
                    }

                    ImageInfo imageInfo = new ImageInfo(image, ImageNameIsUnique);
                    imageDict.Add(image.Name, image);
                    lbImages.SelectedIndex = lbImages.Items.Add(imageInfo);

                    // создание объекта для передачи изменений
                    SchemeView.SchemeChange change = new SchemeView.SchemeChange(SchemeView.ChangeType.ImageAdded);
                    change.Image = image;
                    editorData.TrySetSchemeChange(change);
                    editorData.SetFormTitle();
                    StartWaitForChange();
                }
                catch (Exception ex)
                {
                    ScadaUiUtils.ShowError(SchemePhrases.LoadImageError + ":\n" + ex.Message);
                }
            }
        }
Beispiel #4
0
        private void propGrid_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
        {
            // обновление наименования изображения
            if (e.ChangedItem.PropertyDescriptor.Name == "Name")
            {
                string oldName = (string)e.OldValue;
                string newName = (string)e.ChangedItem.Value;

                if (oldName != newName)
                {
                    // изменение наименования изображения
                    ImageInfo imageInfo = lbImages.SelectedItem as ImageInfo;
                    imageInfo.Name = newName;
                    imageInfo.Image.Name = newName;

                    // обновление словаря изображений схемы
                    imageDict.Remove(oldName);
                    imageDict.Add(newName, imageInfo.Image);

                    // обновление списка изображений на форме
                    lbImages.SelectedIndexChanged -= lbImage_SelectedIndexChanged;
                    lbImages.BeginUpdate();

                    lbImages.Items.RemoveAt(lbImages.SelectedIndex);
                    lbImages.SelectedIndex = lbImages.Items.Add(imageInfo);
                    
                    lbImages.EndUpdate();
                    lbImages.SelectedIndexChanged += lbImage_SelectedIndexChanged;

                    // создание объекта для передачи изменений
                    SchemeView.SchemeChange change = new SchemeView.SchemeChange(SchemeView.ChangeType.ImageRenamed);
                    change.ImageOldName = oldName;
                    change.ImageNewName = newName;
                    editorData.TrySetSchemeChange(change);
                    editorData.SetFormTitle();
                    StartWaitForChange();
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// Выбрать элемент схемы
        /// </summary>
        public void SelectElement(string clientID, int elementID, int clickX, int clickY)
        {
            SchemeApp schemeApp = SchemeApp.GetSchemeApp();
            EditorData editorData = schemeApp.EditorData;

            if (schemeApp.WorkMode == SchemeApp.WorkModes.Edit && editorData.ClientID == clientID)
            {
                // выбор элемента или схемы в режиме редактирования
                SchemeView schemeView = editorData.SchemeView;
                SchemeView.Element addedElement = editorData.AddedElement;

                if (addedElement == null)
                {
                    SchemeView.Element elem;
                    if (elementID <= 0)
                        editorData.SelectElement(schemeView.SchemeParams);
                    else if (schemeView.ElementDict.TryGetValue(elementID, out elem))
                        editorData.SelectElement(elem);
                }
                else
                {
                    // добавление элемента в заданную позицию в режиме редактирования
                    addedElement.Location = new SchemeView.Point(clickX, clickY);
                    schemeView.ElementList.Add(addedElement);
                    schemeView.ElementDict[addedElement.ID] = addedElement;

                    // создание объекта для передачи изменений
                    SchemeView.SchemeChange change = new SchemeView.SchemeChange(SchemeView.ChangeType.ElementAdded);
                    change.ElementData = new SchemeView.ElementData(addedElement);
                    
                    try
                    {
                        // установка изменения, которая может вызвать исключение
                        editorData.SchemeChange = change;

                        // выбор добавленного элемента
                        editorData.SelectElement(addedElement);
                        editorData.AddedElement = null;
                    }
                    catch (Exception ex)
                    {
                        WriteException(ex.Message);
                    }
                }
            }
        }