예제 #1
0
 static IEnumerable <TargetFramework> GetPortableTargetFrameworks(PackagingProject project)
 {
     return(Runtime.SystemAssemblyService.GetTargetFrameworks().Where(fx =>
                                                                      fx.Id.Identifier == ".NETPortable" &&
                                                                      !string.IsNullOrEmpty(fx.Id.Profile) &&
                                                                      project.TargetRuntime.IsInstalled(fx)));
 }
        public PackagingFeatureWidget(SolutionFolder parentFolder, SolutionItem entry)
        {
            this.Build();
            this.entry        = entry;
            this.parentFolder = parentFolder;

            creatingPackProject = entry is PackagingProject;

            if (!creatingPackProject)
            {
                ReadOnlyCollection <PackagingProject> packProjects = parentFolder.ParentSolution.GetAllSolutionItems <PackagingProject> ();
                newPackProject = new PackagingProject();

                string label = GettextCatalog.GetString("Create packages for this project in a new Packaging Project");
                AddCreatePackageSection(box, label, newPackProject, packProjects.Count > 0);

                foreach (PackagingProject project in packProjects)
                {
                    AddProject(project);
                }
            }
            else
            {
                string label = GettextCatalog.GetString("Select packages to add to the new Packaging Project");
                AddCreatePackageSection(box, label, (PackagingProject)entry, false);
            }
        }
예제 #3
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            PackagingProject project = dataObject as PackagingProject;

            nodeInfo.Label = project.Name;
            nodeInfo.Icon  = Context.GetIcon("md-packaging-project");
        }
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon)
        {
            PackagingProject project = dataObject as PackagingProject;

            label = project.Name;
            icon  = Context.GetIcon("md-packaging-project");
        }
		static IEnumerable<TargetFramework> GetPortableTargetFrameworks (PackagingProject project)
		{
			return Runtime.SystemAssemblyService.GetTargetFrameworks ().Where (fx =>
				!fx.Hidden &&
				fx.Id.Identifier == ".NETPortable" &&
				!string.IsNullOrEmpty (fx.Id.Profile) &&
				project.TargetRuntime.IsInstalled (fx));
		}
		internal void Save (PackagingProject project)
		{
			var selectedProfiles = pclProfiles
				.Where (profile => profile.IsEnabled)
				.Select (profile => profile.Framework.Id);
			
			project.UpdateReferenceAssemblyFrameworks (selectedProfiles);
		}
        internal void Save(PackagingProject project)
        {
            var selectedProfiles = pclProfiles
                                   .Where(profile => profile.IsEnabled)
                                   .Select(profile => profile.Framework.Id);

            project.UpdateReferenceAssemblyFrameworks(selectedProfiles);
        }
        void RegisterCheck(Gtk.CheckButton check, PackagingProject project, Package package)
        {
            PackageInfo pi = new PackageInfo();

            pi.Check   = check;
            pi.Project = project;
            pi.Package = package;
            packages.Add(pi);
        }
예제 #9
0
        public override void BuildChildNodes(ITreeBuilder builder, object dataObject)
        {
            PackagingProject project = dataObject as PackagingProject;

            foreach (Package p in project.Packages)
            {
                builder.AddChild(p);
            }
        }
        void AddPackageBuilder(Gtk.VBox parent, PackagingProject project, PackageBuilder pb)
        {
            Gtk.CheckButton check = new Gtk.CheckButton(pb.DefaultName);
            check.Show();
            parent.PackStart(check, false, false, 0);
            Package pkg = new Package(pb);

            pkg.Name = pb.DefaultName;
            RegisterCheck(check, project, pkg);
        }
		void AddPortableClassLibraryProfiles (PackagingProject project)
		{
			var targetFrameworks = GetPortableTargetFrameworks (project).ToList ();
			targetFrameworks.Sort (CompareFrameworks);

			var selectedTargetFrameworks = project.GetReferenceAssemblyFrameworks ().ToList ();
			pclProfiles = targetFrameworks.Select (fx => CreatePortableProfileViewModel (fx, selectedTargetFrameworks)).ToList ();

			foreach (PortableProfileViewModel profile in pclProfiles) {
				pclProfilesStore.AppendValues (profile.IsEnabled, profile.ProfileName, profile.GetProfileDescription (), profile);
			}
		}
        void AddPortableClassLibraryProfiles(PackagingProject project)
        {
            var targetFrameworks = GetPortableTargetFrameworks(project).ToList();

            targetFrameworks.Sort(CompareFrameworks);

            var selectedTargetFrameworks = project.GetReferenceAssemblyFrameworks().ToList();

            pclProfiles = targetFrameworks.Select(fx => CreatePortableProfileViewModel(fx, selectedTargetFrameworks)).ToList();

            foreach (PortableProfileViewModel profile in pclProfiles)
            {
                pclProfilesStore.AppendValues(profile.IsEnabled, profile.ProfileName, profile.GetProfileDescription(), profile);
            }
        }
