本文整理汇总了C++中Plugin::Load方法的典型用法代码示例。如果您正苦于以下问题:C++ Plugin::Load方法的具体用法?C++ Plugin::Load怎么用?C++ Plugin::Load使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Plugin
的用法示例。
在下文中一共展示了Plugin::Load方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadPlugin
//=================================================================================
bool PluginManager::LoadPlugin( const Cornucopia::Path& libraryPath )
{
bool success = false;
Plugin* plugin = 0;
do
{
// Make sure that the plugin is not already loaded.
if( FindPlugin( libraryPath ) )
{
wxMessageBox( wxString::Format( wxT( "The plugin \"%s\" is already loaded." ), ( const char* )libraryPath ), wxT( "Error" ), wxOK | wxCENTRE );
break;
}
// Create a new plugin object to represent the plugin in our list.
plugin = new ( std::nothrow ) Plugin();
if( !plugin )
break;
// Attempt to load the plugin library.
if( !plugin->Load( libraryPath ) )
break;
// Attempt to initialize the plugin.
CornucopiaEditor::Plugin* eventHandler = plugin->GetEventHandler();
if( !eventHandler->Initialize( &assistant ) )
{
wxMessageBox( wxString::Format( wxT( "The plugin \"%s\" failed to initialize." ), ( const char* )libraryPath ), wxT( "Error" ), wxOK | wxCENTRE );
break;
}
// Send the first event to the plugin.
PluginEvent event;
event.SetEventObject(0);
event.SetEventType( CORNUCOPIA_PLUGIN_INITIALIZE );
( void )CallPlugin( plugin, event );
// We made it threw the gauntlet!
success = true;
}
while( false );
// Discard or keep the plugin.
if( !success )
delete plugin;
else
pluginList.push_back( plugin );
return success;
}
示例2: Initialize
void PluginManager::Initialize() {
eventNames_.Add(_T("iconMenuOpening"));
eventNames_.Add(_T("click"));
luaApplication = new azApplication();
luaOptionPanel = new azOptionPanel();
luaDialogs = new azDialogs();
luaSystem = new azSystem();
TiXmlDocument doc(FilePaths::GetPluginSettingsFile().mb_str());
doc.LoadFile(TIXML_ENCODING_UTF8);
TiXmlElement* pluginSettingsXml = doc.FirstChildElement("Plugins");
if (!pluginSettingsXml) WLOG(_T("PluginManager::Initialize: Could not load XML. No Plugins element found."));
wxString pluginPath = FilePaths::GetPluginsDirectory();
wxDir pluginFolder;
if (wxFileName::DirExists(pluginPath) && pluginFolder.Open(pluginPath)) {
wxString folderName;
bool success = pluginFolder.GetFirst(&folderName, wxALL_FILES_PATTERN, wxDIR_DIRS);
while (success) {
Plugin* p = new Plugin();
plugins_.push_back(p);
wxString folderPath = pluginPath + wxFileName::GetPathSeparator() + folderName;
p->LoadMetadata(folderPath);
bool pluginIsEnabled = true;
if (pluginSettingsXml) {
for (TiXmlElement* element = pluginSettingsXml->FirstChildElement(); element; element = element->NextSiblingElement()) {
wxString elementName = wxString::FromUTF8(element->Value());
TiXmlHandle handle(element);
if (elementName == _T("Plugin")) {
wxString uuid = XmlUtil::ReadElementText(handle, "UUID");
if (uuid == p->GetUUID()) {
pluginIsEnabled = XmlUtil::ReadElementTextAsBool(handle, "Enabled", true);
break;
}
} else {
WLOG(wxString::Format(_T("PluginManager::Initialize: Unknown element: %s"), elementName));
}
} // for
} // if
p->Enable(pluginIsEnabled);
p->SetInitiallyEnabled(pluginIsEnabled);
if (pluginIsEnabled) {
ILOG(_T("Loading plugin: ") + folderName);
p->Load(folderPath);
} else {
ILOG(_T("Skipping disabled plugin: ") + folderName);
}
success = pluginFolder.GetNext(&folderName);
}
}
}