Gtk.Menu BuildTemplateItems(ExtensionNodeList nodes)
 {
     Gtk.Menu menu = new Gtk.Menu();
     foreach (ExtensionNode tn in nodes)
     {
         Gtk.MenuItem item;
         if (tn is TemplateCategoryNode)
         {
             TemplateCategoryNode cat = (TemplateCategoryNode)tn;
             item         = new Gtk.MenuItem(cat.Name);
             item.Submenu = BuildTemplateItems(cat.ChildNodes);
         }
         else
         {
             FileTemplateNode t = (FileTemplateNode)tn;
             item            = new Gtk.MenuItem(t.Name);
             item.Activated += delegate
             {
                 TextEditor.TextEditorApp.NewFile(t.GetContent());
             };
         }
         menu.Insert(item, -1);
     }
     return(menu);
 }
        public void TestLoadLatestVersion()
        {
            ExtensionNodeList list = AddinManager.GetExtensionNodes("/SimpleApp/InstallUninstallTest");

            Assert.AreEqual(1, list.Count);
            Assert.AreEqual("10.2", ((ItemSetNode)list[0]).Label);
        }
        public void TestAttrExtensionWithManyNodes()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes("/SimpleApp/AttrExtensionWithManyNodes");

            Assert.AreEqual(2, nodes.Count, "Node count");
            Assert.IsTrue(nodes [0] is AttrExtensionWithManyNodesExtensionNode);
            Assert.IsNotNull(nodes [1] is AttrExtensionWithManyNodesExtensionNodeExtra);
        }
        public IApplicationInfo[] GetApplications()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes("/MonoDevelop/Core/Applications");

            IApplicationInfo[] apps = new IApplicationInfo [nodes.Count];
            for (int n = 0; n < nodes.Count; n++)
            {
                apps [n] = (ApplicationExtensionNode)nodes [n];
            }
            return(apps);
        }
示例#5
0
        public void UpgradeCoreAddin()
        {
            InitRepository();
            CreateTestPackage("10.3");
            CreateTestPackage("10.4");

            ExtensionNodeList list = AddinManager.GetExtensionNodes("/SimpleApp/InstallUninstallTest");

            Assert.AreEqual(1, list.Count);
            Assert.AreEqual("10.2", ((ItemSetNode)list[0]).Label);

            Addin adn = AddinManager.Registry.GetAddin("SimpleApp.AddRemoveTest,10.2");

            Assert.IsTrue(adn.Enabled);
            Assert.IsFalse(adn.Description.CanUninstall);              // Core add-in can't be uninstalled

            setup.Repositories.RegisterRepository(monitor, repoUrl, true);

            var pkg = setup.Repositories.GetAvailableAddinUpdates("SimpleApp.AddRemoveTest", RepositorySearchFlags.LatestVersionsOnly).FirstOrDefault();

            Assert.IsNotNull(pkg);
            Assert.AreEqual("SimpleApp.AddRemoveTest,10.4", pkg.Addin.Id);

            // Install the add-in

            setup.Install(new ConsoleProgressStatus(true), pkg);

            adn = AddinManager.Registry.GetAddin("SimpleApp.AddRemoveTest,10.2");
            Assert.IsFalse(adn.Enabled);

            list = AddinManager.GetExtensionNodes("/SimpleApp/InstallUninstallTest");
            Assert.AreEqual(1, list.Count);
            Assert.AreEqual("10.4", ((ItemSetNode)list[0]).Label);

            adn = AddinManager.Registry.GetAddin("SimpleApp.AddRemoveTest");
            Assert.IsTrue(adn.Enabled);
            Assert.IsTrue(adn.Description.CanUninstall);

            // Uninstall the add-in

            setup.Uninstall(new ConsoleProgressStatus(true), "SimpleApp.AddRemoveTest,10.4");

            list = AddinManager.GetExtensionNodes("/SimpleApp/InstallUninstallTest");
            Assert.AreEqual(0, list.Count);

            adn = AddinManager.Registry.GetAddin("SimpleApp.AddRemoveTest");
            Assert.IsFalse(adn.Enabled);

            adn.Enabled = true;

            list = AddinManager.GetExtensionNodes("/SimpleApp/InstallUninstallTest");
            Assert.AreEqual(1, list.Count);
            Assert.AreEqual("10.2", ((ItemSetNode)list[0]).Label);
        }