예제 #13
0
		public PackagingFeatureWidget (SolutionFolder parentFolder, SolutionItem entry)
		{
			this.Build();
			this.entry = entry;
			this.parentFolder = parentFolder;
			
			creatingPackProject = entry is PackagingProject;
			
			if (!creatingPackProject) {
				ReadOnlyCollection<PackagingProject> packProjects = parentFolder.ParentSolution.GetAllSolutionItems<PackagingProject> ();
				newPackProject = new PackagingProject ();
			
				string label = GettextCatalog.GetString ("Create packages for this project in a new Packaging Project");
				AddCreatePackageSection (box, label, newPackProject, packProjects.Count > 0);
			
				foreach (PackagingProject project in packProjects)
					AddProject (project);
			} else {
				string label = GettextCatalog.GetString ("Select packages to add to the new Packaging Project");
				AddCreatePackageSection (box, label, (PackagingProject) entry, false);
			}
		}
예제 #14
0
 public static IAsyncOperation BuildPackages(PackagingProject project)
 {
     return(BuildPackages(project.Packages));
 }
예제 #15
0
 internal void Save(PackagingProject project)
 {
     UpdateMetadata();
     project.UpdatePackageMetadata(metadata);
 }
예제 #16
0
 internal void Load(PackagingProject project)
 {
     metadata = project.GetPackageMetadata();
     LoadMetadata();
 }
예제 #17
0
		public static IAsyncOperation BuildPackages (PackagingProject project)
		{
			return BuildPackages (project.Packages);
		}
예제 #18
0
 protected override void SaveAsync(PackagingProject project)
 {
     project.SaveAsync(new ProgressMonitor());
 }
예제 #19
0
		void AddPackageBuilder (Gtk.VBox parent, PackagingProject project, PackageBuilder pb)
		{
			Gtk.CheckButton check = new Gtk.CheckButton (pb.DefaultName);
			check.Show ();
			parent.PackStart (check, false, false, 0);
			Package pkg = new Package (pb);
			pkg.Name = pb.DefaultName;
			RegisterCheck (check, project, pkg);
		}
예제 #20
0
		void RegisterCheck (Gtk.CheckButton check, PackagingProject project, Package package)
		{
			PackageInfo pi = new PackageInfo ();
			pi.Check = check;
			pi.Project = project;
			pi.Package = package;
			packages.Add (pi);
		}
