feat_color.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: feat_color.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 20:43:09  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: feat_color.cpp,v 1000.1 2004/06/01 20:43:09 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Robert Smith
  35.  *
  36.  */
  37. /// @file feat_color.cpp
  38. /// 
  39. /// Color preferences per type of SeqFeat.
  40. #include <ncbi_pch.hpp>
  41. #include <gui/config/feat_color.hpp>
  42. #include <gui/config/feat_config_list.hpp>
  43. /** @addtogroup PluginConfiguration
  44.  *
  45.  * @{
  46.  */
  47. BEGIN_NCBI_SCOPE
  48. /// This returns a string in response to any key if there is nothing
  49. /// for that key in the PluginConfigCache.  Hence it works closely
  50. /// with LoadCurrentSettings below.
  51. string CFeatColorFactoryDefaults::Get(const string& key) const
  52. {
  53.     string  key1, key2;
  54.     NStr::SplitInTwo(key, "|", key1, key2);
  55.     if (key1 == "color") {
  56.         if (key2 == "Master") {
  57.             return CRgbaColor::ColorStrFromName("black");
  58.         } else if (key2 == "Gene") {
  59.             return CRgbaColor::ColorStrFromName("green4");
  60.         } else if (key2 == "RNA Master") {
  61.             return CRgbaColor::ColorStrFromName("blue");
  62.         } else if (key2 == "CDS") {
  63.             return CRgbaColor::ColorStrFromName("red");
  64.         } else if (key2 == "repeat_region") {
  65.             return CRgbaColor::ColorStrFromName("blue");
  66.         }
  67.     }
  68.     NCBI_THROW(CConfigException, eNoDefaultValue, "key: " + key);
  69.     return kEmptyStr;
  70. }
  71. // definitions for CFeatConfigColor
  72. /// use this cstr when declaring a CFeatConfigColor object.
  73. CFeatConfigColor::CFeatConfigColor(objects::CPluginConfigCache* config_cache, const string& typedesc)
  74.     : CSettingsSet(config_cache, "FeatureColors", 
  75.                    new CFeatColorFactoryDefaults(), typedesc)
  76. {
  77.     LoadCurrentSettings(eLoad_Current);
  78. }
  79. /// use this cstr when initializing a CFeatConfigColor object as a parent object
  80. /// in an inherited class, since it will probably need a different type
  81. /// and factory defaults.  But the FactoryDefaultSettings object pass in to here
  82. /// should probably inherit from CFeatColorFactoryDefaults.
  83. CFeatConfigColor::CFeatConfigColor(objects::CPluginConfigCache* config_cache, 
  84.                  const string& type,
  85.                  const AutoPtr<IFactoryDefaultSettings>& fds,
  86.                  const string& typedesc
  87.                  )
  88.     : CSettingsSet(config_cache, type, fds, typedesc)
  89. {
  90.  //   LoadCurrentSettings(eLoad_Current); // not needed since the child class will do this.
  91. }
  92. bool CFeatConfigColor::LoadCurrentSettings(ELoadValueSource src)
  93. {
  94.     /// iterate through all feature types.
  95.     /// if we Get a "Not Defined" string, do not set anything for
  96.     /// that value, for the feature type.
  97.     /// Else set a real value and set Inherited to false.
  98.     
  99.     string featvaluestr;
  100.     
  101.     ClearColors();
  102.     const CFeatConfigList& featureList = *GetFeatConfigList();
  103.     ITERATE ( CFeatConfigList, fc_it, featureList ) {
  104.         int myType = fc_it->GetType();
  105.         int mySubtype = fc_it->GetSubtype();
  106.         
  107.         try {
  108.             featvaluestr = Get("color" + GetKeyDelimiter() + fc_it->GetStoragekey(), src);
  109.             SetColor( myType, mySubtype, CGlColor(featvaluestr));
  110.             SetColorInherited( myType, mySubtype, false);
  111.         }
  112.         catch (const CConfigException&) {
  113.         }
  114.     }
  115.     return true;
  116. }
  117. bool CFeatConfigColor::SaveCurrentSettings(void)
  118. {
  119.     // iterate through all feature types.
  120.     // if features color/show/etc. value is not inherited
  121.     //  save it as a string.
  122.     //  If it is inherited, or no value is defined for that feature type, 
  123.     //  we do not save it and make sure there is not an entry with that key.
  124.     
  125.     const CFeatConfigList& featureList = *GetFeatConfigList();
  126.     ITERATE(CFeatConfigList, fc_it, featureList) {
  127.         int myType = fc_it->GetType();
  128.         int mySubtype = fc_it->GetSubtype();
  129.         
  130.         if ( ! m_FeatColors.GetInherited(myType, mySubtype)) {
  131.             Set("color" + GetKeyDelimiter() + fc_it->GetStoragekey(), 
  132.                 GetColor(myType, mySubtype).ToString(false) );
  133.         } else {
  134.             Delete("color" + GetKeyDelimiter() + fc_it->GetStoragekey());
  135.         }
  136.     }
  137.     
  138.     return true;
  139. }
  140. CGlColor CFeatConfigColor::GetColor(int type, int subtype) const
  141. {
  142.     return m_FeatColors.GetValue(type, subtype);
  143. }
  144. void CFeatConfigColor::SetColor(int type, int subtype, CGlColor color)
  145. {
  146.     m_FeatColors.SetValue(type, subtype, color);
  147. }
  148. void CFeatConfigColor::SetColorInherited(int type, int subtype, bool inherited)
  149. {
  150.     m_FeatColors.SetInherited(type, subtype, inherited);
  151. }
  152. void CFeatConfigColor::ClearColors()
  153. {
  154.     m_FeatColors.ClearValues();
  155. }
  156. END_NCBI_SCOPE
  157. /* @} */
  158. /*
  159.  * ===========================================================================
  160.  * $Log: feat_color.cpp,v $
  161.  * Revision 1000.1  2004/06/01 20:43:09  gouriano
  162.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  163.  *
  164.  * Revision 1.6  2004/05/21 22:27:39  gorelenk
  165.  * Added PCH ncbi_pch.hpp
  166.  *
  167.  * Revision 1.5  2004/04/02 21:07:44  rsmith
  168.  * default color for genes made a darker green.
  169.  *
  170.  * Revision 1.4  2004/02/05 16:04:36  rsmith
  171.  * No need to LoadCurrentSettings when used as a base class.
  172.  *
  173.  * Revision 1.3  2004/02/02 18:44:17  rsmith
  174.  * add description to CSettingsSet, constructor and descendants.
  175.  *
  176.  * Revision 1.2  2003/12/30 15:00:11  dicuccio
  177.  * Fixed compiler errors/warnings on MSVC
  178.  *
  179.  * Revision 1.1  2003/12/29 14:34:39  rsmith
  180.  * split out from feat_config.cpp
  181.  *
  182.  *
  183.  * ===========================================================================
  184.  */