示例#6
0
        public TaskListPad()
        {
            Id = "MonoDevelop.Ide.Gui.Pads.TaskListPad";

            VBox vbox = new VBox();

            vbox.Accessible.SetShouldIgnore(true);

            switcherComboList = new ListStore(typeof(string), typeof(ITaskListView), typeof(string));
            try
            {
                ExtensionNodeList viewCodons = AddinManager.GetExtensionNodes("/MonoDevelop/Ide/TaskList/View", typeof(TaskListViewCodon));
                foreach (TaskListViewCodon codon in viewCodons)
                {
                    switcherComboList.AppendValues(codon.Label, codon.View, codon.Class);
                }
            }
            catch (Exception e)             // no codons loaded
            {
                LoggingService.LogError("Loading of Tasks Views failed: {0}", e.ToString());
            }

            switcherCombo = new ComboBox(switcherComboList);
            switcherCombo.SetCommonAccessibilityAttributes("TaskPad.Switcher",
                                                           GettextCatalog.GetString("Type Selector"),
                                                           GettextCatalog.GetString("Select which type of tasks to display"));
            CellRenderer cr = new CellRendererText();

            switcherCombo.PackStart(cr, true);
            switcherCombo.AddAttribute(cr, "text", 0);

            sw            = new MonoDevelop.Components.CompactScrolledWindow();
            sw.ShadowType = ShadowType.None;

            vbox.Add(sw);

            control = vbox;
            control.ShowAll();

            // Load from preferences which one was used last time
            string className = (string)PropertyService.Get("Monodevelop.TaskList.ActiveView", "");
            int    pos = 0, i = 0;

            foreach (object[] row in switcherComboList)
            {
                if ((string)row[2] == className)
                {
                    pos = i;
                    break;
                }
                i++;
            }
            switcherCombo.Active = pos;
        }
示例#7
0
        internal void OnDocumentAttached()
        {
            IExtensibleTextEditor editor = GetContent <IExtensibleTextEditor> ();

            if (editor == null)
            {
                return;
            }
            editor.TextChanged += OnDocumentChanged;
            //this.parsedDocument = MonoDevelop.Projects.Dom.Parser.ProjectDomService.Parse (Project, FileName, DesktopService.GetMimeTypeForUri (FileName), TextEditor.Text);
            OnDocumentChanged(this, null);

            // If the new document is a text editor, attach the extensions

            ExtensionNodeList extensions = AddinManager.GetExtensionNodes("/MonoDevelop/Ide/TextEditorExtensions", typeof(TextEditorExtensionNode));

            editorExtension = null;
            TextEditorExtension last = null;

            foreach (TextEditorExtensionNode extNode in extensions)
            {
                if (!extNode.Supports(FileName))
                {
                    continue;
                }
                TextEditorExtension ext = (TextEditorExtension)extNode.CreateInstance();
                if (ext.ExtendsEditor(this, editor))
                {
                    if (editorExtension == null)
                    {
                        editorExtension = ext;
                    }
                    if (last != null)
                    {
                        last.Next = ext;
                    }
                    last = ext;
                    ext.Initialize(this);
                }
            }
            if (editorExtension != null)
            {
                last.Next = editor.AttachExtension(editorExtension);
            }
            window.Document = this;

            if (window is SdiWorkspaceWindow)
            {
                ((SdiWorkspaceWindow)window).AttachToPathedDocument(GetContent <MonoDevelop.Ide.Gui.Content.IPathedDocument> ());
            }
        }
        public void TestExtensionWithAttribute()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes("/SimpleApp/NodesWithAttribute");

            Assert.AreEqual(2, nodes.Count, "Node count");
            NodeWithAttribute n1 = nodes [0] as NodeWithAttribute;
            NodeWithAttribute n2 = nodes [1] as NodeWithAttribute;

            Assert.IsNotNull(n1);
            Assert.IsNotNull(n2);
            Assert.AreEqual("test1", n1.Name, "t1");
            Assert.AreEqual(true, n1.Value, "t2");
            Assert.AreEqual("test2", n2.Name, "t1");
            Assert.AreEqual(true, n2.Value, "t2");
        }
        public void TestGetExtensionNodes()
        {
            ExtensionNodeList writers = AddinManager.GetExtensionNodes("/SimpleApp/Writers");

            Assert.AreEqual(4, writers.Count, "Node count");

            foreach (ExtensionNode n in writers)
            {
                TypeExtensionNode tn = n as TypeExtensionNode;
                Assert.IsNotNull(tn, "Not TypeExtensionNode " + n.GetType());
                Assert.IsNotNull(tn.CreateInstance(typeof(IWriter)));
            }

            Assert.IsTrue(AddinManager.IsAddinLoaded("SimpleApp.HelloWorldExtension"), "HelloWorldExtension loaded");
        }
