Salome HOME
Task "Make the size of the selection area even bigger, especially for points"
[modules/shaper.git] / src / ModuleBase / ModuleBase_Preferences.cpp
index f97a9ed7f4cbabe15350fc9165530511dd40a6f8..3a8d0badc1562fbe67f57f235c038ed68bafc6f5 100644 (file)
@@ -7,12 +7,10 @@
 #include "ModuleBase_Preferences.h"
 //#include "ModuleBase_Constants.h"
 
-#include <Model_ResultBody.h>
-#include <Model_ResultGroup.h>
-#include <Model_ResultConstruction.h>
-
 #include <Config_PropManager.h>
 
+#include <TopAbs_ShapeEnum.hxx>
+
 #include <SUIT_ResourceMgr.h>
 #include <SUIT_PreferenceMgr.h>
 #include <Qtx.h>
@@ -30,7 +28,7 @@ SUIT_ResourceMgr* ModuleBase_Preferences::myResourceMgr = 0;
 SUIT_ResourceMgr* ModuleBase_Preferences::resourceMgr()
 {
   if (!myResourceMgr) {
-    myResourceMgr = new SUIT_ResourceMgr("NewGeom");
+    myResourceMgr = new SUIT_ResourceMgr("SHAPER");
     myResourceMgr->setCurrentFormat("xml");
   }
   return myResourceMgr;
@@ -107,6 +105,37 @@ void ModuleBase_Preferences::createEditContent(ModuleBase_IPrefMgr* thePref, int
   createCustomPage(thePref, thePage);
 }
 
+void ModuleBase_Preferences::resetResourcePreferences(SUIT_PreferenceMgr* thePref)
+{
+  if (!thePref)
+    return;
+
+  QtxResourceMgr::WorkingMode aPrev =
+    thePref->resourceMgr()->setWorkingMode(QtxResourceMgr::IgnoreUserValues);
+  thePref->retrieve();
+  thePref->resourceMgr()->setWorkingMode(aPrev);
+}
+
+void ModuleBase_Preferences::resetConfigPropPreferences(SUIT_PreferenceMgr* thePref)
+{
+  resetConfig();
+  updateResourcesByConfig();
+
+  // retrieve the reset resource values to the preferences items
+  Config_Properties aProps = Config_PropManager::getProperties();
+  Config_Properties::iterator aIt;
+  QStringList aValues;
+  QStringList aSections;
+  for (aIt = aProps.begin(); aIt != aProps.end(); ++aIt) {
+    Config_Prop* aProp = (*aIt);
+    aValues.append(QString(aProp->name().c_str()));
+    if (!aSections.contains(aProp->section().c_str()))
+      aSections.append(aProp->section().c_str());
+    QtxPreferenceItem* anItem = thePref->findItem(QString(aProp->title().c_str()), true);
+    if (anItem)
+      anItem->retrieve();
+  }
+}
 
 void ModuleBase_Preferences::createCustomPage(ModuleBase_IPrefMgr* thePref, int thePageId)
 {
@@ -210,7 +239,7 @@ ModuleBase_PreferencesDlg::ModuleBase_PreferencesDlg(SUIT_ResourceMgr* theResurc
   createEditors();
 
   myPreferences->retrieve();
-  setMinimumSize(800, 200);
+  setMinimumSize(800, 220);
 }
 
 ModuleBase_PreferencesDlg::~ModuleBase_PreferencesDlg()
@@ -261,15 +290,21 @@ void ModuleBase_PreferencesDlg::createViewerPage(int thePageId)
   myPreferences->setItemProperty("custom_enabled", false, bgId);
   myPreferences->setItemProperty("image_formats", aImgFiles, bgId);
 
-  //Config_PropManager::registerProp("Visualization", "object_default_color", "Object color",
-  //                                 Config_Prop::Color, "#ffffff");
-
-  Config_PropManager::registerProp("Visualization", "result_body_color", "Body color",
-                                   Config_Prop::Color, Model_ResultBody::DEFAULT_COLOR());
-  Config_PropManager::registerProp("Visualization", "result_group_color", "Group color",
-                                   Config_Prop::Color, Model_ResultGroup::DEFAULT_COLOR());
-  Config_PropManager::registerProp("Visualization", "result_construction_color", "Construction color",
-                                   Config_Prop::Color, Model_ResultConstruction::DEFAULT_COLOR());
+  // Create other parameters group in viewer tab
+  int otherGroup = myPreferences->addItem(tr("Default selection"), viewTab);
+  myPreferences->setItemProperty("columns", 3, otherGroup);
+  myPreferences->addItem(tr("Faces"), otherGroup, 
+                         SUIT_PreferenceMgr::Bool,
+                         ModuleBase_Preferences::VIEWER_SECTION, "face-selection");
+  myPreferences->addItem(tr("Edges"), otherGroup, 
+                         SUIT_PreferenceMgr::Bool,
+                         ModuleBase_Preferences::VIEWER_SECTION, "edge-selection");
+  myPreferences->addItem(tr("Vertices"), otherGroup, 
+                         SUIT_PreferenceMgr::Bool,
+                         ModuleBase_Preferences::VIEWER_SECTION, "vertex-selection");
+
+  myPreferences->addItem(tr("Vertex selection sensitivity"), otherGroup, SUIT_PreferenceMgr::Double,
+                         ModuleBase_Preferences::VIEWER_SECTION, "point-selection-sensitivity");
 }
 
 void ModuleBase_PreferencesDlg::createMenuPage(int thePageId)
@@ -284,6 +319,10 @@ void ModuleBase_PreferencesDlg::createMenuPage(int thePageId)
                                        "rows_number");
   myPreferences->setItemProperty("min", 1, aRowsNb);
   myPreferences->setItemProperty("max", 6, aRowsNb);
+
+  myPreferences->addItem(tr("Show Status Bar"), aSizeGroup,
+                         SUIT_PreferenceMgr::Bool, ModuleBase_Preferences::MENU_SECTION,
+                         "status_bar");
 }
 
 void ModuleBase_PreferencesDlg::accept()
@@ -303,18 +342,17 @@ void ModuleBase_PreferencesDlg::modified(ModuleBase_Prefs& theModified) const
 
 void ModuleBase_PreferencesDlg::onDefault()
 {
-  // reset main resources
-//#ifdef SALOME_750 // until SALOME 7.5.0 is released
-  QtxResourceMgr::WorkingMode aPrev =
-      myPreferences->resourceMgr()->setWorkingMode(QtxResourceMgr::IgnoreUserValues);
-  myPreferences->retrieve();
-  myPreferences->resourceMgr()->setWorkingMode(aPrev);
-//#endif
-  // reset plugin's resources
-  ModuleBase_Preferences::resetConfig();
-  ModuleBase_Preferences::updateResourcesByConfig();
-
-  myPreferences->retrieve();
+  // reset main resources. It throwns all resource manager items to the
+  // initial/default state. If there is no a default state of the item,
+  // it will be filled with an empty value. It concernerned to plugin
+  // config items, like visualization color. The main xml do not contains
+  // default values for them. So, it is important to reset the config
+  // properties after reseting the resources preferences.
+  ModuleBase_Preferences::resetResourcePreferences(myPreferences);
+  // reset plugin's resources. It fills the config resources with the default
+  // values, stores result in the resource manager and retrieve the preferences
+  // items with these values.
+  ModuleBase_Preferences::resetConfigPropPreferences(myPreferences);
 }
 
 //**********************************************************