From: nds Date: Tue, 6 Oct 2015 09:02:50 +0000 (+0300) Subject: Correction for the "Default" button. Incorrect cases are: X-Git-Tag: V_1.4.0_demo2~23 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=31493d3de99412a6b2a90d650906ea926cfbcbd4;p=modules%2Fshaper.git Correction for the "Default" button. Incorrect cases are: 1. GeomApp: Change the viewer background in Preferences. Click "Default" button, nothing happens. 2. SUITApp: Change the viewer background in Preferences: Click "Default" button, nothing happens. During correction, the issues #98 and #128 are checked. --- diff --git a/src/ModuleBase/ModuleBase_Preferences.cpp b/src/ModuleBase/ModuleBase_Preferences.cpp index 616e659e0..1cd5e702f 100644 --- a/src/ModuleBase/ModuleBase_Preferences.cpp +++ b/src/ModuleBase/ModuleBase_Preferences.cpp @@ -103,6 +103,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) { @@ -289,18 +320,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); } //********************************************************** diff --git a/src/ModuleBase/ModuleBase_Preferences.h b/src/ModuleBase/ModuleBase_Preferences.h index d2f6cb9bd..47d47206c 100644 --- a/src/ModuleBase/ModuleBase_Preferences.h +++ b/src/ModuleBase/ModuleBase_Preferences.h @@ -49,12 +49,6 @@ class MODULEBASE_EXPORT ModuleBase_Preferences /// Updates Config_PropManager properties by module from SUIT_ResourceMgr static void updateConfigByResources(); - /// Updates SUIT_ResourceMgr values by Config_PropManager properties - static void updateResourcesByConfig(); - - /// Set default values to the Config_PropManager properties - static void resetConfig(); - /// Loads properties defined by module to Config_PropManager static void loadCustomProps(); @@ -63,7 +57,18 @@ class MODULEBASE_EXPORT ModuleBase_Preferences /// \param thePage an id of a page static void createEditContent(ModuleBase_IPrefMgr* thePref, int thePage); + /// Retrieve preferences of resource manage to default state + static void resetResourcePreferences(SUIT_PreferenceMgr* thePref); + + static void resetConfigPropPreferences(SUIT_PreferenceMgr* thePref); + private: + /// Updates SUIT_ResourceMgr values by Config_PropManager properties + static void updateResourcesByConfig(); + + /// Set default values to the Config_PropManager properties + static void resetConfig(); + /// Creates content of preferences editing widget static void createCustomPage(ModuleBase_IPrefMgr* thePref, int thePageId); diff --git a/src/NewGeom/NewGeom_Module.cpp b/src/NewGeom/NewGeom_Module.cpp index 75f33a64f..dae941444 100644 --- a/src/NewGeom/NewGeom_Module.cpp +++ b/src/NewGeom/NewGeom_Module.cpp @@ -312,12 +312,10 @@ QtxPopupMgr* NewGeom_Module::popupMgr() //****************************************************** void NewGeom_Module::onDefaultPreferences() { - ModuleBase_Preferences::resetConfig(); - ModuleBase_Preferences::updateResourcesByConfig(); - - LightApp_Preferences* pref = preferences(); - if (pref) - pref->retrieve(); + // reset main resources + ModuleBase_Preferences::resetResourcePreferences(preferences()); + // reset plugin's resources + ModuleBase_Preferences::resetConfigPropPreferences(preferences()); myWorkshop->displayer()->redisplayObjects(); }