Пример #1
0
        /// <summary>
        /// Removes plugin from specified key.
        /// </summary>
        /// <param name="index">0-based index of key.</param>
        /// <returns>0 if successful, otherwise an error code.</returns>
        public int RemovePlugin(byte index)
        {
            if (_PluginInstances[index] != null)
            {
                OptimusMiniPluginWorkerBase lCurrentPlugin = _PluginInstances[index]._Worker;
                _PluginInstances[index] = null;

                // Tell plugin to stop working

                // Terminate
                lCurrentPlugin.Terminate();
            }

            return(0);
        }
Пример #2
0
        /// <summary>
        /// Assigns passed plugin to specified key.
        /// </summary>
        /// <param name="index">0-based index of key.</param>
        /// <param name="plugin">Plugin to assign.</param>
        /// <returns>0 if successful, otherwise an error code.</returns>
        public int AddPlugin(byte index, OptimusMiniPluginWorkerBase plugin, OptimusMiniSettingsList settings)
        {
            // ----- If there's already a plugin assigned remove it
            RemovePlugin(index);


            // ----- Add new plugin
            PluginInstance lInstance = new PluginInstance();

            lInstance._Worker       = plugin;
            _PluginInstances[index] = lInstance;
            plugin.Initialize(settings);
            plugin.Repaint();


            // ----- Result
            return(0);
        }
        /// <summary>
        /// Assigns passed plugin to specified key.
        /// </summary>
        /// <param name="index">0-based index of key.</param>
        /// <param name="plugin">Plugin to assign.</param>
        /// <returns>0 if successful, otherwise an error code.</returns>
        public int AddPlugin(byte index, OptimusMiniPluginWorkerBase plugin, OptimusMiniSettingsList settings)
        {
            // ----- If there's already a plugin assigned remove it
              RemovePlugin(index);

              // ----- Add new plugin
              PluginInstance lInstance = new PluginInstance();
              lInstance._Worker = plugin;
              _PluginInstances[index] = lInstance;
              plugin.Initialize(settings);
              plugin.Repaint();

              // ----- Result
              return 0;
        }
Пример #4
0
        internal void Update()
        {
            if (_PluginInstances.Count == 0)
            {
                return;
            }

            int lCurrentTicks = Environment.TickCount;

            lock (_PluginInstances)
            {
                // Time to rotate?
                bool lRotated = false;
                if (lCurrentTicks - _LastRotate >= 30000)
                {
                    if (_PluginInstances.Count > 3)
                    {
                        PluginInstance lInstanceToMove = _PluginInstances[0];
                        _PluginInstances.RemoveAt(0);
                        _PluginInstances.Add(lInstanceToMove);
                    }
                    _LastRotate = lCurrentTicks;
                    lRotated    = true;
                }

                for (int i = 0; i < _PluginInstances.Count; i++)
                {
                    PluginInstance lInstance            = _PluginInstances[i];
                    OptimusMiniPluginWorkerBase lWorker = lInstance._Worker;

                    // Check for updated image
                    if (i <= 2 && lWorker._Bitmap != null && (lRotated || (lWorker._BitmapUpdated > lWorker._BitmapPainted)))
                    {
                        lWorker._BitmapPainted = Environment.TickCount;
                        Bitmap lBitmap = lWorker._Bitmap;
                        _Controller.ShowImage((byte)i, lBitmap);
                    }

                    // Check for events
                    List <OptimusMiniEventLog> lEvents = lWorker.GetEventLog();
                    if (lEvents != null)
                    {
                        foreach (OptimusMiniEventLog lEvent in lEvents)
                        {
                            _Controller.RaiseNotification(lEvent);
                        }
                    }

                    // Start update
                    if (lWorker.IsNextUpdateDue())
                    {
                        ThreadPool.QueueUserWorkItem(new WaitCallback(lWorker.Update));
                    }
                }

                //if (_PluginInstances.Count < 3)
                //{
                //  for (int i = _PluginInstances.Count - 1; i < 3; i++)
                //  {
                //    _Controller.ClearImage((byte)i);
                //  }
                //}
            }
        }