Example #1
0
        private List <MenuItem> LoadMenuFromExtensionPoint()
        {
            Log.Debug("Entering");

            List <MenuItem> addinItems = new List <MenuItem>();

            Mono.Addins.ExtensionNodeList nodes = Mono.Addins.AddinManager.GetExtensionNodes(ExtensionPath.SystemTray);

            Log.Debug($"Found '{nodes.Count}' items ...");
            foreach (Mono.Addins.ExtensionNode node in nodes)
            {
                Mono.Addins.TypeExtensionNode typeNode = node as Mono.Addins.TypeExtensionNode;
                try
                {
                    SysTrayAddin addin = typeNode.CreateInstance() as SysTrayAddin;
                    Log.Debug($"SysTrayAdd-in [{addin.ToString()}]");

                    addinItems = addin.MenuItems();
                }
                catch (Exception ex)
                {
                    Log.Error("Couldn't create SysTrayAddin instance: " + ex.Message);
                }
            }

            return(addinItems);
        }
Example #2
0
        void OnNoteAddinDisabled(Mono.Addins.ExtensionNodeEventArgs args)
        {
            Mono.Addins.TypeExtensionNode type_node =
                args.ExtensionNode as Mono.Addins.TypeExtensionNode;

            try {
                OnDisabledAddin(type_node.Id);
            } catch (Exception e) {
                Logger.Debug("Error unloading add-in: " + e.Message);
            }
        }
Example #3
0
        private void StartupHandler_ExtensionChanged(object sender, Mono.Addins.ExtensionNodeEventArgs args)
        {
            LogDebug("OnStartChanged {");
            LogDebug($"  Path    - {args.Path}");
            LogDebug($"  Node    - {args.ExtensionNode}");
            LogDebug($"  Object  - {args.ExtensionObject}");
            LogDebug($"  Changed - {args.Change.ToString()}");

            Mono.Addins.TypeExtensionNode extNode = args.ExtensionNode as Mono.Addins.TypeExtensionNode;
            LogDebug($"  ExtNode: {extNode.ToString()}");

            LogDebug("  Running...");
            IStartupExtension ext = (IStartupExtension)args.ExtensionObject;

            ext.Run();

            LogDebug("}");
        }
        public void ReloadPages()
        {
            _preferencePages.Clear();

            Mono.Addins.ExtensionNodeList nodes = Mono.Addins.AddinManager.GetExtensionNodes(ExtensionPath.PreferencePage);
            foreach (Mono.Addins.ExtensionNode node in nodes)
            {
                Mono.Addins.TypeExtensionNode typeNode = node as Mono.Addins.TypeExtensionNode;

                try
                {
                    //BROKEN: 2018-12-05
                    //PreferencePageExtension instance = typeNode.CreateInstance() as PreferencePageExtension;
                    //InitPage(instance, typeNode.Id, typeNode.TypeName);
                }
                catch (Exception ex)
                {
                    Log.Error($"Couldn't initialize PreferencePage id '{typeNode.Id}': " + ex.Message);
                }
            }
        }
Example #5
0
        public void LoadAddinsForNote(Note note)
        {
            Mono.Addins.ExtensionNodeList list = Mono.Addins.AddinManager.GetExtensionNodes("/Tomboy/NoteAddins");
            foreach (Mono.Addins.ExtensionNode node in list)
            {
                Mono.Addins.TypeExtensionNode type_node =
                    node as Mono.Addins.TypeExtensionNode;

                try {
                    NoteAddin n_addin = type_node.CreateInstance() as NoteAddin;

                    // Keep track of the addins added to each note
                    AttachAddin(type_node.Id, note, n_addin);
                } catch (Exception e) {
                    Logger.Warn("Couldn't create a NoteAddin instance: {0}", e.Message);
                }
            }

            // Make sure we remove addins when a note is deleted
            note.Manager.NoteDeleted += OnNoteDeleted;
        }
Example #6
0
        void OnNoteAddinEnabled(Mono.Addins.ExtensionNodeEventArgs args)
        {
            // Load NoteAddins
            if (Tomboy.DefaultNoteManager == null)
            {
                return;                 // too early -- YUCK!  Bad hack
            }

            foreach (Note note in Tomboy.DefaultNoteManager.Notes)
            {
                // Create a new NoteAddin
                Mono.Addins.TypeExtensionNode type_node =
                    args.ExtensionNode as Mono.Addins.TypeExtensionNode;

                try {
                    NoteAddin n_addin = type_node.CreateInstance() as NoteAddin;

                    // Keep track of the addins added to each note
                    AttachAddin(type_node.Id, note, n_addin);
                } catch (Exception e) {
                    Logger.Debug("Couldn't create a NoteAddin instance: {0}", e.Message);
                }
            }
        }
Example #7
0
        void OnApplicationAddinExtensionChanged(object sender, Mono.Addins.ExtensionNodeEventArgs args)
        {
            Mono.Addins.TypeExtensionNode type_node =
                args.ExtensionNode as Mono.Addins.TypeExtensionNode;

            ApplicationAddin addin;

            if (args.Change == Mono.Addins.ExtensionChange.Add)
            {
                // Load NoteAddins
                if (Tomboy.DefaultNoteManager == null)
                {
                    return;                     // too early -- YUCK!  Bad hack
                }

                addin = type_node.GetInstance(
                    typeof(ApplicationAddin)) as ApplicationAddin;
                if (addin != null)
                {
                    if (addin.Initialized == false)
                    {
                        try {
                            addin.Initialize();
                            app_addins [type_node.Id] = addin;
                        } catch (Exception e) {
                            Logger.Debug("Error initializing app addin {0}: {1}\n{2}",
                                         addin.GetType().ToString(),
                                         e.Message,
                                         e.StackTrace);
                        }
                    }
                }
            }
            else
            {
                if (app_addins.ContainsKey(type_node.Id))
                {
                    addin = app_addins [type_node.Id];
                    try {
                        addin.Shutdown();
                    } catch (Exception e1) {
                        Logger.Warn("Error shutting down app addin {0}: {1}\n{2}",
                                    addin.GetType().ToString(),
                                    e1.Message,
                                    e1.StackTrace);
                    } finally {
                        app_addins.Remove(type_node.Id);
                    }

                    try {
                        addin.Dispose();
                    } catch (Exception e1) {
                        Logger.Warn("Error disposing app addin: {0} - {1}",
                                    addin.GetType().ToString(), e1.Message);
                    }
                }
            }

            if (ApplicationAddinListChanged != null)
            {
                ApplicationAddinListChanged(sender, args);
            }
        }