예제 #21
0
		void AddCreatePackageSection (Gtk.VBox vbox, string label, PackagingProject parentProject, bool showCheck)
		{
			Gtk.VBox vboxNewPacks;
			Gtk.Widget hbox;
			if (showCheck) {
				Gtk.CheckButton check = new Gtk.CheckButton (label);
				check.Show ();
				vbox.PackStart (check, false, false, 0);
				
				AddBox (vbox, out hbox, out vboxNewPacks);
				check.Toggled += delegate {
					hbox.Visible = check.Active;
					if (!check.Active)
						DisableChecks (hbox);
				};
			} else {
				Gtk.Label lab = new Gtk.Label (label);
				lab.Show ();
				vbox.PackStart (lab, false, false, 0);
				AddBox (vbox, out hbox, out vboxNewPacks);
				hbox.Show ();
			}
			
			ICollection builders;
			if (creatingPackProject)
				builders = DeployService.GetPackageBuilders ();
			else
				builders = DeployService.GetSupportedPackageBuilders (entry);
			
			foreach (PackageBuilder pb in builders) {
				if (creatingPackProject) {
					pb.SetSolutionItem (parentFolder.ParentSolution.RootFolder);
					// Add all compatible projects
					foreach (SolutionItem e in parentFolder.ParentSolution.GetAllSolutionItems ()) {
						if (pb.CanBuild (e))
							pb.AddEntry (e);
					}
				} else {
					pb.SetSolutionItem (parentFolder, new SolutionItem [] { entry });
				}
				
				PackageBuilder[] defp = pb.CreateDefaultBuilders ();
				if (defp.Length == 0)
					continue;
				if (defp.Length == 1)
					AddPackageBuilder (vboxNewPacks, parentProject, defp[0]);
				else {
					Gtk.CheckButton checkBuilder = new Gtk.CheckButton (pb.Description);
					checkBuilder.Show ();
					vboxNewPacks.PackStart (checkBuilder, false, false, 0);
					Gtk.VBox vboxDefPacks;
					Gtk.Widget thbox;
					AddBox (vboxNewPacks, out thbox, out vboxDefPacks);
					checkBuilder.Toggled += delegate {
						thbox.Visible = checkBuilder.Active;
						if (!checkBuilder.Active)
							DisableChecks (thbox);
					};
					foreach (PackageBuilder dp in defp)
						AddPackageBuilder (vboxDefPacks, parentProject, dp);
				}
			}
		}
		internal void Load (PackagingProject project)
		{
			AddPortableClassLibraryProfiles (project);
		}
예제 #23
0
        public override void DeleteItem()
        {
            PackagingProject project = CurrentNode.DataItem as PackagingProject;

            IdeApp.ProjectOperations.RemoveSolutionItem(project);
        }
예제 #24
0
        public override void OnNodeAdded(object dataObject)
        {
            PackagingProject project = dataObject as PackagingProject;

            project.PackagesChanged += OnConfigurationsChanged;
        }
예제 #25
0
		void AddProject (PackagingProject project)
		{
			string pname = project.Name;
			SolutionFolder c = project.ParentFolder;
			while (c != null) {
				pname = c.Name + " / " + pname;
				if (c.IsRoot)
					break;
				c = c.ParentFolder;
			}
			
			// Get a list of packages that can contain the new project
			ArrayList list = new ArrayList ();
			foreach (Package p in project.Packages) {
				if (p.PackageBuilder.CanBuild (entry))
					list.Add (p);
			}
			
			string label;
			Gtk.VBox vbox;
			
			if (list.Count > 0)
			{
				label = GettextCatalog.GetString ("Add the new project to the Packaging Project '{0}'", pname);
				Gtk.CheckButton checkAddNew = new Gtk.CheckButton (label);
				checkAddNew.Show ();
				box.PackStart (checkAddNew, false, false, 0);
				
				Gtk.Widget hbox;
				AddBox (box, out hbox, out vbox);
				checkAddNew.Toggled += delegate {
					hbox.Visible = checkAddNew.Active;
					if (!checkAddNew.Active)
						DisableChecks (hbox);
				};
				
				// Options for adding the project to existing packages
				
				label = GettextCatalog.GetString ("Add the project to existing packages");
				Gtk.CheckButton checkAddExist = new Gtk.CheckButton (label);
				checkAddExist.Show ();
				vbox.PackStart (checkAddExist, false, false, 0);
				
				Gtk.VBox vboxPacks;
				Gtk.Widget thbox;
				AddBox (vbox, out thbox, out vboxPacks);
				checkAddExist.Toggled += delegate {
					thbox.Visible = checkAddExist.Active;
					if (!checkAddExist.Active)
						DisableChecks (thbox);
				};
				
				foreach (Package p in list) {
					label = p.Name;
					if (label != p.PackageBuilder.Description)
						label += " (" + p.PackageBuilder.Description + ")";
					Gtk.CheckButton checkPackage = new Gtk.CheckButton (label);
					checkPackage.Show ();
					vboxPacks.PackStart (checkPackage, false, false, 0);
					RegisterCheck (checkPackage, project, p);
				}
				
				// Options for creating new packages
				
				label = GettextCatalog.GetString ("Create new packages for the project");
				AddCreatePackageSection (vbox, label, project, true);
			}
			else {
				label = GettextCatalog.GetString ("Add new packages for this project in the packaging project '{0}'", pname);
				AddCreatePackageSection (box, label, project, true);
			}
		}
 internal void Load(PackagingProject project)
 {
     AddPortableClassLibraryProfiles(project);
 }
