Ejemplo n.º 1
0
        // MF PlugIn Menu click
        private void OnMenuClick(object sender, EventArgs ea)
        {
            ToolStripItem tsi = sender as ToolStripItem;

            if (tsi != null)
            {
                MFPlugInMenuItem mfdp = tsi.Tag as MFPlugInMenuItem;
                if (m_pluginThread == null || !m_pluginThread.IsAlive)
                {
                    m_currentPlugInObject = mfdp;

                    // Modal dialogs need to run on the same thread
                    if (!mfdp.RunInSeparateThread)
                    {
                        OnPlugInExecuteThread();
                    }
                    else
                    {
                        m_pluginThread = new Thread(new ThreadStart(OnPlugInExecuteThread));
                        m_pluginThread.SetApartmentState(ApartmentState.STA);
                        m_pluginThread.Start();
                    }
                }
                else
                {
                    DumpToOutput(Properties.Resources.WarningPlugInPending);
                }
            }
        }
Ejemplo n.º 2
0
        private void OnPlugInExecuteThread()
        {
            MFDevice dev = null;

            if (m_currentPlugInObject == null)
            {
                return;
            }

            try
            {
                m_deploy.OpenWithoutConnect = !m_currentPlugInObject.RequiresConnection;

                dev = ConnectToSelectedDevice();

                if (dev != null)
                {
                    if (m_currentPlugInObject.RunInSeparateThread)
                    {
                        DumpToOutput(string.Format(Properties.Resources.XCommand, m_currentPlugInObject.Name));
                    }

                    if (m_currentPlugInObject.RequiresConnection && (!dev.DbgEngine.TryToConnect(5, 100)))
                    {
                        throw new MFDeviceNoResponseException();
                    }

                    m_currentPlugInObject.OnAction(this, dev);
                }
            }
            catch (System.Threading.ThreadAbortException)
            {
            }
            catch (Exception exc)
            {
                DumpToOutput(Properties.Resources.ErrorPrefix + exc.Message);
            }
            finally
            {
                DisconnectFromSelectedDevice();

                m_deploy.OpenWithoutConnect = false;

                if (m_currentPlugInObject.RunInSeparateThread)
                {
                    DumpToOutput(string.Format(Properties.Resources.StatusXComplete, m_currentPlugInObject.Name));
                }

                m_currentPlugInObject = null;
            }
        }
Ejemplo n.º 3
0
        private int AddPlugIns(Type [] types, string menuName)
        {
            int cnt = 0;

            if (!menuStrip1.Items.Contains(m_pluginMenu))
            {
                menuStrip1.Items.Insert(3, m_pluginMenu);
                m_pluginMenu.DropDownItems.Add(toolStripSeparator1);
                ToolStripItem tsi = m_pluginMenu.DropDownItems.Add(Properties.Resources.MenuItemCancel);
                tsi.Click += new EventHandler(OnCancelMenuClick);
            }

            ToolStripMenuItem parentMenu = new ToolStripMenuItem(menuName);

            m_pluginMenu.DropDownItems.Insert(0, parentMenu);

            foreach (Type t in types)
            {
                if (t.IsSubclassOf(typeof(MFPlugInMenuItem)))
                {
                    ConstructorInfo ci      = t.GetConstructor(new Type[0] {
                    });
                    MFPlugInMenuItem plugin = ci.Invoke(new object[0] {
                    }) as MFPlugInMenuItem;
                    if (plugin != null)
                    {
                        m_plugins.Add(plugin);
                        ToolStripMenuItem tsi = new ToolStripMenuItem(plugin.Name);
                        tsi.Tag    = plugin;
                        tsi.Click += new EventHandler(OnMenuClick);
                        parentMenu.DropDownItems.Insert(0, tsi);

                        cnt++;

                        // any plugin submenu items?
                        if (plugin.Submenus != null)
                        {
                            foreach (MFPlugInMenuItem mi in plugin.Submenus)
                            {
                                ToolStripMenuItem ti = new ToolStripMenuItem(mi.Name);
                                ti.Tag    = mi;
                                ti.Click += new EventHandler(OnMenuClick);

                                tsi.DropDownItems.Add(ti);
                            }
                        }
                    }
                }
            }
            return(cnt);
        }