示例#10
0
        /// <summary>
        /// Sets the audio engine to use.
        /// </summary>
        /// <param name="sys">The name of the audio engine. Default is "OpenTK".</param>
        public static void SetAudioSystem(String sys)
        {
            if (Game.AudioSystem != null)
            {
                throw new InvalidOperationException("Game.SetAudioSystem() may only be called once.");
            }
            ExtensionNodeList en   = AddinManager.GetExtensionNodes("/Sharplike/Audio");
            TypeExtensionNode node = (TypeExtensionNode)AddinManager.GetExtensionNode(String.Format("/Sharplike/Audio/{0}", sys));

            if (node == null)
            {
                throw new ArgumentException("Specified audio system could not be found.", "sys");
            }
            AudioSystem = (AbstractAudioEngine)node.CreateInstance();
        }
        public void TestDataExtensionWithAttribute()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes("/SimpleApp/DataExtensionWithAttribute");

            Assert.AreEqual(2, nodes.Count, "Node count");
            ExtensionNode <SimpleExtensionAttribute> n1 = nodes [0] as ExtensionNode <SimpleExtensionAttribute>;
            ExtensionNode <SimpleExtensionAttribute> n2 = nodes [1] as ExtensionNode <SimpleExtensionAttribute>;

            Assert.IsNotNull(n1);
            Assert.IsNotNull(n2);
            Assert.AreEqual("test3", n1.Data.Name, "t1");
            Assert.AreEqual(true, n1.Data.Value, "t2");
            Assert.AreEqual("test4", n2.Data.Name, "t1");
            Assert.AreEqual(false, n2.Data.Value, "t2");
        }
示例#12
0
        public void TestDefaultInsertBefore()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes("/SimpleApp/DefaultInsertBefore");

            Assert.AreEqual(8, nodes.Count, "Node count");
            var ids = nodes.OfType <ExtensionNode> ().Select(n => n.Id).ToArray();

            Assert.AreEqual("n0", ids[0]);
            Assert.AreEqual("First", ids[1]);
            Assert.AreEqual("n1", ids[2]);
            Assert.AreEqual("n2", ids[3]);
            Assert.AreEqual("Mid", ids[4]);
            Assert.AreEqual("Last", ids[5]);
            Assert.AreEqual("n3", ids[6]);
            Assert.AreEqual("n4", ids[7]);
        }
        public void TestExtensionWithChildren()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes("/SimpleApp/NodeWithChildren");

            Assert.AreEqual(2, nodes.Count, "Node count");
            ExtensionNode n1 = nodes [0];
            ExtensionNode n2 = nodes [1];

            Assert.AreEqual("node1", n1.Id, "t1");
            Assert.AreEqual(3, n1.ChildNodes.Count, "n1 node count");
            Assert.AreEqual("child1", n1.ChildNodes[0].Id, "t1.1");
            Assert.AreEqual("child1.1", n1.ChildNodes[1].Id, "t1.2");
            Assert.AreEqual("child2", n1.ChildNodes[2].Id, "t1.3");

            Assert.AreEqual("node2", n2.Id, "t2");
        }
