QSharedPointer<ctkPlugin> WorkbenchPlugin::GetBundleForExecutableExtension( const IConfigurationElement::Pointer& element, const QString& extensionName) { // this code is derived heavily from // ConfigurationElement.createExecutableExtension. QString prop; QString executable; QString contributorName; int i = 0; if (!extensionName.isNull()) prop = element->GetAttribute(extensionName); else { // property not specified, try as element value prop = element->GetValue(); if (!prop.isNull()) { prop = prop.trimmed(); if (prop.isEmpty()) prop = QString(); } } if (prop.isNull()) { // property not defined, try as a child element QList<IConfigurationElement::Pointer> exec(element->GetChildren(extensionName)); if (!exec.isEmpty()) contributorName = exec[0]->GetAttribute("plugin"); } else { // simple property or element value, parse it into its components i = prop.indexOf(':'); if (i != -1) executable = prop.left(i).trimmed(); else executable = prop; i = executable.indexOf('/'); if (i != -1) contributorName = executable.left(i).trimmed(); } if (contributorName.isNull()) contributorName = element->GetContributor()->GetName(); return Platform::GetPlugin(contributorName); }
IBundle::Pointer WorkbenchPlugin::GetBundleForExecutableExtension( IConfigurationElement::Pointer element, const std::string& extensionName) { // this code is derived heavily from // ConfigurationElement.createExecutableExtension. std::string prop; std::string executable; std::string contributorName; std::string::size_type i; if (extensionName != "") element->GetAttribute(extensionName, prop); else { // property not specified, try as element value prop = element->GetValue(); if (prop != "") { Poco::trimInPlace(prop); } } if (prop == "") { // property not defined, try as a child element IConfigurationElement::vector exec(element->GetChildren(extensionName)); if (exec.size() != 0) exec[0]->GetAttribute("plugin", contributorName); //$NON-NLS-1$ } else { // simple property or element value, parse it into its components i = prop.find_first_of(':'); if (i != std::string::npos) executable = Poco::trim(prop.substr(0, i)); else executable = prop; i = executable.find_first_of('/'); if (i != std::string::npos) contributorName = Poco::trim(executable.substr(0, i)); } if (contributorName == "") contributorName = element->GetContributor(); return Platform::GetBundle(contributorName); }
IntroDescriptor::IntroDescriptor(IConfigurationElement::Pointer configElement) throw (CoreException) : element(configElement) { std::string val; if (!configElement->GetAttribute(WorkbenchRegistryConstants::ATT_CLASS, val)) { //TODO IStatus /* throw CoreException(new Status(IStatus.ERROR, configElement .getNamespace(), 0, "Invalid extension (Missing class name): " + getId(), //$NON-NLS-1$ null)); */ throw CoreException(configElement->GetContributor() + ": Invalid extension (Missing className): " + GetId()); } }
void PartSite::SetConfigurationElement( IConfigurationElement::Pointer configElement) { // Get extension ID. configElement->GetAttribute("id", extensionID); //$NON-NLS-1$ // Get plugin ID. pluginID = configElement->GetContributor(); // Get extension name. std::string name; configElement->GetAttribute("name", name); //$NON-NLS-1$ if (name != "") { extensionName = name; } }