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; }
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(); }
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); } } }
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(); } } }
/// <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); } } } }