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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: pane_content_conf.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 21:12:45  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: pane_content_conf.cpp,v 1000.1 2004/06/01 21:12:45 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.  * File Description:
  37.  *
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <gui/widgets/seq_graphic/pane_content_conf.hpp>
  41. #include <gui/config/feat_config_list.hpp>
  42. BEGIN_NCBI_SCOPE
  43. string CCPaneContentFactoryDefaults::Get(const string& key) const
  44. {    
  45.     string  key1, key2;
  46.     NStr::SplitInTwo(key, "|", key1, key2);
  47.     if (key1 == "histogram") {
  48.         if (key2 == "Master") {
  49.             return "false";
  50.         } else if (key2 == "repeat_region") {
  51.             return "true";
  52.         } else if (key2 == "STS") {
  53.             return "true";
  54.         }
  55.     } else if (key1 == "layout_specs") {
  56.         if (key2 == "array") {
  57.             return "0";
  58.         }
  59.     }
  60.     return CFeatShowFactoryDefaults::Get(key);
  61.     // use if we do not inherit from another config class.
  62.     //NCBI_THROW(CConfigException, eNoDefaultValue, "key: " + key); 
  63.     // return kEmptyStr;
  64. }
  65. CPaneContentConf::CPaneContentConf(objects::CPluginConfigCache* config_cache,
  66.                                    const string& desc)
  67.     : CFeatConfigShow(config_cache, "Feature Pane Content",
  68.                       new CCPaneContentFactoryDefaults(), desc)
  69.     , m_ShowAlignments(true)
  70.     , m_ShowGraphs(true)
  71.     , m_ShowPWAlignLabels(true)
  72.     , m_ShowSegmentMap(true)
  73.     , m_RulerSpacer(0)
  74. {
  75.     LoadCurrentSettings(eLoad_Current);
  76. }
  77. bool CPaneContentConf::LoadCurrentSettings(ELoadValueSource src)
  78. {    
  79.     CFeatConfigShow::LoadCurrentSettings(src);
  80.     ClearHistograms();
  81.     string featvaluestr;
  82.     const CFeatConfigList& featureList = *GetFeatConfigList();
  83.     ITERATE ( CFeatConfigList, fc_it, featureList ) {
  84.         int myType = fc_it->GetType();
  85.         int mySubtype = fc_it->GetSubtype();
  86.         try {
  87.             featvaluestr = Get("histogram" + GetKeyDelimiter() +
  88.                                fc_it->GetStoragekey(), src);
  89.             SetHistogram( myType, mySubtype,  NStr::StringToBool(featvaluestr));
  90.             SetHistogramInherited( myType, mySubtype, false);
  91.         }
  92.         catch (const CConfigException&) {
  93.         }
  94.     }
  95.     // Build list of Layout Specs (i.e. feature filter passes)
  96.     const string kLayoutSpecsKey("layout_specs");
  97.     int specs_count = GetArraySize(kLayoutSpecsKey, src);
  98.     for (int i = 1;  i <= specs_count;  ++i) {
  99.         string chooser_str = GetArrayItem(kLayoutSpecsKey, i, "Chooser", src);
  100.         CLayoutObjectChooser* chooser =
  101.             CLayoutObjectChooser::FromString(chooser_str);
  102.         CRef<CLayoutSpec> spec(new CLayoutSpec(*chooser));
  103.         spec->SetSpecName(GetArrayItem(kLayoutSpecsKey, i,"Name", src));
  104.         spec->SetLinkFeatures
  105.             (NStr::StringToBool(GetArrayItem(kLayoutSpecsKey, i,
  106.                                              "LinkFeatures", src)));
  107.         spec->SetShowProtProd
  108.             (NStr::StringToBool(GetArrayItem(kLayoutSpecsKey, i,
  109.                                              "ShowProtProd", src)));
  110.         spec->SetIfNotUsed
  111.             (NStr::StringToBool(GetArrayItem(kLayoutSpecsKey, i,
  112.                                              "IfNotUsed", src)));
  113.         SetLayoutSpecs().push_back(spec);
  114.     }
  115.     return true;
  116. }
  117. bool CPaneContentConf::SaveCurrentSettings(void)
  118. {    
  119.     CFeatConfigShow::SaveCurrentSettings();
  120.     // save Histogram settings.
  121.     const CFeatConfigList& featureList = *GetFeatConfigList();
  122.     ITERATE(CFeatConfigList, fc_it, featureList) {
  123.         int myType = fc_it->GetType();
  124.         int mySubtype = fc_it->GetSubtype();
  125.         if ( ! m_HistFeat.GetInherited(myType, mySubtype)) {
  126.             Set("histogram" + GetKeyDelimiter() + fc_it->GetStoragekey(), 
  127.                 NStr::BoolToString(GetHistogram(myType, mySubtype)) );
  128.         }
  129.     }
  130.     // save list of layout specs.
  131.     const CLayoutSpec::TLayoutSpecs& layout_specs = GetLayoutSpecs();
  132.     const string kLayoutSpecsKey("layout_specs");
  133.     SetArraySize(kLayoutSpecsKey, layout_specs.size());
  134.     int i = 0;
  135.     ITERATE(CLayoutSpec::TLayoutSpecs, layouts_it, layout_specs) {
  136.         SetArrayItem(kLayoutSpecsKey, i, "Name", 
  137.                      (*layouts_it)->GetSpecName() );        
  138.         SetArrayItem(kLayoutSpecsKey, i, "Chooser", 
  139.                      (*layouts_it)->GetObjectChooser().ToString() );
  140.         SetArrayItem(kLayoutSpecsKey, i, "LinkFeatures", 
  141.                      NStr::BoolToString((*layouts_it)->GetLinkFeatures()));
  142.         SetArrayItem(kLayoutSpecsKey, i, "ShowProtProd", 
  143.                      NStr::BoolToString((*layouts_it)->GetShowProtProd()));
  144.         SetArrayItem(kLayoutSpecsKey, i, "IfNotUsed", 
  145.                      NStr::BoolToString((*layouts_it)->GetIfNotUsed()));
  146.         ++i;
  147.     }
  148.     return true;
  149. }
  150. bool CPaneContentConf::GetHistogram(int type, int subtype) const
  151. {
  152.     return m_HistFeat.GetValue(type, subtype);
  153. }
  154. void CPaneContentConf::SetHistogram(int type, int subtype, bool hist)
  155. {
  156.     m_HistFeat.SetValue(type, subtype, hist);
  157. }
  158. void CPaneContentConf::SetHistogramInherited(int type, int subtype, bool inherited)
  159. {
  160.     m_HistFeat.SetInherited(type, subtype, inherited);
  161. }
  162. const CFeatConfigValues<bool>& 
  163. CPaneContentConf::GetHistograms() const
  164. {
  165.     return m_HistFeat;
  166. }
  167. void CPaneContentConf::SetHistograms(CFeatConfigValues<bool>& o)
  168. {
  169.     m_HistFeat = o;
  170. }
  171. void CPaneContentConf::ClearHistograms()
  172. {
  173.     m_HistFeat.ClearValues();
  174. }
  175. const CLayoutSpec::TLayoutSpecs& CPaneContentConf::GetLayoutSpecs() const
  176. {
  177.     return m_LayoutSpecs;
  178. }
  179. CLayoutSpec::TLayoutSpecs& CPaneContentConf::SetLayoutSpecs()
  180. {
  181.     return m_LayoutSpecs;
  182. }
  183. void CPaneContentConf::SetLayoutSpecs(CLayoutSpec::TLayoutSpecs& specs)
  184. {
  185.     m_LayoutSpecs = specs;
  186. }
  187. //
  188. // CLaySpec methods.
  189. //
  190. CLayoutSpec::CLayoutSpec(CLayoutObjectChooser& chooser) :
  191. m_Chooser(&chooser), m_LinkFeatures(false), m_ShowProtProd(false)
  192. {
  193. }
  194. string CLayoutSpec::GetSpecName() const
  195. {
  196.     return m_SpecName;
  197. }
  198. void CLayoutSpec::SetSpecName(const string& aName)
  199. {
  200.     m_SpecName = aName;
  201. }
  202. const CLayoutObjectChooser& CLayoutSpec::GetObjectChooser() const
  203. {
  204.     return *m_Chooser;
  205. }
  206. CLayoutObjectChooser& CLayoutSpec::SetObjectChooser()
  207. {
  208.     return *m_Chooser;
  209. }
  210. void CLayoutSpec::SetObjectChooser(CLayoutObjectChooser& chooser)
  211. {
  212.     m_Chooser.Reset(&chooser);
  213. }
  214. bool CLayoutSpec::GetLinkFeatures() const
  215. {
  216.     return m_LinkFeatures;
  217. }
  218. void CLayoutSpec::SetLinkFeatures(bool f)
  219. {
  220.     m_LinkFeatures = f;
  221. }
  222. bool CLayoutSpec::GetShowProtProd() const
  223. {
  224.     return m_ShowProtProd;
  225. }
  226. void CLayoutSpec::SetShowProtProd(bool f)
  227. {
  228.     m_ShowProtProd = f;
  229. }
  230. bool CLayoutSpec::GetIfNotUsed() const
  231. {
  232.     return m_IfNotUsed;
  233. }
  234. void CLayoutSpec::SetIfNotUsed(bool f)
  235. {
  236.     m_IfNotUsed = f;
  237. }
  238. END_NCBI_SCOPE
  239. /*
  240.  * ===========================================================================
  241.  * $Log: pane_content_conf.cpp,v $
  242.  * Revision 1000.1  2004/06/01 21:12:45  gouriano
  243.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11
  244.  *
  245.  * Revision 1.11  2004/05/21 22:27:55  gorelenk
  246.  * Added PCH ncbi_pch.hpp
  247.  *
  248.  * Revision 1.10  2004/05/12 16:54:12  lebedev
  249.  * Added  option to specify a space between the ruler and the rest of the dispay
  250.  *
  251.  * Revision 1.9  2004/05/10 15:57:53  lebedev
  252.  * Configuration option to show/hide segment maps added.
  253.  *
  254.  * Revision 1.8  2004/05/07 11:12:13  lebedev
  255.  * Configuration option to show/hide labels for pairwise alignments and mate pairs added.
  256.  *
  257.  * Revision 1.7  2004/04/06 13:45:15  dicuccio
  258.  * Formatting changes.  Added API to set/get default render status for graphs, alignments
  259.  *
  260.  * Revision 1.6  2004/02/02 18:45:48  rsmith
  261.  * add description to CSettingsSet, constructor and descendants.
  262.  *
  263.  * Revision 1.5  2004/01/20 14:03:34  rsmith
  264.  * Inherit from FeatConfigShow.
  265.  *
  266.  * Revision 1.4  2003/12/31 15:05:15  dicuccio
  267.  * Use FromString() - renamed from sm_FronString()
  268.  *
  269.  * Revision 1.3  2003/12/31 13:23:44  rsmith
  270.  * sm_FromString() not FromString.
  271.  *
  272.  * Revision 1.2  2003/12/30 15:05:19  dicuccio
  273.  * Fixed compiler errors/warnings on MSVC
  274.  *
  275.  * Revision 1.1  2003/12/29 14:57:34  rsmith
  276.  * initial checkin.
  277.  *
  278.  * Revision 1.3  2003/11/21 12:56:22  rsmith
  279.  * Added ClearHistograms() to fix bug when loading data from the PluginConfigCache.
  280.  *
  281.  * Revision 1.2  2003/11/18 20:34:15  rsmith
  282.  * Get/set all histogram settings. Add back in old get/set element colors (background, selectionsm etc.).
  283.  *
  284.  * Revision 1.1  2003/10/31 14:07:49  dicuccio
  285.  * Initial revision
  286.  *
  287.  * ===========================================================================
  288.  */