示例#14
0
        void InitializeExtensionChain()
        {
            DetachExtensionChain();
            var editor = GetContent <IExtensibleTextEditor> ();

            ExtensionNodeList extensions = window.ExtensionContext.GetExtensionNodes("/MonoDevelop/Ide/TextEditorExtensions", typeof(TextEditorExtensionNode));

            editorExtension = null;
            TextEditorExtension last = null;
            var mimetypeChain        = DesktopService.GetMimeTypeInheritanceChainForFile(FileName).ToArray();

            foreach (TextEditorExtensionNode extNode in extensions)
            {
                if (!extNode.Supports(FileName, mimetypeChain))
                {
                    continue;
                }
                TextEditorExtension ext;
                try {
                    ext = (TextEditorExtension)extNode.CreateInstance();
                } catch (Exception e) {
                    LoggingService.LogError("Error while creating text editor extension :" + extNode.Id + "(" + extNode.Type + ")", e);
                    continue;
                }
                if (ext.ExtendsEditor(this, editor))
                {
                    if (last != null)
                    {
                        ext.Next  = last.Next;
                        last.Next = ext;
                        last      = ext;
                    }
                    else
                    {
                        editorExtension = last = ext;
                        last.Next       = editor.AttachExtension(editorExtension);
                    }
                    ext.Initialize(this);
                }
            }
            if (window is SdiWorkspaceWindow)
            {
                ((SdiWorkspaceWindow)window).AttachToPathedDocument(GetContent <MonoDevelop.Ide.Gui.Content.IPathedDocument> ());
            }
        }
        public void TestTypeExtensionWithAttribute()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes(typeof(IWriterWithMetadata));

            Assert.AreEqual(2, nodes.Count, "Node count");
            TypeExtensionNode <WriterWithMetadataAttribute> n1 = nodes [0] as TypeExtensionNode <WriterWithMetadataAttribute>;
            TypeExtensionNode <WriterWithMetadataAttribute> n2 = nodes [1] as TypeExtensionNode <WriterWithMetadataAttribute>;

            Assert.IsNotNull(n1);
            Assert.IsNotNull(n2);
            Assert.AreEqual("meta1", n1.Data.Name, "t1");
            Assert.AreEqual(1, n1.Data.Version, "t2");
            IWriterWithMetadata md = (IWriterWithMetadata)n1.CreateInstance();

            Assert.AreEqual("mt1", md.Write());
            Assert.AreEqual("meta2", n2.Data.Name, "t3");
            Assert.AreEqual(2, n2.Data.Version, "t4");
            md = (IWriterWithMetadata)n2.CreateInstance();
            Assert.AreEqual("mt2", md.Write());
        }
示例#16
0
 private void LoadModelType()
 {
     try
     {
         ExtensionNodeList <ModelExtensionNode> extensionNodes = AddinManager.GetExtensionNodes <ModelExtensionNode>(typeof(IModel));
         List <ModelExtensionNode> list = extensionNodes.ToList <ModelExtensionNode>();
         list.Sort();
         List <ModelMetaData> list2 = new List <ModelMetaData>();
         foreach (ModelExtensionNode current in list)
         {
             if (current.Type.IsSubclassOf(typeof(NodeObject)))
             {
                 ModelMetaData item = new ModelMetaData(current);
                 list2.Add(item);
             }
         }
         this.ModelCollection = list2;
     }
     catch (Exception exception)
     {
         LogConfig.Logger.Error("Load model type failed.", exception);
     }
 }
示例#17
0
        void InitializeExtensionChain()
        {
            DetachExtensionChain();
            var editor = GetContent <IExtensibleTextEditor> ();

            ExtensionNodeList extensions = window.ExtensionContext.GetExtensionNodes("/MonoDevelop/Ide/TextEditorExtensions", typeof(TextEditorExtensionNode));

            editorExtension = null;
            TextEditorExtension last = null;
            var mimetypeChain        = DesktopService.GetMimeTypeInheritanceChainForFile(FileName).ToArray();

            foreach (TextEditorExtensionNode extNode in extensions)
            {
                if (!extNode.Supports(FileName, mimetypeChain))
                {
                    continue;
                }
                TextEditorExtension ext = (TextEditorExtension)extNode.CreateInstance();
                if (ext.ExtendsEditor(this, editor))
                {
                    if (editorExtension == null)
                    {
                        editorExtension = ext;
                    }
                    if (last != null)
                    {
                        last.Next = ext;
                    }
                    last = ext;
                    ext.Initialize(this);
                }
            }
            if (editorExtension != null)
            {
                last.Next = editor.AttachExtension(editorExtension);
            }
        }
