+ return isNode(theNode, NODE_WORKBENCH, NODE_GROUP, NODE_FEATURE, NULL);
+}
+
+void Config_FeatureReader::fillFeature(xmlNodePtr theNode,
+ const boost::shared_ptr<Config_FeatureMessage>& outFeatureMessage)
+{
+ outFeatureMessage->setId(getProperty(theNode, _ID));
+ outFeatureMessage->setPluginLibrary(myLibraryName);
+ outFeatureMessage->setNestedFeatures(getProperty(theNode, FEATURE_NESTED));
+
+ bool isInternal = isInternalFeature(theNode);
+ outFeatureMessage->setInternal(isInternal);
+ if (isInternal) {
+ //Internal feature has no visual representation.
+ return;
+ }
+ outFeatureMessage->setText(getProperty(theNode, FEATURE_TEXT));
+ outFeatureMessage->setTooltip(getProperty(theNode, FEATURE_TOOLTIP));
+ outFeatureMessage->setIcon(getProperty(theNode, FEATURE_ICON));
+ outFeatureMessage->setKeysequence(getProperty(theNode, FEATURE_KEYSEQUENCE));
+ outFeatureMessage->setGroupId(restoreAttribute(NODE_GROUP, _ID));
+ outFeatureMessage->setWorkbenchId(restoreAttribute(NODE_WORKBENCH, _ID));
+ outFeatureMessage->setDocumentKind(restoreAttribute(NODE_WORKBENCH, WORKBENCH_DOC));