예제 #27
0
 public static Task BuildPackages(PackagingProject project)
 {
     return(BuildPackages(project.Packages));
 }
예제 #28
0
        public override bool HasChildNodes(ITreeBuilder builder, object dataObject)
        {
            PackagingProject project = dataObject as PackagingProject;

            return(project.Packages.Count > 0);
        }
        void AddCreatePackageSection(Gtk.VBox vbox, string label, PackagingProject parentProject, bool showCheck)
        {
            Gtk.VBox   vboxNewPacks;
            Gtk.Widget hbox;
            if (showCheck)
            {
                Gtk.CheckButton check = new Gtk.CheckButton(label);
                check.Show();
                vbox.PackStart(check, false, false, 0);

                AddBox(vbox, out hbox, out vboxNewPacks);
                check.Toggled += delegate {
                    hbox.Visible = check.Active;
                    if (!check.Active)
                    {
                        DisableChecks(hbox);
                    }
                };
            }
            else
            {
                Gtk.Label lab = new Gtk.Label(label);
                lab.Show();
                vbox.PackStart(lab, false, false, 0);
                AddBox(vbox, out hbox, out vboxNewPacks);
                hbox.Show();
            }

            ICollection builders;

            if (creatingPackProject)
            {
                builders = DeployService.GetPackageBuilders();
            }
            else
            {
                builders = DeployService.GetSupportedPackageBuilders(entry);
            }

            foreach (PackageBuilder pb in builders)
            {
                if (creatingPackProject)
                {
                    pb.SetSolutionItem(parentFolder.ParentSolution.RootFolder);
                    // Add all compatible projects
                    foreach (SolutionItem e in parentFolder.ParentSolution.GetAllSolutionItems())
                    {
                        if (pb.CanBuild(e))
                        {
                            pb.AddEntry(e);
                        }
                    }
                }
                else
                {
                    pb.SetSolutionItem(parentFolder, new SolutionItem [] { entry });
                }

                PackageBuilder[] defp = pb.CreateDefaultBuilders();
                if (defp.Length == 0)
                {
                    continue;
                }
                if (defp.Length == 1)
                {
                    AddPackageBuilder(vboxNewPacks, parentProject, defp[0]);
                }
                else
                {
                    Gtk.CheckButton checkBuilder = new Gtk.CheckButton(pb.Description);
                    checkBuilder.Show();
                    vboxNewPacks.PackStart(checkBuilder, false, false, 0);
                    Gtk.VBox   vboxDefPacks;
                    Gtk.Widget thbox;
                    AddBox(vboxNewPacks, out thbox, out vboxDefPacks);
                    checkBuilder.Toggled += delegate {
                        thbox.Visible = checkBuilder.Active;
                        if (!checkBuilder.Active)
                        {
                            DisableChecks(thbox);
                        }
                    };
                    foreach (PackageBuilder dp in defp)
                    {
                        AddPackageBuilder(vboxDefPacks, parentProject, dp);
                    }
                }
            }
        }
