const static char* NODE_FEATURE = "feature";
const static char* NODE_SOURCE = "source";
const static char* NODE_VALIDATOR = "validator";
-const static char* NODE_NAME_ATTRIBUTES = "attributes";
-const static char* NODE_NAME_ATTRIBUTE = "attribute";
const static char* NODE_SELFILTER = "selection_filter";
const static char* NODE_XMLPARENT = "libxml_parent";
const static char* ATTR_OBLIGATORY = "obligatory";
const static char* ATTR_CONCEALMENT = "concealment";
const static char* ATTR_USE_RESET = "use_reset";
-const static char* ATTR_ID = _ID;
-const static char* ATTR_ROLE = "role";
-const static char* ATTR_MAIN_ROLE = "main";
// WDG_INFO properties
const static char* INFO_WDG_TEXT = FEATURE_TEXT;
#include <string>
-Config_WidgetAPI::Config_WidgetAPI(const std::string& theRawXml)
+Config_WidgetAPI::Config_WidgetAPI(std::string theRawXml)
{
myDoc = xmlParseDoc(BAD_CAST theRawXml.c_str());
myCurrentNode = xmlDocGetRootElement(myDoc);
return myCurrentNode != NULL;
}
-std::list<xmlNodePtr> Config_WidgetAPI::attributes() const
-{
- std::list<xmlNodePtr> aResult;
- if (myCurrentNode && hasChild(myCurrentNode)) {
- xmlNodePtr anAttributesNode = myCurrentNode->children;
- while (anAttributesNode &&
- (!isElementNode(anAttributesNode) ||
- std::string((char *) anAttributesNode->name) != NODE_NAME_ATTRIBUTES)) {
- anAttributesNode = anAttributesNode->next;
- }
- if (anAttributesNode && hasChild(anAttributesNode)) {
- xmlNodePtr anAttributeNode = anAttributesNode->children;
- while (anAttributeNode) {
- if (isElementNode(anAttributeNode) &&
- std::string((char *) anAttributeNode->name) == NODE_NAME_ATTRIBUTE)
- aResult.push_back(anAttributeNode);
- anAttributeNode = anAttributeNode->next;
- }
- }
- }
- return aResult;
-}
-
std::string Config_WidgetAPI::widgetType() const
{
std::string result = "";
{
return getProperty(ATTR_TOOLTIP);
}
-
-std::list<std::string> Config_WidgetAPI::getAttributes(const std::string& theRole/* = std::string()*/) const
-{
- std::list<std::string> aResult;
-
- if (theRole.empty() || theRole == ATTR_MAIN_ROLE)
- aResult.push_back(widgetId());
-
- if (theRole == ATTR_MAIN_ROLE)
- return aResult;
-
- std::list<xmlNodePtr> anAttributes = attributes();
- for (auto it = anAttributes.begin(); it != anAttributes.end(); ++it) {
- if (theRole.empty() || theRole == ::getProperty(*it, ATTR_ROLE))
- aResult.push_back(::getProperty(*it, ATTR_ID));
- }
- return aResult;
-}
-
-std::string Config_WidgetAPI::getAttributeProperty(const std::string& theAttribute,
- const std::string& thePropName) const
-{
- if (theAttribute == widgetId()) {
- if (thePropName == ATTR_ROLE)
- return ATTR_MAIN_ROLE;
- return ::getProperty(myCurrentNode, thePropName.c_str());
- }
-
- std::list<xmlNodePtr> anAttributes = attributes();
- for (auto it = anAttributes.begin(); it != anAttributes.end(); ++it) {
- if (theAttribute == ::getProperty(*it, ATTR_ID))
- return ::getProperty(*it, thePropName.c_str());
- }
- return std::string();
-}
-
#include <Config_def.h>
#include <cstdarg>
-#include <list>
#include <string>
//>> Forward declaration of xmlNodePtr.
//! Returns a custom property of current widget
std::string getProperty(const char* thePropName) const;
- /*! Returns a list of attributes.
- * If theRole is 0 then returns all attributes.
- * If theRole is "main" then returns widgetId().
- */
- std::list<std::string> getAttributes(const std::string& theRole = std::string()) const;
- //! Returns a custom property of attribute
- std::string getAttributeProperty(const std::string& theAttribute,
- const std::string& thePropName) const;
-
/*! Checks if the XML representation of widget has given attribute,
* if yes - returns it's bool value, if no, or if the value can not
* be converted to bool - returns theDefault.
protected:
/// These fields are accessible for ModuleBase_WidgetFactory only
- Config_WidgetAPI(const std::string& theRawXml);
+ Config_WidgetAPI(std::string theRawXml);
//! Pass to the next (sibling) node of widget's xml definition. If impossible, returns false
bool toNextWidget();
//! Pass into the child node of widget's xml definition. If impossible, returns false
//! Pass into the parent node of widget's xml definition. If impossible, returns false
bool toParentWidget();
- std::list<xmlNodePtr> attributes() const;
-
private:
xmlDocPtr myDoc; //!< Pointer to the root of widget's xml definition
xmlNodePtr myCurrentNode; //!< Pointer to the current node in the widget's xml definition
<feature id="Export" title="Export" tooltip="Export to file" icon=":icons/export.png">
<export_file_selector id="file_path" type="save" title="Export file" path="">
<validator id="ExchangePlugin_ExportFormat" parameters="BREP|BRP:BREP,STEP|STP:STEP,IGES|IGS:IGES-5.1,IGES|IGS:IGES-5.3" />
- <attributes>
- <attribute id="file_format" role="format" />
- </attributes>
</export_file_selector>
<multi_selector id="selection_list" tooltip="Select a set of objects" type_choice="Vertices Edges Faces Solids" />
</feature>
</group>
</workbench>
-</plugin>
+</plugin>
\ No newline at end of file
myAttributeID = theData ? theData->widgetId() : "";
myIsObligatory = theData->getBooleanAttribute(ATTR_OBLIGATORY, true);
- std::list<std::string> anAttributes = theData->getAttributes();
- for (auto it = anAttributes.begin(); it != anAttributes.end(); ++it) {
- std::string aRole = theData->getAttributeProperty(*it, ATTR_ROLE);
- myRoleAttributesID[aRole] << *it;
- }
-
connect(this, SIGNAL(valuesChanged()), this, SLOT(onWidgetValuesChanged()));
}
}
}
-std::string ModuleBase_ModelWidget::attributeID(const std::string& theRole/* = std::string()*/) const
-{
- if (theRole.empty())
- return myAttributeID;
-
- if (myRoleAttributesID.contains(theRole) && !myRoleAttributesID[theRole].isEmpty())
- return myRoleAttributesID[theRole].last();
-
- return std::string();
-}
-
void ModuleBase_ModelWidget::setFeature(const FeaturePtr& theFeature, const bool theToStoreValue)
{
myFeature = theFeature;
#include <ModelAPI_Feature.h>
-#include <QList>
-#include <QMap>
#include <QWidget>
#include <memory>
/// Returns the attribute name
/// \returns the string value
- std::string attributeID(const std::string& theRole = std::string()) const;
+ std::string attributeID() const
+ {
+ return myAttributeID;
+ }
/// Returns the parent of the attribute
/// \returns the string value
/// The attribute name of the model feature
std::string myAttributeID;
- /// The list of attribute names of the model feature for a role
- QMap<std::string, QList<std::string> > myRoleAttributesID;
-
/// Name of parent
std::string myParentId;
/**
* \ingroup GUI
-* A class for creation of widgets instances in for property panel using
-* XML description of a feature
+* A class for creation of widgets instances in for property panel using XML deskription of
+* a feature
*/
class MODULEBASE_EXPORT ModuleBase_WidgetFactory
{
return false;
DataPtr aData = myFeature->data();
- AttributeStringPtr aStringAttr = aData->string(attributeID("format"));
+ AttributeStringPtr aStringAttr = aData->string("export_file_format");
mySelectedFilter = formatToFilter(shortFormatToFullFormat(QString::fromStdString(aStringAttr->value())));
return ModuleBase_WidgetFileSelector::restoreValueCustom();
return false;
DataPtr aData = myFeature->data();
- AttributeStringPtr aStringAttr = aData->string(attributeID("format"));
+ AttributeStringPtr aStringAttr = aData->string("export_file_format");
aStringAttr->setValue(filterToShortFormat(mySelectedFilter).toStdString());
return ModuleBase_WidgetFileSelector::storeValueCustom();
/**
* \ingroup Modules
-* Customization of ModuleBase_WidgetMultiSelector in order to provide
+* Customosation of ModuleBase_WidgetMultiSelector in order to provide
* working with sketch specific objects and creation of external objects.
*/
class PARTSET_EXPORT PartSet_WidgetMultiSelector: public ModuleBase_WidgetMultiSelector
/// Constructor
/// \param theParent the parent object
/// \param theWorkshop instance of workshop interface
- /// \param theData the widget configuration. The attribute of the model widget is obtained from
+ /// \param theData the widget configuation. The attribute of the model widget is obtained from
/// \param theParentId is Id of a parent of the current attribute
PartSet_WidgetMultiSelector(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop,
const Config_WidgetAPI* theData, const std::string& theParentId);
/// \param theSketch a sketcher object
void setSketcher(CompositeFeaturePtr theSketch) { mySketch = theSketch; }
- /// Returns installed sketcher
+ /// Retrurns installed sketcher
CompositeFeaturePtr sketch() const { return mySketch; }
/// Set the given wrapped value to the current widget
bool myIsInVaildate;
};
-#endif
+#endif
\ No newline at end of file