private void ValidePanelFormules() { if (m_lastSymbolSel != null) { CParametreRepresentationElementDeSymbole parametre = new CParametreRepresentationElementDeSymbole(); parametre.ElementName = m_lastSymbolSel.Name; bool bHasFormules = false; foreach (Control ctrl in m_panelFormules.Controls) { CControlEditFormulePropriete ctrlFormule = ctrl as CControlEditFormulePropriete; if (ctrlFormule != null) { if (ctrlFormule.Propriete.Length > 0 && ctrlFormule.Formule != null) { parametre[ctrlFormule.Propriete] = ctrlFormule.Formule; bHasFormules = true; } } } if (bHasFormules) { m_parametre.AddParametre(parametre); } } }
private void ActualiserPanel() { if (m_editeurTopLeft.Selection.Count == 0) { m_propertyGrid.SelectedObject = null; } else { if (m_editeurTopLeft.Selection.Count == 1) { C2i3DEn2D compo = m_editeurTopLeft.Selection[0] as C2i3DEn2D; m_propertyGrid.SelectedObject = compo.Composant3D; } else { List <object> objs = new List <object>(); foreach (C2i3DEn2D element in m_editeurTopLeft.Selection) { objs.Add(element.Composant3D); } m_propertyGrid.SelectedObjects = objs.ToArray(); } } MajFormules(); m_lastComposantPourFormules = null; m_panelFormules.SuspendDrawing(); foreach (Control ctrl in m_panelFormules.Controls) { ctrl.Visible = false; ctrl.Dispose(); } m_panelFormules.Controls.Clear(); if (m_editeurTopLeft.Selection.Count == 1) { C2i3DEn2D c2d = m_editeurTopLeft.Selection[0] as C2i3DEn2D; if (c2d != null) { C2iComposant3D composant = c2d.Composant3D; m_lastComposantPourFormules = composant; Type tp = composant.GetType(); foreach (PropertyInfo propriete in tp.GetProperties()) { if (propriete.GetCustomAttributes(typeof(CanBeDynamicAttribute), true).Length != 0) { C2iExpression formule = composant.GetFormule(propriete.Name); CControlEditFormulePropriete ctrl = new CControlEditFormulePropriete(); ctrl.Parent = m_panelFormules; ctrl.Dock = DockStyle.Top; ctrl.BringToFront(); ctrl.Init(typeof(CTypeEquipement), propriete.Name, formule); } } } } m_panelFormules.ResumeDrawing(); }
private void MajFormules() { if (m_lastComposantPourFormules != null) { foreach (Control ctrl in m_panelFormules.Controls) { CControlEditFormulePropriete ctrlFormule = ctrl as CControlEditFormulePropriete; if (ctrlFormule != null) { m_lastComposantPourFormules.SetFormule(ctrlFormule.Propriete, ctrlFormule.Formule); } } } }
private void InitPanelFormules() { ValidePanelFormules(); m_lastSymbolSel = null; C2iSymbole objet = m_panelEditeurSymbole.ObjetSelectionne; m_panelFormules.SuspendDrawing(); foreach (Control ctrl in m_panelFormules.Controls) { CControlEditFormulePropriete ctrlFormule = ctrl as CControlEditFormulePropriete; if (ctrl != null) { ctrlFormule.Visible = false; ctrlFormule.Clear(); } } if (objet == null || objet.Name.Trim() == "") { m_panelFormules.ResumeDrawing(); return; } int nControle = 0; CParametreRepresentationElementDeSymbole parametreElement = m_parametre.Parametres.FirstOrDefault(p => p.ElementName == objet.Name); foreach (PropertyInfo propriete in objet.GetType().GetProperties()) { if (propriete.GetGetMethod() == null) { continue; } if (propriete.PropertyType != typeof(Color) && propriete.PropertyType != typeof(int) && propriete.PropertyType != typeof(string) && propriete.PropertyType != typeof(double) && propriete.PropertyType != typeof(bool)) { continue; } //Ne prend pas le propriétés non browsable object[] attrs = propriete.GetCustomAttributes(typeof(BrowsableAttribute), true); if (attrs.Length > 0) { BrowsableAttribute attr = (BrowsableAttribute)attrs[0]; if (!attr.Browsable) { continue; } } CControlEditFormulePropriete ctrlFormule = null; if (nControle >= m_listeControlesFormule.Count()) { ctrlFormule = new CControlEditFormulePropriete(); m_panelFormules.Controls.Add(ctrlFormule); ctrlFormule.Dock = DockStyle.Top; m_listeControlesFormule.Add(ctrlFormule); } else { ctrlFormule = m_listeControlesFormule[nControle]; } nControle++; C2iExpression formule = null; if (parametreElement != null) { formule = parametreElement[propriete.Name]; } ctrlFormule.Init(m_typeElements, propriete.Name, formule); ctrlFormule.Visible = true; ctrlFormule.BringToFront(); } m_panelFormules.ResumeDrawing(); m_lastSymbolSel = objet; }