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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: header_editor.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 21:02:16  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*
  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:  Lou Friedman
  35.  *
  36.  * File Description:
  37.  *    Implementaion of CLocusEntryForm, for locus editing, CDefinEntryForm,
  38.  *      for definition editing.
  39.  *
  40.  */
  41. #include <ncbi_pch.hpp>
  42. #include "header_editor.hpp"
  43. #include <gui/dialogs/entry_form/table.hpp>
  44. #include <serial/iterator.hpp>
  45. #include <objects/seq/Bioseq.hpp>
  46. #include <objects/seq/MolInfo.hpp>
  47. #include <objects/seq/Seq_inst.hpp>
  48. BEGIN_NCBI_SCOPE
  49. USING_SCOPE(objects);
  50. SMenuEntryInfo SMolinfoBimolMapEntries[] = {
  51.     { " ",                     0 }, 
  52.     { "Genomic DNA or RNA",    1 }, 
  53.     { "Precursor RNA",         2 }, 
  54.     { "mRNA [cDNA]",           3 }, 
  55.     { "Ribosomal RNA",         4 }, 
  56.     { "Transfer RNA",          5 }, 
  57.     { "Small nuclear RNA",     6 }, 
  58.     { "Small cytoplasmic RNA", 7 }, 
  59.     { "Peptide",               8 }, 
  60.     { "Other - Genetic",       9 }, 
  61.     { "Genomic - mRNA",       10 }, 
  62.     { "cRNA",                 11 }, 
  63.     { "Small nucleolar RNA",  12 }, 
  64.     { "Transcribed RNA",      13 }, 
  65.     { "Other",               255 }, 
  66.     { 0,                       0 }
  67. };
  68. CEntryFormMenu SMolinfoBimolMenu(SMolinfoBimolMapEntries);
  69. SMenuEntryInfo SMolinfoTechMapEntries[] = {
  70.     { " ",                     0 },
  71.     { "Standard",              1 },
  72.     { "EST",                   2 },
  73.     { "STS",                   3 },
  74.     { "Survey",                4 },
  75.     { "Genetic Map",           5 },
  76.     { "Physical Map",          6 },
  77.     { "Derived",               7 },
  78.     { "Concept - Trans",       8 },
  79.     { "Seq - Pept",            9 },
  80.     { "Both",                 10 },
  81.     { "Seq - Pept - Overlap", 11 },
  82.     { "Seq - Pept - Homol",   12 },
  83.     { "Concept - Trans - A",  13 },
  84.     { "HTGS 0",               18 },
  85.     { "HTGS 1",               14 },
  86.     { "HTGS 2",               15 },
  87.     { "HTGS 3",               16 },
  88.     { "FLI_cDNA",             17 },
  89.     { "HTC",                  19 },
  90.     { "WGS",                  20 },
  91.     { "Other:",              255 },
  92.     { 0,                       0 }
  93. };
  94. CEntryFormMenu SMolinfoTechMenu(SMolinfoTechMapEntries);
  95. SMenuEntryInfo MolinfoCompleteMapEntries [] = {
  96.     { " ",         0 },
  97.     { "Complete",  1 },
  98.     { "Partial",   2 },
  99.     { "No Left",   3 },
  100.     { "No Right",  4 },
  101.     { "No Ends",   5 },
  102.     { "Other",   255 },
  103.     { 0,           0 }
  104. };
  105. CEntryFormMenu SMolinfoCompleteMenu(SMolinfoTechMapEntries);
  106. SMenuEntryInfo MolClassMapEntries [] = {
  107.     { " ",          CSeq_inst::eMol_not_set },
  108.     { "DNA",        CSeq_inst::eMol_dna     },
  109.     { "RNA",        CSeq_inst::eMol_rna     },
  110.     { "Protein",    CSeq_inst::eMol_aa      },
  111.     { "Nucleotide", CSeq_inst::eMol_na      },
  112.     { "Other",      CSeq_inst::eMol_other   },
  113.     { 0,            0                       }
  114. };
  115. CEntryFormMenu SMolClassMenu(MolClassMapEntries);
  116. SMenuEntryInfo TopologyMapEntries [] = {
  117.     { " ",        CSeq_inst::eTopology_not_set  },
  118.     { "Linear",   CSeq_inst::eTopology_linear   },
  119.     { "Circular", CSeq_inst::eTopology_circular },
  120.     { "Tandem",   CSeq_inst::eTopology_tandem   },
  121.     { "Other",    255                           },
  122.     { 0,          0                             }
  123. };
  124. CEntryFormMenu STolpologyMenu(TopologyMapEntries);
  125. SMenuEntryInfo StrandMapEntires [] = {
  126.     { " ",      CSeq_inst::eStrand_not_set },
  127.     { "Single", CSeq_inst::eStrand_ss      },
  128.     { "Double", CSeq_inst::eStrand_ds      },
  129.     { "Mixed",  CSeq_inst::eStrand_mixed   },
  130.     { "Other",  CSeq_inst::eStrand_other   },
  131.     { 0,        0                          }
  132. };
  133. CEntryFormMenu SStrandMenu(StrandMapEntires);
  134. CLocusEntryForm::CLocusEntryForm(CParagraph* p) 
  135.     : CGenbankEntryForm(p)
  136. {
  137.     SetTitle("Locus");
  138.     auto_ptr<CEntryFormTable> t
  139.         (new CEntryFormTable(GetFormWidget()->GetFormWidth(), 5));
  140.     
  141.     const CMolInfo* mi = dynamic_cast<const CMolInfo*>(p->topic());
  142.     
  143.     int bimol    = CMolInfo::eBiomol_unknown;
  144.     int complete = CMolInfo::eCompleteness_unknown;
  145.     int tech     = CMolInfo::eTech_unknown;
  146.     if (mi) {
  147.         bimol      = mi->GetBiomol();
  148.         complete   = mi->GetCompleteness();
  149.         tech       = mi->GetTech();
  150.     }
  151.     m_Molecule     = t->AddMenuRow("Molecule", SMolinfoBimolMenu, bimol);
  152.     m_Completeness = t->AddMenuRow("Completeness", SMolinfoCompleteMenu, 
  153.                                     complete);
  154.     m_Techniuqe    = t->AddMenuRow("Techniuqe", SMolinfoTechMenu, tech);
  155.     /*
  156.     const CSeq_inst& inst = seq->GetInst();
  157.     m_Class        = t->AddMenuRow("Class", SMolClassMenu, inst.GetMol());
  158.     m_Topology     = t->AddMenuRow("Topology", STolpologyMenu, 
  159.                                     inst.GetTopology());
  160.     CSeq_inst::EStrand strand = CSeq_inst::eStrand_not_set;
  161.     if (inst.IsSetStrand()) {
  162.         strand = inst.GetStrand();
  163.     }
  164.     m_Strand       = t->AddMenuRow("Strand",  SStrandMenu, strand);
  165.     */
  166.     t->End();
  167.     AddEditWidget(t.release());
  168. }
  169. CLocusEntryForm::~CLocusEntryForm()
  170. {
  171. }
  172. CDefinEntryForm::CDefinEntryForm(CParagraph* p)
  173.     : CGenbankEntryForm(p)
  174. {
  175.     SetTitle("Definition");
  176.     auto_ptr<CEntryFormTable> t
  177.         (new CEntryFormTable(GetFormWidget()->GetFormWidth(), 5));
  178.     // NOTE: flat file generator gets the difinition string from
  179.     //  sequence::GetTtitle. Instead of recreating the definition
  180.     //  string by calling GetTitle, I am gleaning the string from
  181.     //  the buffer. When saving the string, it will be saved in 
  182.     //  the Bioseq->SeqDesc->title, which may have to be created. 
  183.     m_Defin = t->AddInputRow("Definition", p->buffer()->substr(12).c_str());
  184.     t->End();
  185.     AddEditWidget(t.release());
  186. }
  187. CDefinEntryForm::~CDefinEntryForm()
  188. {
  189. }
  190.                
  191. END_NCBI_SCOPE