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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: textaln_view.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 21:08:03  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: textaln_view.cpp,v 1000.2 2004/06/01 21:08:03 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:  Vlad Lebedev
  35.  *
  36.  */
  37. #include <ncbi_pch.hpp>
  38. #include <gui/widgets/aln_textaln/view.hpp>
  39. #include <gui/widgets/aln_data/align_ds.hpp>
  40. #include "panel.hpp"
  41. BEGIN_NCBI_SCOPE
  42. void s_CTextAlnView_ScrollCB(Fl_Widget* w, void*)
  43. {
  44.     dynamic_cast<CTextAlnView&> (*w->parent()).x_ScrollCB();
  45. }
  46. CTextAlnView::CTextAlnView(int x, int y, int w, int h, const char* label)
  47.     : Fl_Group(x, y, w, h, label)
  48. {
  49.     const int kScrollBarSize = 15;
  50.     m_ScrollX = new Fl_Scrollbar
  51.         (x, y+(h - kScrollBarSize), w - kScrollBarSize, kScrollBarSize);
  52.     m_ScrollX->type(FL_HORIZONTAL);
  53.     m_ScrollX->callback( s_CTextAlnView_ScrollCB );
  54.     m_ScrollX->labeltype(FL_NO_LABEL);
  55.     m_ScrollY = new Fl_Scrollbar
  56.         (x + (w - kScrollBarSize), y, kScrollBarSize, h - kScrollBarSize);
  57.     m_ScrollY->callback( s_CTextAlnView_ScrollCB );
  58.     m_ScrollY->labeltype(FL_NO_LABEL);
  59.     m_TextAlnPanel = new CTextAlnPanel
  60.         (x, y, w - kScrollBarSize, h - kScrollBarSize);
  61.     m_TextAlnPanel->box(FL_DOWN_BOX);
  62.     m_TextAlnPanel->labeltype(FL_NO_LABEL);
  63.     Fl_Group::current()->resizable(m_TextAlnPanel);
  64.     end(); // close the group
  65. }
  66. CTextAlnView::~CTextAlnView()
  67. {
  68.     delete m_ScrollX;
  69.     delete m_ScrollY;
  70.     delete m_TextAlnPanel;
  71. }
  72. void CTextAlnView::x_ScrollCB()
  73. {
  74.     m_TextAlnPanel->Scroll(TSeqPos(m_ScrollX->value()), 
  75.                          TSeqPos(m_ScrollY->value()) );
  76. }
  77. void CTextAlnView::ShowSequenceAsDots(bool show_dots)
  78. {
  79.     m_TextAlnPanel->ShowSequenceAsDots(show_dots);
  80. }
  81. void CTextAlnView::SetAnchor(size_t idx)
  82. {
  83.     m_TextAlnPanel->SetAnchor(idx);
  84. }
  85. void CTextAlnView::UnsetAnchor(void)
  86. {
  87.     m_TextAlnPanel->UnsetAnchor();
  88. }
  89. void CTextAlnView::SelectAll(bool flag)
  90. {
  91.     m_TextAlnPanel->SelectAll(flag);
  92. }
  93. void CTextAlnView::SetDataSource(CAlignDataSource* ds)
  94. {
  95.     m_TextAlnPanel->SetDataSource(ds);
  96. }
  97. void CTextAlnView::SetFeatureDisplay(EFeatureDisplay disp)
  98. {
  99.     m_TextAlnPanel->SetFeatureDisplay(disp);
  100. }
  101. void CTextAlnView::SetColor(EDisplayElement elem, Fl_Color color)
  102. {
  103.     m_TextAlnPanel->SetColor(elem, color);
  104. }
  105. Fl_Color CTextAlnView::GetColor(EDisplayElement elem) const
  106. {
  107.     return m_TextAlnPanel->GetColor(elem);
  108. }
  109. END_NCBI_SCOPE
  110. /*
  111.  * ===========================================================================
  112.  * $Log: textaln_view.cpp,v $
  113.  * Revision 1000.2  2004/06/01 21:08:03  gouriano
  114.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  115.  *
  116.  * Revision 1.4  2004/05/21 22:27:52  gorelenk
  117.  * Added PCH ncbi_pch.hpp
  118.  *
  119.  * Revision 1.3  2004/03/11 17:50:41  dicuccio
  120.  * Updated typedefs: dropped TDimension, TPosition, TIndex, TColor; use TSeqRange
  121.  * instead of TRange
  122.  *
  123.  * Revision 1.2  2003/09/24 18:34:58  dicuccio
  124.  * Use new generic alignment data source.  Removed USING_SCOPE(objects) from
  125.  * headers; used objects:: where necessary
  126.  *
  127.  * Revision 1.1  2003/03/27 17:04:32  lebedev
  128.  * Text Alignment Widget: Initial revision
  129.  *
  130.  * ===========================================================================
  131.  */