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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: phylo_tree_widget.hpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/02 20:23:52  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef GUI_WIDGETS_PHYLO_TREE___PHYLO_TREE_WIDGET__HPP
  10. #define GUI_WIDGETS_PHYLO_TREE___PHYLO_TREE_WIDGET__HPP
  11. /*  $Id: phylo_tree_widget.hpp,v 1000.2 2004/06/02 20:23:52 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:  Vladimir Tereshkov
  37.  *
  38.  * File Description:
  39.  *  
  40.  */
  41. #include <corelib/ncbiobj.hpp>
  42. #include <gui/opengl/glcanvas2d.hpp>
  43. #include <gui/opengl/gldlist.hpp>
  44. #include <gui/opengl/glviewport.hpp>
  45. #include <gui/utils/command.hpp>
  46. #include <objects/seqloc/Seq_loc.hpp>
  47. #include <gui/widgets/gl/glpane_widget.hpp>
  48. #include <gui/widgets/fl/menu.hpp>
  49. #include <gui/widgets/phylo_tree/phylo_tree_ds.hpp>
  50. #include <gui/widgets/phylo_tree/phylo_tree_pane.hpp>
  51. #include <FL/Fl_Group.H>
  52. #include <FL/Fl_Scrollbar.H>
  53. BEGIN_NCBI_SCOPE
  54. /// Definitions for Hit Matrix Widget commands
  55. ///
  56. enum    EHitMatrixCommands {
  57.     eCmdSetEqualScale = eBaseCmdLast + 200,
  58.     eCmdChooseSeq,
  59.     eCmdColorByScore,
  60.     eCmdSetGraphType1,
  61.     eCmdSetGraphType2,
  62.     eCmdSetGraphType3,
  63.     eCmdSetGraphType4,
  64.     eCmdUseDistances
  65. };
  66. ////////////////////////////////////////////////////////////////////////////////
  67. /// class CPhyloTreeWidget
  68. class NCBI_GUIWIDGETS_PHYLO_TREE_EXPORT CPhyloTreeWidget : public CGlPaneWidget
  69. {
  70. public:
  71.     CPhyloTreeWidget(int x, int y, int w, int h, const char* label = NULL);
  72.     virtual ~CPhyloTreeWidget();
  73.     virtual void SetDataSource(CPhyloTreeDataSource* p_ds);
  74.     virtual CPhyloTreeDataSource*  GetDS(void);
  75.     virtual const CGlPane&  GetPort(void) const;
  76.     virtual void    OnSetScaleXY(TModelUnit scale_x, const TModelPoint& point);
  77.     
  78.     /// Command handlers
  79.     void    OnSetEqualScale();
  80.     void    OnSetGraphType1();
  81.     void    OnSetGraphType2();
  82.     void    OnSetGraphType3();
  83.     void    OnSetGraphType4();
  84.     void    OnUseDistances();
  85.     // update handlers
  86.     void    OnUpdateUseDistances(ICmdUI* pCmdUI);
  87.     void    OnUpdateSetGraphType1(ICmdUI* pCmdUI);
  88.     void    OnUpdateSetGraphType2(ICmdUI* pCmdUI);
  89.     void    OnUpdateSetGraphType3(ICmdUI* pCmdUI);
  90.     void    OnUpdateSetGraphType4(ICmdUI* pCmdUI);
  91.     void            SetCurrRenderer(Int4 idx);
  92.     vector<string>  GetRenderersNames(void);
  93.     virtual void    OnShowPopup();  
  94.     void            SendSelChangedEvent();
  95.     void            SetPortLimits(const TModelRect & rect);
  96.     virtual void    OnSelChangedEvent(CViewEvent::TEventObject obj);
  97.         
  98.     EVENT_MAP_DECLARE();
  99.     DECLARE_CMD_MAP();
  100. protected:    
  101.     // CGlPaneWidget overridables
  102.     virtual void x_CreatePane(void);   
  103.     virtual CGlPaneWidgetChild*    x_GetPane(void);
  104.     virtual void    x_SetPortLimits(void);
  105.     
  106.     virtual void    x_UpdateScrollbars(void);
  107.     virtual void    x_OnScrollX(void);
  108.     virtual void    x_OnScrollY(void);
  109.     virtual void    x_Update();
  110.     virtual void    x_UpdatePane();    
  111. protected:
  112.     CRef<CPhyloTreeDataSource> m_pDataSource;
  113.     CPhyloTreePane*            m_pMatrixPane;
  114.     
  115.     int     m_ScoreIndex; /// index of the score used for hit coloring
  116.     
  117. };
  118. END_NCBI_SCOPE
  119. /*
  120.  * ===========================================================================
  121.  * $Log: phylo_tree_widget.hpp,v $
  122.  * Revision 1000.2  2004/06/02 20:23:52  gouriano
  123.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11
  124.  *
  125.  * Revision 1.11  2004/06/02 16:38:59  tereshko
  126.  * Fixed selections and popup behavior under windows
  127.  *
  128.  * Revision 1.10  2004/05/20 15:29:46  tereshko
  129.  * Implemented support for new updates-driven menu
  130.  *
  131.  * Revision 1.9  2004/05/06 19:41:07  tereshko
  132.  * Added force layout
  133.  *
  134.  * Revision 1.8  2004/04/28 19:27:27  tereshko
  135.  * Added support for distances rendering
  136.  *
  137.  * Revision 1.7  2004/04/13 20:29:22  tereshko
  138.  * Numerous renderers improvements
  139.  *
  140.  * Revision 1.6  2004/04/07 12:42:34  dicuccio
  141.  * Formatting changes.  Store CRef<> to data source
  142.  *
  143.  * Revision 1.5  2004/03/30 17:11:08  tereshko
  144.  * Added support for events broadcasting
  145.  *
  146.  * Revision 1.4  2004/03/02 18:29:24  tereshko
  147.  * Added radial tree layout
  148.  *
  149.  * Revision 1.3  2004/02/18 15:11:00  tereshko
  150.  * Added renderer switching handle
  151.  *
  152.  * Revision 1.2  2004/02/13 21:18:35  tereshko
  153.  * Updated to implement new interface functions
  154.  *
  155.  * Revision 1.1  2004/02/13 17:00:09  tereshko
  156.  * Phylogenetic Tree Widget initial revision
  157.  *
  158.  * ===========================================================================
  159.  */
  160. #endif  // GUI_WIDGETS_PHYLO_TREE___PHYLO_TREE_WIDGET__HPP