void IExtensionService.Initialize() { Marshaller.Init(); has_karaoke = Marshaller.CheckGstPlugin("audiokaraoke"); Hyena.Log.Debug("[Karaoke] GstPlugin audiokaraoke" + (has_karaoke ? "" : " not") + " found"); if (!has_karaoke) { Hyena.Log.Warning("[Karaoke] audiokaraoke is not available, please install gstreamer-good-plugins"); return; } action_service = ServiceManager.Get <InterfaceActionService> (); actions = new Gtk.ActionGroup("Karaoke"); actions.Add(new Gtk.ActionEntry[] { new Gtk.ActionEntry("KaraokeAction", null, AddinManager.CurrentLocalizer.GetString("_Karaoke"), null, null, null), new Gtk.ActionEntry("KaraokeConfigureAction", Gtk.Stock.Properties, AddinManager.CurrentLocalizer.GetString("_Configure"), null, AddinManager.CurrentLocalizer.GetString("Configure the Karaoke extension"), OnConfigure) }); Gdk.Pixbuf icon = new Gdk.Pixbuf(System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("microphone.png")); Gtk.IconSet iconset = new Gtk.IconSet(icon); Gtk.IconFactory iconfactory = new Gtk.IconFactory(); iconfactory.Add("microphone", iconset); iconfactory.AddDefault(); actions.Add(new Gtk.ToggleActionEntry[] { new Gtk.ToggleActionEntry("KaraokeEnableAction", "microphone", AddinManager.CurrentLocalizer.GetString("_Activate Karaoke mode"), null, AddinManager.CurrentLocalizer.GetString("Activate Karaoke mode"), OnActivateKaraoke, karaoke_enabled) }); action_service.UIManager.InsertActionGroup(actions, 0); ui_menu_id = action_service.UIManager.AddUiFromResource("KaraokeMenu.xml"); ui_button_id = action_service.UIManager.AddUiFromResource("KaraokeButton.xml"); }