public void ZoomToFit(double margin = 10) { if (_nodes.Count == 0) { return; } var selectedNodes = SelectedModels.Where(s => s is NodeModel).Select(s => (NodeModel)s); (var minX, var maxX, var minY, var maxY) = GetNodesRect(selectedNodes.Any() ? selectedNodes : _nodes); var width = maxX - minX + 2 * margin; var height = maxY - minY + 2 * margin; minX -= margin; minY -= margin; var xf = Container.Width / width; var yf = Container.Height / height; Zoom = Math.Min(xf, yf); var nx = Container.Left + Pan.X + minX * Zoom; var ny = Container.Top + Pan.Y + minY * Zoom; UpdatePan(Container.Left - nx, Container.Top - ny); Refresh(); }
private void UpdateSelection(Point startPoint, Point endPoint) { Rect rubberBand = new Rect(startPoint, endPoint); foreach (ISelectable item in ItemsSource) { DependencyObject container = ItemContainerGenerator.ContainerFromItem(item); Rect itemRect = VisualTreeHelper.GetDescendantBounds((Visual)container); Rect itemBounds = ((Visual)container).TransformToAncestor(_drawingCanvas).TransformBounds(itemRect); if (rubberBand.Contains(itemBounds)) { if (!item.IsSelected) { item.IsSelected = true; SelectedModels.Add(item); } } else { if (!(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))) { SelectedModels.Remove(item); item.IsSelected = false; } } } }
/// <summary> /// Group the Models based on Height and Width /// </summary> /// <returns> the width and height of the last model </returns> private Tuple <Double, Double> CalculateWidthAndHeight() { var xgroup = SelectedModels.OrderBy(x => x.X).ToList(); var ygroup = SelectedModels.OrderBy(x => x.Y).ToList(); return(Tuple.Create(xgroup.Last().Width, ygroup.Last().Height)); }
private void _drawingCanvas_MouseLeftMouseDown(object sender, MouseButtonEventArgs e) { OnMouseLeftButtonDown(e); Keyboard.Focus(_drawingCanvas); _originMouseStartPoint = _previousPosition = e.GetPosition(_drawingCanvas); //if we are source of event, we are rubberband selecting if (e.Source == _drawingCanvas) { if (!IsDrawing && !(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))) { ClearSelections(); } if (_propEditorViewModel.DrawingPanelViewModel.IsDrawing) { AddLightCommand.Execute(_originMouseStartPoint); //ClearSelections(); } _isSelecting = false; e.Handled = true; } else if (!IsDrawing && e.Source is Path) { var p = e.Source as Path; var l = p.DataContext as ISelectable; if (l != null) { _isSelecting = true; if (!(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))) { if (!l.IsSelected) { ClearSelections(); SelectedModels.Add(l); l.IsSelected = true; } } else { if (l.IsSelected) { l.IsSelected = false; SelectedModels.Remove(l); } else { SelectedModels.Add(l); l.IsSelected = true; } } } e.Handled = true; } }
private void ClearSelections() { if (SelectedModels.Count > 0) { SelectedModels.Clear(); if (ItemsSource != null) { foreach (ISelectable lvm in ItemsSource) { lvm.IsSelected = false; } } } }
/// <summary> /// Group the Models based on Height and Width /// </summary> /// <returns> the width and height of the last model </returns> private Tuple <Double, Double> CalculateWidthAndHeight() { var xgroup = SelectedModels.OrderBy(x => x.X).ToList(); var ygroup = SelectedModels.OrderBy(x => x.Y).ToList(); double yheight = ygroup.Last().Height; //If the last model is Node, then increase the height so that //node border does not overlap with the group if (ygroup.Last() is NodeModel) { yheight = yheight + ExtendYHeight; } return(Tuple.Create(xgroup.Last().Width, yheight)); }
private bool stringsCVS_Filter(object item) { if (string.IsNullOrWhiteSpace(Filter)) { return(true); } if (SelectedModels != null && SelectedModels.Contains(item)) { return(true); } string strItem = item as string; return(new Regex(Filter, RegexOptions.IgnoreCase).IsMatch(strItem)); }
protected override void DeserializeCore(XmlElement element, SaveContext context) { XmlElementHelper helper = new XmlElementHelper(element); this.GUID = helper.ReadGuid("guid", this.GUID); this.annotationText = helper.ReadString("annotationText", Resources.GroupDefaultText); this.X = helper.ReadDouble("left", DoubleValue); this.Y = helper.ReadDouble("top", DoubleValue); this.width = helper.ReadDouble("width", DoubleValue); this.height = helper.ReadDouble("height", DoubleValue); this.background = helper.ReadString("backgrouund", ""); this.fontSize = helper.ReadDouble("fontSize", fontSize); this.textBlockHeight = helper.ReadDouble("TextblockHeight", DoubleValue); this.InitialTop = helper.ReadDouble("InitialTop", DoubleValue); this.InitialHeight = helper.ReadDouble("InitialHeight", DoubleValue); //Deserialize Selected models if (element.HasChildNodes) { var listOfModels = new List <ModelBase>(); if (SelectedModels != null) { foreach (var childnode in element.ChildNodes) { var mhelper = new XmlElementHelper(childnode as XmlElement); var result = mhelper.ReadGuid("ModelGuid", new Guid()); var model = ModelBaseRequested != null ? ModelBaseRequested(result) : SelectedModels.FirstOrDefault(x => x.GUID == result); if (model != null) { listOfModels.Add(model); } } } SelectedModels = listOfModels; } //On any Undo Operation, current values are restored to previous values. //These properties should be Raised, so that they get the correct value on Undo. RaisePropertyChanged("Background"); RaisePropertyChanged("FontSize"); RaisePropertyChanged("AnnotationText"); RaisePropertyChanged("SelectedModels"); }
private bool ValidateSelection() { WarningMessageLabel.Text = string.Empty; bool hasError = false; if (SelectedModels.Any(x => x.IsFlexible)) { var allFlexible = SelectedModels.All(x => x.IsFlexible); if (!allFlexible) { WarningMessageLabel.Text = WarningNotAllFlexible.Text; hasError = true; } } return(!hasError); }
private void BtnAdd_Click(object sender, EventArgs e) { foreach (var item in lstApiServices.CheckedItems) { SelectedApiServices.Add(item as Utilities.ClassModel); } foreach (var item in lstServices.CheckedItems) { SelectedServices.Add(item as Utilities.ClassModel); } foreach (var item in lstModels.CheckedItems) { SelectedModels.Add(item as Utilities.ClassModel); } foreach (var item in lstDialogs.CheckedItems) { SelectedDialogs.Add(item as Utilities.ClassModel); } }
public CodeModel SelectModels(CodeModelArgs args) { string GetCodeSp = "pk_atm_sp_code"; try{ SelectedModels = Ctx.Query <dynamic>(GetCodeSp, new { P_GROUP_ID = args.Gropu_Id, P_WHERE = args.Where == "" ? null : args.Where }, commandType: CommandType.StoredProcedure) .Select(r => new CodeModel { CODE = r.CODE == null ? r.코드 : r.CODE, NAME = r.NAME == null ? r.이름 : r.NAME } ).ToList <CodeModel>(); } catch (Exception ex) { SelectedModels.Add(new CodeModel { Err = ex.Message }); } return(SelectModel); }
public override bool CanExecute(object parameter) { return(base.CanExecute(parameter) && SelectedModels.Any(m => m.NeedUpdate == NeedUpdate)); }
/// <summary> /// OnElementMouseDown: Click Event for each geometric element /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <param name="watch3DNode"></param> private void OnElementMouseDown(object sender, MouseButtonEventArgs e, Watch3DNode watch3DNode) { // 1-CLick event if (e.LeftButton != MouseButtonState.Pressed) { return; } // Get sender var element = sender as ModelUIElement3D; var geometryModel3D = element?.Model as GeometryModel3D; if (geometryModel3D == null) { return; } // Check Type // If it is already selected ... Deselect if (SelectedModels.Contains(geometryModel3D)) { // var geo = geometryModel3D.Clone(); // geo.Material = geometryModel3D.BackMaterial; geometryModel3D.Material = geometryModel3D.BackMaterial; SelectedModels.Remove(geometryModel3D); } // If not ... Select! else { SelectedModels.Add(geometryModel3D); // var geo = geometryModel3D.Clone(); // geo.Material = _selectionMaterial; geometryModel3D.Material = _selectionMaterial; } // Get the id of the selected model var reslist = new List <Guid>(); if (SelectedModels != null && SelectedModels.Count > 0) { foreach (var item in _fallBackGeometry) { foreach (var item_2 in SelectedModels) { if (Equals(item_2.Geometry, item.Model3D.Geometry)) { reslist.Add(item.Id); } } } } string modelId = null; string projectId = null; if (InputPorts[0].Data.GetType() == typeof(ModelInfo)) { var input = InputPorts[0].Data as ModelInfo; if (input != null) { modelId = input.ModelId; projectId = input.ProjectId; } } else if (InputPorts[0].Data.GetType() == typeof(BaseRelation)) { var input = InputPorts[0].Data as BaseRelation; if (input != null) { modelId = input.ModelId.ToString(); projectId = input.ProjectId.ToString(); } } else { return; } var res = new ModelInfo(projectId, modelId, reslist, ModelType.BimPlusModel); OutputPorts[0].Data = res; // Set selected models to Output ... e.Handled = true; }
private void ImportModels() { ProjectManager.StartBatchChanges(); progressBar1.Style = ProgressBarStyle.Continuous; progressBar1.Value = 0; progressBar1.Maximum = SelectedModels.Count(); var bonesToImport = GetBoneMappings(); if (bonesToImport.Count > 0 && SelectedModels.Any(x => x.IsFlexible)) { Project.Flexible = true; foreach (var boneMap in bonesToImport) { var existing = Project.Bones.FirstOrDefault(x => x.BoneID == boneMap.AssimpID); if (existing == null) { existing = new PartBone(boneMap.AssimpID); } existing.Transform = boneMap.Transform; if (boneMap.ParentName != null) { var parentbone = bonesToImport.FirstOrDefault(x => x.Name == boneMap.ParentName); existing.TargetBoneID = parentbone.AssimpID; } if (existing.Project == null) { Project.Bones.Add(existing); } } } foreach (var model in SelectedModels) { var geom = Meshes.MeshConverter.AssimpToLdd(SceneToImport, model.Mesh); var surface = Project.Surfaces.FirstOrDefault(x => x.SurfaceID == model.SurfaceID); if (surface == null) { surface = new PartSurface(model.SurfaceID, Project.Surfaces.Max(x => x.SubMaterialIndex) + 1); Project.Surfaces.Add(surface); } var partModel = surface.Components.FirstOrDefault(x => x.ComponentType == ModelComponentType.Part); if (partModel == null) { partModel = new PartModel(); surface.Components.Add(partModel); } var modelMesh = Project.AddMeshGeometry(geom, model.Name); partModel.Meshes.Add(new ModelMeshReference(modelMesh)); progressBar1.Value += 1; } if (bonesToImport.Any()) { ProjectManager.RebuildBoneConnections(); } ProjectManager.EndBatchChanges(); }
public override bool CanExecute(object parameter) { return(base.CanExecute(parameter) && SelectedModels.Count() == 1); }
public override string ContextMenu(Point pos) { return(_profile.ShowContextmenu(pos, SelectedModels.ToArray())); }
protected override void setupCommands() { base.setupCommands(); CopyCommand = new SimpleCommand() { CanExecuteDelegate = (x) => { return(SelectedViewModels != null && SelectedViewModels.Count > 0); }, ExecuteDelegate = (x) => { try { _profile.CopyToClipboard(SelectedModels.ToArray()); } catch (Exception ex) { new WPFMessageBoxService().ShowError(ex.Message); } } }; NewFolderCommand = new SimpleCommand() { CanExecuteDelegate = (x) => { return(!EmbeddedDirectoryViewModel.EmbeddedDirectoryModel.IsReadonly); }, ExecuteDelegate = (x) => { try { NewFolder("New Folder", x as string); } catch (Exception ex) { new WPFMessageBoxService().ShowError(ex.Message); } } }; PasteCommand = new SimpleCommand() { CanExecuteDelegate = (x) => { return(System.Windows.Clipboard.ContainsFileDropList() && EmbeddedDirectoryViewModel.EmbeddedDirectoryModel.IsSupportAdd); }, ExecuteDelegate = (x) => { try { _profile.PasteFromClipboard(EmbeddedDirectoryViewModel.EmbeddedDirectoryModel); } catch (Exception ex) { new WPFMessageBoxService().ShowError(ex.Message); } } }; DeleteCommand = new SimpleCommand() { CanExecuteDelegate = (x) => { if (SelectedViewModels != null && SelectedViewModels.Count > 0) { foreach (var vm in SelectedViewModels) { if (vm.EmbeddedModel.IsReadonly) { return(false); } } return(true); } return(false); }, ExecuteDelegate = (x) => { try { string caption = String.Format(Texts.strConfirmDelete, SelectedViewModels.Count, SelectedViewModels.Count > 1 ? "s" : ""); if (new WPFMessageBoxService().ShowYesNo(caption, CustomDialogIcons.Question) == CustomDialogResults.Yes) { _profile.Delete(SelectedModels.ToArray(), EmbeddedDirectoryViewModel.EmbeddedDirectoryModel); } } catch (Exception ex) { new WPFMessageBoxService().ShowError(ex.Message); } } }; PropertiesCommand = new SimpleCommand() { CanExecuteDelegate = x => { return(SelectedModels != null && SelectedModels.Count > 0); }, ExecuteDelegate = x => { System.Windows.Point position = Mouse.GetPosition(null); _profile.ShowProperties(position, SelectedModels.ToArray()); } }; SelectAllCommand = new SimpleCommand() { ExecuteDelegate = (x) => { if (SelectedViewModels == null || SelectedViewModels.Count < EmbeddedDirectoryViewModel.SubDirectories.Count) { foreach (var item in EmbeddedDirectoryViewModel.SubEntries) { item.IsSelected = true; } SelectedViewModels = new List <EntryViewModel <FI, DI, FSI> >(from vm in EmbeddedDirectoryViewModel.SubEntries select vm); } else { foreach (var item in EmbeddedDirectoryViewModel.SubEntries) { item.IsSelected = false; } SelectedViewModels = new List <EntryViewModel <FI, DI, FSI> >(); } } }; }