Advertisement
Guest User

Untitled

a guest
May 13th, 2017
549
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 39.47 KB | None | 0 0
  1. Index: MonoDevelop.Core.Gui/Makefile.am
  2. ===================================================================
  3. --- MonoDevelop.Core.Gui/Makefile.am    (revision 153429)
  4. +++ MonoDevelop.Core.Gui/Makefile.am    (working copy)
  5.  -12,8 +12,8 @@
  6.     $(MONO_ADDINS_GUI_LIBS) \
  7.     $(MONO_ADDINS_LIBS) \
  8.     $(MONO_ADDINS_SETUP_LIBS) \
  9. +   $(MONO_CAIRO_LIBS) \
  10.     -r:ICSharpCode.SharpZipLib \
  11. -   -r:Mono.Cairo \
  12.     -r:Mono.Posix \
  13.     -r:System \
  14.     -r:System.Core \
  15.  
  16. Index: MonoDevelop.Ide/MonoDevelop.Ide.Templates/AbstractProjectTemplateProvider.cs
  17. ===================================================================
  18. --- MonoDevelop.Ide/MonoDevelop.Ide.Templates/AbstractProjectTemplateProvider.cs    (revision 0)
  19. +++ MonoDevelop.Ide/MonoDevelop.Ide.Templates/AbstractProjectTemplateProvider.cs    (revision 0)
  20.  -0,0 +1,78 @@
  21. +//
  22. +// AbstractProjectTemplateProvider.cs
  23. +//  
  24. +// Author:
  25. +//       Sanjoy Das <sanjoy@playingwithpointers.com>
  26. +//
  27. +// Copyright (c) 2010
  28. +//
  29. +// Permission is hereby granted, free of charge, to any person obtaining a copy
  30. +// of this software and associated documentation files (the "Software"), to deal
  31. +// in the Software without restriction, including without limitation the rights
  32. +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  33. +// copies of the Software, and to permit persons to whom the Software is
  34. +// furnished to do so, subject to the following conditions:
  35. +//
  36. +// The above copyright notice and this permission notice shall be included in
  37. +// all copies or substantial portions of the Software.
  38. +//
  39. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  40. +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  41. +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  42. +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  43. +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  44. +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  45. +// THE SOFTWARE.
  46. +using System;
  47. +using System.Collections.Generic;
  48. +
  49. +namespace MonoDevelop.Ide.Templates
  50. +{
  51. +   /// <summary>
  52. +   /// A project template provider adds another source from which project templates may be fetched. Extend this class
  53. +   /// to add new project providers.
  54. +   /// </summary>
  55. +   public abstract class AbstractProjectTemplateProvider
  56. +   {
  57. +  
  58. +       /* Singleton */
  59. +       private static AbstractProjectTemplateProvider instance = null;
  60. +       private static List<AbstractProjectTemplateProvider> allInstances = null;
  61. +      
  62. +       public static List<AbstractProjectTemplateProvider> AllProviders {
  63. +           get {
  64. +          
  65. +               if (allInstances == null) {
  66. +                   allInstances = new List<AbstractProjectTemplateProvider> ();
  67. +                   /* Add your providers here. */
  68. +                   InternalProjectTemplateProvider.Ping ();
  69. +                   allInstances.Add (InternalProjectTemplateProvider.Instance);
  70. +               }
  71. +              
  72. +               return allInstances;
  73. +           }
  74. +       }
  75. +      
  76. +       public abstract String DisplayName {get;}
  77. +
  78. +       public abstract List <ProjectTemplate> Templates {get;}
  79. +
  80. +       /// <summary>
  81. +       /// Calls the FetchTemplates method in a non-GUI template if this is true.
  82. +       /// </summary>
  83. +       public abstract bool FetchInAnotherThread {get;}
  84. +
  85. +       /// <summary>
  86. +       /// Override this to fetch the templates inside this method. In case the method employed is slow (for example
  87. +       /// fetching the templates over a network connection or checking them out of a repository), most of the time
  88. +       /// consuming work must be done inside this method. One must take care to ensure FetchInAnotherThread is true
  89. +       /// in that case as well.
  90. +       /// </summary>
  91. +       /// <returns>
  92. +       /// A <see cref="System.Boolean"/> set to true if the operation was successful and false otherwise.
  93. +       /// </returns>
  94. +       public abstract bool FetchTemplates ();
  95. +      
  96. +   }
  97. +}
  98. +
  99.  
  100. Index: MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs
  101. ===================================================================
  102. --- MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs    (revision 153429)
  103. +++ MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs    (working copy)
  104.  -1,24 +1,21 @@
  105. +//
  106.  // ProjectTemplate.cs
  107. -//
  108. +//  
  109.  // Author:
  110. -//   Mike Krüger (mkrueger@novell.com)
  111. -//   Lluis Sanchez Gual (lluis@novell.com)
  112. -//   Michael Hutchinson (mhutchinson@novell.com)
  113. -//   Marek Sieradzki (marek.sieradzki@gmail.com)
  114. -//   Viktoria Dudka (viktoriad@remobjects.com)
  115. -//
  116. -// Copyright (c) 2009 RemObjects Software
  117. -//
  118. +//       Sanjoy Das <sanjoy@playingwithpointers.com>
  119. +//
  120. +// Copyright (c) 2010
  121. +//
  122.  // Permission is hereby granted, free of charge, to any person obtaining a copy
  123.  // of this software and associated documentation files (the "Software"), to deal
  124.  // in the Software without restriction, including without limitation the rights
  125.  // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  126.  // copies of the Software, and to permit persons to whom the Software is
  127.  // furnished to do so, subject to the following conditions:
  128. -//
  129. +//
  130.  // The above copyright notice and this permission notice shall be included in
  131.  // all copies or substantial portions of the Software.
  132. -//
  133. +//
  134.  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  135.  // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  136.  // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  137.  -26,198 +23,85 @@
  138.  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  139.  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  140.  // THE SOFTWARE.
  141. -//
  142. -//
  143. -
  144.  using System;
  145. -using System.IO;
  146. -using System.Xml;
  147. -using System.Collections;
  148.  using System.Collections.Generic;
  149. -using System.Collections.Specialized;
  150. -using System.Diagnostics;
  151. -using System.Reflection;
  152. -using System.CodeDom;
  153. -using System.CodeDom.Compiler;
  154. -
  155.  using MonoDevelop.Core;
  156. -using Mono.Addins;
  157. -using MonoDevelop.Core.Gui;
  158. -using MonoDevelop.Ide.Codons;
  159.  using MonoDevelop.Projects;
  160.  using MonoDevelop.Ide.Gui;
  161. -using MonoDevelop.Projects.CodeGeneration;
  162. +using System.IO;
  163.  
  164.  namespace MonoDevelop.Ide.Templates
  165.  {
  166. -   internal class ProjectTemplate
  167. +   public class ProjectTemplate
  168.     {
  169. -       public static List<ProjectTemplate> ProjectTemplates = new List<ProjectTemplate> ();
  170. -
  171. -       private List<string> actions = new List<string> ();
  172. -
  173. +  
  174. +       /* Since the class _is_ internal, I guess we need not be so paranoid about setting all the properties to
  175. +        * read-only. */
  176. +        
  177.         private string createdSolutionName;
  178. -       private ProjectCreateInformation createdProjectInformation = null;
  179. +       private MonoDevelop.Projects.ProjectCreateInformation createdProjectInformation = null;
  180.  
  181. -       private SolutionDescriptor solutionDescriptor = null;
  182. -       public SolutionDescriptor SolutionDescriptor
  183. -       {
  184. -           get { return solutionDescriptor; }
  185. +       internal SolutionDescriptor SolutionDescriptor {
  186. +           get; set;
  187.         }
  188.  
  189. -       private string languagename;
  190. -       public string LanguageName
  191. -       {
  192. -           get { return languagename; }
  193. +       public string LanguageName {
  194. +           get; set;
  195.         }
  196.  
  197. -       private string id;
  198. -       public string Id
  199. -       {
  200. -           get { return id; }
  201. +       public string Id {
  202. +           get; set;
  203.         }
  204.  
  205. -       private string category;
  206. -       public string Category
  207. -       {
  208. -           get { return category; }
  209. +       public string Category {
  210. +           get; set;
  211.         }
  212.  
  213. -       private string icon;
  214. -       public IconId Icon
  215. -       {
  216. -           get { return icon; }
  217. +       public IconId Icon {
  218. +           get; set;
  219.         }
  220.  
  221. -       private string description;
  222. -       public string Description
  223. -       {
  224. -           get { return description; }
  225. +       public string Description {
  226. +           get; set;
  227.         }
  228.  
  229. -       private string name;
  230. -       public string Name
  231. -       {
  232. -           get { return name; }
  233. +       public string Name {
  234. +           get; set;
  235.         }
  236.  
  237. -       private string originator;
  238. -       public string Originator
  239. -       {
  240. -           get { return originator; }
  241. +       public string Originator {
  242. +           get; set;
  243.         }
  244.  
  245. -       private string created;
  246. -       public string Created
  247. -       {
  248. -           get { return created; }
  249. +       public string Created {
  250. +           get; set;
  251.         }
  252.  
  253. -       private string lastModified;
  254. -       public string LastModified
  255. -       {
  256. -           get { return lastModified; }
  257. +       public string LastModified {
  258. +           get; set;
  259.         }
  260.  
  261. -       private string wizardPath;
  262. -       public string WizardPath
  263. -       {
  264. -           get { return wizardPath; }
  265. +       public string WizardPath {
  266. +           get; set;
  267.         }
  268. -
  269. -
  270. -
  271. -       //constructors
  272. -       static ProjectTemplate ()
  273. -       {
  274. -           AddinManager.AddExtensionNodeHandler ("/MonoDevelop/Ide/ProjectTemplates", OnExtensionChanged);
  275. +      
  276. +       public List<string>listLanguages = new List<string> ();
  277. +      
  278. +       public List<string> ListLanguages {
  279. +           get {
  280. +               return listLanguages;
  281. +           }
  282.         }
  283. -
  284. -       protected ProjectTemplate (RuntimeAddin addin, string id, ProjectTemplateCodon codon, string overrideLanguage)
  285. -       {
  286. -           XmlDocument xmlDocument = codon.GetTemplate ();
  287. -
  288. -           XmlElement xmlConfiguration = xmlDocument.DocumentElement ["TemplateConfiguration"];
  289. -
  290. -           if (xmlConfiguration ["_Category"] != null) {
  291. -               category = addin.Localizer.GetString (xmlConfiguration ["_Category"].InnerText);
  292. +      
  293. +       private List<string> actions = new List<string> ();
  294. +      
  295. +       public List<string> Actions {
  296. +           get {
  297. +               return actions;
  298.             }
  299. -           else
  300. -               throw new InvalidOperationException (string.Format ("_Category missing in file template {0}", codon.Id));
  301. -
  302. -
  303. -           if (!string.IsNullOrEmpty (overrideLanguage)) {
  304. -               this.languagename = overrideLanguage;
  305. -               this.category = overrideLanguage + "/" + this.category;
  306. -           }
  307. -           else if (xmlConfiguration ["LanguageName"] != null) {
  308. -
  309. -               List<string> listLanguages = new List<string> ();
  310. -               foreach (string item in xmlConfiguration ["LanguageName"].InnerText.Split (','))
  311. -                   listLanguages.Add (item.Trim ());
  312. -
  313. -               ExpandLanguageWildcards (listLanguages);
  314. -
  315. -               this.languagename = listLanguages [0];
  316. -              
  317. -               if (listLanguages.Count > 1 && !String.IsNullOrEmpty (languagename) && !category.StartsWith (languagename + "/"))
  318. -                   category = languagename + "/" + category;
  319. -
  320. -               for (int i = 1; i < listLanguages.Count; i++) {
  321. -                   string language = listLanguages[i];
  322. -                   try {
  323. -                       ProjectTemplates.Add (new ProjectTemplate (addin, id, codon, language));
  324. -                   } catch (Exception e) {
  325. -                       LoggingService.LogError (GettextCatalog.GetString ("Error loading template {0} for language {1}", codon.Id, language), e);
  326. -                   }
  327. -               }
  328. -           }
  329. -
  330. -           this.id = id;
  331. -
  332. -           this.originator = xmlDocument.DocumentElement.GetAttribute ("originator");
  333. -           this.created = xmlDocument.DocumentElement.GetAttribute ("created");
  334. -           this.lastModified = xmlDocument.DocumentElement.GetAttribute ("lastModified");
  335. -
  336. -           if (xmlConfiguration ["Wizard"] != null) {
  337. -               this.wizardPath = xmlConfiguration ["Wizard"].InnerText;
  338. -           }
  339. -
  340. -           if (xmlConfiguration ["_Name"] != null) {
  341. -               this.name = addin.Localizer.GetString (xmlConfiguration ["_Name"].InnerText);
  342. -           }
  343. -
  344. -           if (xmlConfiguration ["_Description"] != null) {
  345. -               this.description = addin.Localizer.GetString (xmlConfiguration ["_Description"].InnerText);
  346. -           }
  347. -
  348. -           if (xmlConfiguration ["Icon"] != null) {
  349. -               this.icon = ImageService.GetStockId (addin, xmlConfiguration ["Icon"].InnerText, Gtk.IconSize.Dnd);
  350. -           }
  351. -
  352. -           if (xmlDocument.DocumentElement ["Combine"] == null) {
  353. -               throw new InvalidOperationException ("Combine element not found");
  354. -           }
  355. -           else {
  356. -               solutionDescriptor = SolutionDescriptor.CreateSolutionDescriptor (xmlDocument.DocumentElement ["Combine"]);
  357. -           }
  358. -
  359. -           if (xmlDocument.DocumentElement ["Actions"] != null) {
  360. -               foreach (XmlNode xmlElement in xmlDocument.DocumentElement ["Actions"]) {
  361. -                   if (xmlElement is XmlElement && xmlElement.Attributes ["filename"] != null)
  362. -                       actions.Add (xmlElement.Attributes ["filename"].Value);
  363. -               }
  364. -           }
  365.         }
  366.  
  367. -       protected ProjectTemplate (RuntimeAddin addin, string id, ProjectTemplateCodon codon)
  368. -           : this (addin, id, codon, null)
  369. -       {
  370. -       }
  371. -
  372. -       //methods
  373. -       public void OpenCreatedSolution ()
  374. -       {
  375. +       public void OpenCreatedSolution () {
  376.             IAsyncOperation asyncOperation = IdeApp.Workspace.OpenWorkspaceItem (createdSolutionName);
  377.             asyncOperation.WaitForCompleted ();
  378.  
  379.  -228,9 +112,8 @@
  380.             }
  381.         }
  382.  
  383. -       public WorkspaceItem CreateWorkspaceItem (ProjectCreateInformation cInfo)
  384. -       {
  385. -           WorkspaceItem workspaceItem = solutionDescriptor.CreateEntry (cInfo, this.languagename);
  386. +       public WorkspaceItem CreateWorkspaceItem (ProjectCreateInformation cInfo) {
  387. +           WorkspaceItem workspaceItem = SolutionDescriptor.CreateEntry (cInfo, this.LanguageName);
  388.  
  389.             this.createdSolutionName = workspaceItem.FileName;
  390.             this.createdProjectInformation = cInfo;
  391.  -238,70 +121,30 @@
  392.             return workspaceItem;
  393.         }
  394.  
  395. -       public SolutionEntityItem CreateProject (SolutionItem policyParent, ProjectCreateInformation cInfo)
  396. -       {
  397. -           if (solutionDescriptor.EntryDescriptors.Length == 0)
  398. +       public SolutionEntityItem CreateProject (SolutionItem policyParent, ProjectCreateInformation cInfo) {
  399. +      
  400. +           if (SolutionDescriptor.EntryDescriptors.Length == 0)
  401.                 throw new InvalidOperationException ("Solution template doesn't have any project templates");
  402.  
  403. -           SolutionEntityItem solutionEntryItem = solutionDescriptor.EntryDescriptors [0].CreateItem (cInfo, this.languagename);
  404. -           solutionDescriptor.EntryDescriptors [0].InitializeItem (policyParent, cInfo, this.languagename, solutionEntryItem);
  405. +           SolutionEntityItem solutionEntryItem = SolutionDescriptor.EntryDescriptors [0].CreateItem (cInfo, this.LanguageName);
  406. +           SolutionDescriptor.EntryDescriptors [0].InitializeItem (policyParent, cInfo, this.LanguageName, solutionEntryItem);
  407.  
  408. -
  409.             this.createdProjectInformation = cInfo;
  410.  
  411. -
  412.             return solutionEntryItem;
  413. -       }
  414.  
  415. -       static void OnExtensionChanged (object s, ExtensionNodeEventArgs args)
  416. -       {
  417. -           if (args.Change == ExtensionChange.Add) {
  418. -               ProjectTemplateCodon codon = (ProjectTemplateCodon) args.ExtensionNode;
  419. -               try {
  420. -                   ProjectTemplates.Add (new ProjectTemplate (codon.Addin, codon.Id, codon, null));
  421. -               }
  422. -               catch (Exception e) {
  423. -                   string extId = null, addinId = null;
  424. -                   if (codon != null) {
  425. -                       if (codon.HasId)
  426. -                           extId = codon.Id;
  427. -                       if (codon.Addin != null)
  428. -                           addinId = codon.Addin.Id;
  429. -                   }
  430. -                   LoggingService.LogError ("Error loading template id {0} in addin {1}:\n{2}",
  431. -                                            extId ?? "(null)", addinId ?? "(null)", e.ToString ());
  432. -               }
  433. -           }
  434. -           else {
  435. -               foreach (ProjectTemplate pt in ProjectTemplates) {
  436. -                   ProjectTemplateCodon codon = (ProjectTemplateCodon) args.ExtensionNode;
  437. -                   if (pt.Id == codon.Id) {
  438. -                       ProjectTemplates.Remove (pt);
  439. -                       break;
  440. -                   }
  441. -               }
  442. -           }
  443.         }
  444. -
  445. -       void ExpandLanguageWildcards (List<string> list)
  446. -       {
  447. -           //Template can match all CodeDom .NET languages with a "*"
  448. -           if (list.Contains ("*")) {
  449. -               foreach (ILanguageBinding lb in LanguageBindingService.LanguageBindings) {
  450. -                   IDotNetLanguageBinding dnlang = lb as IDotNetLanguageBinding;
  451. -                   if (dnlang != null && dnlang.GetCodeDomProvider () != null)
  452. -                       list.Add (dnlang.Language);
  453. -                   list.Remove ("*");
  454. -               }
  455. -           }
  456. +      
  457. +       public bool HasItemFeatures (SolutionFolder parentFolder, ProjectCreateInformation cinfo) {
  458. +           ISolutionItemDescriptor sid = SolutionDescriptor.EntryDescriptors [0];
  459. +           SolutionEntityItem sampleItem = sid.CreateItem (cinfo, LanguageName);
  460. +           return (SolutionItemFeatures.GetFeatures (parentFolder, sampleItem).Length > 0);
  461.         }
  462.  
  463. -       public bool HasItemFeatures (SolutionFolder parentFolder, ProjectCreateInformation cinfo)
  464. -       {
  465. -           ISolutionItemDescriptor sid = solutionDescriptor.EntryDescriptors [0];
  466. -           SolutionEntityItem sampleItem = sid.CreateItem (cinfo, languagename);
  467. -           return (SolutionItemFeatures.GetFeatures (parentFolder, sampleItem).Length > 0);
  468. +       internal bool IsInitialized {
  469. +           get; set;
  470.         }
  471.  
  472.     }
  473.  }
  474. +
  475.  
  476. Index: MonoDevelop.Ide/MonoDevelop.Ide.Templates/InternalProjectTemplateProvider.cs
  477. ===================================================================
  478. --- MonoDevelop.Ide/MonoDevelop.Ide.Templates/InternalProjectTemplateProvider.cs    (revision 0)
  479. +++ MonoDevelop.Ide/MonoDevelop.Ide.Templates/InternalProjectTemplateProvider.cs    (revision 0)
  480.  -0,0 +1,209 @@
  481. +//
  482. +// InternalProjectTemplateProvider.cs
  483. +//  
  484. +// Author:
  485. +//       Sanjoy Das <sanjoy@playingwithpointers.com>
  486. +//
  487. +// Copyright (c) 2010
  488. +//
  489. +// Permission is hereby granted, free of charge, to any person obtaining a copy
  490. +// of this software and associated documentation files (the "Software"), to deal
  491. +// in the Software without restriction, including without limitation the rights
  492. +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  493. +// copies of the Software, and to permit persons to whom the Software is
  494. +// furnished to do so, subject to the following conditions:
  495. +//
  496. +// The above copyright notice and this permission notice shall be included in
  497. +// all copies or substantial portions of the Software.
  498. +//
  499. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  500. +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  501. +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  502. +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  503. +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  504. +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  505. +// THE SOFTWARE.
  506. +using System;
  507. +using System.Collections.Generic;
  508. +using Mono.Addins;
  509. +using MonoDevelop.Ide.Codons;
  510. +using System.Xml;
  511. +using MonoDevelop.Core;
  512. +using MonoDevelop.Core.Gui;
  513. +using MonoDevelop.Projects;
  514. +
  515. +namespace MonoDevelop.Ide.Templates
  516. +{
  517. +   /// <summary>
  518. +   /// Provides the default project templates which ship with MonoDevelop
  519. +   /// </summary>
  520. +   public class InternalProjectTemplateProvider : AbstractProjectTemplateProvider
  521. +   {
  522. +       #region implemented abstract members of MonoDevelop.Ide.Templates.AbstractProjectTemplateProvider
  523. +       public override string DisplayName {
  524. +           get {
  525. +               return "Local Templates";
  526. +           }
  527. +       }
  528. +      
  529. +       private List<ProjectTemplate> templates = new List<ProjectTemplate> ();
  530. +       public override System.Collections.Generic.List<ProjectTemplate> Templates {
  531. +           get {
  532. +               return templates;
  533. +           }
  534. +       }
  535. +      
  536. +       public override bool FetchInAnotherThread {
  537. +           get {
  538. +               return false;
  539. +           }
  540. +       }
  541. +      
  542. +       private static InternalProjectTemplateProvider instance = null;
  543. +      
  544. +       public static InternalProjectTemplateProvider Instance {
  545. +           get {
  546. +               return instance;
  547. +           }
  548. +       }
  549. +      
  550. +       private InternalProjectTemplateProvider () {
  551. +       }
  552. +      
  553. +       public static void Ping () {
  554. +           if (instance != null) {
  555. +               throw new Exception ("Cannot create more than one InternalProjectTemplateProvider");
  556. +           }
  557. +           instance = new InternalProjectTemplateProvider ();
  558. +           AddinManager.AddExtensionNodeHandler ("/MonoDevelop/Ide/ProjectTemplates", OnExtensionChanged);
  559. +       }
  560. +      
  561. +       static ProjectTemplate CreateTemplate (RuntimeAddin addin, string id, ProjectTemplateCodon codon,
  562. +                                              string overrideLanguage) {
  563. +           XmlDocument xmlDocument = codon.GetTemplate ();
  564. +           ProjectTemplate template = new ProjectTemplate();
  565. +
  566. +           XmlElement xmlConfiguration = xmlDocument.DocumentElement ["TemplateConfiguration"];
  567. +
  568. +           if (xmlConfiguration ["_Category"] != null) {
  569. +               template.Category = addin.Localizer.GetString (xmlConfiguration ["_Category"].InnerText);
  570. +           }
  571. +           else
  572. +               throw new InvalidOperationException (string.Format ("_Category missing in file template {0}", codon.Id));
  573. +
  574. +           if (!string.IsNullOrEmpty (overrideLanguage)) {
  575. +               template.LanguageName = overrideLanguage;
  576. +               template.Category = overrideLanguage + "/" + template.Category;
  577. +           } else if (xmlConfiguration ["LanguageName"] != null) {
  578. +
  579. +               List<string> listLanguages = new List<string> ();
  580. +               foreach (string item in xmlConfiguration ["LanguageName"].InnerText.Split (','))
  581. +                   template.ListLanguages.Add (item.Trim ());
  582. +
  583. +               ExpandLanguageWildcards (template.ListLanguages);
  584. +
  585. +               template.LanguageName = template.ListLanguages [0];
  586. +              
  587. +               if (template.ListLanguages.Count > 1 && !String.IsNullOrEmpty (template.LanguageName) &&
  588. +                           !template.Category.StartsWith (template.LanguageName + "/"))
  589. +                   template.Category = template.LanguageName + "/" + template.Category;
  590. +
  591. +               for (int i = 1; i < template.ListLanguages.Count; i++) {
  592. +                   string language = template.ListLanguages[i];
  593. +                   try {
  594. +                       instance.templates.Add (CreateTemplate (addin, id, codon, language));
  595. +                   } catch (Exception e) {
  596. +                       LoggingService.LogError (GettextCatalog.GetString ("Error loading template {0} for language {1}", codon.Id, language), e);
  597. +                   }
  598. +               }
  599. +           }
  600. +
  601. +           template.Id = id;
  602. +
  603. +           template.Originator = xmlDocument.DocumentElement.GetAttribute ("originator");
  604. +           template.Created = xmlDocument.DocumentElement.GetAttribute ("created");
  605. +           template.LastModified = xmlDocument.DocumentElement.GetAttribute ("lastModified");
  606. +
  607. +           if (xmlConfiguration ["Wizard"] != null) {
  608. +               template.WizardPath = xmlConfiguration ["Wizard"].InnerText;
  609. +           }
  610. +
  611. +           if (xmlConfiguration ["_Name"] != null) {
  612. +               template.Name = addin.Localizer.GetString (xmlConfiguration ["_Name"].InnerText);
  613. +           }
  614. +
  615. +           if (xmlConfiguration ["_Description"] != null) {
  616. +               template.Description = addin.Localizer.GetString (xmlConfiguration ["_Description"].InnerText);
  617. +           }
  618. +
  619. +           if (xmlConfiguration ["Icon"] != null) {
  620. +               template.Icon = ImageService.GetStockId (addin, xmlConfiguration ["Icon"].InnerText, Gtk.IconSize.Dnd);
  621. +           }
  622. +
  623. +           if (xmlDocument.DocumentElement ["Combine"] == null) {
  624. +               throw new InvalidOperationException ("Combine element not found");
  625. +           }
  626. +           else {
  627. +               template.SolutionDescriptor = SolutionDescriptor.CreateSolutionDescriptor (xmlDocument.DocumentElement ["Combine"]);
  628. +           }
  629. +
  630. +           if (xmlDocument.DocumentElement ["Actions"] != null) {
  631. +               foreach (XmlNode xmlElement in xmlDocument.DocumentElement ["Actions"]) {
  632. +                   if (xmlElement is XmlElement && xmlElement.Attributes ["filename"] != null)
  633. +                       template.Actions.Add (xmlElement.Attributes ["filename"].Value);
  634. +               }
  635. +           }
  636. +           return template;
  637. +       }
  638. +      
  639. +       static void OnExtensionChanged (object s, ExtensionNodeEventArgs args) {
  640. +           if (args.Change == ExtensionChange.Add) {
  641. +               ProjectTemplateCodon codon = (ProjectTemplateCodon) args.ExtensionNode;
  642. +               try {
  643. +                   lock (Instance) {
  644. +                       Instance.Templates.Add (CreateTemplate (codon.Addin, codon.Id, codon, null));
  645. +                   }
  646. +               }
  647. +               catch (Exception e) {
  648. +                   string extId = null, addinId = null;
  649. +                   if (codon != null) {
  650. +                       if (codon.HasId)
  651. +                           extId = codon.Id;
  652. +                       if (codon.Addin != null)
  653. +                           addinId = codon.Addin.Id;
  654. +                   }
  655. +                   LoggingService.LogError ("Error loading template id {0} in addin {1}:\n{2}",
  656. +                                            extId ?? "(null)", addinId ?? "(null)", e.ToString ());
  657. +               }
  658. +           } else {
  659. +               foreach (ProjectTemplate pt in Instance.Templates) {
  660. +                   ProjectTemplateCodon codon = (ProjectTemplateCodon) args.ExtensionNode;
  661. +                   if (pt.Id == codon.Id) {
  662. +                       Instance.Templates.Remove (pt);
  663. +                       break;
  664. +                   }
  665. +               }
  666. +           }
  667. +       }
  668. +      
  669. +      
  670. +       public override bool FetchTemplates () {
  671. +           return true;
  672. +       }
  673. +      
  674. +       protected static void ExpandLanguageWildcards (List<string> list) {
  675. +           //Template can match all CodeDom .NET languages with a "*"
  676. +           if (list.Contains ("*")) {
  677. +               foreach (ILanguageBinding lb in LanguageBindingService.LanguageBindings) {
  678. +                   IDotNetLanguageBinding dnlang = lb as IDotNetLanguageBinding;
  679. +                   if (dnlang != null && dnlang.GetCodeDomProvider () != null)
  680. +                       list.Add (dnlang.Language);
  681. +                   list.Remove ("*");
  682. +               }
  683. +           }
  684. +       }
  685. +
  686. +      
  687. +       #endregion
  688. +   }
  689. +}
  690.  
  691. Index: MonoDevelop.Ide/MonoDevelop.Ide.csproj
  692. ===================================================================
  693. --- MonoDevelop.Ide/MonoDevelop.Ide.csproj  (revision 153429)
  694. +++ MonoDevelop.Ide/MonoDevelop.Ide.csproj  (working copy)
  695.  -44,28 +44,36 @@
  696.      <Reference Include="System.Runtime.Remoting" />
  697.      <Reference Include="Mono.Addins.Setup, Version=0.4.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756">
  698.        <SpecificVersion>False</SpecificVersion>
  699. +      <Package>mono-addins-setup</Package>
  700.      </Reference>
  701.      <Reference Include="monodoc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
  702.      <Reference Include="Mono.Addins.Gui, Version=0.4.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756">
  703.        <SpecificVersion>False</SpecificVersion>
  704. +      <Package>mono-addins-gui</Package>
  705.      </Reference>
  706.      <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
  707.        <SpecificVersion>False</SpecificVersion>
  708. +      <Package>gtk-sharp-2.0</Package>
  709.      </Reference>
  710.      <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
  711.        <SpecificVersion>False</SpecificVersion>
  712. +      <Package>gtk-sharp-2.0</Package>
  713.      </Reference>
  714.      <Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
  715.        <SpecificVersion>False</SpecificVersion>
  716. +      <Package>gtk-sharp-2.0</Package>
  717.      </Reference>
  718.      <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
  719.        <SpecificVersion>False</SpecificVersion>
  720. +      <Package>glib-sharp-2.0</Package>
  721.      </Reference>
  722.      <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
  723.        <SpecificVersion>False</SpecificVersion>
  724. +      <Package>gtk-sharp-2.0</Package>
  725.      </Reference>
  726.      <Reference Include="Mono.Addins, Version=0.4.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756">
  727.        <SpecificVersion>False</SpecificVersion>
  728. +      <Package>mono-addins</Package>
  729.      </Reference>
  730.      <Reference Include="System.Core">
  731.        <RequiredTargetFramework>3.5</RequiredTargetFramework>
  732.  -588,6 +596,8 @@
  733.      <Compile Include="MonoDevelop.Ide.Gui\DockItemToolbarLoader.cs" />
  734.      <Compile Include="MonoDevelop.Ide.Gui.Components\LogView.cs" />
  735.      <Compile Include="MonoDevelop.Ide.Gui\WorkbenchContext.cs" />
  736. +    <Compile Include="MonoDevelop.Ide.Templates\AbstractProjectTemplateProvider.cs" />
  737. +    <Compile Include="MonoDevelop.Ide.Templates\InternalProjectTemplateProvider.cs" />
  738.    </ItemGroup>
  739.    <ItemGroup>
  740.      <None Include="ChangeLog" />
  741.  
  742. Index: MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewProjectDialog.cs
  743. ===================================================================
  744. --- MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewProjectDialog.cs (revision 153429)
  745. +++ MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewProjectDialog.cs (working copy)
  746.  -32,6 +32,7 @@
  747.  using System.Collections;
  748.  using System.IO;
  749.  using System.Text;
  750. +using System.Threading;
  751.  
  752.  using Mono.Addins;
  753.  using MonoDevelop.Core;
  754.  -53,7 +54,6 @@
  755.     /// </summary>
  756.     public partial class NewProjectDialog: Gtk.Dialog
  757.     {
  758. -       ArrayList alltemplates = new ArrayList();
  759.         List<Category> categories = new List<Category> ();
  760.        
  761.         TemplateView templateView;
  762.  -104,22 +104,25 @@
  763.             SelectTemplate (iter, id);
  764.         }
  765.        
  766. -       ProjectTemplate GetTemplate (string id)
  767. -       {
  768. -           foreach (ProjectTemplate template in ProjectTemplate.ProjectTemplates) {
  769. -               if (template.Id == id)
  770. -                   return template;
  771. +       ProjectTemplate GetTemplate (string id) {
  772. +           foreach (AbstractProjectTemplateProvider aptp in AbstractProjectTemplateProvider.AllProviders) {
  773. +               lock (aptp) {
  774. +                   foreach (ProjectTemplate pt in aptp.Templates) {
  775. +                       if (pt.Id == id)
  776. +                           return pt;
  777. +                   }
  778. +               }
  779.             }
  780.             return null;
  781.         }
  782. -      
  783. +
  784.         bool SelectTemplate (TreeIter iter, string id)
  785.         {
  786.             do {
  787. -               foreach (TemplateItem item in ((Category)catStore.GetValue (iter, 1)).Templates) {
  788. -                   if (item.Template.Id == id) {
  789. +               foreach (ProjectTemplate item in ((Category)catStore.GetValue (iter, 1)).Templates) {
  790. +                   if (item.Id == id) {
  791.                         lst_template_types.Selection.SelectIter (iter);
  792. -                       templateView.CurrentlySelected = item.Template;
  793. +                       templateView.CurrentlySelected = item;
  794.                         return true;
  795.                     }
  796.                 }
  797.  -175,11 +178,8 @@
  798.        
  799.         void InitializeView()
  800.         {
  801. -           InsertCategories (TreeIter.Zero, categories);
  802. -           if (recentCategory.Templates.Count == 0)
  803. -               SelectCategory (PropertyService.Get<string> ("Dialogs.NewProjectDialog.LastSelectedCategory", "C#"));
  804. -           else
  805. -               SelectTemplate (recentCategory.Templates [0].Template.Id);
  806. +          
  807. +           InsertCategories ();
  808.             ShowAll ();
  809.         }
  810.        
  811.  -204,11 +204,6 @@
  812.        
  813.        
  814.        
  815. -       Category GetCategory (string categoryname)
  816. -       {
  817. -           return GetCategory (categories, categoryname);
  818. -       }
  819. -      
  820.         Category GetCategory (List<Category> catList, string categoryname)
  821.         {
  822.             int i = categoryname.IndexOf ('/');
  823.  -554,68 +549,51 @@
  824.         }
  825.  
  826.        
  827. -       /// <summary>
  828. -       /// Holds a new file template
  829. -       /// </summary>
  830. -       internal class TemplateItem
  831. -       {
  832. -           ProjectTemplate template;
  833. -           string name;
  834. -          
  835. -           public TemplateItem (ProjectTemplate template)
  836. -           {
  837. -               name = StringParserService.Parse(template.Name);
  838. -               this.template = template;
  839. -           }
  840. -          
  841. -           public string Name {
  842. -               get { return name; }
  843. -           }
  844. -          
  845. -           public ProjectTemplate Template {
  846. -               get {
  847. -                   return template;
  848. +       private void InitializeTemplates () {
  849. +           InitializeComponents ();
  850. +       }
  851. +      
  852. +       private void ProcessCategories (List <Category> categories, Gtk.TreeIter parent) {
  853. +           foreach (Category category in categories) {
  854. +               Gtk.TreeIter categoryIter = catStore.AppendValues (parent, category.Name, category);
  855. +               if (category.Categories != null) {
  856. +                   ProcessCategories (category.Categories, categoryIter);
  857.                 }
  858.             }
  859.         }
  860. -
  861. -       private void InitializeTemplates ()
  862. -       {
  863. -           foreach (ProjectTemplate projectTemplate in ProjectTemplate.ProjectTemplates) {
  864. -               if (!newSolution && projectTemplate.SolutionDescriptor.EntryDescriptors.Length == 0)
  865. -                   continue;
  866. -               TemplateItem templateItem = new TemplateItem (projectTemplate);
  867. -              
  868. -               Category category = GetCategory(templateItem.Template.Category);
  869. -               if (category != null )
  870. -                   category.Templates.Add (templateItem);
  871. -              
  872. -               alltemplates.Add(templateItem);
  873. +      
  874. +       private void ProcessProvider (AbstractProjectTemplateProvider aptp, Gtk.TreeIter parent) {
  875. +           List<Category> categories = new List<Category> ();
  876. +           foreach (ProjectTemplate template in aptp.Templates) {
  877. +               GetCategory (categories, template.Category).Templates.Add(template);
  878.             }
  879. -          
  880. -           recentCategory = new Category (GettextCatalog.GetString ("Recent"));
  881. -           string strRecent = PropertyService.Get<string> ("Dialogs.NewProjectDialog.RecentTemplates", "");
  882. -           recentIds = new List<string> (strRecent.Split (new char[] {','}, StringSplitOptions.RemoveEmptyEntries));
  883. -
  884. -           foreach (string id in recentIds) {
  885. -               ProjectTemplate pt = GetTemplate (id);
  886. -               if (pt != null)
  887. -                   recentCategory.Templates.Add (new TemplateItem (pt));
  888. -           }
  889. -          
  890. -           InitializeComponents ();
  891. +           ProcessCategories (categories, parent);
  892.         }
  893.        
  894. -       private void InsertCategories (TreeIter node, List<Category> listCategories)
  895. -       {
  896. -           listCategories.Sort ();
  897. -           if (TreeIter.Zero.Equals (node))
  898. -               listCategories.Insert (0, recentCategory);
  899. -           foreach (Category category in listCategories) {
  900. -               if (TreeIter.Zero.Equals (node))
  901. -                   InsertCategories (catStore.AppendValues (category.Name, category), category.Categories);
  902. -               else {
  903. -                   InsertCategories (catStore.AppendValues (node, category.Name, category), category.Categories);
  904. +       private void InsertCategories () {
  905. +           List<AbstractProjectTemplateProvider> providers = AbstractProjectTemplateProvider.AllProviders;
  906. +           Console.WriteLine (providers.Count);
  907. +           foreach (AbstractProjectTemplateProvider aptp in providers) {
  908. +               if (aptp.FetchInAnotherThread) {
  909. +                   Gtk.TreeIter providerIterator = catStore.AppendValues (aptp.DisplayName);
  910. +                   Gtk.TreeIter waitIterator = catStore.AppendValues (providerIterator, "Please Wait");
  911. +                   Thread t = new Thread (new ThreadStart (delegate {
  912. +                       if (aptp.FetchTemplates ()) {
  913. +                           Application.Invoke (delegate {
  914. +                               catStore.Remove(ref waitIterator);
  915. +                               ProcessProvider (aptp, providerIterator);
  916. +                           });
  917. +                       } else {
  918. +                           Application.Invoke (delegate {
  919. +                               catStore.Remove(ref waitIterator);
  920. +                               catStore.Remove(ref providerIterator);
  921. +                           });
  922. +                       }
  923. +                   }));
  924. +               } else {
  925. +                   if (aptp.FetchTemplates ()) {
  926. +                       ProcessProvider (aptp, catStore.AppendValues (aptp.DisplayName));
  927. +                   }
  928.                 }
  929.             }
  930.         }
  931.  -626,13 +604,16 @@
  932.             TreeIter treeIter;
  933.            
  934.             if (lst_template_types.Selection.GetSelected(out treeModel, out treeIter)) {
  935. -               templateView.Clear();
  936. -              
  937. -               foreach ( TemplateItem templateItem in  (catStore.GetValue(treeIter, 1) as Category).Templates) {
  938. -                   templateView.Add (templateItem);
  939. +               if (catStore.GetValue (treeIter, 1) is Category) {
  940. +                   templateView.Clear();
  941. +                   foreach (ProjectTemplate templateItem in (catStore.GetValue(treeIter, 1) as Category).Templates) {
  942. +                       templateView.Add (templateItem);
  943. +                   }
  944. +                   btn_new.Sensitive = false;
  945.                 }
  946.                
  947. -               btn_new.Sensitive = false;
  948. +               // TODO Figure out a nice way to display the templates otherwise.
  949. +              
  950.             }
  951.            
  952.         }
  953.  -662,8 +643,8 @@
  954.                 this.name = name;
  955.             }        
  956.            
  957. -           private List<TemplateItem> templates = new List<TemplateItem>();
  958. -           public List<TemplateItem> Templates
  959. +           private List<ProjectTemplate> templates = new List<ProjectTemplate> ();
  960. +           public List<ProjectTemplate> Templates
  961.             {
  962.                 get { return templates; }
  963.             }
  964.  -707,8 +688,7 @@
  965.                 set { tree.CurrentlySelected = value; }
  966.             }
  967.            
  968. -           public void Add (TemplateItem templateItem)
  969. -           {
  970. +           public void Add (ProjectTemplate templateItem) {
  971.                 tree.Add (templateItem);
  972.             }
  973.            
  974.  -767,12 +747,12 @@
  975.                 }
  976.             }
  977.            
  978. -           public void Add (TemplateItem templateItem)
  979. +           public void Add (ProjectTemplate templateItem)
  980.             {
  981.                 string name = GLib.Markup.EscapeText (templateItem.Name);
  982. -               if (!string.IsNullOrEmpty (templateItem.Template.LanguageName))
  983. -                   name += "\n<span foreground='darkgrey'><small>" + templateItem.Template.LanguageName + "</small></span>";
  984. -               templateStore.AppendValues (templateItem.Template.Icon.IsNull ? "md-project" : templateItem.Template.Icon.ToString (), name, templateItem.Template);
  985. +               if (!string.IsNullOrEmpty (templateItem.LanguageName))
  986. +                   name += "\n<span foreground='darkgrey'><small>" + templateItem.LanguageName + "</small></span>";
  987. +               templateStore.AppendValues (templateItem.Icon.IsNull ? "md-project" : templateItem.Icon.ToString (), name, templateItem);
  988.             }
  989.            
  990.             public void Clear ()
  991.  
  992. Index: MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.NewProjectDialog.cs
  993. ===================================================================
  994. --- MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.NewProjectDialog.cs (revision 153429)
  995. +++ MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.NewProjectDialog.cs (working copy)
  996.  -88,7 +88,7 @@
  997.             this.notebook = new global::Gtk.Notebook ();
  998.             this.notebook.CanFocus = true;
  999.             this.notebook.Name = "notebook";
  1000. -           this.notebook.CurrentPage = 0;
  1001. +           this.notebook.CurrentPage = 1;
  1002.             this.notebook.ShowBorder = false;
  1003.             this.notebook.BorderWidth = ((uint)(6));
  1004.             // Container child notebook.Gtk.Notebook+NotebookChild
  1005.  
  1006. Index: MonoDevelop.Ide/Makefile.am
  1007. ===================================================================
  1008. --- MonoDevelop.Ide/Makefile.am (revision 153429)
  1009. +++ MonoDevelop.Ide/Makefile.am (working copy)
  1010.  -14,9 +14,9 @@
  1011.     $(MONO_ADDINS_GUI_LIBS) \
  1012.     $(MONO_ADDINS_LIBS) \
  1013.     $(MONO_ADDINS_SETUP_LIBS) \
  1014. +   $(MONO_CAIRO_LIBS) \
  1015.     $(MONODOC_LIBS) \
  1016.     -r:ICSharpCode.SharpZipLib \
  1017. -   -r:Mono.Cairo \
  1018.     -r:Mono.Posix \
  1019.     -r:System \
  1020.     -r:System.Core \
  1021.  -338,6 +338,7 @@
  1022.     MonoDevelop.Ide.Tasks/TaskService.cs \
  1023.     MonoDevelop.Ide.Tasks/TaskStore.cs \
  1024.     MonoDevelop.Ide.Tasks/UserTasksView.cs \
  1025. +   MonoDevelop.Ide.Templates/AbstractProjectTemplateProvider.cs \
  1026.     MonoDevelop.Ide.Templates/ClrVersionFileTemplateCondition.cs \
  1027.     MonoDevelop.Ide.Templates/CodeDomFileDescriptionTemplate.cs \
  1028.     MonoDevelop.Ide.Templates/CodeTranslationFileDescriptionTemplate.cs \
  1029.  -347,6 +348,7 @@
  1030.     MonoDevelop.Ide.Templates/FileTemplateCondition.cs \
  1031.     MonoDevelop.Ide.Templates/FileTemplateReference.cs \
  1032.     MonoDevelop.Ide.Templates/INewFileCreator.cs \
  1033. +   MonoDevelop.Ide.Templates/InternalProjectTemplateProvider.cs \
  1034.     MonoDevelop.Ide.Templates/ISolutionItemDescriptor.cs \
  1035.     MonoDevelop.Ide.Templates/ISolutionItemFeature.cs \
  1036.     MonoDevelop.Ide.Templates/ParentProjectFileTemplateCondition.cs \
  1037.  
  1038. Index: MonoDevelop.Components/Makefile.am
  1039. ===================================================================
  1040. --- MonoDevelop.Components/Makefile.am  (revision 153429)
  1041. +++ MonoDevelop.Components/Makefile.am  (working copy)
  1042.  -6,8 +6,8 @@
  1043.     $(GLIB_SHARP_LIBS) \
  1044.     $(GTK_SHARP_LIBS) \
  1045.     $(MONO_ADDINS_LIBS) \
  1046. +   $(MONO_CAIRO_LIBS) \
  1047.     -r:$(top_builddir)/build/bin/MonoDevelop.Core.dll \
  1048. -   -r:Mono.Cairo \
  1049.     -r:Mono.Posix \
  1050.     -r:System \
  1051.     -r:System.Core \
  1052.  
  1053. Index: Mono.Texteditor/Makefile.am
  1054. ===================================================================
  1055. --- Mono.Texteditor/Makefile.am (revision 153429)
  1056. +++ Mono.Texteditor/Makefile.am (working copy)
  1057.  -4,7 +4,7 @@
  1058.  REFS =  \
  1059.     $(GLIB_SHARP_LIBS) \
  1060.     $(GTK_SHARP_LIBS) \
  1061. -   -r:Mono.Cairo \
  1062. +   $(MONO_CAIRO_LIBS) \
  1063.     -r:Mono.Posix \
  1064.     -r:System \
  1065.     -r:System.Core \
  1066.  
  1067. Index: MonoDevelop.Core.Gui/ChangeLog
  1068. ===================================================================
  1069. --- MonoDevelop.Core.Gui/ChangeLog  (revision 153429)
  1070. +++ MonoDevelop.Core.Gui/ChangeLog  (working copy)
  1071.  -1,3 +1,7 @@
  1072. +2010-03-13  Sanjoy Das  <sanjoy@playingwithpointers.com>
  1073. +
  1074. +   * Makefile.am:
  1075. +
  1076.  2010-03-08  Mike Krüger  <mkrueger@novell.com>
  1077.  
  1078.     * MonoDevelop.Core.Gui.addin.xml: Added jay mime type.
  1079.  
  1080. Index: MonoDevelop.Ide/ChangeLog
  1081. ===================================================================
  1082. --- MonoDevelop.Ide/ChangeLog   (revision 153429)
  1083. +++ MonoDevelop.Ide/ChangeLog   (working copy)
  1084.  -1,3 +1,14 @@
  1085. +2010-03-13  Sanjoy Das  <sanjoy@playingwithpointers.com>
  1086. +
  1087. +   * Makefile.am:
  1088. +   * MonoDevelop.Ide.csproj:
  1089. +   * MonoDevelop.Ide.Templates/ProjectTemplate.cs:
  1090. +   * MonoDevelop.Ide.Gui.Dialogs/NewProjectDialog.cs:
  1091. +   * gtk-gui/MonoDevelop.Ide.Gui.Dialogs.NewProjectDialog.cs:
  1092. +   * MonoDevelop.Ide.Templates/AbstractProjectTemplateProvider.cs:
  1093. +   * MonoDevelop.Ide.Templates/InternalProjectTemplateProvider.cs:
  1094. +
  1095. +
  1096.  2010-03-09  Lluis Sanchez Gual  <lluis@novell.com>
  1097.  
  1098.     * MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs:
  1099.  
  1100. Index: MonoDevelop.Components/ChangeLog
  1101. ===================================================================
  1102. --- MonoDevelop.Components/ChangeLog    (revision 153429)
  1103. +++ MonoDevelop.Components/ChangeLog    (working copy)
  1104.  -1,3 +1,7 @@
  1105. +2010-03-13  Sanjoy Das  <sanjoy@playingwithpointers.com>
  1106. +
  1107. +   * Makefile.am:
  1108. +
  1109.  2010-03-09  Mike Krüger  <mkrueger@novell.com>
  1110.  
  1111.     * MonoDevelop.Components/SearchEntry.cs:
  1112.  
  1113. Index: Mono.Texteditor/ChangeLog
  1114. ===================================================================
  1115. --- Mono.Texteditor/ChangeLog   (revision 153429)
  1116. +++ Mono.Texteditor/ChangeLog   (working copy)
  1117.  -1,3 +1,7 @@
  1118. +2010-03-13  Sanjoy Das  <sanjoy@playingwithpointers.com>
  1119. +
  1120. +   * Makefile.am:
  1121. +
  1122.  2010-03-09  Mike Krüger  <mkrueger@novell.com>
  1123.  
  1124.     * Mono.TextEditor.Highlighting/SyntaxMode.cs: Fixed failing
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement