private void OnNewProject(object sender, EventArgs e) { if (projectNeedSave) { switch (MessageBox.Show("The current project has changed. Do you want to save it?", "Save?", MessageBoxButtons.YesNoCancel)) { case DialogResult.OK: OnSave(null, null); // Fall troug break; case DialogResult.No: break; case DialogResult.Cancel: return; // Do not create a new project } } currentFileName = ""; currentProject = new SetupProject(); currentProject.InitializeDefaults(); BindData(); SynchFeatures(true); ReloadMergeModuleList(); ReloadWixModuleList(); ReloadFileList(); }
public MainFrame(string[] args) { _this = this; currentFileName = "Untitled"; projectNeedSave = false; currentProject = new SetupProject(); currentProject.InitializeDefaults(); InitializeComponent(); LoadRecentMenu(); if (args.Length == 1) { _openFileName = args[0]; } }
private void LoadFile(string path) { Cursor = System.Windows.Forms.Cursors.WaitCursor; currentFileName = path; try { Environment.CurrentDirectory = (Path.GetDirectoryName(currentFileName)); currentProject.Clear(); projectNeedSave = false; XmlSerializer serializer = new XmlSerializer(Type.GetType("WarSetup.SetupProject")); using (StreamReader file = new StreamReader(currentFileName)) { currentProject = (SetupProject)serializer.Deserialize(file); } // Previously the merge-modules were re-loaded each time the document was // loaded. We have to load the information from the modules if this is an // old warsetup file... foreach (MergeModule mm in currentProject.projectMergeModules) { if ((null == mm.ModuleId) || ("" == mm.ModuleId)) { mm.LoadInfo(); } } BindData(); projectNeedSave = false; SynchFeatures(true); ReloadMergeModuleList(); ReloadWixModuleList(); currentProject.projectProperties.AddAllUiCulture(); currentProject.projectProperties.RemoveUiCultureDuplicates(); InitLicense(); SetSelectedLicense(); CurrentProject.ResolveMainFeature(false); CurrentProject.Virgin = false; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { Cursor = System.Windows.Forms.Cursors.Default; } }
private static void AssertDisabledItemSplitting(string projectContents, int itemIndex, SetupProject setupProject, Action<Project, ProjectItem> itemOperation, string metadataToInsert = "", Func<string, Project> projectProvider = null) { var metadataElement = string.IsNullOrEmpty(metadataToInsert) ? "" : $"<{metadataToInsert}>metadata</{metadataToInsert}>"; projectContents = string.Format(projectContents, metadataElement); projectContents = ObjectModelHelpers.CleanupFileContents(projectContents); Project project; if (projectProvider != null) { project = projectProvider(projectContents); } else { var content = XmlReader.Create(new StringReader(projectContents)); project = new Project(content); setupProject?.Invoke(project); project.ReevaluateIfNecessary(); } project.ThrowInsteadOfSplittingItemElement = true; var initialXml = project.Xml.RawXml; var item = project.Items.ElementAt(itemIndex); var ex = Assert.Throws(typeof(InvalidOperationException), () => itemOperation(project, item)); Assert.Matches("The requested operation needs to split the item element at location .* into individual elements but item element splitting is disabled with .*", ex.Message); Assert.False(project.IsDirty, "project should not be dirty after item splitting threw exception"); Assert.Equal(initialXml, project.Xml.RawXml); }
public void SetMetadataThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.SetMetadataValue("foo", "bar"); }); }
public void RemoveMetadataThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.RemoveMetadata("bar"); }, "bar"); }
public void RemoveItemsThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { p.RemoveItems(new [] {i}); }); }
public void ChangeItemTypeThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.ItemType = "foo"; }); }
public void RenameThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => {i.Rename("foo");}); }