//--- Отмена "выбранности" у заданной "выбранной" фигуры public void UnselectShape(ShapeBase select_shape) { int find_idx = _Editor.SelectedShapeList.FindIndex(obj => obj.GetHashCode() == select_shape.GetHashCode()); if (find_idx >= 0) { for (int i = 0; i < select_shape.visualControler.ControlPoints.Count; i++) // Отменяем "видимость" у маркеров фигуры { ((Rectangle)select_shape.visualControler.MarkerPoints[i]).Visibility = Visibility.Hidden; } select_shape.visualControler.IsSelectedPath = false; // "обнуляем" флаг выбранности у фигуры if ((select_shape.shapeType == SHAPE_TYPE.PolyLine || select_shape.shapeType == SHAPE_TYPE.Polygon) && select_shape._List_tBox.Count > 3) { select_shape._List_tBox.RemoveRange(3, select_shape._List_tBox.Count - 3); } _Editor.SelectedShapeList.RemoveAt(find_idx); // удаляем фигуру из списка выбраннных _Editor.SelectedShapeCount--; // счетчик выбранных фигур уменьшаем на единицу _Editor.IsSelectedShapeForEdit = false; // флаг наличия редактируемой фигуры - "обнуляем" _Editor.SelectedShapeForEdit = null; // таковой больше нет _Editor.ClearParamPanels(); // "чистим" все текстовые поля ввода параметров if (_Editor.EditorMode == EDITOR_MODE.Edit) { _Editor.IsEnabledParamPanels(false); // запрещаем доступ к панели ручного редактирования параметров } } }
//--- Удаление фигуры из Редактора из МенеджераФигур public void RemoveShape(ShapeBase shape) { if (_Editor.SelectedShapeForEdit != null && _Editor.SelectedShapeForEdit.GetHashCode() == shape.GetHashCode()) { _Editor.IsSelectedShapeForEdit = false; // Теперь редактируемой фигуры нет _Editor.SelectedShapeForEdit = null; } if (_Editor.SelectedShapeList != null && _Editor.SelectedShapeList.Contains(shape)) { _Editor.SelectedShapeList.Remove(shape); _Editor.SelectedShapeCount--; } ((ShapeBase)shape).RemoveShapeFromPanels(); // Удалем фигуру из всех панелей рисования и обслуживания shapeList.Remove(shape); // Удаляем фигуру из списока обслуживамых фигур _Editor.ShapeCount--; // Общее кол-во фигур уменьшилось на одну switch (shape.shapeType) // В зависимости от типа фигуры уменьшаем счетчик этих фигур на единицу { case SHAPE_TYPE.Point: if (_Editor.PointsCount > 0) { _Editor.PointsCount--; } break; case SHAPE_TYPE.Line: if (_Editor.LinesCount > 0) { _Editor.LinesCount--; } break; case SHAPE_TYPE.PolyLine: if (_Editor.PolyLinesCount > 0) { _Editor.PolyLinesCount--; } break; case SHAPE_TYPE.Polygon: if (_Editor.PolygonsCount > 0) { _Editor.PolygonsCount--; } if (_Editor.EditorMode == EDITOR_MODE.PolygonOperations) { if (_Editor.PolygonsCount < 2) { _Editor.EditorMode = EDITOR_MODE.Selection; } } break; } if (_Editor.ShapeCount < 1) { if (_Editor.EditorMode != EDITOR_MODE.DrawNew) { _Editor.EditorMode = EDITOR_MODE.ModeUnknown; } } }