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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: multi_demo_ui.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 21:07:42  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.13
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: multi_demo_ui.cpp,v 1000.2 2004/06/01 21:07:42 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.  *
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include "multi_demo_ui.hpp"
  41. #include <gui/utils/message_box.hpp>
  42. #include <gui/widgets/fl/menu.hpp>
  43. #include <objtools/data_loaders/genbank/gbloader.hpp>
  44. #include <serial/objistr.hpp>
  45. #include <objmgr/bioseq_handle.hpp>
  46. #include <gui/widgets/aln_multiple/align_row.hpp>
  47. BEGIN_NCBI_SCOPE
  48. #include "multi_demo_ui_.cpp"
  49. static
  50. DEFINE_MENU(Menu)
  51.     SUBMENU("Zoom")
  52.         MENU_ITEM(eCmdZoomIn, "Zoom In")
  53.         MENU_ITEM(eCmdZoomOut, "Zoom Out")
  54.         MENU_ITEM(eCmdZoomAll, "Zoom All")
  55.         MENU_ITEM(eCmdZoomSeq, "Zoom to Sequence")
  56.         MENU_ITEM(eCmdZoomSel, "Zoom Selection")
  57.     END_SUBMENU()
  58.     SUBMENU("Master")
  59.         MENU_ITEM(eCmdSetSelMaster , "Set Selected")
  60.         MENU_ITEM(eCmdSetConsMaster, "Set Consensus")
  61.         MENU_ITEM(eCmdUnsetMaster, "Unset")
  62.     END_SUBMENU()
  63.     SUBMENU("Selection")
  64.         MENU_ITEM(eCmdResetSelection, "Reset Selection")
  65.         MENU_ITEM(eCmdMoveSelectedUp, "Move Selected Items Up")
  66.     END_SUBMENU()
  67.     SUBMENU("Mark")
  68.         MENU_ITEM(eCmdMarkSelected, "Mark Selected")
  69.         MENU_ITEM(eCmdUnMarkSelected, "UnMark selected")
  70.         MENU_ITEM(eCmdUnMarkAll, "UnMark All")
  71.     END_SUBMENU()
  72.     SUBMENU("Hide Rows")
  73. MENU_ITEM(eCmdHideSelected, "Hide Selected")
  74. MENU_ITEM(eCmdShowAll, "Show All")
  75.     END_SUBMENU()
  76. END_MENU()
  77. CMultiDemoUI::CMultiDemoUI()
  78. {
  79.     m_Window.reset(x_CreateWindow());
  80.     
  81.     m_AlnWidget->Create();
  82.     m_AlnWidget->SetTraceGraphStyle(CTraceGraphProperties::eIntensity);
  83.     m_MenuBar->SetCmdTarget(dynamic_cast<CCommandTarget*>(m_AlnWidget));
  84.     m_MenuBar->SetItems(Menu);
  85.     m_StyleCatalog.SetDefaultStyle(new CAlnVecRowDisplayStyle());
  86.     m_StyleCatalog.SetWidgetStyle(m_AlnWidget->GetDisplayStyle());
  87.     m_AlnWidget->SetStyleCatalog(&m_StyleCatalog);
  88.     m_DataSource.Reset(new CAlnVecMultiDataSource());
  89. }
  90. CMultiDemoUI::~CMultiDemoUI()
  91. {
  92.     // these must be deleted in proper order
  93.     m_DataSource.Reset();
  94.     m_Window.reset();
  95.     m_Scope.Reset();
  96.     m_ObjMgr.Reset();
  97. }
  98. #define DEF_ACC "gnl|TR_ASSM_CH|127"
  99. //#define DEF_ACC "19172277"
  100. void CMultiDemoUI::Show(int argc, char** argv)
  101. {
  102.     m_Accession->value(DEF_ACC);
  103.     m_Accession->redraw();
  104.     m_Window->show(argc, argv);
  105.     while (m_Window->shown()) {
  106.         Fl::wait();
  107.     }
  108. }
  109. void CMultiDemoUI::x_OnLoadAccession()
  110. {
  111.     CSeq_id id(m_Accession->value());
  112.     if (id.Which() == CSeq_id::e_not_set) {
  113.         string msg("Accession '");
  114.         msg += m_Accession->value();
  115.         msg += "' not recognized as a valid accession";
  116.         NcbiMessageBox(msg, eDialog_Ok, eIcon_Exclamation,
  117.                        "Unhandled Accession");
  118.         return;
  119.     }
  120.     if ( !m_ObjMgr ) {
  121.         m_ObjMgr.Reset(new CObjectManager());
  122.         m_ObjMgr->RegisterDataLoader(*new CGBDataLoader(),
  123.                                      CObjectManager::eDefault);
  124.         m_Scope.Reset(new CScope(*m_ObjMgr));
  125.         m_Scope->AddDefaults();
  126.     }
  127.     // retrieve our sequence
  128.     CBioseq_Handle handle = m_Scope->GetBioseqHandle(id);
  129.     if ( !handle ) {
  130.         string msg("Can't find sequence for accession '");
  131.         msg += m_Accession->value();
  132.         msg += "'";
  133.         NcbiMessageBox(msg, eDialog_Ok, eIcon_Exclamation,
  134.                        "Sequence Not Found");
  135.         return;
  136.     }
  137.     // now, set our data source
  138.     //m_DataSource.Reset(new CAlnVecMultiDataSource(handle, m_Scope.GetObject()));
  139.     m_DataSource->Init(handle, *m_Scope);
  140.     //m_DataSource->CreateConsensus();
  141.     m_DataSource->SetAnchor(0);
  142.     
  143.     m_AlnWidget->SetDataSource(
  144.         static_cast<IAlnMultiDataSource*>(m_DataSource.GetPointer()));
  145. }
  146. void CMultiDemoUI::x_OnLoadFile()
  147. {
  148. }
  149. END_NCBI_SCOPE
  150. /*
  151.  * ===========================================================================
  152.  * $Log: multi_demo_ui.cpp,v $
  153.  * Revision 1000.2  2004/06/01 21:07:42  gouriano
  154.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.13
  155.  *
  156.  * Revision 1.13  2004/05/21 22:27:52  gorelenk
  157.  * Added PCH ncbi_pch.hpp
  158.  *
  159.  * Revision 1.12  2004/05/17 17:58:46  gorelenk
  160.  * Changed GetObject to deref. operator - causes problems on MSVC7
  161.  *
  162.  * Revision 1.11  2004/04/06 16:07:07  yazhuk
  163.  * Made changes to menu and default settings
  164.  *
  165.  * Revision 1.10  2004/02/11 15:28:25  yazhuk
  166.  * Replaced constructor with arguments with default constructor and Init() call
  167.  *
  168.  * Revision 1.9  2004/01/15 21:02:14  ucko
  169.  * Remove redundant tokens (already supplied by *_MENU).
  170.  *
  171.  * Revision 1.8  2004/01/15 20:16:17  yazhuk
  172.  * Added menu definition and menu setup code
  173.  *
  174.  * Revision 1.7  2004/01/07 17:39:04  vasilche
  175.  * Fixed include path to genbank loader.
  176.  *
  177.  * Revision 1.6  2003/12/18 21:23:06  yazhuk
  178.  * Support for display styles
  179.  *
  180.  * Revision 1.5  2003/10/29 23:34:51  yazhuk
  181.  * Replaced CDemoMultiDS with new data source classes
  182.  *
  183.  * Revision 1.4  2003/10/10 19:10:11  yazhuk
  184.  * Removed m_OldAlnWidget
  185.  *
  186.  * Revision 1.3  2003/09/25 20:49:17  yazhuk
  187.  * Added CAlignDataSource::CreateConsensus() call
  188.  *
  189.  * Revision 1.2  2003/08/28 18:27:19  yazhuk
  190.  * Modified to accomodate both old and new widgets
  191.  *
  192.  * Revision 1.1  2003/07/14 17:36:47  dicuccio
  193.  * Initial revision
  194.  *
  195.  * ===========================================================================
  196.  */