Beispiel #1
0
        private void Initialize()
        {
            this.Bridge = KodiBridge.CreateBridgeInstance();

            // If we're being started as a service, don't run addon specific tasks
            if (this.IsService)
            {
                PyConsole.WriteLine(string.Format("Starting as Service: {0}", this.BaseUrl));
                return;
            }

            this.Handle     = Convert.ToInt32((PythonInterop.EvalToResult("sys.argv[1]")).Value);
            this.Parameters = (PythonInterop.EvalToResult("sys.argv[2]")).Value;
            PyConsole.WriteLine(string.Format("BaseUrl: {0}, Handle: {1}, Parameters: {2}",
                                              this.BaseUrl, this.Handle, this.Parameters));

            PyVariableManager.Reset();


            // Instance of XbmcAddon
            this.Addon = new Addon(PluginId);

            // Settings accessor
            this.Settings = new KodiAddonSettings(this.Addon);

            //this.Monitor = new XbmcMonitor();

            //string addonName = BaseUrl.Replace("plugin://", "").Replace("/", "");
        }
Beispiel #2
0
        public KodiAddon(bool persist = false, bool debug = false)
        {
            DebugEnabled = debug;
            IsPersistent = persist;
            try {
                PyVariableManager = new PyVariableManager();

                // Parse parameters
                this.BaseUrl   = PythonInterop.EvalToResult("sys.argv[0]").Value;
                this.IsService = PythonInterop.EvalToResult("len(sys.argv) < 2").Value;

                this.Router = new RouteManager(this);
            } catch (Exception ex) {
                KodiBridge.SaveException(ex);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Creates a new addon instance.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="enableDebug">Enables or disabled the debugging console (works on windows only)</param>
        /// <param name="persist">Whether or not to reuse a previous addon instance</param>
        /// <returns></returns>
        public static T GetInstance <T>(bool enableDebug = false, bool persist = false) where T : KodiAddon
        {
            if (enableDebug)
            {
                ConsoleHelper.CreateConsole();
            }

            string BaseUrl = PythonInterop.EvalToResult("sys.argv[0]").Value;

            T instance = null;

            if (persist)
            {
                T previousInstance = (T)KodiBridge.GetPersistentAddon(BaseUrl);
                if (previousInstance != null)
                {
                    Console.WriteLine("REUSING PREVIOUS INSTANCE");
                    instance = previousInstance;
                }
            }

            if (instance == null)
            {
                instance = (T)Activator.CreateInstance(typeof(T));
                if (persist)
                {
                    KodiBridge.RegisterPersistentAddon(BaseUrl, instance);
                }
            }

            instance.DebugEnabled = enableDebug;
            instance.IsPersistent = persist;

            // Set running addon
            KodiBridge.SetRunningAddon(instance);

            // Initialize addon fields.
            // If the addon is persistent, it updates fields that might have changed
            instance.Initialize();

            return(instance);
        }
Beispiel #4
0
        public KodiAddon()
        {
            try {
#if DEBUG
                ConsoleHelper.CreateConsole();
#endif

                // Clean the variables list from the previous run (we're in a new python instance so they don't exist anymore)
                Python.PyVariableManager.Initialize();

                // Parse parameters
                this.BaseUrl   = PythonInterop.EvalToResult("sys.argv[0]").Value;
                this.IsService = PythonInterop.EvalToResult("len(sys.argv) < 2").Value;

                // Initialize the Event Monitor
                //Modules.Xbmc.Events.Initialize();

                // Set running addon
                KodiBridge.RunningAddon = this;

                // If we're being started as a service, don't run addon specific tasks
                if (this.IsService)
                {
                    PyConsole.WriteLine(string.Format("Starting as Service: {0}", this.BaseUrl));
                    return;
                }

                this.Handle     = int.Parse(PythonInterop.EvalToResult("sys.argv[1]").Value);
                this.Parameters = PythonInterop.EvalToResult("sys.argv[2]").Value;
                PyConsole.WriteLine(string.Format("BaseUrl: {0}, Handle: {1}, Parameters: {2}",
                                                  this.BaseUrl, this.Handle, this.Parameters));

                // Register routes for derived type
                RouteManager.RegisterRoutes(this.GetType());
            } catch (Exception ex) {
                KodiBridge.SaveException(ex);
            }
        }