/// <summary>
        /// Load a project
        /// </summary>
        /// <param name="path">path of file</param>
        /// <param name="fileName">file name</param>
        /// <param name="notCurrent">do not set the current project</param>
        /// <returns>project object</returns>
        public static Project Load(string path, string fileName, bool notCurrent = false)
        {
            CadreModel.ReinitCounter(0);
            FileInfo fi = new FileInfo(Path.Combine(path, fileName));

            Marshalling.PersistentDataObject obj = null;
            Load(fi, out obj);

            Project pn = obj as Project;

            if (pn == null)
            {
                throw new FormatException(String.Format(Localization.Strings.GetString("ExceptionProjectNotLoaded"), fileName));
            }
            if (!notCurrent)
            {
                pn.openProject         = Project.CurrentProject.openProject;
                Project.CurrentProject = pn;
            }
            return(pn);
        }
        /// <summary>
        /// Load a project
        /// </summary>
        /// <param name="path">path of file</param>
        /// <param name="fileName">file name</param>
        /// <param name="del">delegate to open project</param>
        /// <returns>project object</returns>
        public static Project Load(string path, string fileName, OpenProject del)
        {
            FileInfo fi = new FileInfo(Path.Combine(path, fileName));

            Marshalling.PersistentDataObject obj = null;
            Load(fi, out obj);

            Project pn = obj as Project;

            if (pn == null)
            {
                throw new FormatException(String.Format(Localization.Strings.GetString("ExceptionProjectNotLoaded"), fileName));
            }
            CadreModel.ReinitCounter(pn.CadreModelCounter);
            Attributes.uniqueId.Counter    = pn.UniqueId;
            Attributes.uniqueClass.Counter = pn.UniqueClass;
            pn.openProject         = del;
            Project.CurrentProject = pn;
            pn.ReloadProject();
            return(pn);
        }