void PartirPoligonos_EntitySelected(object sender, EntitySelectedEventArgs e) { try { ReadOnlyLine límite = e.Entity as ReadOnlyLine; var entidadesRecortables = (from entidad in DigiNG.DrawingFile where entidad != límite where entidad is ReadOnlyPolygon || entidad is ReadOnlyLine && (entidad as ReadOnlyLine).Closed where !entidad.Deleted where entidad.AlgúnCódigoVisible() where Window2D.Intersects(límite, entidad) select entidad as IClippable).ToList(); List<Entity> entidadesAAñadir = new List<Entity>(); List<Entity> entidadesAEliminar = new List<Entity>(); int oldPorciento = -1; for (int i = 0; i < entidadesRecortables.Count; i++) { int porciento = i * 100 / entidadesRecortables.Count; if (porciento != oldPorciento) { oldPorciento = porciento; Digi3D.StatusBar.ProgressBar.Value = porciento; } try { var partes = entidadesRecortables[i].Clip(límite); if (partes.Count() > 0) { entidadesAAñadir.AddRange(partes); entidadesAEliminar.Add(entidadesRecortables[i] as Entity); } } catch (Exception) { } } string descripción = string.Format( OrdenesDigiNG.Recursos.SePartieronXEntidadesYSeFormaronYEntidadesNuevas, entidadesAEliminar.Count, entidadesAAñadir.Count); Digi3D.Music(MusicType.EndOfLongProcess); Digi3D.ShowBallon( OrdenesDigiNG.Recursos.PartirPoligonosName, descripción, 2); DigiNG.DrawingFile.Add(entidadesAAñadir); DigiNG.DrawingFile.Delete(entidadesAEliminar); if (this.Args.Length != 0 && DigiNG.DrawingFile.Contains(límite)) DigiNG.DrawingFile.Delete(límite); } finally { Dispose(); } }
private void attributeSelector1_OnEntitySelected(object sender, EntitySelectedEventArgs e) { WorkAsync(new WorkAsyncInfo { Message = "Loading forms...", AsyncArgument = e.Metadata, Work = (bw, evt) => { var formManager = new FormManager(Service); var forms = formManager.GetAllFormsByTypeCode(((EntityMetadata)evt.Argument).ObjectTypeCode.Value, ConnectionDetail); var items = forms.Select(form => new FormInfo(form)).Select(fi => new ListViewItem(fi.ToString()) { Tag = fi }).ToList(); evt.Result = items; }, PostWorkCallBack = evt => { if (evt.Error != null) { MessageBox.Show(evt.Error.ToString()); } else { listView1.Items.Clear(); listView1.Items.AddRange(((List <ListViewItem>)evt.Result).ToArray()); // Adds forms list to attribute selector attributeSelector1.EntityForms = ((List <ListViewItem>)evt.Result).Select(i => (FormInfo)i.Tag).ToList(); } } }); }
private void CopiarTablaRegistro_EntitySelected(object sender, EntitySelectedEventArgs e) { if (e.Entity.Codes.Count > 1) { Digi3D.Music(MusicType.Error); MessageBox.Show(OrdenesDigiNG.Recursos.HasSeleccionadoUnaEntidadConMasDeUnCodigoEstaOrdenNoEstaPreparada); SolicitaSeleccionarEntidad(); return; } if (null == entidadOrigen) { if (!e.Entity.Codes[0].Table.HasValue || !e.Entity.Codes[0].Id.HasValue) MessageBox.Show(OrdenesDigiNG.Recursos.LaEntidadQueHasSeleccionadoNoTieneNingúnEnlaceDeBaseDatos); else entidadOrigen = e.Entity; SolicitaSeleccionarEntidad(); return; } Entity entidadClonada = e.Entity.Clone(); entidadClonada.Codes[0] = new Code(entidadClonada.Codes[0].Name, entidadOrigen.Codes[0].Table, entidadOrigen.Codes[0].Id); DigiNG.DrawingFile.Add(entidadClonada); DigiNG.DrawingFile.Delete(e.Entity); entidadOrigen = null; Digi3D.Music(MusicType.EndOfLongProcess); SolicitaSeleccionarEntidad(); }
async void OnItemSelected(object sender, EntitySelectedEventArgs e) { if (!e.IsNewItem) { await Navigation.PushAsync(new EditEntityViewPage(e.Id, _vm)); } }
void CortarPoligono_EntitySelected(object sender, EntitySelectedEventArgs e) { if (entidadADividir == null) { entidadADividir = e.Entity; SolicitaSeleccionaEntidad(); return; } ReadOnlyLine límite = e.Entity as ReadOnlyLine; try { var polígonos = (entidadADividir as IClippable).Clip(límite); DigiNG.DrawingFile.Add(polígonos); DigiNG.DrawingFile.Delete(entidadADividir); if (this.Args.Length != 0 && DigiNG.DrawingFile.Contains(límite)) DigiNG.DrawingFile.Delete(límite); } catch (Exception ex) { Digi3D.Music(MusicType.Error); Digi3D.ShowBallon( Recursos.PartirPoligonosName, ex.Message, 2); } finally { Dispose(); } }
private void CopiarNombreCódigo_EntitySelected(object sender, EntitySelectedEventArgs e) { if (e.Entity.Codes.Count > 1) { Digi3D.Music(MusicType.Error); MessageBox.Show(OrdenesDigiNG.Recursos.HasSeleccionadoUnaEntidadConMasDeUnCodigoEstaOrdenNoEstaPreparada); SolicitaSeleccionarEntidad(); return; } if (null == entidadOrigen) { entidadOrigen = e.Entity; SolicitaSeleccionarEntidad(); return; } Entity entidadClonada = e.Entity.Clone(); entidadClonada.Codes[0] = new Code(entidadOrigen.Codes[0].Name, entidadClonada.Codes[0].Table, entidadClonada.Codes[0].Id); DigiNG.DrawingFile.Add(entidadClonada); DigiNG.DrawingFile.Delete(e.Entity); entidadOrigen = null; Digi3D.Music(MusicType.EndOfLongProcess); SolicitaSeleccionarEntidad(); }
protected void OnEntitySelected(EntitySelectedEventArgs args) { if (EntitySelected != null) { EntitySelected(this, args); } }
void SearchEmployee_EntitySelected(object sender, EntitySelectedEventArgs e) { MainTelemetry.AddCount("SearchEmployeeToolBar"); var id = DomainHelper.GetId(e.Entity); DialogViewModelBase after = null; if (cnbOpenInWindow.Active) { IPage replaced; if (NavigationManager.CurrentPage?.ViewModel is EmployeeViewModel) { replaced = NavigationManager.CurrentPage; } else { replaced = NavigationManager.IndependentPages.Reverse().FirstOrDefault(x => x.ViewModel is EmployeeViewModel); } if (replaced != null) { IPage last = null; foreach (var page in NavigationManager.TopLevelPages) { if (page == replaced) { after = last?.ViewModel; break; } last = page; } NavigationManager.AskClosePage(replaced); } } NavigationManager.OpenViewModel <EmployeeViewModel, IEntityUoWBuilder>(after, EntityUoWBuilder.ForOpen(id)); }
protected virtual void RaiseEntitySelected(EntitySelectedEventArgs e) { EventHandler <EntitySelectedEventArgs> handler = OnEntitySelected; if (handler != null) { handler(this, e); } }
void TramificaInsertandoEntidadSeleccionada_EntitySelected(object sender, EntitySelectedEventArgs e) { var líneaATramificar = e.Entity as ReadOnlyLine; // Seleccionamos las líneas visibles del archivo de dibujo (excluyendo la línea que vamos a tramificar) var líneasContraLasCualesTramificar = from entidad in DigiNG.DrawingFile.ExplotaAReadOnlyLine().Visibles() where entidad != e.Entity select entidad; // Obtenemos las intersecciones de la línea seleccionada con el reto de líneas visibles var intersecciones = líneaATramificar.DetectIntersections(líneasContraLasCualesTramificar); // Construimos una línea nueva con los códigos de la línea a tramificar Line líneaNueva = new Line(líneaATramificar.Codes); // Recorremos todos los segmentos de la línea a tramificar for (int vértice = 0; vértice < líneaATramificar.Points.Count - 1; vértice++) { // Añadimos el vértice de la línea original líneaNueva.Points.Add(líneaATramificar.Points[vértice]); // Ahora localizamos únicamente las intersecciones localizadas para el segmento actual en la línea a tramificar var vérticesAAñadirEnEsteSegmento = intersecciones.SoloDeSegmento(líneaATramificar, vértice); // Tenemos una lista de vértices, pero pueden venir desordenados. Vamos a ordenarlos calculando su distancia a la coordenada del primer vértice de este segmento Point2D vérticeComienzoSegmento = (Point2D)líneaATramificar.Points[vértice]; var vérticesOrdenados = from v in vérticesAAñadirEnEsteSegmento let distancia = (v.Key - vérticeComienzoSegmento).Module orderby distancia select v.Key; // Ahora insertamos estos vértices en la línea nueva. Los vértices son 2D (los métodos de extensión proporcionados por el tipo IntersectionDetector trabajan con Point2D // así que tendremos que ínterpolar la coordenada Z foreach (var v in vérticesOrdenados) { var segmento = new Segment(líneaATramificar.Points[vértice], líneaATramificar.Points[vértice + 1]); double z = segmento.InterpolatedZ(v); líneaNueva.Points.Add(new Point3D(v.X, v.Y, z)); } } // Por último añadimos el último vértice líneaNueva.Points.Add(líneaATramificar.Points.Last()); DigiNG.DrawingFile.Add(líneaNueva); DigiNG.DrawingFile.Delete(e.Entity); Dispose(); }
private void CopiarAtributosBBDD_EntitySelected(object sender, EntitySelectedEventArgs e) { if (e.Entity.Codes.Count > 1) { Digi3D.Music(MusicType.Error); MessageBox.Show(OrdenesDigiNG.Recursos.HasSeleccionadoUnaEntidadConMasDeUnCodigoEstaOrdenNoEstaPreparada); SolicitaSeleccionarEntidad(); return; } if (null == entidadOrigen) { entidadOrigen = e.Entity; SolicitaSeleccionarEntidad(); return; } // Copiamos los atributos de los códigos coincidentes var nombresCódigosEntidadOrigen = from código in entidadOrigen.Codes select código.Name; var nombresCodigosEntidadDestino = from código in e.Entity.Codes select código.Name; var códigosComunes = nombresCódigosEntidadOrigen.Intersect(nombresCodigosEntidadDestino).ToList(); if (códigosComunes.Count == 0) { Digi3D.ShowBallon( OrdenesDigiNG.Recursos.CopiarAtributosBBDDName, OrdenesDigiNG.Recursos.LaEntidadOrigenYDestinoNoTienenCódigosComunes, 1000); Digi3D.Music(MusicType.Error); } else { Entity entidadClonada = e.Entity.Clone(); EliminaEnlacesABBDD(entidadClonada); DigiNG.DrawingFile.Add(entidadClonada, entidadOrigen.Owner.get_DatabaseAttributes(entidadOrigen)); Digi3D.Music(MusicType.EndOfLongProcess); DigiNG.DrawingFile.Delete(e.Entity); } entidadOrigen = null; SolicitaSeleccionarEntidad(); }
void UnirPolígonos_EntitySelected(object sender, EntitySelectedEventArgs e) { if (null == entidadAUnir) { entidadAUnir = e.Entity; SolicitaSeleccionaEntidad(); return; } List<string> listaErrores = new List<string>(); if (!entidadAUnir.CódigosIdénticos(e.Entity, listaErrores)) { MessageBox.Show(OrdenesDigiNG.Recursos.LosCódigosDeLasEntidadesSonDistintosYPoLoTantoNoSePuedenUnir); return; } try { var polígono = Polygon.JoinPolygons(entidadAUnir, e.Entity); Entity entidadAAñadir = polígono; // Me han solicitado que si las dos líneas que han formado el polígono son líneas y el polígono resultante no tiene // ningún hueco, que el resultado siga siendo una línea y no un polígono. if (entidadAUnir is ReadOnlyLine && e.Entity is ReadOnlyLine && 0 == polígono.Holes.Count) { var temp = new Line(polígono.Codes); temp.Points.Add(polígono.Points); entidadAAñadir = temp; } DigiNG.DrawingFile.Add(entidadAAñadir); DigiNG.DrawingFile.Delete(entidadAUnir); DigiNG.DrawingFile.Delete(e.Entity); } catch (Exception excepción) { MessageBox.Show(excepción.Message); } finally { Dispose(); } }
void SustituyeCodManteniendoAtributos_EntitySelected(object sender, EntitySelectedEventArgs e) { Entity entidadClonada = e.Entity.Clone(); string nombreCódigoActivo = DigiNG.Codes.ActiveCodes.First().Name; List<Codes> códigosNuevos = new List<Codes>(); for (int i = 0; i<entidadClonada.Codes.Count(); i++) { string nuevoCódigo = Code.Compose(entidadClonada.Codes[i].Name, nombreCódigoActivo); // Si el nombre de tabla del código nuevo coincide con el nombre de tabla del código antiguo, mantenemos tanto el número de tabla // como el número de registro. Si no es así, creamos el nuevo código sin asignar ni tabla ni registro. if (DigiNG.DigiTab[nuevoCódigo].Table == DigiNG.DigiTab[entidadClonada.Codes[i].Name].Table) entidadClonada.Codes[i] = new Code(nuevoCódigo, entidadClonada.Codes[i].Table, entidadClonada.Codes[i].Id); else entidadClonada.Codes[i] = new Code(nuevoCódigo); } DigiNG.DrawingFile.Add(entidadClonada); DigiNG.DrawingFile.Delete(e.Entity); Digi3D.Music(MusicType.EndOfLongProcess); SolicitaSeleccionarEntidad(); }