コード例 #1
0
        private void m_btnOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter = I.T("Symbol (*.2iSymbol)|*.2iSymbol|All files (*.*)|*.*|30376");
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                if (CFormAlerte.Afficher(I.T("The current symbol will be replaced. Continue ?|30379"),
                                         EFormAlerteType.Question) == DialogResult.No)
                {
                    return;
                }
                C2iSymbole newSymbole = new C2iSymbole();

                CResultAErreur result = CSerializerObjetInFile.ReadFromFile(newSymbole, C2iSymbole.c_idFichier, dlg.FileName);
                if (!result)
                {
                    CFormAlerte.Afficher(result);
                }
                else
                {
                    SymboleEdite = newSymbole;
                }
            }
        }
コード例 #2
0
        public static bool PositionnePorts(CTypeEquipement typeEquipement)
        {
            if (typeEquipement == null)
            {
                return(false);
            }
            C2iSymbole symbole       = new C2iSymbole();
            C2iSymbole symboleTypeEq = typeEquipement.SymboleADessinerSansPorts;

            if (symboleTypeEq != null)
            {
                symbole.Size = symboleTypeEq.Size;
                C2iSymboleVerrouille verrou = new C2iSymboleVerrouille();
                verrou.SymboleContenu = symboleTypeEq;
                verrou.LockPosition   = true;
                verrou.LockSize       = true;
                symbole.AddChild(verrou);
                verrou.Parent = symbole;
            }
            foreach (CPort port in typeEquipement.Ports)
            {
                C2iSymbolePort symbolePort = new C2iSymbolePort();
                symbolePort.Port = port;
                symbole.AddChild(symbolePort);
                symbolePort.Parent = symbole;
            }
            CFormEditeurSymbolePopup.EditeSymbole(symbole, typeEquipement.GetType(), true);
            return(true);
        }
コード例 #3
0
        private C2iSymboleSelectionMultiple CreatePanelSelectionMultiple()
        {
            C2iSymboleSelectionMultiple panelSelection = new C2iSymboleSelectionMultiple();

            if (Selection.Count <= 0)
            {
                return(null);
            }
            if (Selection.Count > 1)
            {
                C2iSymbole prevSymbole = (C2iSymbole)Selection[0];
                for (int i = 1; i < Selection.Count; i++)
                {
                    if (prevSymbole.Parent != Selection[i].Parent)
                    {
                        MessageBox.Show(I.T("Impossible to group objects not having the same parent|30031"));
                        return(null);
                    }
                    prevSymbole = (C2iSymbole)Selection[i];
                }
            }
            panelSelection.ForeColor = Color.Transparent;
            panelSelection.BackColor = Color.Transparent;
            Selection[0].Parent.AddChild(panelSelection);
            if (panelSelection.Parent != null)
            {
                panelSelection.Parent.RemoveChild(panelSelection);
            }
            panelSelection.Parent = Selection[0].Parent;
            ArrayList arraySymbole = new ArrayList();
            ArrayList arrayPos     = new ArrayList();

            foreach (C2iSymbole symbole in Selection[0].Parent.Childs)
            {
                if (Selection.Contains(symbole))
                {
                    arraySymbole.Add(symbole);
                    arrayPos.Add(symbole.PositionAbsolue);
                }
            }

            foreach (C2iSymbole symbole in arraySymbole)
            {
                panelSelection.AddChild(symbole);
                if (symbole.Parent != null)
                {
                    symbole.Parent.RemoveChild(symbole);
                }
                symbole.Parent = panelSelection;
                Selection.Remove(symbole);
            }
            for (int i = 0; i < arraySymbole.Count; i++)
            {
                ((C2iSymbole)arraySymbole[i]).PositionAbsolue = (Point)arrayPos[i];
            }

            Refresh();

            return(panelSelection);
        }
コード例 #4
0
 ///Applique le paramètre à un élément
 public void ApplyOnElement(C2iSymbole element, CContexteEvaluationExpression ctxEval)
 {
     foreach (KeyValuePair <string, C2iExpression> kv in m_dicFormulesParPropriete)
     {
         string        strPropriete = kv.Key;
         C2iExpression formule      = kv.Value;
         if (formule != null)
         {
             //Trouve la propriete
             PropertyInfo info = element.GetType().GetProperty(strPropriete);
             if (info != null && info.GetSetMethod() != null)
             {
                 MethodInfo     methode = info.GetSetMethod();
                 CResultAErreur result  = formule.Eval(ctxEval);
                 if (result)
                 {
                     try
                     {
                         methode.Invoke(element, new object[] { result.Data });
                     }
                     catch
                     {
                     }
                 }
             }
         }
     }
 }
