예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="activeProject"></param>
        /// <param name="identifier"></param>
        /// <param name="showDialog"></param>
        /// <param name="userChoice"></param>
        /// <param name="hadConfig"></param>
        /// <param name="filepath"></param>
        /// <returns></returns>
        public Xml.Settings.Project.Options DetermineProjectConfiguration(Project activeProject,
                                                                          Enumerations.ProjectIdentifier identifier,
                                                                          out string filepath,
                                                                          bool returnClone)
        {
            filepath = null;

            //-----get the user project settings and check if they are set to
            Xml.Settings.Project.Options projectOptions = Configuration.ProjectOptions.First(x => x.Identifier == identifier);
            if (projectOptions.GeneralOptions.Storage == Enumerations.SettingsStorage.Project)
            {
                string configName = Resources.ProjectConfigurationFilename;
                if (!string.IsNullOrEmpty(projectOptions.GeneralOptions.Filename))
                {
                    configName = projectOptions.GeneralOptions.Filename;
                    if (string.IsNullOrEmpty(Path.GetExtension(configName)))
                    {
                        configName = string.Format("{0}.config", configName);
                    }
                }

                LoggingManager.Instance.Logger.Debug(string.Format("configuration filename is: {0}", configName));

                ProjectItem config = ExtensionUtil.GetItem(configName, activeProject.ProjectItems);

                if (config == null)
                {
                    LoggingManager.Instance.Logger.Debug("configuration file not found, using existing configuration");

                    filepath = Path.Combine(Path.GetDirectoryName(activeProject.FullName), configName);
                    XmlUtil.Serialize(filepath, Configuration.ProjectOptions.First(x => x.Identifier == identifier));

                    activeProject.ProjectItems.AddFromFile(filepath);
                    activeProject.Save();
                }
                else
                {
                    filepath = ExtensionUtil.GetPropertyValue <string>(config.Properties, Resources.PropertyFullpath, null);
                }
                return(XmlUtil.Deserialize <Xml.Settings.Project.Options>(filepath));
            }
            else
            {
                Xml.Settings.Project.Options original = Configuration.ProjectOptions.First(x => x.Identifier == identifier);
                if (original != null)
                {
                    if (returnClone)
                    {
                        return(original.Clone());
                    }
                    else
                    {
                        return(original);
                    }
                }
                return(null);
            }
        }