Salome HOME
#1309 Management of icons: parallel icon of SketchPlugin is loaded from it.
authornds <nds@opencascade.com>
Fri, 15 Apr 2016 13:20:59 +0000 (16:20 +0300)
committernds <nds@opencascade.com>
Fri, 15 Apr 2016 13:20:59 +0000 (16:20 +0300)
src/Config/Config_XMLReader.cpp
src/Config/Config_XMLReader.h
src/ModuleBase/ModuleBase_IconFactory.cpp

index c08238a08de361d8ef55d9de14c91c5f64bb9df2..11b2c5890eb34708c28062d3038acc30585e477c 100644 (file)
@@ -40,12 +40,9 @@ Config_XMLReader::Config_XMLReader(const std::string& theXmlFileName)
    * the problem: application may be launched using python executable,
    * to use environment variable (at least for the current moment)
    */
-  if (prefix.empty()) {
-    char* anEnv = getenv("PLUGINS_CONFIG_FILE");
-    if (anEnv) {
-      prefix = std::string(anEnv);
-    }
-  }
+  if (prefix.empty())
+    prefix = pluginConfigFile();
+
 #ifdef WIN32
     prefix += "\\";
 #else
@@ -62,6 +59,16 @@ Config_XMLReader::~Config_XMLReader()
   xmlFreeDoc(myXmlDoc);
 }
 
+std::string Config_XMLReader::pluginConfigFile()
+{
+  std::string aValue;
+  char* anEnv = getenv("PLUGINS_CONFIG_FILE");
+  if (anEnv) {
+    aValue = std::string(anEnv);
+  }
+  return aValue;
+}
+
 void Config_XMLReader::readAll()
 {
   xmlNodePtr aRoot = findRoot();
index 258af0cd50535545cfa88b58afc51400464109dd..c983e3a49f3304279acf0acb97b4b33ddb3870b1 100644 (file)
@@ -43,6 +43,11 @@ class Config_XMLReader
    */
   CONFIG_EXPORT Config_XMLReader(const std::string& theXmlFile);
   CONFIG_EXPORT virtual ~Config_XMLReader();
+  /*!
+   * Returns value of PLUGINS_CONFIG_FILE env variable, a path to the plugins.xml file
+   * \return string value
+   */
+  CONFIG_EXPORT static std::string pluginConfigFile();
   /*!
    * Read all nodes in associated xml file,
    * recursively if processChildren(xmlNode) is true for the xmlNode.
index 479e681cce7bbbfa839f34abba1e4f2781f1f528..2e8311e523940c4cffed70404601dc48a820ffad 100644 (file)
@@ -4,9 +4,12 @@
 // Created:     28 Jul 2015
 // Author:      Vitaly SMETANNIKOV
 
-
 #include "ModuleBase_IconFactory.h"
 
+#include "Config_XMLReader.h"
+
+#include <QDir>
+
 ModuleBase_IconFactory* MYIconFactory = 0;
 
 
@@ -37,11 +40,14 @@ QIcon ModuleBase_IconFactory::getIcon(ObjectPtr theIcon)
 
 QIcon ModuleBase_IconFactory::loadIcon(const QString& theValue)
 {
-  QIcon anIcon(theValue);
-
-  if (anIcon.isNull()) {
-    
+  QPixmap aPixmap(theValue);
+
+  if (aPixmap.isNull()) {
+    std::string aPluginPath = Config_XMLReader::pluginConfigFile();
+    QString anIconPath = QString::fromStdString(aPluginPath) + QDir::separator() +
+                         theValue;
+    if (QFile::exists(anIconPath))
+      aPixmap = QPixmap(anIconPath);
   }
-
-  return anIcon;
+  return QIcon(aPixmap);
 }