예제 #30
0
        public override void BuildChildNodes(ITreeBuilder builder, object dataObject)
        {
            PackagingProject project = dataObject as PackagingProject;

            builder.AddChildren(project.Packages);
        }
        void AddProject(PackagingProject project)
        {
            string         pname = project.Name;
            SolutionFolder c     = project.ParentFolder;

            while (c != null)
            {
                pname = c.Name + " / " + pname;
                if (c.IsRoot)
                {
                    break;
                }
                c = c.ParentFolder;
            }

            // Get a list of packages that can contain the new project
            ArrayList list = new ArrayList();

            foreach (Package p in project.Packages)
            {
                if (p.PackageBuilder.CanBuild(entry))
                {
                    list.Add(p);
                }
            }

            string label;

            Gtk.VBox vbox;

            if (list.Count > 0)
            {
                label = GettextCatalog.GetString("Add the new project to the Packaging Project '{0}'", pname);
                Gtk.CheckButton checkAddNew = new Gtk.CheckButton(label);
                checkAddNew.Show();
                box.PackStart(checkAddNew, false, false, 0);

                Gtk.Widget hbox;
                AddBox(box, out hbox, out vbox);
                checkAddNew.Toggled += delegate {
                    hbox.Visible = checkAddNew.Active;
                    if (!checkAddNew.Active)
                    {
                        DisableChecks(hbox);
                    }
                };

                // Options for adding the project to existing packages

                label = GettextCatalog.GetString("Add the project to existing packages");
                Gtk.CheckButton checkAddExist = new Gtk.CheckButton(label);
                checkAddExist.Show();
                vbox.PackStart(checkAddExist, false, false, 0);

                Gtk.VBox   vboxPacks;
                Gtk.Widget thbox;
                AddBox(vbox, out thbox, out vboxPacks);
                checkAddExist.Toggled += delegate {
                    thbox.Visible = checkAddExist.Active;
                    if (!checkAddExist.Active)
                    {
                        DisableChecks(thbox);
                    }
                };

                foreach (Package p in list)
                {
                    label = p.Name;
                    if (label != p.PackageBuilder.Description)
                    {
                        label += " (" + p.PackageBuilder.Description + ")";
                    }
                    Gtk.CheckButton checkPackage = new Gtk.CheckButton(label);
                    checkPackage.Show();
                    vboxPacks.PackStart(checkPackage, false, false, 0);
                    RegisterCheck(checkPackage, project, p);
                }

                // Options for creating new packages

                label = GettextCatalog.GetString("Create new packages for the project");
                AddCreatePackageSection(vbox, label, project, true);
            }
            else
            {
                label = GettextCatalog.GetString("Add new packages for this project in the packaging project '{0}'", pname);
                AddCreatePackageSection(box, label, project, true);
            }
        }
 protected virtual void SaveAsync(PackagingProject project)
 {
     IdeApp.ProjectOperations.SaveAsync(project);
 }
 public override void Initialize(OptionsDialog dialog, object dataObject)
 {
     packagingProject = dataObject as PackagingProject;
     project          = dataObject as DotNetProject;
     base.Initialize(dialog, dataObject);
 }
예제 #34
0
        protected void OnBuild()
        {
            PackagingProject project = CurrentNode.DataItem as PackagingProject;

            DeployOperations.BuildPackages(project);
        }
		public override void Initialize (OptionsDialog dialog, object dataObject)
		{
			project = dataObject as PackagingProject;
			base.Initialize (dialog, dataObject);
		}
		internal void Load (PackagingProject project)
		{
			metadata = project.GetPackageMetadata ();
			LoadMetadata ();
		}
		internal void Save (PackagingProject project)
		{
			UpdateMetadata ();
			project.UpdatePackageMetadata (metadata);
		}
예제 #38
0
        public override void OnNodeRemoved(object dataObject)
        {
            PackagingProject project = dataObject as PackagingProject;

            project.PackagesChanged -= configsChanged;
        }
		public static Task BuildPackages (PackagingProject project)
		{
			return BuildPackages (project.Packages);
		}