示例#1
0
        public IPhoneSigningKeyPanelWidget(IPhoneProject project)
        {
            this.Build();

            resourceRulesEntry.DefaultFilter   = "*.plist";
            resourceRulesEntry.Project         = project;
            resourceRulesEntry.EntryIsEditable = true;

            entitlementsEntry.DefaultFilter   = "*.plist";
            entitlementsEntry.Project         = project;
            entitlementsEntry.EntryIsEditable = true;

            additionalArgsEntry.AddOptions(IPhoneBuildOptionsWidget.menuOptions);

            profiles = MobileProvision.GetAllInstalledProvisions();

            FillIdentities();

            identityCombo.Changed += delegate {
                UpdateProfiles();
            };

            provisioningCombo.Changed += delegate {
                if (!suppressSelectionSnapshot)
                {
                    profileSelections[identityCombo.SelectedName] = provisioningCombo.SelectedName;
                }
            };

            this.ShowAll();
        }
示例#2
0
        public void Store(IPhoneProject proj)
        {
            proj.BundleDevelopmentRegion = NullIfEmpty(devRegionEntry.Text);
            proj.BundleIdentifier        = NullIfEmpty(bundleIdEntry.Text);
            proj.BundleVersion           = NullIfEmpty(bundleVersionEntry.Text);
            proj.BundleDisplayName       = NullIfEmpty(displayNameEntry.Text);
            proj.MainNibFile             = NullIfEmpty(mainNibPicker.SelectedFile);
            proj.MainNibFileIPad         = NullIfEmpty(iPadNibPicker.SelectedFile);

            proj.BundleIcon              = NullIfEmpty(iphoneIconPicker.SelectedFile);
            proj.BundleIconHigh          = NullIfEmpty(iphoneIconHighPicker.SelectedFile);
            proj.BundleIconIPad          = NullIfEmpty(ipadIconPicker.SelectedFile);
            proj.BundleIconSpotlight     = NullIfEmpty(settingsIconPicker.SelectedFile);
            proj.BundleIconSpotlightHigh = NullIfEmpty(settingsIconHighPicker.SelectedFile);
            proj.BundleIconIPadSpotlight = NullIfEmpty(ipadSpotlightIconPicker.SelectedFile);

            proj.SupportedDevices = SupportedDevices;

            if (badPlist)
            {
                return;
            }
            try {
                var pf  = proj.GetInfoPlist();
                var doc = new PlistDocument();
                doc.LoadFromXmlFile(pf.FilePath);
                var dict = doc.Root as PlistDictionary;
                if (dict == null)
                {
                    doc.Root = dict = new PlistDictionary();
                }

                var orientations = SaveOrientationsCombo(supportedOrientationsCombo);
                if (orientations != null)
                {
                    dict [OrientationUtil.KEY] = orientations;
                }
                else
                {
                    dict.Remove(OrientationUtil.KEY);
                }

                var iPadOrientations = SaveOrientationsCombo(iPadOrientationsCombo);
                if (proj.SupportedDevices == TargetDevice.IPhoneAndIPad && iPadOrientations != null)
                {
                    dict [OrientationUtil.KEY_IPAD] = iPadOrientations;
                }
                else
                {
                    dict.Remove(OrientationUtil.KEY_IPAD);
                }

                doc.WriteToFile(pf.FilePath);
            } catch (Exception ex) {
                badPlist = true;
                MonoDevelop.Ide.MessageService.ShowException(ex, "Error saving Info.plist.");
            }
        }
		public IPhoneSigningKeyPanelWidget (IPhoneProject project)
		{
			this.Build ();
			
			resourceRulesEntry.DefaultFilter = "*.plist";
			resourceRulesEntry.Project = project;
			resourceRulesEntry.EntryIsEditable = true;
			
			entitlementsEntry.DefaultFilter = "*.plist";
			entitlementsEntry.Project = project;
			entitlementsEntry.EntryIsEditable = true;
			
			additionalArgsEntry.AddOptions (IPhoneBuildOptionsWidget.menuOptions);
			
			profiles = MobileProvision.GetAllInstalledProvisions ();
			
			FillIdentities ();
			
			identityCombo.Changed += delegate {
				UpdateProfiles ();
			};
			
			provisioningCombo.Changed += delegate {
				if (!suppressSelectionSnapshot)
					profileSelections[identityCombo.SelectedName] = provisioningCombo.SelectedName;
			};
			
			this.ShowAll ();
		}
		public void Store (IPhoneProject proj)
		{
			proj.BundleDevelopmentRegion = NullIfEmpty (devRegionEntry.Text);
			proj.BundleIdentifier = NullIfEmpty (bundleIdEntry.Text);
			proj.BundleVersion = NullIfEmpty (bundleVersionEntry.Text);
			proj.BundleDisplayName = NullIfEmpty (displayNameEntry.Text);
			proj.MainNibFile = NullIfEmpty (mainNibPicker.SelectedFile);
			proj.MainNibFileIPad = NullIfEmpty (iPadNibPicker.SelectedFile);
			
			proj.BundleIcon = NullIfEmpty (iphoneIconPicker.SelectedFile);
			proj.BundleIconIPad = NullIfEmpty (ipadIconPicker.SelectedFile);
			proj.BundleIconSpotlight = NullIfEmpty (settingsIconPicker.SelectedFile);
			proj.BundleIconIPadSpotlight = NullIfEmpty (ipadSpotlightIconPicker.SelectedFile);
			
			proj.SupportedDevices = SupportedDevices;
		}