コード例 #5
0
        public C2iObjetDeSchema GetObjetDeSchema(CElementDeSchemaReseau elementDeSchema)
        {
            C2iObjetDeSchema objet   = new C2iObjetDeSchema();
            C2iSymbole       symbole = SymboleADessiner;

            objet.ElementDeSchema = elementDeSchema;
            return(objet);
        }
コード例 #6
0
        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            C2iSymbole symbolePorts = new C2iSymbole();

            if (Port != null)
            {
                if (Port.TypeEquipement != null)
                {
                    CPositionneurPorts.PositionnePorts(Port.TypeEquipement);
                    /*symbolePorts = CFormEditeurSymbolePopup.EditeSymbole(Port.SymboleTypeqADessiner, typeof(CTypeEquipement), true);*/
                    m_panelSymbole.RefreshSymbole();
                }
            }
        }
コード例 #7
0
        public void Init(C2iSymbole symboleEdite, Type typeEdite, bool bEditPorts)
        {
            if (bEditPorts)
            {
                m_listeControles.Visible            = false;
                m_propertyGrid.Visible              = false;
                m_panelEditionSymbole.NoClipboard   = true;
                m_panelEditionSymbole.NoDelete      = true;
                m_panelEditionSymbole.NoDoubleClick = true;
                m_panelEditionSymbole.NoMenu        = true;
                m_btnSave.Visible = false;
                m_btnOpen.Visible = false;
            }
            else
            {
                m_listeControles.AddAllLoadedAssemblies();
            }

            m_listeControles.RefreshControls();

            if (symboleEdite == null)
            {
                C2iSymbole          symbFond = new C2iSymbole();
                System.Drawing.Size size     = new Size(300, 300);
                symbFond.Size      = size;
                symbFond.BackColor = Color.Transparent;



                m_panelEditionSymbole.ObjetEdite = symbFond;
                m_panelEditionSymbole.TypeEdite  = typeEdite;
            }
            else
            {
                SymboleEdite = symboleEdite;
                TypeEdite    = typeEdite;
            }
            m_panelEditionSymbole.Editeur = this;
            if (bEditPorts)
            {
                SymboleEdite.ForeColor = Color.Black;
            }
            CFournisseurGeneriqueProprietesDynamiques fournisseurPropriete = new CFournisseurGeneriqueProprietesDynamiques();

            m_panelEditionSymbole.FournisseurPropriete = fournisseurPropriete;
        }
コード例 #8
0
        //------------------------------------------
        protected void ApplyOnSymbole(IElementDeSchemaReseau elementRepresenté)
        {
            if (m_symbole == null)
            {
                return;
            }
            m_symbole.ElementASymbole = elementRepresenté;
            CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(elementRepresenté);

            foreach (CParametreRepresentationElementDeSymbole parametre in Parametres)
            {
                C2iSymbole element = m_symbole.GetChildFromName(parametre.ElementName);
                if (element != null)
                {
                    parametre.ApplyOnElement(element, ctxEval);
                }
            }
        }
コード例 #9
0
        public void RemovePanelSelectionMultiple()
        {
            ArrayList arrayGroupes = new ArrayList();

            foreach (I2iObjetGraphique objet in Selection)
            {
                if (objet.GetType() == typeof(C2iSymboleSelectionMultiple))
                {
                    arrayGroupes.Add(objet);
                }
            }

            foreach (I2iObjetGraphique objet in arrayGroupes)
            {
                C2iSymboleSelectionMultiple panelSelection = (C2iSymboleSelectionMultiple)objet;
                Selection.Remove(panelSelection);

                C2iSymbole[] tabSymbole = new C2iSymbole[panelSelection.Childs.Length];
                Point[]      tabPos     = new Point[panelSelection.Childs.Length];
                C2iSymbole   objParent  = (C2iSymbole)panelSelection.Parent;
                for (int i = 0; i < panelSelection.Childs.Length; i++)
                {
                    tabSymbole[i] = (C2iSymbole)panelSelection.Childs[i];
                    tabPos[i]     = panelSelection.Childs[i].PositionAbsolue;
                }
                panelSelection.Parent.RemoveChild(panelSelection);
                for (int i = 0; i < tabSymbole.Length; i++)
                {
                    objParent.AddChild(tabSymbole[i]);
                    if (tabSymbole[i].Parent != null)
                    {
                        tabSymbole[i].Parent.RemoveChild(tabSymbole[i]);
                    }
                    tabSymbole[i].Parent = objParent;
                }

                for (int i = 0; i < tabPos.Length; i++)
                {
                    tabSymbole[i].Position        = tabPos[i];
                    tabSymbole[i].PositionAbsolue = tabPos[i];
                }
            }
        }
