Ejemplo n.º 1
0
long CMUSHclientDoc::EnablePlugin(LPCTSTR PluginID, BOOL Enabled) 
{
CPlugin * pPlugin = GetPlugin (PluginID); 

  if (!pPlugin)                            
	  return eNoSuchPlugin;                       

  if (pPlugin->m_bEnabled == (Enabled != 0))
    return eOK;   // already same state

  pPlugin->m_bEnabled = Enabled != 0;

  CPlugin * pSavedPlugin = m_CurrentPlugin;

  // otherwise plugin won't know who itself is
  m_CurrentPlugin = pPlugin;

  if (pPlugin->m_bEnabled)
    {
    CScriptCallInfo callinfo (ON_PLUGIN_ENABLE, pPlugin->m_PluginCallbacks [ON_PLUGIN_ENABLE]);
    pPlugin->ExecutePluginScript (callinfo); 
    }
  else
    {
    CScriptCallInfo callinfo (ON_PLUGIN_DISABLE, pPlugin->m_PluginCallbacks [ON_PLUGIN_DISABLE]);
    pPlugin->ExecutePluginScript (callinfo); 
    }
  
  m_CurrentPlugin = pSavedPlugin;

  return eOK;
}   // end of CMUSHclientDoc::EnablePlugin
Ejemplo n.º 2
0
long CMUSHclientDoc::BroadcastPlugin(long Message, LPCTSTR Text) 
{
  CPlugin * pSavedPlugin = m_CurrentPlugin;
  long iCount = 0;

  CString strCurrentID;
  CString strCurrentName;

  if (pSavedPlugin)
    {
     strCurrentID = pSavedPlugin->m_strID;
     strCurrentName = pSavedPlugin->m_strName;
    }

  // tell a plugin the message
  for (PluginListIterator pit = m_PluginList.begin (); 
       pit != m_PluginList.end (); 
       ++pit)
    {
    CPlugin * pPlugin = *pit;

    if (!(pPlugin->m_bEnabled))   // ignore disabled plugins
      continue;

    // don't broadcast to ourselves - could cause indefinite loop
    if (pPlugin == pSavedPlugin)
      continue;

    CScriptCallInfo callinfo (ON_PLUGIN_BROADCAST, pPlugin->m_PluginCallbacks [ON_PLUGIN_BROADCAST]);
    m_CurrentPlugin = pPlugin;

    // see what the plugin makes of this,
    pPlugin->ExecutePluginScript (callinfo,
                                  Message, 
                                  (LPCTSTR) strCurrentID,
                                  (LPCTSTR) strCurrentName,
                                  Text); 

    if (callinfo._dispid_info.isvalid ())
      iCount++;

    }   // end of doing each plugin

  m_CurrentPlugin = pSavedPlugin;

	return iCount;
}  // end of CMUSHclientDoc::BroadcastPlugin