Salome HOME
#1109 Sketch entities preview red lines stayed in the viewer after Sketch is applyed.
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetCreatorFactory.cpp
index ff3ee01f9c5dbf6e89158a1c92c547c4de0230b7..1427e22a709ef242ac8043081cee93f30217d193 100755 (executable)
@@ -36,22 +36,52 @@ void ModuleBase_WidgetCreatorFactory::registerCreator(const WidgetCreatorPtr& th
   std::set<std::string>::const_iterator anIt = aTypes.begin(), aLast = aTypes.end();
   for (; anIt != aLast; anIt++) {
     std::string aKey = *anIt;
-    if (!myModelWidgets.contains(aKey))
-      myModelWidgets[aKey] = theCreator;
+    if (!myCreators.contains(aKey))
+      myCreators[aKey] = theCreator;
     else {
-      Events_Error::send("The" + aKey + " widget XML definition has been already\
-                                        used by another widget creator");
+      Events_Error::send("The" + aKey + " widget XML definition has been already \
+used by another widget creator");
     }
   }
+
+  const std::set<std::string>& aPTypes = theCreator->pageTypes();
+  for (anIt = aPTypes.begin(), aLast = aPTypes.end(); anIt != aLast; anIt++) {
+    std::string aKey = *anIt;
+    if (!myPageToCreator.contains(aKey))
+      myPageToCreator[aKey] = theCreator;
+    else {
+      Events_Error::send("The" + aKey + " page XML definition has been already \
+used by another widget creator");
+    }
+  }
+}
+
+bool ModuleBase_WidgetCreatorFactory::hasPageWidget(const std::string& theType)
+{
+  return myPageToCreator.contains(theType);
 }
 
+ModuleBase_PageBase* ModuleBase_WidgetCreatorFactory::createPageByType(
+                              const std::string& theType, QWidget* theParent)
+{
+  ModuleBase_PageBase* aPage = 0;
+
+  if (myPageToCreator.contains(theType)) {
+    WidgetCreatorPtr aCreator = myPageToCreator[theType];
+    aPage = aCreator->createPageByType(theType, theParent);
+  }
+
+  return aPage;
+}
+
+
 ModuleBase_ModelWidget* ModuleBase_WidgetCreatorFactory::createWidgetByType(
                               const std::string& theType, QWidget* theParent)
 {
   ModuleBase_ModelWidget* aWidget = 0;
 
-  if (myModelWidgets.contains(theType)) {
-    WidgetCreatorPtr aCreator = myModelWidgets[theType];
+  if (myCreators.contains(theType)) {
+    WidgetCreatorPtr aCreator = myCreators[theType];
     aWidget = aCreator->createWidgetByType(theType, theParent);
   }