/// <summary> /// Конструктор /// </summary> public SchemeView() : base() { maxComponentID = 0; SchemeDoc = new SchemeDocument(); Components = new SortedList <int, BaseComponent>(); }
/// <summary> /// Конструктор /// </summary> public History(Log log) { this.log = log; points = new List <Point>(); headIndex = 0; currentPoint = null; addingEnabled = true; schemeDocCopy = new SchemeDocument(); componentsCopy = new SortedList <int, BaseComponent>(); }
/// <summary> /// Очистить историю /// </summary> public void Clear() { points.Clear(); headIndex = 0; currentPoint = null; addingEnabled = true; schemeDocCopy = new SchemeDocument(); componentsCopy.Clear(); OnHistoryChanged(); }
/// <summary> /// Конструктор. /// </summary> public SchemeView() : base() { maxComponentID = 0; templateArgs = new TemplateArgs(); SchemeDoc = new SchemeDocument(); Components = new SortedList <int, BaseComponent>(); LoadErrors = new List <string>(); }
/// <summary> /// Initializes a new instance of the class. /// </summary> public SchemeView(View viewEntity) : base(viewEntity) { maxComponentID = 0; templateArgs = new TemplateArgs(Args); templateBindings = null; SchemeDoc = new SchemeDocument { SchemeView = this }; Components = new SortedList <int, ComponentBase>(); LoadErrors = new List <string>(); }
/// <summary> /// Добавить изменение в историю /// </summary> public void Add(SchemeChangeTypes changeType, object changedObject, object oldKey = null) { try { lock (this) { Change change = new Change(changeType, changedObject, oldKey); switch (changeType) { case SchemeChangeTypes.SchemeDocChanged: change.OldObject = schemeDocCopy; schemeDocCopy = (SchemeDocument)change.ChangedObject; break; case SchemeChangeTypes.ComponentAdded: componentsCopy[change.ComponentID] = (BaseComponent)change.ChangedObject; break; case SchemeChangeTypes.ComponentChanged: change.OldObject = componentsCopy[change.ComponentID]; componentsCopy[change.ComponentID] = (BaseComponent)change.ChangedObject; break; case SchemeChangeTypes.ComponentDeleted: componentsCopy.Remove(change.ComponentID); break; } if (addingEnabled) { if (currentPoint == null) { Point point = new Point(); point.Changes.Add(change); AddPoint(point); } else { currentPoint.Changes.Add(change); } } } } catch (Exception ex) { log.WriteException(ex, Localization.UseRussian ? "Ошибка при добавлении изменения в историю" : "Error adding a change to the history"); } }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { IWindowsFormsEditorService editorSvc = provider == null ? null : (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (context != null && context.Instance is SchemeDocument && editorSvc != null) { List <int> cnlFilter = (List <int>)value; SchemeDocument schemeDoc = (SchemeDocument)context.Instance; editorSvc.ShowDialog(new FrmCnlFilterDialog(cnlFilter, schemeDoc)); } return(value); }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { IWindowsFormsEditorService editorSvc = provider == null ? null : (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (context != null && context.Instance != null && editorSvc != null) { SchemeDocument schemeDoc = GetSchemeDoc(context.Instance); if (schemeDoc != null) { Type propType = context.PropertyDescriptor.PropertyType; if (propType == typeof(Dictionary <string, Image>)) { // редактирование словаря изображений Dictionary <string, Image> images = (Dictionary <string, Image>)value; FrmImageDialog frmImageDialog = new FrmImageDialog(images, schemeDoc) { ImageDir = ImageDir }; editorSvc.ShowDialog(frmImageDialog); ImageDir = frmImageDialog.ImageDir; } else if (propType == typeof(string)) { // выбор изображения string imageName = (value ?? "").ToString(); FrmImageDialog frmImageDialog = new FrmImageDialog(imageName, schemeDoc.Images, schemeDoc) { ImageDir = ImageDir }; if (editorSvc.ShowDialog(frmImageDialog) == DialogResult.OK) { value = frmImageDialog.SelectedImageName; ImageDir = frmImageDialog.ImageDir; } } } } return(value); }
private SchemeDocument GetSchemeDoc(object instance) { SchemeDocument schemeDoc = null; if (instance is ISchemeDocAvailable) { schemeDoc = ((ISchemeDocAvailable)instance).SchemeDoc; } else if (instance is ICollection) { foreach (object obj in (ICollection)instance) { schemeDoc = GetSchemeDoc(obj); if (schemeDoc == null) { break; } } } return(schemeDoc); }
/// <summary> /// Применить заданные изменения схемы /// </summary> private void ApplyChanges(List <Change> changeList) { lock (SchemeView.SyncRoot) { lock (selComponents) { SchemeDocument schemeDoc = SchemeView.SchemeDoc; History.DisableAdding(); selComponents.Clear(); foreach (Change change in changeList) { switch (change.ChangeType) { case SchemeChangeTypes.SchemeDocChanged: // копирование изменений свойств документа схемы ((SchemeDocument)change.ChangedObject).CopyTo(SchemeView.SchemeDoc); schemeDoc.OnItemChanged(SchemeChangeTypes.SchemeDocChanged, schemeDoc); break; case SchemeChangeTypes.ComponentAdded: // создание копии компонента BaseComponent addedComponent = ((BaseComponent)change.ChangedObject).Clone(); // добавление компонента на схему SchemeView.Components[addedComponent.ID] = addedComponent; schemeDoc.OnItemChanged(SchemeChangeTypes.ComponentAdded, addedComponent); // выбор добавленного компонента selComponents.Add(addedComponent); break; case SchemeChangeTypes.ComponentChanged: // создание копии компонента BaseComponent changedComponent = ((BaseComponent)change.ChangedObject).Clone(); // замена компонента на схеме SchemeView.Components[changedComponent.ID] = changedComponent; changedComponent.OnItemChanged(SchemeChangeTypes.ComponentChanged, changedComponent); // выбор изменённого компонента selComponents.Add(changedComponent); break; case SchemeChangeTypes.ComponentDeleted: // удаление компонента BaseComponent deletedComponent = (BaseComponent)change.ChangedObject; SchemeView.Components.Remove(deletedComponent.ID); schemeDoc.OnItemChanged(SchemeChangeTypes.ComponentDeleted, deletedComponent); break; case SchemeChangeTypes.ImageAdded: // добавление изображения Image addedImage = ((Image)change.ChangedObject).Copy(); schemeDoc.Images[addedImage.Name] = addedImage; schemeDoc.OnItemChanged(SchemeChangeTypes.ImageAdded, addedImage); break; case SchemeChangeTypes.ImageRenamed: // переименование изображения Image renamedImage = ((Image)change.ChangedObject).Copy(); schemeDoc.Images.Remove(change.OldImageName); schemeDoc.Images[renamedImage.Name] = renamedImage; schemeDoc.OnItemChanged( SchemeChangeTypes.ImageRenamed, renamedImage, change.OldImageName); break; case SchemeChangeTypes.ImageDeleted: // удаление изображения Image deletedImage = (Image)change.ChangedObject; schemeDoc.Images.Remove(deletedImage.Name); schemeDoc.OnItemChanged(SchemeChangeTypes.ImageDeleted, deletedImage); break; } } History.EnableAdding(); } } OnSelectionChanged(); PointerMode = PointerMode.Select; }
/// <summary> /// Create this instance. /// </summary> public void Create() { CurrentScheme = new SchemeDocument(); }