+ ModuleBase_ModelWidget* result = NULL;
+
+ if (theType == WDG_INFO) {
+ result = new ModuleBase_WidgetLabel(theParent, myWidgetApi);
+ } else if (theType == WDG_DOUBLEVALUE) {
+ result = new ModuleBase_WidgetDoubleValue(theParent, myWidgetApi);
+ } else if (theType == WDG_DOUBLEVALUELABEL) {
+ result = new ModuleBase_WidgetLabelValue(theParent, myWidgetApi);
+ } else if (theType == WDG_INTEGERVALUE) {
+ result = new ModuleBase_WidgetIntValue(theParent, myWidgetApi);
+ } else if (theType == WDG_SHAPE_SELECTOR) {
+ result = new ModuleBase_WidgetShapeSelector(theParent, myWorkshop, myWidgetApi);
+ } else if (theType == WDG_FEATURE_SELECTOR) {
+ result = new ModuleBase_WidgetFeatureSelector(theParent, myWorkshop, myWidgetApi);
+ } else if (theType == WDG_BOOLVALUE) {
+ result = new ModuleBase_WidgetBoolValue(theParent, myWidgetApi);
+ //} else if (theType == WDG_DOUBLEVALUE_EDITOR) {
+ // result = new ModuleBase_WidgetEditor(theParent, myWidgetApi);
+ } else if (theType == WDG_FILE_SELECTOR) {
+ result = new ModuleBase_WidgetFileSelector(theParent, myWidgetApi);
+ } else if (theType == WDG_CHOICE) {
+ result = new ModuleBase_WidgetChoice(theParent, myWidgetApi);
+ } else if (theType == WDG_STRINGVALUE) {
+ std::string aPlaceHolder = myWidgetApi->getProperty( WDG_PLACE_HOLDER );
+ result = new ModuleBase_WidgetLineEdit( theParent, myWidgetApi, aPlaceHolder );
+ } else if (theType == WDG_NAMEVALUE) {
+ std::string aPlaceHolder = myWidgetApi->getProperty( WDG_PLACE_HOLDER );
+ result = new ModuleBase_WidgetNameEdit( theParent, myWidgetApi, aPlaceHolder );
+ } else if (theType == WDG_EXPR_EDITOR) {
+ std::string aPlaceHolder = myWidgetApi->getProperty( WDG_PLACE_HOLDER );
+ result = new ModuleBase_WidgetExprEditor( theParent, myWidgetApi, aPlaceHolder );
+ } else if (theType == WDG_MULTISELECTOR) {
+ result = new ModuleBase_WidgetMultiSelector(theParent, myWorkshop, myWidgetApi);
+ } else if (theType == WDG_CONCEALED_OBJECTS_VIEW) {
+ result = new ModuleBase_WidgetConcealedObjects(theParent, myWidgetApi);
+ } else if (theType == WDG_TOOLBOX) {
+ result = new ModuleBase_WidgetToolbox(theParent, myWidgetApi);
+ } else if (theType == WDG_RADIOBOX) {
+ result = new ModuleBase_WidgetRadiobox(theParent, myWidgetApi);
+ } else if (theType == WDG_SWITCH) {
+ result = new ModuleBase_WidgetSwitch(theParent, myWidgetApi);
+ } else if (theType == WDG_TOOLBOX_BOX || theType == WDG_SWITCH_CASE ||
+ theType == NODE_VALIDATOR) {
+ // Do nothing for "box" and "case"
+ result = NULL;
+ } else if (theType == WDG_ACTION) {
+ result = new ModuleBase_WidgetAction(theParent, myWidgetApi);
+ } else if (theType == WDG_POINT_INPUT) {
+ result = new ModuleBase_WidgetPointInput(theParent, myWorkshop, myWidgetApi);
+ } else if (theType == WDG_SELECTION_FILTERS) {
+ result = new ModuleBase_WidgetSelectionFilter(theParent, myWorkshop, myWidgetApi);
+ } else {
+ result = myWorkshop->module()->createWidgetByType(theType, theParent, myWidgetApi);
+ if (!result)
+ result = ModuleBase_WidgetCreatorFactory::get()->createWidgetByType(theType, theParent,
+ myWidgetApi, myWorkshop);
+ #ifdef _DEBUG
+ if (!result) {
+ qDebug("ModuleBase_WidgetFactory::fillWidget: find bad widget type %s", theType.c_str());
+ }
+ #endif
+ }
+ if (result)
+ myModelWidgets.append(result);
+ return result;