2
// UnknownProjectTypeNode.cs
5
// Lluis Sanchez <lluis@xamarin.com>
7
// Copyright (c) 2013 Xamarin Inc.
9
// Permission is hereby granted, free of charge, to any person obtaining a copy
10
// of this software and associated documentation files (the "Software"), to deal
11
// in the Software without restriction, including without limitation the rights
12
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
// copies of the Software, and to permit persons to whom the Software is
14
// furnished to do so, subject to the following conditions:
16
// The above copyright notice and this permission notice shall be included in
17
// all copies or substantial portions of the Software.
19
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28
using MonoDevelop.Core;
31
namespace MonoDevelop.Projects.Extensions
33
class UnknownProjectTypeNode: ExtensionNode
35
[NodeAttribute ("_instructions", Localizable=true)]
38
[NodeAttribute ("guid", Required = true)]
39
public string Guid { get; set; }
41
[NodeAttribute ("name", Required = true)]
42
public string Name { get; set; }
44
[NodeAttribute ("addin")]
45
string requiresAddin { get; set; }
47
[NodeAttribute ("platforms")]
48
string requiresPlatform { get; set; }
50
[NodeAttribute ("product")]
51
string requiresProduct { get; set; }
53
public bool IsSolvable {
55
return requiresProduct != null || requiresAddin != null;
59
public bool MatchesGuid (string guid)
61
return Guid.IndexOf (guid, StringComparison.OrdinalIgnoreCase) != -1;
64
public string GetInstructions ()
66
if (instructions != null) {
67
return BrandingService.BrandApplicationName (instructions);
70
if (requiresPlatform != null) {
74
platID = new[] { "mac" };
76
} else if (Platform.IsWindows) {
77
platID = new[] { "win32", "windows", "win" };
80
platID = new [] { "linux" };
83
var plats = requiresPlatform.Split (';');
84
if (!plats.Any (a => platID.Any (b => string.Equals (a, b, StringComparison.OrdinalIgnoreCase)))) {
85
var msg = GettextCatalog.GetString ("This project type is not supported by MonoDevelop on {0}.", platName);
86
return BrandingService.BrandApplicationName (msg);
90
if (!string.IsNullOrEmpty (requiresProduct)) {
91
return GettextCatalog.GetString ("This project type requires {0} to be installed.", requiresProduct);
94
if (!string.IsNullOrEmpty (requiresAddin)) {
95
return GettextCatalog.GetString ("The {0} add-in is not installed.", requiresAddin);
98
if (!string.IsNullOrEmpty (instructions)) {
99
return BrandingService.BrandApplicationName (Addin.Localizer.GetString (instructions));
102
return BrandingService.BrandApplicationName (GettextCatalog.GetString ("This project type is not supported by MonoDevelop."));