public ProjectElement CreateElement(ProjectElement.ElementType Type, System.Windows.Forms.TreeNode ParentNode) { ProjectElement element = new ProjectElement(); element.DocumentInfo.Type = Type; element.DocumentInfo.Project = this; element.DocumentInfo.UndoManager.MainForm = Core.MainForm; if (ParentNode != null) { element.Node = new System.Windows.Forms.TreeNode(); element.Node.Tag = element; element.Node.ImageIndex = (int)Type; element.Node.SelectedImageIndex = (int)Type; ParentNode.Nodes.Add(element.Node); element.Node.Parent.Expand(); } foreach (var configName in Settings.GetConfigurationNames()) { element.Settings[configName] = new ProjectElement.PerConfigSettings(); } Elements.Add(element); m_Modified = true; return(element); }
public ProjectElement CreateElement(ProjectElement.ElementType Type, System.Windows.Forms.TreeNode ParentNode) { ProjectElement element = new ProjectElement(); element.DocumentInfo.Type = Type; element.DocumentInfo.Project = this; element.DocumentInfo.UndoManager.MainForm = Core.MainForm; element.Node = new System.Windows.Forms.TreeNode(); element.Node.Tag = element; element.Node.ImageIndex = (int)Type; element.Node.SelectedImageIndex = (int)Type; ParentNode.Nodes.Add(element.Node); //MainForm.m_ProjectExplorer.NodeProject.Nodes.Add( element.Node ); element.Node.Parent.Expand(); foreach (string configSetting in Settings.Configs.Keys) { element.Settings[configSetting] = new ProjectElement.PerConfigSettings(); } Elements.AddLast(element); m_Modified = true; return(element); }
public BaseDocument CreateDocument(ProjectElement.ElementType Type) { BaseDocument document = null; switch (Type) { case ProjectElement.ElementType.ASM_SOURCE: document = new SourceASM(MainForm); break; } return(document); }
public ProjectElement CreateElement(ProjectElement.ElementType Type) { ProjectElement element = new ProjectElement(); element.Type = Type; element.Node = new System.Windows.Forms.TreeNode(); element.Node.Tag = element; MainForm.m_ProjectExplorer.NodeProject.Nodes.Add(element.Node); element.Node.Parent.Expand(); Elements.AddLast(element); m_Modified = true; return(element); }
bool ChooseFilename(ProjectElement.ElementType Type, string DefaultName, out string NewName) { Project curProject = ProjectFromNode(m_ContextMenuNode); System.Windows.Forms.OpenFileDialog openDlg = new System.Windows.Forms.OpenFileDialog(); openDlg.Title = "Specify new " + DefaultName; NewName = ""; string filterSource = ""; switch (Type) { case ProjectElement.ElementType.ASM_SOURCE: filterSource += Types.Constants.FILEFILTER_ASM; break; case ProjectElement.ElementType.BASIC_SOURCE: filterSource += Types.Constants.FILEFILTER_BASIC; break; case ProjectElement.ElementType.CHARACTER_SCREEN: filterSource += Types.Constants.FILEFILTER_CHARSET_SCREEN; break; case ProjectElement.ElementType.CHARACTER_SET: filterSource += Types.Constants.FILEFILTER_CHARSET; break; case ProjectElement.ElementType.GRAPHIC_SCREEN: filterSource += Types.Constants.FILEFILTER_GRAPHIC_SCREEN; break; case ProjectElement.ElementType.SPRITE_SET: filterSource += Types.Constants.FILEFILTER_SPRITE; break; } openDlg.Filter = MainForm.FilterString(filterSource); openDlg.InitialDirectory = curProject.Settings.BasePath; openDlg.CheckFileExists = false; openDlg.CheckPathExists = true; if (openDlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return(false); } NewName = openDlg.FileName; return(true); }
void AddNewFile(ProjectElement.ElementType Type, string Description) { string newFilename; if (!ChooseFilename(Type, Description, out newFilename)) { return; } Project curProject = ProjectFromNode(m_ContextMenuNode); string localizedFilename = GR.Path.RelativePathTo(System.IO.Path.GetFullPath(curProject.Settings.BasePath), true, newFilename, false); ProjectElement el = MainForm.CreateNewElement(Type, Description, curProject, m_ContextMenuNode); el.Filename = localizedFilename; el.Node.Text = System.IO.Path.GetFileName(localizedFilename); el.Document.SetDocumentFilename(localizedFilename); el.Document.Save(); }
public bool Load(byte[] ProjectData) { string currentConfig = "Default"; string activeElement = ""; Node = new System.Windows.Forms.TreeNode(); Node.Tag = this; GR.IO.MemoryReader memIn = new GR.IO.MemoryReader(ProjectData); GR.IO.FileChunk chunk = new GR.IO.FileChunk(); ushort origDebugStartAddress = 2049; while (chunk.ReadFromStream(memIn)) { GR.IO.MemoryReader memChunk = chunk.MemoryReader(); switch (chunk.Type) { case Types.FileChunk.PROJECT: // Project Info // Version memChunk.ReadUInt32(); Settings.Name = memChunk.ReadString(); Settings.Filename = memChunk.ReadString(); Settings.DebugPort = memChunk.ReadUInt16(); origDebugStartAddress = memChunk.ReadUInt16(); Settings.BuildTool = memChunk.ReadString(); Settings.RunTool = memChunk.ReadString(); Settings.MainDocument = memChunk.ReadString(); currentConfig = memChunk.ReadString(); activeElement = memChunk.ReadString(); Node.Text = Settings.Name; break; case Types.FileChunk.PROJECT_ELEMENT: // Element Info { // Version int version = (int)memChunk.ReadUInt32(); ProjectElement.ElementType type = (ProjectElement.ElementType)memChunk.ReadUInt32(); //System.Windows.Forms.TreeNode nodeParent = NodeFromHierarchy( ProjectElement element = CreateElement(type, Node); element.Name = memChunk.ReadString(); //element.Filename = System.IO.Path.GetFileName( memChunk.ReadString() ); element.Filename = memChunk.ReadString(); if (element.DocumentInfo.Type == ProjectElement.ElementType.FOLDER) { element.Node.Text = element.Name; } else { element.Node.Text = System.IO.Path.GetFileName(element.Filename); } GR.IO.FileChunk subChunk = new GR.IO.FileChunk(); if (!subChunk.ReadFromStream(memChunk)) { return(false); } if (subChunk.Type != Types.FileChunk.PROJECT_ELEMENT_DATA) { return(false); } // Element Data element.DocumentInfo.DocumentFilename = element.Filename; if (element.Document != null) { if (!element.Document.ReadFromReader(subChunk.MemoryReader())) { Elements.Remove(element); element.Document.Dispose(); element = null; } else { element.Document.SetDocumentFilename(element.Filename); } } element.TargetFilename = memChunk.ReadString(); element.TargetType = (Types.CompileTargetType)memChunk.ReadUInt32(); int dependencyCount = memChunk.ReadInt32(); for (int i = 0; i < dependencyCount; ++i) { string dependency = memChunk.ReadString(); element.ForcedDependency.DependentOnFile.Add(new FileDependency.DependencyInfo(dependency, true, false)); } // 3 free strings memChunk.ReadString(); memChunk.ReadString(); memChunk.ReadString(); int perConfigSettingCount = memChunk.ReadInt32(); for (int i = 0; i < perConfigSettingCount; ++i) { GR.IO.FileChunk chunkElementPerConfigSetting = new GR.IO.FileChunk(); chunkElementPerConfigSetting.ReadFromStream(memChunk); if (chunkElementPerConfigSetting.Type == Types.FileChunk.PROJECT_ELEMENT_PER_CONFIG_SETTING) { ProjectElement.PerConfigSettings perConfigSetting = new ProjectElement.PerConfigSettings(); GR.IO.MemoryReader memSubChunk = chunkElementPerConfigSetting.MemoryReader(); string config = memSubChunk.ReadString(); perConfigSetting.PreBuild = memSubChunk.ReadString(); perConfigSetting.CustomBuild = memSubChunk.ReadString(); perConfigSetting.PostBuild = memSubChunk.ReadString(); perConfigSetting.DebugFile = memSubChunk.ReadString(); perConfigSetting.DebugFileType = (C64Studio.Types.CompileTargetType)memSubChunk.ReadInt32(); perConfigSetting.PreBuildChain.Active = (memSubChunk.ReadInt32() == 1); int numEntries = memSubChunk.ReadInt32(); for (int j = 0; j < numEntries; ++j) { var entry = new BuildChainEntry(); entry.ProjectName = memSubChunk.ReadString(); entry.Config = memSubChunk.ReadString(); entry.DocumentFilename = memSubChunk.ReadString(); entry.PreDefines = memSubChunk.ReadString(); perConfigSetting.PreBuildChain.Entries.Add(entry); } perConfigSetting.PostBuildChain.Active = (memSubChunk.ReadInt32() == 1); numEntries = memSubChunk.ReadInt32(); for (int j = 0; j < numEntries; ++j) { var entry = new BuildChainEntry(); entry.ProjectName = memSubChunk.ReadString(); entry.Config = memSubChunk.ReadString(); entry.DocumentFilename = memSubChunk.ReadString(); entry.PreDefines = memSubChunk.ReadString(); perConfigSetting.PostBuildChain.Entries.Add(entry); } element.Settings[config] = perConfigSetting; } } element.IsShown = (memChunk.ReadInt32() != 0); element.AssemblerType = (C64Studio.Types.AssemblerType)memChunk.ReadUInt32(); int hierarchyPartCount = memChunk.ReadInt32(); for (int i = 0; i < hierarchyPartCount; ++i) { string part = memChunk.ReadString(); element.ProjectHierarchy.Add(part); } if (element.ProjectHierarchy.Count > 0) { // node is sub-node, move accordingly System.Windows.Forms.TreeNode parentNode = NodeFromHierarchy(element.ProjectHierarchy); if ((parentNode != null) && (parentNode != element.Node.Parent)) { element.Node.Remove(); parentNode.Nodes.Add(element.Node); } } // dependency - include symbols dependencyCount = memChunk.ReadInt32(); for (int i = 0; i < dependencyCount; ++i) { element.ForcedDependency.DependentOnFile[i].IncludeSymbols = (memChunk.ReadInt32() != 0); } // code folding entries int numFoldingEntries = memChunk.ReadInt32(); element.DocumentInfo.CollapsedFoldingBlocks = new GR.Collections.Set <int>(); for (int i = 0; i < numFoldingEntries; ++i) { int collapsedBlockLine = memChunk.ReadInt32(); element.DocumentInfo.CollapsedFoldingBlocks.Add(collapsedBlockLine); //Debug.Log( "Get collapsed blocked for " + element.DocumentInfo.FullPath + ", line " + collapsedBlockLine ); } // TODO - load other stuff if ((element != null) && (element.IsShown)) { ShowDocument(element); if (element.Document != null) { element.Document.ShowHint = DockState.Document; //element.Document.Show( MainForm.panelMain ); } } } break; case Types.FileChunk.PROJECT_ELEMENT_DISPLAY_DATA: { string elementFilename = memChunk.ReadString(); ProjectElement element = GetElementByFilename(elementFilename); if (element != null) { UInt32 numBytes = memChunk.ReadUInt32(); GR.Memory.ByteBuffer displayData = new GR.Memory.ByteBuffer(); memChunk.ReadBlock(displayData, numBytes); if (element.Document != null) { element.Document.ApplyDisplayDetails(displayData); } } } break; case Types.FileChunk.PROJECT_CONFIG: { ProjectConfig config = new ProjectConfig(); config.Load(memChunk); if (string.IsNullOrEmpty(config.DebugStartAddressLabel)) { config.DebugStartAddressLabel = origDebugStartAddress.ToString(); } Settings.Configs.Add(config.Name, config); } break; case Types.FileChunk.PROJECT_WATCH_ENTRY: { WatchEntry watch = new WatchEntry(); watch.Load(memChunk); Core.MainForm.AddWatchEntry(watch); //Debug.Log( "loaded watch entry for " + watch.Name ); } break; } } if (Settings.Configs.Count == 0) { // there must be one config ProjectConfig config = new ProjectConfig(); config.Name = "Default"; Settings.Configs.Add(config.Name, config); Settings.CurrentConfig = config; } else { if (Settings.Configs.ContainsKey(currentConfig)) { Settings.CurrentConfig = Settings.Configs[currentConfig]; } else { foreach (ProjectConfig config in Settings.Configs.Values) { Settings.CurrentConfig = config; break; } } } foreach (ProjectElement element in Elements) { if (element.Settings.Count == 0) { foreach (ProjectConfig config in Settings.Configs.Values) { // needs a default setting! element.Settings[config.Name] = new ProjectElement.PerConfigSettings(); } } if ((!string.IsNullOrEmpty(element.Filename)) && (GR.Path.IsPathEqual(element.Filename, Settings.MainDocument))) { Core.MainForm.m_SolutionExplorer.HighlightNode(element.Node); } Core.MainForm.RaiseApplicationEvent(new C64Studio.Types.ApplicationEvent(C64Studio.Types.ApplicationEvent.Type.DOCUMENT_INFO_CREATED, element.DocumentInfo)); Core.MainForm.RaiseApplicationEvent(new C64Studio.Types.ApplicationEvent(C64Studio.Types.ApplicationEvent.Type.ELEMENT_CREATED, element)); } if (!String.IsNullOrEmpty(activeElement)) { ProjectElement element = GetElementByFilename(activeElement); if ((element != null) && (element.Document != null)) { element.Document.Show(); } } m_Modified = false; return(true); }
public bool Load(string Filename) { byte[] projectData = null; try { projectData = System.IO.File.ReadAllBytes(Filename); } catch (System.IO.IOException) { return(false); } Settings.Filename = Filename; Settings.BasePath = System.IO.Path.GetDirectoryName(Settings.Filename); GR.IO.MemoryReader memIn = new GR.IO.MemoryReader(projectData); GR.IO.FileChunk chunk = new GR.IO.FileChunk(); while (chunk.ReadFromStream(memIn)) { GR.IO.MemoryReader memChunk = chunk.MemoryReader(); switch (chunk.Type) { case Types.FileChunk.PROJECT: // Project Info // Version memChunk.ReadUInt32(); Settings.Name = memChunk.ReadString(); Settings.Filename = memChunk.ReadString(); Settings.DebugPort = memChunk.ReadUInt16(); Settings.DebugStartAddress = memChunk.ReadUInt16(); Settings.BuildTool = memChunk.ReadString(); Settings.RunTool = memChunk.ReadString(); Settings.MainDocument = memChunk.ReadString(); break; case Types.FileChunk.PROJECT_ELEMENT: // Element Info { // Version int version = (int)memChunk.ReadUInt32(); ProjectElement.ElementType type = (ProjectElement.ElementType)memChunk.ReadUInt32(); ProjectElement element = CreateElement(type); element.Name = memChunk.ReadString(); element.Filename = memChunk.ReadString(); ShowDocument(element); GR.IO.FileChunk subChunk = new GR.IO.FileChunk(); if (!subChunk.ReadFromStream(memChunk)) { return(false); } if (subChunk.Type != Types.FileChunk.PROJECT_ELEMENT_DATA) { return(false); } // Element Data if (element.Document != null) { if (!element.Document.ReadFromReader(subChunk.MemoryReader())) { Elements.Remove(element); element.Document.Dispose(); element = null; } } element.TargetFilename = memChunk.ReadString(); element.TargetType = (FileParser.CompileTargetType)memChunk.ReadUInt32(); if ((element != null) && (element.Document != null)) { element.Document.ShowHint = DockState.Document; element.Document.Show(MainForm.panelMain); } } break; } } Settings.Filename = Filename; m_Modified = false; return(true); }
public bool Load(byte[] ProjectData, bool AutoCreateGUIItems) { string currentConfig = "Default"; string activeElement = ""; Node = new System.Windows.Forms.TreeNode(); Node.Tag = this; Node.Collapse(); GR.IO.MemoryReader memIn = new GR.IO.MemoryReader(ProjectData); GR.IO.FileChunk chunk = new GR.IO.FileChunk(); ushort origDebugStartAddress = 0; while (chunk.ReadFromStream(memIn)) { GR.IO.MemoryReader memChunk = chunk.MemoryReader(); switch (chunk.Type) { case FileChunkConstants.PROJECT: // Project Info // Version uint projectVersion = memChunk.ReadUInt32(); Settings.Name = memChunk.ReadString(); Settings.Filename = memChunk.ReadString(); Settings.DebugPort = memChunk.ReadUInt16(); origDebugStartAddress = memChunk.ReadUInt16(); Settings.BuildTool = memChunk.ReadString(); Settings.RunTool = memChunk.ReadString(); Settings.MainDocument = memChunk.ReadString(); currentConfig = memChunk.ReadString(); activeElement = memChunk.ReadString(); memChunk.ReadUInt32(); // flags (all free) if (projectVersion == 1) { if (origDebugStartAddress == 2049) { origDebugStartAddress = 0; } } Node.Text = Settings.Name; break; case FileChunkConstants.PROJECT_ELEMENT: // Element Info { // Version int elementVersion = (int)memChunk.ReadUInt32(); ProjectElement.ElementType type = (ProjectElement.ElementType)memChunk.ReadUInt32(); ProjectElement element = CreateElement(type, Node); element.Name = memChunk.ReadString(); element.Filename = memChunk.ReadString(); if (element.DocumentInfo.Type == ProjectElement.ElementType.FOLDER) { element.Node.Text = element.Name; } else { element.Node.Text = System.IO.Path.GetFileName(element.Filename); } if (Core.Navigating.Solution.IsNodeExpanded(element)) { element.Node.Expand(); } else { element.Node.Collapse(); } GR.IO.FileChunk subChunk = new GR.IO.FileChunk(); if (!subChunk.ReadFromStream(memChunk)) { return(false); } if (subChunk.Type != FileChunkConstants.PROJECT_ELEMENT_DATA) { return(false); } // Element Data element.DocumentInfo.DocumentFilename = element.Filename; if (element.Document != null) { if (!element.Document.ReadFromReader(subChunk.MemoryReader())) { Elements.Remove(element); element.Document.Dispose(); element = null; } else { element.Document.SetDocumentFilename(element.Filename); } } element.TargetFilename = memChunk.ReadString(); element.TargetType = (Types.CompileTargetType)memChunk.ReadUInt32(); int dependencyCount = memChunk.ReadInt32(); for (int i = 0; i < dependencyCount; ++i) { string dependency = memChunk.ReadString(); element.ForcedDependency.DependentOnFile.Add(new FileDependency.DependencyInfo(Settings.Name, dependency, true, false)); } element.StartAddress = memChunk.ReadString(); // 2 free strings memChunk.ReadString(); memChunk.ReadString(); int perConfigSettingCount = memChunk.ReadInt32(); for (int i = 0; i < perConfigSettingCount; ++i) { GR.IO.FileChunk chunkElementPerConfigSetting = new GR.IO.FileChunk(); chunkElementPerConfigSetting.ReadFromStream(memChunk); if (chunkElementPerConfigSetting.Type == FileChunkConstants.PROJECT_ELEMENT_PER_CONFIG_SETTING) { ProjectElement.PerConfigSettings perConfigSetting = new ProjectElement.PerConfigSettings(); GR.IO.MemoryReader memSubChunk = chunkElementPerConfigSetting.MemoryReader(); string config = memSubChunk.ReadString(); perConfigSetting.PreBuild = memSubChunk.ReadString(); perConfigSetting.CustomBuild = memSubChunk.ReadString(); perConfigSetting.PostBuild = memSubChunk.ReadString(); perConfigSetting.DebugFile = memSubChunk.ReadString(); perConfigSetting.DebugFileType = (RetroDevStudio.Types.CompileTargetType)memSubChunk.ReadInt32(); perConfigSetting.PreBuildChain.Active = (memSubChunk.ReadInt32() == 1); int numEntries = memSubChunk.ReadInt32(); for (int j = 0; j < numEntries; ++j) { var entry = new BuildChainEntry(); entry.ProjectName = memSubChunk.ReadString(); entry.Config = memSubChunk.ReadString(); entry.DocumentFilename = memSubChunk.ReadString(); entry.PreDefines = memSubChunk.ReadString(); perConfigSetting.PreBuildChain.Entries.Add(entry); } perConfigSetting.PostBuildChain.Active = (memSubChunk.ReadInt32() == 1); numEntries = memSubChunk.ReadInt32(); for (int j = 0; j < numEntries; ++j) { var entry = new BuildChainEntry(); entry.ProjectName = memSubChunk.ReadString(); entry.Config = memSubChunk.ReadString(); entry.DocumentFilename = memSubChunk.ReadString(); entry.PreDefines = memSubChunk.ReadString(); perConfigSetting.PostBuildChain.Entries.Add(entry); } element.Settings[config] = perConfigSetting; } } uint flags = memChunk.ReadUInt32(); element.IsShown = ((flags & 1) != 0); element.AssemblerType = (RetroDevStudio.Types.AssemblerType)memChunk.ReadUInt32(); int hierarchyPartCount = memChunk.ReadInt32(); for (int i = 0; i < hierarchyPartCount; ++i) { string part = memChunk.ReadString(); element.ProjectHierarchy.Add(part); } if (element.ProjectHierarchy.Count > 0) { // node is sub-node, move accordingly System.Windows.Forms.TreeNode parentNode = NodeFromHierarchy(element.ProjectHierarchy); if ((parentNode != null) && (parentNode != element.Node.Parent)) { element.Node.Remove(); parentNode.Nodes.Add(element.Node); } } // dependency - include symbols dependencyCount = memChunk.ReadInt32(); for (int i = 0; i < dependencyCount; ++i) { element.ForcedDependency.DependentOnFile[i].IncludeSymbols = (memChunk.ReadInt32() != 0); } // code folding entries int numFoldingEntries = memChunk.ReadInt32(); element.DocumentInfo.CollapsedFoldingBlocks = new GR.Collections.Set <int>(); for (int i = 0; i < numFoldingEntries; ++i) { int collapsedBlockLine = memChunk.ReadInt32(); element.DocumentInfo.CollapsedFoldingBlocks.Add(collapsedBlockLine); } // external dependencies int externalDependencyCount = memChunk.ReadInt32(); for (int i = 0; i < externalDependencyCount; ++i) { string dependency = memChunk.ReadString(); element.ExternalDependencies.DependentOnFile.Add(new FileDependency.DependencyInfo("", dependency, true, false)); } var obsoleteBasicVersion = (BasicVersion)memChunk.ReadUInt32(); // dependency - project dependencyCount = memChunk.ReadInt32(); for (int i = 0; i < dependencyCount; ++i) { element.ForcedDependency.DependentOnFile[i].Project = memChunk.ReadString(); } element.BASICDialect = memChunk.ReadString(); if (string.IsNullOrEmpty(element.BASICDialect)) { // old version, find dialect from obsoleteBasicVersion string dialectKey = "BASIC V2"; switch (obsoleteBasicVersion) { case BasicVersion.C64_BASIC_V2: break; case BasicVersion.BASIC_LIGHTNING: dialectKey = "BASIC Lightning"; break; case BasicVersion.LASER_BASIC: dialectKey = "Laser BASIC"; break; case BasicVersion.SIMONS_BASIC: dialectKey = "Simon's BASIC"; break; case BasicVersion.V3_5: dialectKey = "BASIC V3.5"; break; case BasicVersion.V7_0: dialectKey = "BASIC V7.0"; break; } if (Core.Compiling.BASICDialects.ContainsKey(dialectKey)) { element.BASICDialect = dialectKey; } } // TODO - load other stuff if ((element != null) && (element.IsShown) && (AutoCreateGUIItems)) { ShowDocument(element); if (element.Document != null) { element.Document.ShowHint = DockState.Document; } } if (element.Document != null) { element.Document.RefreshDisplayOptions(); } } break; case FileChunkConstants.PROJECT_ELEMENT_DISPLAY_DATA: { string elementFilename = memChunk.ReadString(); ProjectElement element = GetElementByFilename(elementFilename); if (element != null) { UInt32 numBytes = memChunk.ReadUInt32(); GR.Memory.ByteBuffer displayData = new GR.Memory.ByteBuffer(); memChunk.ReadBlock(displayData, numBytes); if (element.Document != null) { element.Document.ApplyDisplayDetails(displayData); } } } break; case FileChunkConstants.PROJECT_CONFIG: { ProjectConfig config = new ProjectConfig(); config.Load(memChunk); if (string.IsNullOrEmpty(config.DebugStartAddressLabel)) { config.DebugStartAddressLabel = origDebugStartAddress.ToString(); } Settings.Configuration(config.Name, config); } break; case FileChunkConstants.PROJECT_WATCH_ENTRY: { WatchEntry watch = new WatchEntry(); watch.Load(memChunk); Settings.WatchEntries.Add(watch); } break; } } if (Settings.GetConfigurationCount() == 0) { // there must be one config ProjectConfig config = new ProjectConfig(); config.Name = "Default"; Settings.Configuration(config.Name, config); Settings.CurrentConfig = config; } else { Settings.CurrentConfig = Settings.Configuration(currentConfig); if (Settings.CurrentConfig == null) { Settings.CurrentConfig = Settings.GetConfigurations().First(); } } foreach (ProjectElement element in Elements) { if (element.Settings.Count == 0) { foreach (var configName in Settings.GetConfigurationNames()) { // needs a default setting! element.Settings[configName] = new ProjectElement.PerConfigSettings(); } } if (AutoCreateGUIItems) { if ((!string.IsNullOrEmpty(element.Filename)) && (GR.Path.IsPathEqual(element.Filename, Settings.MainDocument))) { Core.MainForm.m_SolutionExplorer.HighlightNode(element.Node); } Core.MainForm.RaiseApplicationEvent(new RetroDevStudio.Types.ApplicationEvent(RetroDevStudio.Types.ApplicationEvent.Type.DOCUMENT_INFO_CREATED, element.DocumentInfo)); Core.MainForm.RaiseApplicationEvent(new RetroDevStudio.Types.ApplicationEvent(RetroDevStudio.Types.ApplicationEvent.Type.ELEMENT_CREATED, element)); } } if (!String.IsNullOrEmpty(activeElement)) { ProjectElement element = GetElementByFilename(activeElement); if ((element != null) && (element.Document != null)) { element.Document.Show(); } } m_Modified = false; return(true); }