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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: view_multialign.cpp,v $
  4.  * PRODUCTION Revision 1000.6  2004/06/01 20:59:28  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.51
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: view_multialign.cpp,v 1000.6 2004/06/01 20:59:28 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:  Mike DiCuccio
  35.  *
  36.  * File Description:
  37.  *    User-modifiable implementation file for extension of Multiple Alignment
  38.  *    viewer for GBENCH
  39.  */
  40. #include <ncbi_pch.hpp>
  41. #include "view_multialign.hpp"
  42. #include <gui/core/plugin_utils.hpp>
  43. #include <gui/core/version.hpp>
  44. #include <gui/plugin/PluginRequest.hpp>
  45. #include <gui/plugin/PluginCommand.hpp>
  46. #include <gui/plugin/PluginCommandSet.hpp>
  47. #include <gui/plugin/PluginInfo.hpp>
  48. #include <gui/plugin/PluginValue.hpp>
  49. #include <gui/objutils/utils.hpp>
  50. #include <objects/seqset/Seq_entry.hpp>
  51. #include <objtools/alnmgr/alnmix.hpp>
  52. #include <objtools/alnmgr/alnvec.hpp>
  53. #include <gui/widgets/aln_multiple/align_row.hpp>
  54. #include <gui/widgets/aln_multiple/alnvec_multi_ds.hpp>
  55. #include <gui/widgets/aln_multiple/align_row.hpp>
  56. #include <serial/iterator.hpp>
  57. BEGIN_NCBI_SCOPE
  58. // We include the generated _.cpp file here.  This avoids a nasty bug in some
  59. // versions of gcc in which inline functions are not intantiated.
  60. #include "view_multialign_.cpp"
  61. DEFINE_MENU(Menu)
  62.     SUBMENU("Display")
  63.         MENU_ITEM(eCmdZoomIn, "Zoom In")
  64.         MENU_ITEM(eCmdZoomOut, "Zoom Out")
  65.         MENU_ITEM(eCmdZoomAll, "Zoom All")
  66.         MENU_ITEM(eCmdZoomSeq, "Zoom to Sequence")
  67.         MENU_ITEM(eCmdZoomSel, "Zoom Selection")
  68.         MENU_SEPARATOR()
  69.         MENU_ITEM(eCmdSetSelMaster , "Set Selected as Master")
  70.         MENU_ITEM(eCmdSetConsMaster, "Set Consensus as Master")
  71.         MENU_ITEM(eCmdUnsetMaster, "Unset Master")
  72.         MENU_SEPARATOR()
  73.         MENU_ITEM(eCmdHideSelected, "Hide Selected Rows")
  74.     MENU_ITEM(eCmdShowAll, "Show All Rows")
  75.         MENU_SEPARATOR()
  76.         MENU_ITEM(eCmdMoveSelectedUp, "Move Selected Items Up")
  77.     END_SUBMENU()
  78.     SUBMENU("Selection")
  79.         MENU_ITEM(eCmdResetSelection, "Reset Selection")
  80.         MENU_SEPARATOR()
  81.         MENU_ITEM(eCmdMarkSelected, "Mark Selected")
  82.         MENU_ITEM(eCmdUnMarkSelected, "UnMark Selected")
  83.         MENU_ITEM(eCmdUnMarkAll, "UnMark All")
  84.         MENU_SEPARATOR()
  85.         MENU_ITEM(eCmdMoveSelectedUp, "Move Selected Items Up")
  86.     END_SUBMENU()
  87.     SUBMENU("View")
  88.     END_SUBMENU()
  89.     SUBMENU("Tools")
  90.     END_SUBMENU()    
  91.     SUBMENU("&Help")
  92.     END_SUBMENU()
  93. END_MENU()
  94. // Events map
  95. EVENT_MAP_RX_BEGIN(CAlnMultiView)
  96.     EVENT_ACCEPT(CViewEvent::eSelectionChanged,  OnSelChangedEvent)
  97. EVENT_MAP_RX_END
  98. //
  99. // standard plugin announcement boilerplate
  100. //
  101. void CAlnMultiView::GetInfo(CPluginInfo& info)
  102. {
  103.     info.Reset();
  104.     // version info macro
  105.     info.SetInfo(CPluginVersion::eMajor, CPluginVersion::eMinor, 0,
  106.                  string(__DATE__) + " " + string(__TIME__),
  107.                  "CAlnMultiView",
  108.                  "Multiple Alignment Viewer",
  109.                  "Multiple Alignment Viewer", "");
  110.     // command info
  111.     CPluginCommandSet& cmds = info.SetCommands();
  112.     CPluginCommand&    args = cmds.AddViewCommand(eViewCommand_new_view);
  113.     args.AddArgument("alignments", "Alignments to merge and render",
  114.                      CSeq_annot::GetTypeInfo(),
  115.                      CPluginArg::TData::e_Array);
  116.     args.SetConstraint("alignments",
  117.                        *CPluginValueConstraint::CreateAnnotType
  118.                        (CSeq_annot::TData::e_Align));
  119. }
  120. CAlnMultiView::CAlnMultiView(const CPluginMessage& msg, const string& pool_name)
  121.     : CAlnView()
  122. {
  123.     m_Window.reset(x_CreateWindow());
  124.     m_AlnWidget->Create();
  125.     m_AlnWidget->SetListener(this);
  126.     // Setup menu and command handling
  127.     m_Menu->SetItems(Menu);
  128.     m_Menu->SetCmdTarget(static_cast<CCommandTarget*>(this));
  129.     AddChildCmdTarget(static_cast<CCommandTarget*>(m_AlnWidget));
  130.     m_StyleCatalog.SetDefaultStyle(new CAlnVecRowDisplayStyle());
  131.     m_StyleCatalog.SetWidgetStyle(m_AlnWidget->GetDisplayStyle());
  132.     m_AlnWidget->SetStyleCatalog(&m_StyleCatalog);
  133.     // set our core components
  134.     const CPluginCommand& args = msg.GetRequest().GetCommand();
  135.     plugin_args::TAnnotList aligns;
  136.     GetArgValue(args["alignments"], aligns);
  137.     CRef<CSeq_annot> annot(new CSeq_annot());
  138.     const IDocument* doc = NULL;
  139.     ITERATE (plugin_args::TAnnotList, iter, aligns) {
  140.         doc = iter->first;
  141.         annot->SetData().SetAlign()
  142.             .insert(annot->SetData().SetAlign().end(),
  143.                     iter->second->GetData().GetAlign().begin(),
  144.                     iter->second->GetData().GetAlign().end());
  145.     }
  146.     // extract the alignments from the argument
  147.     if (annot.GetPointer()  &&  doc) {
  148.         x_SetDocument(*doc);
  149.         m_AnnotData.Reset(annot);
  150.     }
  151.     // create the view menu manager
  152.     m_ViewMenuMgr.reset(new CViewMenuMgr(m_Menu, "View", this, pool_name));
  153.     m_AlgoMenuMgr.reset(new CAlgoMenuMgr(m_Menu, "Tools", this));
  154. }
  155. BEGIN_CMD_MAP(CAlnMultiView, CAlnView)
  156.     ON_COMMAND(eCmdResetSelection,  &CAlnMultiView::OnResetSelection)
  157.     ON_COMMAND(eCmdSetConsMaster,   &CAlnMultiView::OnMakeConsensusRowMaster)    
  158.     ON_COMMAND(eCmdMarkSelected,    &CAlnMultiView::OnMarkSelected)
  159.     ON_COMMAND(eCmdUnMarkAll,       &CAlnMultiView::OnUnMarkAll)
  160. END_CMD_MAP()
  161. void CAlnMultiView::OnDocumentChanged()
  162. {
  163.     if (m_Document) {
  164.         SetTitle(m_Document->GetShortTitle() + ": " + GetTitle());
  165.         // create our alignment manager
  166.         m_DataSource.Reset(new CAlnVecMultiDataSource());
  167.         m_DataSource->Init(*m_AnnotData, m_Document->GetScope());
  168.         m_AlnWidget->SetDataSource(m_DataSource);
  169.         SetSelBuffer().Clear();
  170.         SetSelBuffer().AddSelection(GetDocument(), *m_AnnotData);
  171.         m_ViewMenuMgr->AddActiveViews(m_Document);
  172.         m_ViewMenuMgr->AddNewViews();//   (GetSelBuffer());
  173.         m_AlgoMenuMgr->AddAlgoMenu();//   (GetSelBuffer());
  174.     }
  175. }
  176. void CAlnMultiView::OnSelectionChanged(const CSelectionBuffer& buf)
  177. {
  178.     if (m_Document) {
  179.         if ( !GetSelBuffer() ) {
  180.             SetSelBuffer().AddSelection(GetDocument(), *m_AnnotData);
  181.         }
  182.         m_ViewMenuMgr->AddActiveViews(m_Document);
  183.         m_ViewMenuMgr->AddNewViews();//   (GetSelBuffer());
  184.         m_AlgoMenuMgr->AddAlgoMenu();//   (GetSelBuffer());
  185.     }
  186. }
  187. void CAlnMultiView::OnVisibleRangeChanged(const CSeq_loc& loc)
  188. {
  189. }
  190. const string& CAlnMultiView::GetTitle(void) const
  191. {
  192.     static string s_str("Multiple Alignment View");
  193.     return s_str;
  194. }
  195. void CAlnMultiView::x_OnFileClose()
  196. {
  197.     Hide();
  198. }
  199. void CAlnMultiView::x_OnHelp()
  200. {
  201. }
  202. void CAlnMultiView::OnResetSelection()
  203. {
  204.     if (m_AlnWidget) {
  205.         m_AlnWidget->OnResetSelection();
  206.     }
  207.     SetSelBuffer().Clear();
  208.     SetSelBuffer().AddSelection(GetDocument(), *m_AnnotData);
  209.     m_ViewMenuMgr->AddActiveViews(m_Document);
  210.     m_ViewMenuMgr->AddNewViews();//   (GetSelBuffer());
  211.     m_AlgoMenuMgr->AddAlgoMenu();//   (GetSelBuffer());
  212. }
  213. void CAlnMultiView::OnMakeConsensusRowMaster()
  214. {
  215.     if (m_DataSource.GetPointer()  &&  m_AlnWidget) {
  216.         IAlnMultiDataSource::TNumrow row = m_DataSource->GetConsensusRow();
  217.         
  218.         if(row == -1)   { // create it
  219.             m_DataSource->CreateConsensus();
  220.             row = m_DataSource->GetConsensusRow();
  221.         }
  222.         m_DataSource->SetAnchor(row); //last row - consensus
  223.         m_AlnWidget->SetDataSource(m_DataSource);
  224.         //m_AlnWidget->MakeConsensusRowMaster();
  225.         //m_AlnWidget->redraw();
  226.     }
  227. }
  228. void CAlnMultiView::OnMarkSelected(void)
  229. {
  230.     if (m_AlnWidget) {
  231.         m_AlnWidget->OnMarkSelected();
  232.         // fill our selection buffer
  233.         SetSelBuffer().Clear();
  234.         // GetMarks() returns marked locations
  235.         CAlnMultiWidget::TPSeqLocList locs;
  236.         m_AlnWidget->GetMarks(locs);
  237.         ITERATE (CAlnMultiWidget::TPSeqLocList, iter, locs) {
  238.             SetSelBuffer().AddSelection(GetDocument(), **iter);
  239.         }
  240.         /**
  241.         // GetSelection() returns selections in alignment coordinates
  242.         const CAlnMultiWidget::TRangeColl& range_coll = m_AlnWidget->GetSelection();
  243.         ITERATE (CAlnMultiWidget::TRangeColl, iter, range_coll) {
  244.             CRef<CSeq_loc> loc(new CSeq_loc());
  245.             loc.SetInt().SetFrom(iter->GetFrom());
  246.             loc.SetInt().SetTo  (iter->GetTo());
  247.         }
  248.         **/
  249.     }
  250.    
  251.     if ( !GetSelBuffer() ) {
  252.         SetSelBuffer().AddSelection(GetDocument(),
  253.                                     m_DataSource->GetAlnMgr().GetDenseg());
  254.     }
  255.     m_ViewMenuMgr->AddActiveViews(m_Document);
  256.     m_ViewMenuMgr->AddNewViews();//   (GetSelBuffer());
  257.     m_AlgoMenuMgr->AddAlgoMenu();//   (GetSelBuffer());
  258.     m_ViewMenuMgr->AddActiveViews(m_Document);
  259. }
  260. void CAlnMultiView::OnUnMarkAll(void)
  261. {
  262.     if (m_AlnWidget) {
  263.         m_AlnWidget->OnUnMarkAll();
  264.     }
  265.     SetSelBuffer().Clear();
  266.     SetSelBuffer().AddSelection(GetDocument(),
  267.                                 m_DataSource->GetAlnMgr().GetDenseg());
  268.     m_ViewMenuMgr->AddActiveViews(m_Document);
  269.     m_ViewMenuMgr->AddNewViews();//   (GetSelBuffer());
  270.     m_AlgoMenuMgr->AddAlgoMenu();//   (GetSelBuffer());
  271. }
  272. void  CAlnMultiView :: SendSelChangedEvent()
  273. {
  274.  /*     CObjectFor< vector<CRef<objects::CSeq_id> > > csid;
  275.       //csid = m_pDataSource->ConvertId2SeqId(m_pMatrixPane->GetSelectedIDs());
  276.       // fire external event
  277.       FireEvent(CViewEvent::CreateEvent(CViewEvent::eSelectionChanged,  
  278.                                         CViewEvent::eEventViews, 
  279.                                         CViewEvent::TEventObject(&csid), this)); */
  280. }
  281. typedef vector<CConstRef<CSeq_id> > TRSeqIdVector;
  282. void  CAlnMultiView :: OnSelChangedEvent(CViewEvent::TEventObject obj)
  283. {     
  284.     m_bBlockEvents = true;
  285.     CObjectFor<TRSeqIdVector>* p_ids = 
  286.         dynamic_cast< CObjectFor<TRSeqIdVector> *>(obj.GetPointer());
  287.     if(p_ids) {
  288.         CScope& scope = m_Document->GetScope();
  289.         /*const vector<CConstRef<CSeq_id> >& ids = p_ids->GetData();
  290.         vector<CAlnVec::TNumrow> sel_rows;
  291.         int n_ids = ids.size();
  292.         for( int i = 0; i < n_ids; i++ )    {
  293.             const CSeq_id& id = *ids[i];
  294.             //find row corresponding to id
  295.             int n_rows = m_DataSource->GetNumRows();
  296.             for( CAlnVec::TNumrow row = 0; row < n_rows; row++ )  {
  297.                 const CSeq_id&  row_id = m_DataSource->GetSeqId(row);
  298.                 if(CSeqUtils::Match(row_id, id, scope)) {
  299.                     sel_rows.push_back(row);
  300.                     break;
  301.                 }
  302.             }
  303.         }
  304.         //select rows
  305.         m_AlnWidget->Select(sel_rows, true);  */
  306.         m_AlnWidget->SetSelectedIds(*p_ids, scope);
  307.     }
  308.     m_bBlockEvents = false;
  309. }    
  310. void    CAlnMultiView::OnNotify(IAlnMultiPaneParent::ENotification notification)
  311. {
  312.     if(! m_bBlockEvents)    {
  313.         switch(notification)    {
  314.         case    IAlnMultiPaneParent::eRowSelChanged:    {
  315.             CObjectFor<TRSeqIdVector> vids;
  316.             m_AlnWidget->GetSelectedIds(vids.GetData());
  317.             // fire external event
  318.             FireEvent(CViewEvent::CreateEvent(CViewEvent::eSelectionChanged,  
  319.                                     CViewEvent::eEventViews, 
  320.                                     CViewEvent::TEventObject(&vids), this)); 
  321.         }; break;
  322.         }
  323.     }
  324. }
  325. END_NCBI_SCOPE
  326. /*
  327.  * ===========================================================================
  328.  * $Log: view_multialign.cpp,v $
  329.  * Revision 1000.6  2004/06/01 20:59:28  gouriano
  330.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.51
  331.  *
  332.  * Revision 1.51  2004/05/21 22:27:49  gorelenk
  333.  * Added PCH ncbi_pch.hpp
  334.  *
  335.  * Revision 1.50  2004/05/03 17:52:36  dicuccio
  336.  * gui/utils -->gui/objutils where needed
  337.  *
  338.  * Revision 1.49  2004/04/16 14:44:17  dicuccio
  339.  * Pass appropriate ISelection interface to dynamic menus
  340.  *
  341.  * Revision 1.48  2004/04/07 13:05:10  dicuccio
  342.  * Changed view API - require CPluginMessage instead of CPluginArgSet
  343.  *
  344.  * Revision 1.47  2004/04/06 16:27:44  yazhuk
  345.  * Added eCmdMoveSelectedUp command
  346.  *
  347.  * Revision 1.46  2004/04/02 19:44:17  dicuccio
  348.  * CHanged handling of default object if no selections present
  349.  *
  350.  * Revision 1.45  2004/04/02 16:45:21  yazhuk
  351.  * Implemented selection broadcasting
  352.  *
  353.  * Revision 1.44  2004/03/30 17:13:08  tereshko
  354.  * Added support for events broadcasting
  355.  *
  356.  * Revision 1.43  2004/03/25 13:19:30  dicuccio
  357.  * Call CAlnVecWidget::Create() to intialize the widget
  358.  *
  359.  * Revision 1.42  2004/03/09 22:09:23  ucko
  360.  * Add missing inclulde of <align_row.hpp> (once indirectly included?)
  361.  *
  362.  * Revision 1.41  2004/02/11 16:13:24  yazhuk
  363.  * Removed #include "view_multialign_ds.hpp"
  364.  *
  365.  * Revision 1.40  2004/02/11 15:24:03  yazhuk
  366.  * Replaced constructor with arguments with default constructor and Init() call;
  367.  * Replaced CViewMultiAlignDS with CAlnVecMultiDataSource
  368.  *
  369.  * Revision 1.39  2004/01/27 18:45:01  dicuccio
  370.  * Let multiple alignment viewer handle multiple input alignments
  371.  *
  372.  * Revision 1.38  2004/01/09 01:16:34  ucko
  373.  * Remove extra semicolon after END_MENU() [breaks on WorkShop]
  374.  *
  375.  * Revision 1.37  2004/01/08 20:25:13  yazhuk
  376.  * Migrated from FLTK-style menus to CMenuBar and CComandTraget, cleaned-up
  377.  * obsolete code. Fixed bugs in consensus row creation.
  378.  *
  379.  * Revision 1.36  2003/12/22 19:33:16  dicuccio
  380.  * Lots of changes.  Changed to match new APIs in IView.  Added better handling of messages received from other views
  381.  *
  382.  * Revision 1.35  2003/12/19 20:00:41  yazhuk
  383.  * Added Catalog setup
  384.  *
  385.  * Revision 1.34  2003/11/24 15:45:43  dicuccio
  386.  * Renamed CVersion to CPluginVersion
  387.  *
  388.  * Revision 1.33  2003/11/19 20:45:27  friedman
  389.  * Added handling a visible range change event
  390.  *
  391.  * Revision 1.32  2003/11/04 12:51:27  friedman
  392.  * Added event message pool callbacks for the document all-view message pool.
  393.  *
  394.  * Revision 1.31  2003/10/30 17:08:53  yazhuk
  395.  * In SetDataSource replaced references with pointers
  396.  *
  397.  * Revision 1.30  2003/10/27 20:03:26  dicuccio
  398.  * Rearranged Update() to be consistent
  399.  *
  400.  * Revision 1.29  2003/10/10 19:30:15  yazhuk
  401.  * Added x_OnZoomAll(), x_OnSetConsensusMaster(), x_OnZoomSequnce()
  402.  *
  403.  * Revision 1.28  2003/10/10 17:20:27  dicuccio
  404.  * Implemented OnExit() as callback for all views when closed from system icon
  405.  *
  406.  * Revision 1.27  2003/10/07 13:47:06  dicuccio
  407.  * Renamed CPluginURL* to CPluginValue*
  408.  *
  409.  * Revision 1.26  2003/09/30 20:22:37  dicuccio
  410.  * Exposed marking interface.  Implemented consensus creation
  411.  *
  412.  * Revision 1.25  2003/09/24 18:26:47  dicuccio
  413.  * Large clean-ups to alignment viewers.  Reimplemented data sources and alignment
  414.  * generation mechanism to be more generic.
  415.  *
  416.  * Revision 1.24  2003/09/12 12:55:41  dicuccio
  417.  * Switched to use Andrey's new viewer.
  418.  *
  419.  * Revision 1.23  2003/09/04 14:54:21  dicuccio
  420.  * Use IDocument instead of CDocument.  Changed APIs to match changes in IView
  421.  *
  422.  * Revision 1.22  2003/07/22 15:32:16  dicuccio
  423.  * Changed to make use of new API in plugin_utils.hpp - GetArgValue()
  424.  *
  425.  * Revision 1.21  2003/06/26 15:33:41  dicuccio
  426.  * Moved GetURLValue() from PluginURL.hpp to plugin_utils.hpp.  Fixed compilation
  427.  * errors relating to missing #includes
  428.  *
  429.  * Revision 1.20  2003/06/25 17:03:00  dicuccio
  430.  * Split CPluginHandle into a handle (pointer-to-implementation) and
  431.  * implementation file.  Lots of #include file clean-ups.
  432.  *
  433.  * Revision 1.19  2003/06/23 13:23:13  dicuccio
  434.  * Deprecated seq_utils.[h,c]pp - moved functions into gui.utils/utils.hpp
  435.  *
  436.  * Revision 1.18  2003/06/20 14:53:52  dicuccio
  437.  * Revised plugin registration - moved GetInfo() into the plugin handler
  438.  *
  439.  * Revision 1.17  2003/06/02 16:06:22  dicuccio
  440.  * Rearranged src/objects/ subtree.  This includes the following shifts:
  441.  *     - src/objects/asn2asn --> arc/app/asn2asn
  442.  *     - src/objects/testmedline --> src/objects/ncbimime/test
  443.  *     - src/objects/objmgr --> src/objmgr
  444.  *     - src/objects/util --> src/objmgr/util
  445.  *     - src/objects/alnmgr --> src/objtools/alnmgr
  446.  *     - src/objects/flat --> src/objtools/flat
  447.  *     - src/objects/validator --> src/objtools/validator
  448.  *     - src/objects/cddalignview --> src/objtools/cddalignview
  449.  * In addition, libseq now includes six of the objects/seq... libs, and libmmdb
  450.  * replaces the three libmmdb? libs.
  451.  *
  452.  * Revision 1.16  2003/05/22 18:50:04  dicuccio
  453.  * Standardized construction, argument specification for all alignment views
  454.  *
  455.  * Revision 1.15  2003/05/19 13:43:32  dicuccio
  456.  * Moved gui/core/plugin --> gui/plugin/.  Merged core libraries into libgui_core
  457.  *
  458.  * Revision 1.14  2003/04/24 16:40:38  dicuccio
  459.  * Updated to reflect changes in plugin API.  Added new common alignment view base
  460.  * class - handles notions of creating alignment manager in a standard way
  461.  *
  462.  * Revision 1.13  2003/03/17 14:54:14  dicuccio
  463.  * Changed base class CView - added member variable for FLTK gui component for
  464.  * child windows, which is now maintained via an auto_ptr<>.  Eliminated
  465.  * Show()/Hide() as a pure virtual requirement.
  466.  *
  467.  * Revision 1.12  2003/03/03 14:54:05  dicuccio
  468.  * Fixed initialization of CAlnMix to avoid creation of alternale object manager
  469.  *
  470.  * Revision 1.11  2003/02/20 19:49:58  dicuccio
  471.  * Created new plugin architecture, based on ASN.1 spec.  Moved GBENCH frameowrk
  472.  * over to use new plugin architecture.
  473.  *
  474.  * Revision 1.10  2003/01/13 13:10:08  dicuccio
  475.  * Namespace clean-up.  Retired namespace gui -> converted all to namespace ncbi.
  476.  * Moved all FLUID-generated code into namespace ncbi.
  477.  *
  478.  * Revision 1.9  2003/01/10 17:37:48  dicuccio
  479.  * Regenerated code with fluid-1.1.2
  480.  *
  481.  * Revision 1.8  2003/01/09 14:50:41  dicuccio
  482.  * Use 'const CBioseq_Handle&' instead of 'CBioseq_Handle&'
  483.  *
  484.  * Revision 1.7  2002/12/20 19:52:21  dicuccio
  485.  * Cnaged TRange::SetFrom()/TRange::SetTo() --> TRange::Set()
  486.  *
  487.  * Revision 1.6  2002/12/20 19:22:51  dicuccio
  488.  * Lots of changes to the menus.  Standardized the menu syntax across all views.
  489.  * Changed to use new dynamic menu managers.
  490.  *
  491.  * Revision 1.5  2002/12/13 13:18:52  dicuccio
  492.  * Added work-around for inlining problems in some versions of gcc: directly
  493.  * include a FLUID-generated '*_.cpp' file in the corresponding '*.cpp' and
  494.  * remove this file from the build.  Thanks Aaron!
  495.  *
  496.  * Revision 1.4  2002/12/09 20:37:14  dicuccio
  497.  * Switch to using CSeq_id::GetStringDescr()
  498.  *
  499.  * Revision 1.3  2002/11/29 16:08:34  dicuccio
  500.  * Removed BEGIN/END_SCOPE - use USING_SCOPE instead.  FIxed some function
  501.  * overload resolution issues for Windows.
  502.  *
  503.  * Revision 1.2  2002/11/22 18:05:07  dicuccio
  504.  * Fixed memory leak - must remember to delete main window.
  505.  *
  506.  * Revision 1.1  2002/11/19 17:04:36  dicuccio
  507.  * Initial revision.
  508.  *
  509.  * ===========================================================================
  510.  */