Пример #1
0
        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();
        }
Пример #2
0
        public MainFrame(string[] args)
        {
            _this = this;

            currentFileName = "Untitled";
            projectNeedSave = false;
            currentProject  = new SetupProject();
            currentProject.InitializeDefaults();
            InitializeComponent();
            LoadRecentMenu();

            if (args.Length == 1)
            {
                _openFileName = args[0];
            }
        }
Пример #3
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;
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
 public void SetMetadataThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject)
 {
     AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.SetMetadataValue("foo", "bar"); });
 }
Пример #6
0
 public void RemoveMetadataThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject)
 {
     AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.RemoveMetadata("bar"); }, "bar");
 }
Пример #7
0
 public void RemoveItemsThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject)
 {
     AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { p.RemoveItems(new [] {i}); });
 }
Пример #8
0
 public void ChangeItemTypeThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject)
 {
     AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.ItemType = "foo"; });
 }
Пример #9
0
 public void RenameThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject)
 {
     AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => {i.Rename("foo");});
 }