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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: layout_chooser.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:46:34  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef GUI_UTILS___LAYOUT_CHOOSER__HPP
  10. #define GUI_UTILS___LAYOUT_CHOOSER__HPP
  11. /*  $Id: layout_chooser.hpp,v 1000.1 2004/06/01 19:46:34 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Authors:  Robert G. Smith
  37.  *
  38.  * File Description:
  39.  *
  40.  */
  41. #include <corelib/ncbiobj.hpp>
  42. #include <gui/gui.hpp>
  43. #include <vector>
  44. BEGIN_NCBI_SCOPE
  45. ///
  46. /// class CLayoutObjectChooser
  47. ///
  48. ///  interface to select Layout Objects.
  49. ///  Descendants should have some criteria to match various CLayoutObjects
  50. ///  such as accept all alignment objects or all features whose type/subtypes
  51. ///  are in a given list.
  52. ///
  53. class CLayoutObject;
  54. class CLayoutFeat;
  55. class NCBI_GUICONFIG_EXPORT CLayoutObjectChooser : public CObject
  56. {
  57. public:
  58.     virtual ~CLayoutObjectChooser();
  59.     /// does the layout object match the criteria given by this class?
  60.     virtual bool Matches(const CLayoutObject* obj) const = 0;
  61.     /// will any alignments be matched?
  62.     virtual bool CanMatchAlignments() const;
  63.     /// will any graphs be matched?
  64.     virtual bool CanMatchGraphs() const;
  65.     /// will any features be matched?
  66.     virtual bool CanMatchFeats() const;
  67.   
  68.   
  69.     virtual string  ToString() const = 0;
  70.     static CLayoutObjectChooser* FromString(const string& s);
  71. };
  72. /// matches all alignment layout objects. Does not match anything else.
  73. class NCBI_GUICONFIG_EXPORT CLayoutAlignChooser : public CLayoutObjectChooser
  74. {
  75. public:
  76.     virtual bool Matches(const CLayoutObject* obj) const;
  77.     virtual bool CanMatchAlignments() const;
  78.     static string  GetClassKey();
  79.     virtual string ToString() const;
  80. };
  81. /// matches all graph layout objects. Does not match anything else.
  82. class NCBI_GUICONFIG_EXPORT CLayoutGraphChooser : public CLayoutObjectChooser
  83. {
  84. public:
  85.     virtual bool Matches(const CLayoutObject* obj) const;
  86.     virtual bool CanMatchGraphs() const;
  87.     static string  GetClassKey();
  88.     virtual string ToString() const;
  89. };
  90. /// matches all feature layout objects. Does not match anything else.
  91. class NCBI_GUICONFIG_EXPORT CLayoutFeatChooser : public CLayoutObjectChooser
  92. {
  93. public:
  94.     virtual bool Matches(const CLayoutObject* obj) const;
  95.     virtual bool CanMatchFeats() const;
  96.     
  97.     static string  GetClassKey();
  98.     virtual string ToString() const;
  99.     /// Does this feature match our criteria?
  100.     /// use when you know you have a CLayoutFeat
  101.     /// available when CanMatchFeats returns true.
  102.     virtual bool MatchFeat(const CLayoutFeat& feat) const;
  103. };
  104. /// Matches features with a particular type and subtype. Nothing else.
  105. class NCBI_GUICONFIG_EXPORT CLayoutFeatTypeChooser : public CLayoutFeatChooser
  106. {
  107. public:
  108.     CLayoutFeatTypeChooser();
  109.     CLayoutFeatTypeChooser(int type, int subtype);
  110.     CLayoutFeatTypeChooser(const string& data);
  111.     
  112.     static string  GetClassKey();
  113.     virtual string ToString() const;
  114.     /// Does this feature match our criteria?
  115.     /// use when you know you have a CLayoutFeat
  116.     virtual bool MatchFeat(const CLayoutFeat& feat) const;
  117.     
  118.     int GetMatchingType() const;
  119.     int GetMatchingSubtype() const;
  120.     void SetMatchingType(int t);
  121.     void SetMatchingSubtype(int s);
  122.     
  123. private:
  124.     int m_MatchingType;
  125.     int m_MatchingSubtype;
  126. };
  127. /// Matches features that have one of a list of types/subtypes. 
  128. class NCBI_GUICONFIG_EXPORT CLayoutFeatTypeListChooser : public CLayoutFeatChooser
  129. {
  130. public:
  131.     CLayoutFeatTypeListChooser();
  132.     CLayoutFeatTypeListChooser(const string& data);
  133.     CLayoutFeatTypeListChooser(const vector<CLayoutFeatTypeChooser>& );
  134.     
  135.     static string  GetClassKey();
  136.     virtual string ToString() const;
  137.     
  138.     void AddTypeSubtype(int type, int subtype);
  139.     
  140.     /// Does this feature match one of our list of types/subtypes?
  141.     /// use when you know you have a CLayoutFeat
  142.     virtual bool MatchFeat(const CLayoutFeat& feat) const;
  143. private:
  144.     vector<CLayoutFeatTypeChooser>  m_MatchTypes;
  145. };
  146. END_NCBI_SCOPE
  147. /*
  148.  * ===========================================================================
  149.  * $Log: layout_chooser.hpp,v $
  150.  * Revision 1000.1  2004/06/01 19:46:34  gouriano
  151.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.2
  152.  *
  153.  * Revision 1.2  2004/05/03 12:39:54  dicuccio
  154.  * Added #include for gui/gui.hpp
  155.  *
  156.  * Revision 1.1  2003/12/30 14:56:04  dicuccio
  157.  * Moved layout_chooser.hpp to config library (avoids circular dependency).  Moved
  158.  * all FLTK stuff to gui/dialogs/config/.
  159.  *
  160.  * Revision 1.2  2003/12/29 19:26:20  rsmith
  161.  * Add serialization (ToString, from string) to Layout Chooser classes.
  162.  *
  163.  * Revision 1.1  2003/11/26 21:14:41  rsmith
  164.  * Initial checkin
  165.  *
  166.  *
  167.  * ===========================================================================
  168.  */
  169. #endif  // GUI_UTILS___LAYOUT_CHOOSER__HPP