示例#5
0
        public void Load(IPhoneProject proj)
        {
            devRegionEntry.Text     = proj.BundleDevelopmentRegion ?? "";
            bundleIdEntry.Text      = proj.BundleIdentifier ?? "";
            bundleVersionEntry.Text = proj.BundleVersion ?? "";
            displayNameEntry.Text   = proj.BundleDisplayName ?? "";

            mainNibPicker.Project         = iPadNibPicker.Project = proj;
            mainNibPicker.EntryIsEditable = iPadNibPicker.EntryIsEditable = true;
            mainNibPicker.DefaultFilter   = iPadNibPicker.DefaultFilter = "*.xib";

            mainNibPicker.DialogTitle  = GettextCatalog.GetString("Select main interface file...");
            mainNibPicker.SelectedFile = proj.MainNibFile.ToString() ?? "";

            iPadNibPicker.DialogTitle  = GettextCatalog.GetString("Select iPad interface file...");
            iPadNibPicker.SelectedFile = proj.MainNibFileIPad.ToString() ?? "";

            targetDevicesCombo.AppendText(GettextCatalog.GetString("iPhone and iPad"));
            targetDevicesCombo.AppendText(GettextCatalog.GetString("iPhone only"));
            targetDevicesCombo.AppendText(GettextCatalog.GetString("iPad only"));

            SupportedDevices = proj.SupportedDevices;

            ProjectFileEntry [] pickers =
            {
                iphoneIconPicker,
                iphoneIconHighPicker,
                ipadIconPicker,
                settingsIconPicker,
                settingsIconHighPicker,
                ipadSpotlightIconPicker,
            };

            foreach (var p in pickers)
            {
                p.Project         = proj;
                p.DefaultFilter   = "*.png";
                p.EntryIsEditable = true;
                p.DialogTitle     = GettextCatalog.GetString("Select icon...");
            }

            iphoneIconPicker.SelectedFile        = proj.BundleIcon.ToString() ?? "";
            iphoneIconHighPicker.SelectedFile    = proj.BundleIconHigh.ToString() ?? "";
            ipadIconPicker.SelectedFile          = proj.BundleIconIPad.ToString() ?? "";
            settingsIconPicker.SelectedFile      = proj.BundleIconSpotlight.ToString() ?? "";
            settingsIconHighPicker.SelectedFile  = proj.BundleIconSpotlightHigh.ToString() ?? "";
            ipadSpotlightIconPicker.SelectedFile = proj.BundleIconIPadSpotlight.ToString() ?? "";

            badPlist = false;
            try {
                var pf  = proj.GetInfoPlist();
                var doc = new PlistDocument();
                doc.LoadFromXmlFile(pf.FilePath);
                var dict = doc.Root as PlistDictionary;
                if (dict == null)
                {
                    doc.Root = dict = new PlistDictionary();
                }

                var orientationArr     = dict.TryGetValue(OrientationUtil.KEY) as PlistArray;
                var ipadOrientationArr = dict.TryGetValue(OrientationUtil.KEY_IPAD) as PlistArray;

                LoadOrientationsCombo(supportedOrientationsCombo, orientationArr);
                LoadOrientationsCombo(iPadOrientationsCombo, ipadOrientationArr);
            } catch (Exception ex) {
                badPlist = true;
                MonoDevelop.Ide.MessageService.ShowException(ex, "Error reading Info.plist. Some settings may not be saved.");
            }

            HandleTargetDevicesComboChanged(null, null);
        }
		public void Load (IPhoneProject proj)
		{
			devRegionEntry.Text = proj.BundleDevelopmentRegion ?? "";
			bundleIdEntry.Text = proj.BundleIdentifier ?? "";
			bundleVersionEntry.Text = proj.BundleVersion ?? "";
			displayNameEntry.Text = proj.BundleDisplayName ?? "";
			
			mainNibPicker.Project         = iPadNibPicker.Project         = proj;
			mainNibPicker.EntryIsEditable = iPadNibPicker.EntryIsEditable = true;
			mainNibPicker.DefaultFilter   = iPadNibPicker.DefaultFilter   = "*.xib";
			
			mainNibPicker.DialogTitle = GettextCatalog.GetString ("Select main interface file...");
			mainNibPicker.SelectedFile = proj.MainNibFile.ToString () ?? "";
			
			iPadNibPicker.DialogTitle = GettextCatalog.GetString ("Select iPad interface file...");
			iPadNibPicker.SelectedFile = proj.MainNibFileIPad.ToString () ?? "";
			
			targetDevicesCombo.AppendText (GettextCatalog.GetString ("iPhone and iPad"));
			targetDevicesCombo.AppendText (GettextCatalog.GetString ("iPhone only"));
			targetDevicesCombo.AppendText (GettextCatalog.GetString ("iPad only"));
			
			SupportedDevices = proj.SupportedDevices;
			
			HandleTargetDevicesComboChanged (null, null);
			
			ProjectFileEntry [] pickers = { iphoneIconPicker, ipadIconPicker, settingsIconPicker, ipadSpotlightIconPicker };
			foreach (var p in pickers) {
				p.Project = proj;
				p.DefaultFilter = "*.png";
				p.DialogTitle = GettextCatalog.GetString ("Select icon...");
			}
			
			iphoneIconPicker.SelectedFile = proj.BundleIcon.ToString () ?? "";
			ipadIconPicker.SelectedFile = proj.BundleIconIPad.ToString () ?? "";
			settingsIconPicker.SelectedFile = proj.BundleIconSpotlight.ToString () ?? "";
			ipadSpotlightIconPicker.SelectedFile = proj.BundleIconIPadSpotlight.ToString () ?? "";
		}
		public IPhoneSigningKeyPanelWidget (IPhoneProject project)
		{
			this.Build ();
			
			resourceRulesEntry.DefaultFilter = "*.plist";
			resourceRulesEntry.Project = project;
			resourceRulesEntry.EntryIsEditable = true;
			
			entitlementsEntry.DefaultFilter = "*.plist";
			entitlementsEntry.Project = project;
			entitlementsEntry.EntryIsEditable = true;
			
			additionalArgsEntry.AddOptions (IPhoneBuildOptionsWidget.menuOptions);
			
			profiles = MobileProvision.GetAllInstalledProvisions ();
			
			var txtRenderer = new CellRendererText ();
			txtRenderer.Ellipsize = Pango.EllipsizeMode.End;
			
			identityCombo.Model = identityStore;
			identityCombo.PackStart (txtRenderer, true);
			identityCombo.AddAttribute (txtRenderer, "markup", 0);
			
			identityCombo.RowSeparatorFunc = delegate (TreeModel model, TreeIter iter) {
				return (string)model.GetValue (iter, 0) == "-";
			};
			
			identityCombo.Changed += delegate { UpdateProfiles (); };
			
			provisioningCombo.Model = profileStore;
			provisioningCombo.PackStart (txtRenderer, true);
			provisioningCombo.AddAttribute (txtRenderer, "markup", 0);
			
			var signingCerts = Keychain.FindNamedSigningCertificates (x => x.StartsWith ("iPhone")).ToList ();
			signingCerts.Sort ((x , y) => Keychain.GetCertificateCommonName (x).CompareTo (Keychain.GetCertificateCommonName (x)));
			
			identityStore.AppendValues ("<b>Developer (Automatic)</b>", Keychain.DEV_CERT_PREFIX, null);
			identityStore.AppendValues ("<b>Distribution (Automatic)</b>", Keychain.DIST_CERT_PREFIX, null);
			
			int trimStart = "iPhone ".Length;
			
			identityStore.AppendValues ("-", "-", null);
			foreach (var cert in signingCerts) {
				string cn = Keychain.GetCertificateCommonName (cert);
				if (cn.StartsWith (Keychain.DEV_CERT_PREFIX))
					identityStore.AppendValues (GLib.Markup.EscapeText (cn.Substring (trimStart, cn.Length - trimStart)), cn, cert);
			}
			
			identityStore.AppendValues ("-", "-", null);
			foreach (var cert in signingCerts) {
				string cn = Keychain.GetCertificateCommonName (cert);
				if (cn.StartsWith (Keychain.DIST_CERT_PREFIX))
					identityStore.AppendValues (GLib.Markup.EscapeText (cn.Substring (trimStart, cn.Length - trimStart)), cn, cert);
			}
			
			this.ShowAll ();
		}
		public void Store (IPhoneProject proj)
		{
			proj.BundleDevelopmentRegion = NullIfEmpty (devRegionEntry.Text);
			proj.BundleIdentifier = NullIfEmpty (bundleIdEntry.Text);
			proj.BundleVersion = NullIfEmpty (bundleVersionEntry.Text);
			proj.BundleDisplayName = NullIfEmpty (displayNameEntry.Text);
			proj.MainNibFile = NullIfEmpty (mainNibPicker.SelectedFile);
			proj.MainNibFileIPad = NullIfEmpty (iPadNibPicker.SelectedFile);
			
			proj.BundleIcon = NullIfEmpty (iphoneIconPicker.SelectedFile);
			proj.BundleIconHigh = NullIfEmpty (iphoneIconHighPicker.SelectedFile);
			proj.BundleIconIPad = NullIfEmpty (ipadIconPicker.SelectedFile);
			proj.BundleIconSpotlight = NullIfEmpty (settingsIconPicker.SelectedFile);
			proj.BundleIconSpotlightHigh = NullIfEmpty (settingsIconHighPicker.SelectedFile);
			proj.BundleIconIPadSpotlight = NullIfEmpty (ipadSpotlightIconPicker.SelectedFile);
			
			proj.SupportedDevices = SupportedDevices;
			
			if (badPlist)
				return;
			try {
				var pf = proj.GetInfoPlist ();
				var doc = new PlistDocument ();
				doc.LoadFromXmlFile (pf.FilePath);
				var dict = doc.Root as PlistDictionary;
				if (dict == null)
					doc.Root = dict = new PlistDictionary ();
				
				var orientations = SaveOrientationsCombo (supportedOrientationsCombo);
				if (orientations != null)
					dict [OrientationUtil.KEY] = orientations;
				else
					dict.Remove (OrientationUtil.KEY);
				
				var iPadOrientations = SaveOrientationsCombo (iPadOrientationsCombo);
				if (proj.SupportedDevices == TargetDevice.IPhoneAndIPad && iPadOrientations != null)
					dict [OrientationUtil.KEY_IPAD] = iPadOrientations;
				else
					dict.Remove (OrientationUtil.KEY_IPAD);
				
				doc.WriteToFile (pf.FilePath);
			} catch (Exception ex) {
				badPlist = true;
				MonoDevelop.Ide.MessageService.ShowException (ex, "Error saving Info.plist.");
			}
		}
		public void Load (IPhoneProject proj)
		{
			devRegionEntry.Text = proj.BundleDevelopmentRegion ?? "";
			bundleIdEntry.Text = proj.BundleIdentifier ?? "";
			bundleVersionEntry.Text = proj.BundleVersion ?? "";
			displayNameEntry.Text = proj.BundleDisplayName ?? "";
			
			mainNibPicker.Project         = iPadNibPicker.Project         = proj;
			mainNibPicker.EntryIsEditable = iPadNibPicker.EntryIsEditable = true;
			mainNibPicker.DefaultFilter   = iPadNibPicker.DefaultFilter   = "*.xib";
			
			mainNibPicker.DialogTitle = GettextCatalog.GetString ("Select main interface file...");
			mainNibPicker.SelectedFile = proj.MainNibFile.ToString () ?? "";
			
			iPadNibPicker.DialogTitle = GettextCatalog.GetString ("Select iPad interface file...");
			iPadNibPicker.SelectedFile = proj.MainNibFileIPad.ToString () ?? "";
			
			targetDevicesCombo.AppendText (GettextCatalog.GetString ("iPhone and iPad"));
			targetDevicesCombo.AppendText (GettextCatalog.GetString ("iPhone only"));
			targetDevicesCombo.AppendText (GettextCatalog.GetString ("iPad only"));
			
			SupportedDevices = proj.SupportedDevices;
			
			ProjectFileEntry [] pickers = {
				iphoneIconPicker,
				iphoneIconHighPicker,
				ipadIconPicker,
				settingsIconPicker,
				settingsIconHighPicker,
				ipadSpotlightIconPicker,
			};
			
			foreach (var p in pickers) {
				p.Project = proj;
				p.DefaultFilter = "*.png";
				p.EntryIsEditable = true;
				p.DialogTitle = GettextCatalog.GetString ("Select icon...");
			}
			
			iphoneIconPicker.SelectedFile = proj.BundleIcon.ToString () ?? "";
			iphoneIconHighPicker.SelectedFile = proj.BundleIconHigh.ToString () ?? "";
			ipadIconPicker.SelectedFile = proj.BundleIconIPad.ToString () ?? "";
			settingsIconPicker.SelectedFile = proj.BundleIconSpotlight.ToString () ?? "";
			settingsIconHighPicker.SelectedFile = proj.BundleIconSpotlightHigh.ToString () ?? "";
			ipadSpotlightIconPicker.SelectedFile = proj.BundleIconIPadSpotlight.ToString () ?? "";
			
			badPlist = false;
			try {
				var pf = proj.GetInfoPlist ();
				var doc = new PlistDocument ();
				doc.LoadFromXmlFile (pf.FilePath);
				var dict = doc.Root as PlistDictionary;
				if (dict == null)
					doc.Root = dict = new PlistDictionary ();
				
				var orientationArr = dict.TryGetValue (OrientationUtil.KEY) as PlistArray;
				var ipadOrientationArr = dict.TryGetValue (OrientationUtil.KEY_IPAD) as PlistArray;
				
				LoadOrientationsCombo (supportedOrientationsCombo, orientationArr);
				LoadOrientationsCombo (iPadOrientationsCombo, ipadOrientationArr);
			} catch (Exception ex) {
				badPlist = true;
				MonoDevelop.Ide.MessageService.ShowException (ex, "Error reading Info.plist. Some settings may not be saved.");
			}
			
			HandleTargetDevicesComboChanged (null, null);
		}
