Exemple #1
0
 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);
             }
         }
     }
 }
Exemple #4
0
        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;
        }