示例#18
0
        void InitializeEditor(IExtensibleTextEditor editor)
        {
            Editor.Document.TextReplaced += (o, a) => {
                if (parsedDocument != null)
                {
                    parsedDocument.IsInvalid = true;
                }

                if (Editor.Document.IsInAtomicUndo)
                {
                    wasEdited = true;
                }
                else
                {
                    StartReparseThread();
                }
            };

            Editor.Document.BeginUndo += delegate {
                wasEdited = false;
            };

            Editor.Document.EndUndo += delegate {
                if (wasEdited)
                {
                    StartReparseThread();
                }
            };
            Editor.Document.Undone += (o, a) => StartReparseThread();
            Editor.Document.Redone += (o, a) => StartReparseThread();

            // If the new document is a text editor, attach the extensions

            ExtensionNodeList extensions = window.ExtensionContext.GetExtensionNodes("/MonoDevelop/Ide/TextEditorExtensions", typeof(TextEditorExtensionNode));

            editorExtension = null;
            TextEditorExtension last = null;

            foreach (TextEditorExtensionNode extNode in extensions)
            {
                if (!extNode.Supports(FileName))
                {
                    continue;
                }

                TextEditorExtension ext = (TextEditorExtension)extNode.CreateInstance();
                if (ext.ExtendsEditor(this, editor))
                {
                    if (editorExtension == null)
                    {
                        editorExtension = ext;
                    }

                    if (last != null)
                    {
                        last.Next = ext;
                    }

                    last = ext;
                    ext.Initialize(this);
                }
            }

            if (editorExtension != null)
            {
                last.Next = editor.AttachExtension(editorExtension);
            }
        }
示例#19
0
        internal void OnDocumentAttached()
        {
            IExtensibleTextEditor editor = GetContent <IExtensibleTextEditor> ();

            if (editor == null)
            {
                return;
            }

            Editor.Document.TextReplaced += (o, a) => {
                if (Editor.Document.IsInAtomicUndo)
                {
                    wasEdited = true;
                }
                else
                {
                    StartReparseThread();
                }
            };

            Editor.Document.BeginUndo += delegate {
                wasEdited = false;
            };

            Editor.Document.EndUndo += delegate {
                if (wasEdited)
                {
                    StartReparseThread();
                }
            };
            Editor.Document.Undone += (o, a) => StartReparseThread();
            Editor.Document.Redone += (o, a) => StartReparseThread();

            // If the new document is a text editor, attach the extensions

            ExtensionNodeList extensions = window.ExtensionContext.GetExtensionNodes("/MonoDevelop/Ide/TextEditorExtensions", typeof(TextEditorExtensionNode));

            editorExtension = null;
            TextEditorExtension last = null;

            foreach (TextEditorExtensionNode extNode in extensions)
            {
                if (!extNode.Supports(FileName))
                {
                    continue;
                }
                TextEditorExtension ext = (TextEditorExtension)extNode.CreateInstance();
                if (ext.ExtendsEditor(this, editor))
                {
                    if (editorExtension == null)
                    {
                        editorExtension = ext;
                    }
                    if (last != null)
                    {
                        last.Next = ext;
                    }
                    last = ext;
                    ext.Initialize(this);
                }
            }
            if (editorExtension != null)
            {
                last.Next = editor.AttachExtension(editorExtension);
            }
            window.Document = this;
            RunWhenLoaded(() => UpdateParseDocument());
            if (window is SdiWorkspaceWindow)
            {
                ((SdiWorkspaceWindow)window).AttachToPathedDocument(GetContent <MonoDevelop.Ide.Gui.Content.IPathedDocument> ());
            }
        }
示例#20
0
 private static void RegisterAddinServices()
 {
     extension_nodes = AddinManager.GetExtensionNodes("/Synapse/ServiceManager/Service");
 }
 public static void RegisterAddinServices()
 {
     extension_nodes = AddinManager.GetExtensionNodes("/Banshee/ServiceManager/Service");
 }
        public void TestMultiAssemblyAddin()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes("/SimpleApp/MultiAssemblyTestExtensionPoint");

            Assert.AreEqual(6, nodes.Count, "Node count");
        }