コード例 #10
0
        //----------------------------------------------------------
        //Remet à jour la liste des contrôles disponibles et compatibles avec le type édité
        public void RefreshControls()
        {
            m_listeElements.Clear();
            this.SuspendDrawing();
            Dictionary <Type, bool> typesTraites = new Dictionary <Type, bool>();
            ArrayList lstControles = new ArrayList(Controls);

            foreach (Control ctrl in lstControles)
            {
                CElementListeSymbole elt = ctrl as CElementListeSymbole;
                typesTraites.Add(elt.TypeAssocie, true);
                if (elt != null)
                {
                    m_listeElements.Add(elt);
                }
                else
                {
                    m_listeElements.Add(elt);
                }
            }
            m_listeTypesControlesConnus.Sort(new TypeSorter());

            foreach (Type tp in m_listeTypesControlesConnus)
            {
                if (!typesTraites.ContainsKey(tp))
                {
                    CElementListeSymbole elt = new CElementListeSymbole();
                    elt.Image = C2iSymbole.GetImage(tp);
                    Controls.Add(elt);
                    elt.TypeAssocie = tp;
                    elt.Size        = new Size(ClientRectangle.Width, c_nElementHeight);
                    elt.Left        = 0;
                    elt.Top         = m_listeElements.Count * (c_nElementHeight + c_nEcartYElements) + c_nEcartYElements;
                    elt.CreateControl();
                    elt.Dock = DockStyle.Top;
                    elt.SendToBack();
                    elt.Visible = true;
                    m_listeElements.Add(elt);
                }
            }
            this.ResumeDrawing();
        }
コード例 #11
0
ファイル: CPanelSymboleType.cs プロジェクト: ykebaili/Timos
        private void m_linkEditSymbole_LinkClicked(object sender, EventArgs e)
        {
            if (m_radioSymbolePropre.Checked)
            {
                if (m_objetEdite.SymbolePropre == null)
                {
                    m_objetEdite.SymboleDeBibliotheque = null;

                    CSymbole sym = new CSymbole(((CObjetDonnee)m_objetEdite).ContexteDonnee);
                    sym.CreateNewInCurrentContexte();
                    m_objetEdite.SymbolePropre = sym;
                }

                C2iSymbole symboleEdite = CFormEditeurSymbolePopup.EditeSymbole(m_objetEdite.SymbolePropre.Symbole, m_typeEdite, false);

                if (symboleEdite != null)
                {
                    m_objetEdite.SymbolePropre.Symbole = symboleEdite;
                }
            }
        }
コード例 #12
0
        public static C2iSymbole EditeSymbole(C2iSymbole symboleEdite, Type typeEdite, bool bEditePorts)
        {
            CFormEditeurSymbolePopup form = new CFormEditeurSymbolePopup();
            C2iSymbole symbole;

            symbole = new C2iSymbole();
            if (bEditePorts)
            {
                form.m_btnAnnuler.Visible = false;
            }

            if (symboleEdite == null)
            {
                symbole.Size       = new Size(300, 300);
                symbole.BackColor  = Color.Transparent;
                symbole.TargetType = typeEdite;
                form.m_panelEditeurSymbole.Init(symbole, typeEdite, bEditePorts);
            }
            else
            {
                form.m_panelEditeurSymbole.Init(symboleEdite, typeEdite, bEditePorts);
            }



            if (form.ShowDialog() == DialogResult.OK)
            {
                symbole = form.m_panelEditeurSymbole.SymboleEdite;
                form.Dispose();



                return(symbole);
            }
            else
            {
                form.Dispose();
                return(null);
            }
        }
コード例 #13
0
        //-------------------------------------------------------------------------
        protected override CResultAErreur MyInitChamps()
        {
            m_chkParDefaut.Checked = false;
            m_chkParDefaut.Visible = !SymboleDeBibliotheque.IsNew();
            InitFamilles();
            InitComboTypeCible();
            AffecterTitre(I.T("Library symbol |30025") + SymboleDeBibliotheque.Libelle);
            CResultAErreur result = base.MyInitChamps();
            C2iSymbole     symb   = new C2iSymbole();

            symb.BackColor = Color.White;
            Type typeEdite = null;

            if (result)
            {
                m_cmbxTypeCible.SelectedValue = SymboleDeBibliotheque.TypeCible;
                if (m_cmbxTypeCible.SelectedValue != null)
                {
                    typeEdite = (Type)m_cmbxTypeCible.SelectedValue;
                }
                if (SymboleDeBibliotheque != null)
                {
                    if (SymboleDeBibliotheque.Symbole != null)
                    {
                        if (SymboleDeBibliotheque.Symbole.Symbole != null)
                        {
                            symb = SymboleDeBibliotheque.Symbole.Symbole;
                        }
                    }
                }
                m_panelEditeurSymbole.Init(symb, typeEdite, false);
            }
            if (SymboleDeBibliotheque.Symbole != null)
            {
                m_chkParDefaut.Checked = CSymbole.GetIdSymboleParDefaut(SymboleDeBibliotheque.TypeCible, SymboleDeBibliotheque.ContexteDonnee) == SymboleDeBibliotheque.Symbole.Id;
            }

            return(result);
        }
コード例 #14
0
 public void InitSymbole(C2iSymbole symbole)
 {
     m_symbole = symbole;
 }
コード例 #15
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;
        }
コード例 #16
0
        //----------------------------------------------------------
        //Remet à jour la liste des contrôles disponibles et compatibles avec le type édité
        public void RefreshControls()
        {
            m_listeElements.Clear();
            SuspendLayout();
            Dictionary <Type, bool> typesTraites = new Dictionary <Type, bool>();
            ArrayList lstControles = new ArrayList(Controls);

            foreach (Control ctrl in lstControles)
            {
                CElementListeSymbole elt = ctrl as CElementListeSymbole;
                typesTraites.Add(elt.TypeAssocie, true);
                if (elt != null)
                {
                    C2iSymbole symbole = (C2iSymbole)Activator.CreateInstance(elt.TypeAssocie);

                    /*   if (!wnd.CanBeUseOnType(m_typeEdite))
                     * {
                     *     elt.Visible = false;
                     *     elt.Parent.Controls.Remove(elt);
                     *     elt.Dispose();
                     * }
                     * else*/
                    m_listeElements.Add(elt);
                }
                else
                {
                    m_listeElements.Add(elt);
                }
            }

            foreach (Type tp in m_listeTypesControlesConnus)
            {
                if (!typesTraites.ContainsKey(tp))
                {
                    if (!tp.IsAbstract)
                    {
                        C2iSymbole symbole = (C2iSymbole)Activator.CreateInstance(tp);

                        /* if (!wnd.CanBeUseOnType(m_typeEdite))
                         *   continue;*/
                    }

                    CElementListeSymbole elt = new CElementListeSymbole();
                    //  elt.Image = C2iWnd.GetImage(tp);

                    /*object[] atts = tp.GetCustomAttributes(typeof(AWndIcone), false);
                     *
                     * if (atts.Length >= 1)
                     * {
                     *  AWndIcone att = (AWndIcone)atts[0];
                     *  elt.Image = att.Icone;
                     * }*/
                    elt.Parent      = this;
                    elt.TypeAssocie = tp;
                    elt.Size        = new Size(ClientRectangle.Width, c_nElementHeight);
                    elt.Left        = 0;
                    elt.Top         = m_listeElements.Count * (c_nElementHeight + c_nEcartYElements) + c_nEcartYElements;
                    elt.CreateControl();
                    elt.Dock    = DockStyle.Top;
                    elt.Visible = true;
                    m_listeElements.Add(elt);
                }
            }
            ResumeLayout();
        }