示例#10
0
        public IPhoneSigningKeyPanelWidget(IPhoneProject project)
        {
            this.Build();

            resourceRulesEntry.DefaultFilter   = "*.plist";
            resourceRulesEntry.Project         = project;
            resourceRulesEntry.EntryIsEditable = true;

            entitlementsEntry.DefaultFilter   = "*.plist";
            entitlementsEntry.Project         = project;
            entitlementsEntry.EntryIsEditable = true;

            additionalArgsEntry.AddOptions(IPhoneBuildOptionsWidget.menuOptions);

            profiles = MobileProvision.GetAllInstalledProvisions();

            var txtRenderer = new CellRendererText();

            txtRenderer.Ellipsize = Pango.EllipsizeMode.End;

            identityCombo.Model = identityStore;
            identityCombo.PackStart(txtRenderer, true);
            identityCombo.AddAttribute(txtRenderer, "markup", 0);

            identityCombo.RowSeparatorFunc = delegate(TreeModel model, TreeIter iter) {
                return((string)model.GetValue(iter, 0) == "-");
            };

            identityCombo.Changed += delegate { UpdateProfiles(); };

            provisioningCombo.Model = profileStore;
            provisioningCombo.PackStart(txtRenderer, true);
            provisioningCombo.AddAttribute(txtRenderer, "markup", 0);

            var signingCerts = Keychain.FindNamedSigningCertificates(x => x.StartsWith("iPhone")).ToList();

            signingCerts.Sort((x, y) => Keychain.GetCertificateCommonName(x).CompareTo(Keychain.GetCertificateCommonName(x)));

            identityStore.AppendValues("<b>Developer (Automatic)</b>", Keychain.DEV_CERT_PREFIX, null);
            identityStore.AppendValues("<b>Distribution (Automatic)</b>", Keychain.DIST_CERT_PREFIX, null);

            int trimStart = "iPhone ".Length;

            identityStore.AppendValues("-", "-", null);
            foreach (var cert in signingCerts)
            {
                string cn = Keychain.GetCertificateCommonName(cert);
                if (cn.StartsWith(Keychain.DEV_CERT_PREFIX))
                {
                    identityStore.AppendValues(GLib.Markup.EscapeText(cn.Substring(trimStart, cn.Length - trimStart)), cn, cert);
                }
            }

            identityStore.AppendValues("-", "-", null);
            foreach (var cert in signingCerts)
            {
                string cn = Keychain.GetCertificateCommonName(cert);
                if (cn.StartsWith(Keychain.DIST_CERT_PREFIX))
                {
                    identityStore.AppendValues(GLib.Markup.EscapeText(cn.Substring(trimStart, cn.Length - trimStart)), cn, cert);
                }
            }

            this.ShowAll();
        }